| Safe Haskell | Safe-Inferred |
|---|---|
| Language | Haskell2010 |
GHC.Core.Unfold
Synopsis
- data Unfolding
- data UnfoldingGuidance
- data UnfoldingOpts = UnfoldingOpts {}
- defaultUnfoldingOpts :: UnfoldingOpts
- updateCreationThreshold :: Int -> UnfoldingOpts -> UnfoldingOpts
- updateUseThreshold :: Int -> UnfoldingOpts -> UnfoldingOpts
- updateFunAppDiscount :: Int -> UnfoldingOpts -> UnfoldingOpts
- updateDictDiscount :: Int -> UnfoldingOpts -> UnfoldingOpts
- updateVeryAggressive :: Bool -> UnfoldingOpts -> UnfoldingOpts
- updateCaseScaling :: Int -> UnfoldingOpts -> UnfoldingOpts
- updateCaseThreshold :: Int -> UnfoldingOpts -> UnfoldingOpts
- data ArgSummary
- couldBeSmallEnoughToInline :: UnfoldingOpts -> Int -> CoreExpr -> Bool
- inlineBoringOk :: CoreExpr -> Bool
- certainlyWillInline :: UnfoldingOpts -> IdInfo -> Maybe Unfolding
- smallEnoughToInline :: UnfoldingOpts -> Unfolding -> Bool
- callSiteInline :: Logger -> DynFlags -> Int -> Id -> Bool -> Bool -> [ArgSummary] -> CallCtxt -> Maybe CoreExpr
- data CallCtxt
- calcUnfoldingGuidance :: UnfoldingOpts -> Bool -> CoreExpr -> UnfoldingGuidance
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 GHC.Core.Unfold
Instances
| Outputable Unfolding # | |
Defined in GHC.Core.Ppr | |
data UnfoldingGuidance #
UnfoldingGuidance says when unfolding should take place
Instances
| Outputable UnfoldingGuidance # | |
Defined in GHC.Core.Ppr Methods ppr :: UnfoldingGuidance -> SDoc # | |
| Eq UnfoldingGuidance # | |
Defined in GHC.Core Methods (==) :: UnfoldingGuidance -> UnfoldingGuidance -> Bool # (/=) :: UnfoldingGuidance -> UnfoldingGuidance -> Bool # | |
data UnfoldingOpts #
Unfolding options
Constructors
| UnfoldingOpts | |
Fields
| |
updateUseThreshold :: Int -> UnfoldingOpts -> UnfoldingOpts #
updateFunAppDiscount :: Int -> UnfoldingOpts -> UnfoldingOpts #
updateDictDiscount :: Int -> UnfoldingOpts -> UnfoldingOpts #
updateVeryAggressive :: Bool -> UnfoldingOpts -> UnfoldingOpts #
updateCaseScaling :: Int -> UnfoldingOpts -> UnfoldingOpts #
updateCaseThreshold :: Int -> UnfoldingOpts -> UnfoldingOpts #
data ArgSummary #
Constructors
| TrivArg | |
| NonTrivArg | |
| ValueArg |
Instances
| Outputable ArgSummary # | |
Defined in GHC.Core.Unfold Methods ppr :: ArgSummary -> SDoc # | |
couldBeSmallEnoughToInline :: UnfoldingOpts -> Int -> CoreExpr -> Bool #
inlineBoringOk :: CoreExpr -> Bool #
certainlyWillInline :: UnfoldingOpts -> IdInfo -> Maybe Unfolding #
Sees if the unfolding is pretty certain to inline. If so, return a *stable* unfolding for it, that will always inline.
smallEnoughToInline :: UnfoldingOpts -> Unfolding -> Bool #
callSiteInline :: Logger -> DynFlags -> Int -> Id -> Bool -> Bool -> [ArgSummary] -> CallCtxt -> Maybe CoreExpr #
Constructors
| BoringCtxt | |
| RhsCtxt | |
| DiscArgCtxt | |
| RuleArgCtxt | |
| ValAppCtxt | |
| CaseCtxt |
Instances
| Outputable CallCtxt # | |
Defined in GHC.Core.Unfold | |
calcUnfoldingGuidance :: UnfoldingOpts -> Bool -> CoreExpr -> UnfoldingGuidance #