diff options
author | simonpj@microsoft.com <unknown> | 2010-09-15 12:44:42 +0000 |
---|---|---|
committer | simonpj@microsoft.com <unknown> | 2010-09-15 12:44:42 +0000 |
commit | a51fe79ebcdcb8285573a18f12cade2101533419 (patch) | |
tree | 483db14441d3b4f88a40743c9aa1287807026200 /compiler/stranal | |
parent | 0ccc12b6d176efe4a6d605864412deda75b62459 (diff) | |
download | haskell-a51fe79ebcdcb8285573a18f12cade2101533419.tar.gz |
Implement INLINABLE pragma
Implements Trac #4299. Documentation to come.
Diffstat (limited to 'compiler/stranal')
-rw-r--r-- | compiler/stranal/WorkWrap.lhs | 14 |
1 files changed, 5 insertions, 9 deletions
diff --git a/compiler/stranal/WorkWrap.lhs b/compiler/stranal/WorkWrap.lhs index 7a56c33289..d329b5a078 100644 --- a/compiler/stranal/WorkWrap.lhs +++ b/compiler/stranal/WorkWrap.lhs @@ -7,20 +7,16 @@ module WorkWrap ( wwTopBinds, mkWrapper ) where import CoreSyn -import CoreUnfold ( certainlyWillInline, mkInlineRule, mkWwInlineRule ) +import CoreUnfold ( certainlyWillInline, mkInlineUnfolding, mkWwInlineRule ) import CoreUtils ( exprType, exprIsHNF ) import CoreArity ( exprArity ) import Var import Id import Type ( Type ) import IdInfo -import Demand ( Demand(..), StrictSig(..), DmdType(..), DmdResult(..), - Demands(..), mkTopDmdType, isBotRes, returnsCPR, topSig, isAbsent - ) +import Demand import UniqSupply -import BasicTypes ( RecFlag(..), isNonRec, isNeverActive, - Activation(..), InlinePragma(..), - inlinePragmaActivation, inlinePragmaRuleMatchInfo ) +import BasicTypes import VarEnv ( isEmptyVarEnv ) import Maybes ( orElse ) import WwLib @@ -276,7 +272,7 @@ checkSize fn_id rhs thing_inside | otherwise = thing_inside where unfolding = idUnfolding fn_id - inline_rule = mkInlineRule rhs Nothing + inline_rule = mkInlineUnfolding Nothing rhs --------------------- splitFun :: Id -> IdInfo -> [Demand] -> DmdResult -> Expr Var @@ -314,7 +310,7 @@ splitFun fn_id fn_info wrap_dmds res_info rhs -- arity is consistent with the demand type goes through wrap_rhs = wrap_fn work_id - wrap_prag = InlinePragma { inl_inline = True + wrap_prag = InlinePragma { inl_inline = Inline , inl_sat = Nothing , inl_act = ActiveAfter 0 , inl_rule = rule_match_info } |