Safe Haskell | None |
---|---|
Language | GHC2021 |
Synopsis
- data SimplMode = SimplMode {
- sm_phase :: !CompilerPhase
- sm_names :: ![String]
- sm_rules :: !Bool
- sm_inline :: !Bool
- sm_eta_expand :: !Bool
- sm_cast_swizzle :: !Bool
- sm_uf_opts :: !UnfoldingOpts
- sm_case_case :: !Bool
- sm_pre_inline :: !Bool
- sm_float_enable :: !FloatEnable
- sm_do_eta_reduction :: !Bool
- sm_arity_opts :: !ArityOpts
- sm_rule_opts :: !RuleOpts
- sm_case_folding :: !Bool
- sm_case_merge :: !Bool
- sm_co_opt_opts :: !OptCoercionOpts
- updMode :: (SimplMode -> SimplMode) -> SimplEnv -> SimplEnv
- smPlatform :: SimplMode -> Platform
- data SimplEnv = SimplEnv {
- seMode :: !SimplMode
- seFamEnvs :: !(FamInstEnv, FamInstEnv)
- seTvSubst :: TvSubstEnv
- seCvSubst :: CvSubstEnv
- seIdSubst :: SimplIdSubst
- seRecIds :: !UnVarSet
- seInScope :: !InScopeSet
- seCaseDepth :: !Int
- seInlineDepth :: !Int
- pprSimplEnv :: SimplEnv -> SDoc
- seArityOpts :: SimplEnv -> ArityOpts
- seCaseCase :: SimplEnv -> Bool
- seCaseFolding :: SimplEnv -> Bool
- seCaseMerge :: SimplEnv -> Bool
- seCastSwizzle :: SimplEnv -> Bool
- seDoEtaReduction :: SimplEnv -> Bool
- seEtaExpand :: SimplEnv -> Bool
- seFloatEnable :: SimplEnv -> FloatEnable
- seInline :: SimplEnv -> Bool
- seNames :: SimplEnv -> [String]
- seOptCoercionOpts :: SimplEnv -> OptCoercionOpts
- sePhase :: SimplEnv -> CompilerPhase
- sePlatform :: SimplEnv -> Platform
- sePreInline :: SimplEnv -> Bool
- seRuleOpts :: SimplEnv -> RuleOpts
- seRules :: SimplEnv -> Bool
- seUnfoldingOpts :: SimplEnv -> UnfoldingOpts
- mkSimplEnv :: SimplMode -> (FamInstEnv, FamInstEnv) -> SimplEnv
- extendIdSubst :: SimplEnv -> Id -> SimplSR -> SimplEnv
- extendCvIdSubst :: SimplEnv -> Id -> OutExpr -> SimplEnv
- extendTvSubst :: SimplEnv -> TyVar -> Type -> SimplEnv
- extendCvSubst :: SimplEnv -> CoVar -> Coercion -> SimplEnv
- zapSubstEnv :: SimplEnv -> SimplEnv
- setSubstEnv :: SimplEnv -> TvSubstEnv -> CvSubstEnv -> SimplIdSubst -> SimplEnv
- bumpCaseDepth :: SimplEnv -> SimplEnv
- getInScope :: SimplEnv -> InScopeSet
- setInScopeFromE :: SimplEnv -> SimplEnv -> SimplEnv
- setInScopeFromF :: SimplEnv -> SimplFloats -> SimplEnv
- setInScopeSet :: SimplEnv -> InScopeSet -> SimplEnv
- modifyInScope :: SimplEnv -> CoreBndr -> SimplEnv
- addNewInScopeIds :: SimplEnv -> [CoreBndr] -> SimplEnv
- getSimplRules :: SimplM RuleEnv
- enterRecGroupRHSs :: SimplEnv -> [OutBndr] -> (SimplEnv -> SimplM (r, SimplEnv)) -> SimplM (r, SimplEnv)
- reSimplifying :: SimplEnv -> Bool
- data SimplSR
- = DoneEx OutExpr JoinPointHood
- | DoneId OutId
- | ContEx TvSubstEnv CvSubstEnv SimplIdSubst InExpr
- mkContEx :: SimplEnv -> InExpr -> SimplSR
- substId :: SimplEnv -> InId -> SimplSR
- lookupRecBndr :: SimplEnv -> InId -> OutId
- simplNonRecBndr :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr)
- simplNonRecJoinBndr :: SimplEnv -> InBndr -> Mult -> OutType -> SimplM (SimplEnv, OutBndr)
- simplRecBndrs :: SimplEnv -> [InBndr] -> SimplM SimplEnv
- simplRecJoinBndrs :: SimplEnv -> [InBndr] -> Mult -> OutType -> SimplM SimplEnv
- simplBinder :: SimplEnv -> InBndr -> SimplM (SimplEnv, OutBndr)
- simplBinders :: SimplEnv -> [InBndr] -> SimplM (SimplEnv, [OutBndr])
- substTy :: HasDebugCallStack => SimplEnv -> Type -> Type
- substTyVar :: SimplEnv -> TyVar -> Type
- getSubst :: SimplEnv -> Subst
- substCo :: SimplEnv -> Coercion -> Coercion
- substCoVar :: SimplEnv -> CoVar -> Coercion
- data SimplFloats = SimplFloats {}
- emptyFloats :: SimplEnv -> SimplFloats
- isEmptyFloats :: SimplFloats -> Bool
- mkRecFloats :: SimplFloats -> SimplFloats
- mkFloatBind :: SimplEnv -> OutBind -> (SimplFloats, SimplEnv)
- addLetFloats :: SimplFloats -> LetFloats -> SimplFloats
- addJoinFloats :: SimplFloats -> JoinFloats -> SimplFloats
- addFloats :: SimplFloats -> SimplFloats -> SimplFloats
- extendFloats :: SimplFloats -> OutBind -> SimplFloats
- wrapFloats :: SimplFloats -> OutExpr -> OutExpr
- isEmptyJoinFloats :: JoinFloats -> Bool
- isEmptyLetFloats :: LetFloats -> Bool
- doFloatFromRhs :: FloatEnable -> TopLevelFlag -> RecFlag -> Bool -> SimplFloats -> OutExpr -> Bool
- getTopFloatBinds :: SimplFloats -> [CoreBind]
- data LetFloats
- data FloatEnable
- letFloatBinds :: LetFloats -> [CoreBind]
- emptyLetFloats :: LetFloats
- unitLetFloat :: OutBind -> LetFloats
- addLetFlts :: LetFloats -> LetFloats -> LetFloats
- mapLetFloats :: LetFloats -> ((Id, CoreExpr) -> (Id, CoreExpr)) -> LetFloats
- type JoinFloat = OutBind
- type JoinFloats = OrdList JoinFloat
- emptyJoinFloats :: JoinFloats
- wrapJoinFloats :: JoinFloats -> OutExpr -> OutExpr
- wrapJoinFloatsX :: SimplFloats -> OutExpr -> (SimplFloats, OutExpr)
- unitJoinFloat :: OutBind -> JoinFloats
- addJoinFlts :: JoinFloats -> JoinFloats -> JoinFloats
The simplifier mode
SimplMode | |
|
Instances
smPlatform :: SimplMode -> Platform Source #
Environments
SimplEnv | |
|
pprSimplEnv :: SimplEnv -> SDoc Source #
seArityOpts :: SimplEnv -> ArityOpts Source #
seCaseCase :: SimplEnv -> Bool Source #
seCaseFolding :: SimplEnv -> Bool Source #
seCaseMerge :: SimplEnv -> Bool Source #
seCastSwizzle :: SimplEnv -> Bool Source #
seDoEtaReduction :: SimplEnv -> Bool Source #
seEtaExpand :: SimplEnv -> Bool Source #
seFloatEnable :: SimplEnv -> FloatEnable Source #
sePhase :: SimplEnv -> CompilerPhase Source #
sePlatform :: SimplEnv -> Platform Source #
sePreInline :: SimplEnv -> Bool Source #
seRuleOpts :: SimplEnv -> RuleOpts Source #
mkSimplEnv :: SimplMode -> (FamInstEnv, FamInstEnv) -> SimplEnv Source #
zapSubstEnv :: SimplEnv -> SimplEnv Source #
setSubstEnv :: SimplEnv -> TvSubstEnv -> CvSubstEnv -> SimplIdSubst -> SimplEnv Source #
bumpCaseDepth :: SimplEnv -> SimplEnv Source #
getInScope :: SimplEnv -> InScopeSet Source #
setInScopeFromF :: SimplEnv -> SimplFloats -> SimplEnv Source #
setInScopeSet :: SimplEnv -> InScopeSet -> SimplEnv Source #
enterRecGroupRHSs :: SimplEnv -> [OutBndr] -> (SimplEnv -> SimplM (r, SimplEnv)) -> SimplM (r, SimplEnv) Source #
reSimplifying :: SimplEnv -> Bool Source #
Substitution results
A substitution result.
DoneEx OutExpr JoinPointHood | |
DoneId OutId | |
ContEx TvSubstEnv CvSubstEnv SimplIdSubst InExpr |
Instances
Simplifying Id
binders
Floats
data SimplFloats Source #
Instances
Outputable SimplFloats Source # | |
Defined in GHC.Core.Opt.Simplify.Env ppr :: SimplFloats -> SDoc Source # |
emptyFloats :: SimplEnv -> SimplFloats Source #
isEmptyFloats :: SimplFloats -> Bool Source #
mkRecFloats :: SimplFloats -> SimplFloats Source #
mkFloatBind :: SimplEnv -> OutBind -> (SimplFloats, SimplEnv) Source #
addLetFloats :: SimplFloats -> LetFloats -> SimplFloats Source #
addJoinFloats :: SimplFloats -> JoinFloats -> SimplFloats Source #
addFloats :: SimplFloats -> SimplFloats -> SimplFloats Source #
extendFloats :: SimplFloats -> OutBind -> SimplFloats Source #
wrapFloats :: SimplFloats -> OutExpr -> OutExpr Source #
isEmptyJoinFloats :: JoinFloats -> Bool Source #
isEmptyLetFloats :: LetFloats -> Bool Source #
doFloatFromRhs :: FloatEnable -> TopLevelFlag -> RecFlag -> Bool -> SimplFloats -> OutExpr -> Bool Source #
getTopFloatBinds :: SimplFloats -> [CoreBind] Source #
LetFloats
Instances
letFloatBinds :: LetFloats -> [CoreBind] Source #
unitLetFloat :: OutBind -> LetFloats Source #
JoinFloats
type JoinFloats = OrdList JoinFloat Source #
wrapJoinFloats :: JoinFloats -> OutExpr -> OutExpr Source #
wrapJoinFloatsX :: SimplFloats -> OutExpr -> (SimplFloats, OutExpr) Source #
unitJoinFloat :: OutBind -> JoinFloats Source #
addJoinFlts :: JoinFloats -> JoinFloats -> JoinFloats Source #