Safe Haskell | None |
---|---|
Language | Haskell2010 |
CoreUnfold
Synopsis
- data Unfolding
- data UnfoldingGuidance
- noUnfolding :: Unfolding
- mkImplicitUnfolding :: DynFlags -> CoreExpr -> Unfolding
- mkUnfolding :: DynFlags -> UnfoldingSource -> Bool -> Bool -> CoreExpr -> Unfolding
- mkCoreUnfolding :: UnfoldingSource -> Bool -> CoreExpr -> UnfoldingGuidance -> Unfolding
- mkTopUnfolding :: DynFlags -> Bool -> CoreExpr -> Unfolding
- mkSimpleUnfolding :: DynFlags -> CoreExpr -> Unfolding
- mkWorkerUnfolding :: DynFlags -> (CoreExpr -> CoreExpr) -> Unfolding -> Unfolding
- mkInlineUnfolding :: CoreExpr -> Unfolding
- mkInlineUnfoldingWithArity :: Arity -> CoreExpr -> Unfolding
- mkInlinableUnfolding :: DynFlags -> CoreExpr -> Unfolding
- mkWwInlineRule :: CoreExpr -> Arity -> Unfolding
- mkCompulsoryUnfolding :: CoreExpr -> Unfolding
- mkDFunUnfolding :: [Var] -> DataCon -> [CoreExpr] -> Unfolding
- specUnfolding :: [Var] -> (CoreExpr -> CoreExpr) -> Arity -> Unfolding -> Unfolding
- data ArgSummary
- couldBeSmallEnoughToInline :: DynFlags -> Int -> CoreExpr -> Bool
- inlineBoringOk :: CoreExpr -> Bool
- certainlyWillInline :: DynFlags -> IdInfo -> Maybe Unfolding
- smallEnoughToInline :: DynFlags -> Unfolding -> Bool
- callSiteInline :: DynFlags -> Id -> Bool -> Bool -> [ArgSummary] -> CallCtxt -> Maybe CoreExpr
- data CallCtxt
- exprIsConApp_maybe :: InScopeEnv -> CoreExpr -> Maybe (DataCon, [Type], [CoreExpr])
- exprIsLiteral_maybe :: InScopeEnv -> CoreExpr -> Maybe Literal
Documentation
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
data UnfoldingGuidance Source #
UnfoldingGuidance
says when unfolding should take place
Instances
Eq UnfoldingGuidance # | |
Methods (==) :: UnfoldingGuidance -> UnfoldingGuidance -> Bool # (/=) :: UnfoldingGuidance -> UnfoldingGuidance -> Bool # |
noUnfolding :: Unfolding Source #
There is no known Unfolding
mkUnfolding :: DynFlags -> UnfoldingSource -> Bool -> Bool -> CoreExpr -> Unfolding Source #
mkCoreUnfolding :: UnfoldingSource -> Bool -> CoreExpr -> UnfoldingGuidance -> Unfolding Source #
mkInlineUnfolding :: CoreExpr -> Unfolding Source #
Make an unfolding that may be used unsaturated (ug_unsat_ok = unSaturatedOk) and that is reported as having its manifest arity (the number of outer lambdas applications will resolve before doing any work).
mkInlineUnfoldingWithArity :: Arity -> CoreExpr -> Unfolding Source #
Make an unfolding that will be used once the RHS has been saturated to the given arity.
inlineBoringOk :: CoreExpr -> Bool Source #
callSiteInline :: DynFlags -> Id -> Bool -> Bool -> [ArgSummary] -> CallCtxt -> Maybe CoreExpr Source #
Constructors
BoringCtxt | |
RhsCtxt | |
DiscArgCtxt | |
RuleArgCtxt | |
ValAppCtxt | |
CaseCtxt |
exprIsConApp_maybe :: InScopeEnv -> CoreExpr -> Maybe (DataCon, [Type], [CoreExpr]) Source #
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-quantified* type args of dc
exprIsLiteral_maybe :: InScopeEnv -> CoreExpr -> Maybe Literal Source #