X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fstranal%2FWorkWrap.lhs;h=493015fb28188cacdc97ceb517d1c335d7bcef87;hp=d23e83ece2ec1aab54bcd1c12647fee972d95d52;hb=c86161c5cf11de77e911fcb9e1e2bd1f8bd80b42;hpb=72462499b891d5779c19f3bda03f96e24f9554ae diff --git a/compiler/stranal/WorkWrap.lhs b/compiler/stranal/WorkWrap.lhs index d23e83e..493015f 100644 --- a/compiler/stranal/WorkWrap.lhs +++ b/compiler/stranal/WorkWrap.lhs @@ -12,12 +12,12 @@ import CoreUtils ( exprType, exprIsHNF ) import CoreArity ( exprArity ) import Var import Id ( idType, isOneShotLambda, idUnfolding, - setIdNewStrictness, mkWorkerId, + setIdStrictness, mkWorkerId, setInlineActivation, setIdUnfolding, setIdArity ) import Type ( Type ) import IdInfo -import NewDemand ( Demand(..), StrictSig(..), DmdType(..), DmdResult(..), +import Demand ( Demand(..), StrictSig(..), DmdType(..), DmdResult(..), Demands(..), mkTopDmdType, isBotRes, returnsCPR, topSig, isAbsent ) import UniqSupply @@ -156,7 +156,7 @@ The only reason this is monadised is for the unique supply. Note [Don't w/w inline things (a)] ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ It's very important to refrain from w/w-ing an INLINE function -because the wrapepr will then overwrite the InlineRule unfolding. +because the wrapper will then overwrite the InlineRule unfolding. It was wrong with the old InlineMe Note too: if we do so by mistake we transform @@ -225,12 +225,12 @@ tryWW is_rec fn_id rhs where fn_info = idInfo fn_id - maybe_fn_dmd = newDemandInfo fn_info + maybe_fn_dmd = demandInfo fn_info inline_act = inlinePragmaActivation (inlinePragInfo fn_info) -- In practice it always will have a strictness -- signature, even if it's a uninformative one - strict_sig = newStrictnessInfo fn_info `orElse` topSig + strict_sig = strictnessInfo fn_info `orElse` topSig StrictSig (DmdType env wrap_dmds res_info) = strict_sig -- new_fn_id has the DmdEnv zapped. @@ -239,7 +239,7 @@ tryWW is_rec fn_id rhs -- (c) it becomes incorrect as things are cloned, because -- we don't push the substitution into it new_fn_id | isEmptyVarEnv env = fn_id - | otherwise = fn_id `setIdNewStrictness` + | otherwise = fn_id `setIdStrictness` StrictSig (mkTopDmdType wrap_dmds res_info) is_fun = notNull wrap_dmds @@ -261,7 +261,7 @@ checkSize fn_id rhs thing_inside | otherwise = thing_inside where unfolding = idUnfolding fn_id - inline_rule = mkInlineRule InlUnSat rhs (unfoldingArity unfolding) + inline_rule = mkInlineRule unSaturatedOk rhs (unfoldingArity unfolding) --------------------- splitFun :: Id -> IdInfo -> [Demand] -> DmdResult -> Activation -> Expr Var @@ -283,7 +283,7 @@ splitFun fn_id fn_info wrap_dmds res_info inline_act rhs -- can't think of a compelling reason. (In ptic, INLINE things are -- not w/wd). However, the RuleMatchInfo is not transferred since -- it does not make sense for workers to be constructorlike. - `setIdNewStrictness` StrictSig (mkTopDmdType work_demands work_res_info) + `setIdStrictness` StrictSig (mkTopDmdType work_demands work_res_info) -- Even though we may not be at top level, -- it's ok to give it an empty DmdEnv `setIdArity` (exprArity work_rhs)