GHC.Core.Opt.Simplify.Utils

ghc-lib-parser-9.10.1.20250103: The GHC API, decoupled from GHC versions

Safe Haskell | Ignore
Language | GHC2021

GHC.Core.Opt.Simplify.Utils

# Documentation

rebuildLam :: SimplEnv -> [OutBndr] -> OutExpr -> SimplCont -> SimplM OutExpr #

mkCase :: SimplMode -> OutExpr -> OutId -> OutType -> [OutAlt] -> SimplM OutExpr #

prepareAlts :: OutExpr -> InId -> [InAlt] -> SimplM ([AltCon], [InAlt]) #

tryEtaExpandRhs :: SimplEnv -> BindContext -> OutId -> OutExpr -> SimplM (ArityType, OutExpr) #

wantEtaExpansion :: CoreExpr -> Bool #

preInlineUnconditionally :: SimplEnv -> TopLevelFlag -> InId -> InExpr -> StaticEnv -> Maybe SimplEnv #

postInlineUnconditionally :: SimplEnv -> BindContext -> OutId -> OccInfo -> OutExpr -> Bool #

activeUnfolding :: SimplMode -> Id -> Bool #

activeRule :: SimplMode -> Activation -> Bool #

getUnfoldingInRuleMatch :: SimplEnv -> InScopeEnv #

updModeForStableUnfoldings :: Activation -> SimplMode -> SimplMode #

updModeForRules :: SimplMode -> SimplMode #

data BindContext #

Constructors

BC_Let TopLevelFlag RecFlag |
BC_Join RecFlag SimplCont |

bindContextLevel :: BindContext -> TopLevelFlag #

data SimplCont #

Constructors

Stop | Stop[e] = e
Fields OutType Type of the hole CallCtxt Tells if there is something interesting about the syntactic context, and hence the inliner should be a bit keener (see interestingCallContext) Specifically: This is an argument of a function that has RULES Inlining the call might allow the rule to fire Never ValAppCxt (use ApplyToVal instead) or CaseCtxt (use Select instead) SubDemand The evaluation context of e. Tells how e is evaluated. This fuels eta-expansion or eta-reduction without looking at lambda bodies, for example. See Note [Eta reduction based on evaluation context] The evaluation context for other SimplConts can be reconstructed with `contEvalContext`
CastIt OutCoercion SimplCont |
ApplyToVal |
Fields sc_dup :: DupFlag sc_hole_ty :: OutType sc_arg :: InExpr sc_env :: StaticEnv sc_cont :: SimplCont
ApplyToTy |
Fields sc_arg_ty :: OutType sc_hole_ty :: OutType sc_cont :: SimplCont
Select |
Fields sc_dup :: DupFlag sc_bndr :: InId sc_alts :: [InAlt] sc_env :: StaticEnv sc_cont :: SimplCont
StrictBind |
Fields sc_dup :: DupFlag sc_from :: FromWhat sc_bndr :: InId sc_body :: InExpr sc_env :: StaticEnv sc_cont :: SimplCont
StrictArg |
Fields sc_dup :: DupFlag sc_fun :: ArgInfo sc_fun_ty :: OutType sc_cont :: SimplCont
TickIt CoreTickish SimplCont |

#### Instances

Instances details

Outputable SimplCont # |
Instance details Defined in GHC.Core.Opt.Simplify.Utils Methods ppr :: SimplCont -> SDoc #

data DupFlag #

Constructors

NoDup |
Simplified |
OkToDup |

#### Instances

Instances details

Outputable DupFlag # |
Instance details Defined in GHC.Core.Opt.Simplify.Utils Methods ppr :: DupFlag -> SDoc #

data FromWhat #

Constructors

FromLet |
FromBeta Levity |

type StaticEnv = SimplEnv #

isSimplified :: DupFlag -> Bool #

contIsStop :: SimplCont -> Bool #

contIsDupable :: SimplCont -> Bool #

contResultType :: SimplCont -> OutType #

contHoleType :: SimplCont -> OutType #

contHoleScaling :: SimplCont -> Mult #

contIsTrivial :: SimplCont -> Bool #

contArgs :: SimplCont -> (Bool, [ArgSummary], SimplCont) #

contIsRhs :: SimplCont -> Maybe RecFlag #

countArgs :: SimplCont -> Int #

mkBoringStop :: OutType -> SimplCont #

mkRhsStop :: OutType -> RecFlag -> Demand -> SimplCont #

mkLazyArgStop :: OutType -> ArgInfo -> SimplCont #

interestingCallContext :: SimplEnv -> SimplCont -> CallCtxt #

data ArgInfo #

Constructors

ArgInfo |
Fields ai_fun :: OutId ai_args :: [ArgSpec] ai_rewrite :: RewriteCall ai_encl :: Bool ai_dmds :: [Demand] ai_discs :: [Int]

#### Instances

Instances details

Outputable ArgInfo # |
Instance details Defined in GHC.Core.Opt.Simplify.Utils Methods ppr :: ArgInfo -> SDoc #

data ArgSpec #

Constructors

ValArg |
Fields as_dmd :: Demand as_arg :: OutExpr as_hole_ty :: OutType
TyArg |
Fields as_arg_ty :: OutType as_hole_ty :: OutType
CastBy OutCoercion |

#### Instances

Instances details

Outputable ArgSpec # |
Instance details Defined in GHC.Core.Opt.Simplify.Utils Methods ppr :: ArgSpec -> SDoc #

data RewriteCall #

Constructors

TryRules FullArgCount [CoreRule] |
TryInlining |
TryNothing |

mkArgInfo :: SimplEnv -> RuleEnv -> Id -> SimplCont -> ArgInfo #

addValArgTo :: ArgInfo -> OutExpr -> OutType -> ArgInfo #

addCastTo :: ArgInfo -> OutCoercion -> ArgInfo #

addTyArgTo :: ArgInfo -> OutType -> OutType -> ArgInfo #

argInfoExpr :: OutId -> [ArgSpec] -> OutExpr #

argInfoAppArgs :: [ArgSpec] -> [OutExpr] #

pushSimplifiedArgs :: SimplEnv -> [ArgSpec] -> SimplCont -> SimplCont #

pushSimplifiedRevArgs :: SimplEnv -> [ArgSpec] -> SimplCont -> SimplCont #

isStrictArgInfo :: ArgInfo -> Bool #

lazyArgContext :: ArgInfo -> CallCtxt #

abstractFloats :: UnfoldingOpts -> TopLevelFlag -> [OutTyVar] -> SimplFloats -> OutExpr -> SimplM ([OutBind], OutExpr) #

isExitJoinId :: Var -> Bool #