CoreUnfold
- data Unfolding
- data UnfoldingGuidance
- noUnfolding :: Unfolding
- mkImplicitUnfolding :: CoreExpr -> Unfolding
- mkUnfolding :: UnfoldingSource -> Bool -> Bool -> CoreExpr -> Unfolding
- mkCoreUnfolding :: UnfoldingSource -> Bool -> CoreExpr -> Arity -> UnfoldingGuidance -> Unfolding
- mkTopUnfolding :: Bool -> CoreExpr -> Unfolding
- mkSimpleUnfolding :: CoreExpr -> Unfolding
- mkInlineUnfolding :: Maybe Arity -> CoreExpr -> Unfolding
- mkInlinableUnfolding :: CoreExpr -> Unfolding
- mkWwInlineRule :: Id -> CoreExpr -> Arity -> Unfolding
- mkCompulsoryUnfolding :: CoreExpr -> Unfolding
- mkDFunUnfolding :: Type -> [CoreExpr] -> Unfolding
- interestingArg :: CoreExpr -> ArgSummary
- data ArgSummary
- = TrivArg
- | NonTrivArg
- | ValueArg
- couldBeSmallEnoughToInline :: Int -> CoreExpr -> Bool
- inlineBoringOk :: CoreExpr -> Bool
- certainlyWillInline :: Unfolding -> Bool
- smallEnoughToInline :: Unfolding -> Bool
- callSiteInline :: DynFlags -> Id -> Bool -> Bool -> [ArgSummary] -> CallCtxt -> Maybe CoreExpr
- data CallCtxt
- = BoringCtxt
- | ArgCtxt Bool
- | ValAppCtxt
- | CaseCtxt
- exprIsConApp_maybe :: IdUnfoldingFun -> CoreExpr -> Maybe (DataCon, [Type], [CoreExpr])
Documentation
data Unfolding
Records the unfolding of an identifier, which is approximately the form the identifier would have if we substituted its definition in for the identifier. This type should be treated as abstract everywhere except in CoreUnfold
Instances
There is no known Unfolding
mkUnfolding :: UnfoldingSource -> Bool -> Bool -> CoreExpr -> Unfolding
mkCoreUnfolding :: UnfoldingSource -> Bool -> CoreExpr -> Arity -> UnfoldingGuidance -> Unfolding
mkTopUnfolding :: Bool -> CoreExpr -> Unfolding
mkInlineUnfolding :: Maybe Arity -> CoreExpr -> Unfolding
mkWwInlineRule :: Id -> CoreExpr -> Arity -> Unfolding
mkDFunUnfolding :: Type -> [CoreExpr] -> Unfolding
interestingArg :: CoreExpr -> ArgSummary
couldBeSmallEnoughToInline :: Int -> CoreExpr -> Bool
inlineBoringOk :: CoreExpr -> Bool
certainlyWillInline :: Unfolding -> Bool
smallEnoughToInline :: Unfolding -> Bool
callSiteInline :: DynFlags -> Id -> Bool -> Bool -> [ArgSummary] -> CallCtxt -> Maybe CoreExpr
exprIsConApp_maybe :: IdUnfoldingFun -> CoreExpr -> Maybe (DataCon, [Type], [CoreExpr])
Returns Just (dc, [t1..tk], [x1..xn])
if the argument expression is
a *saturated* constructor application of the form dc t1..tk x1 .. xn
,
where t1..tk are the *universally-qantified* type args of dc