| Safe Haskell | None | 
|---|---|
| Language | Haskell2010 | 
GHC.Core.Opt.Simplify.Env
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
 - smPedanticBottoms :: SimplMode -> Bool
 - smPlatform :: SimplMode -> Platform
 - data SimplEnv = SimplEnv {
- seMode :: !SimplMode
 - seFamEnvs :: !(FamInstEnv, FamInstEnv)
 - seTvSubst :: TvSubstEnv
 - seCvSubst :: CvSubstEnv
 - seIdSubst :: SimplIdSubst
 - seRecIds :: !UnVarSet
 - seInScope :: !InScopeSet
 - seCaseDepth :: !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
 - sePedanticBottoms :: SimplEnv -> Bool
 - 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
 - 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)
 - data SimplSR
- = DoneEx OutExpr (Maybe JoinArity)
 - | 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
Constructors
| SimplMode | |
Fields 
  | |
Instances
smPedanticBottoms :: SimplMode -> Bool Source #
smPlatform :: SimplMode -> Platform Source #
Environments
Constructors
| SimplEnv | |
Fields 
  | |
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 #
sePedanticBottoms :: SimplEnv -> Bool 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 #
Substitution results
A substitution result.
Constructors
| DoneEx OutExpr (Maybe JoinArity) | |
| DoneId OutId | |
| ContEx TvSubstEnv CvSubstEnv SimplIdSubst InExpr | 
Instances
Simplifying Id binders
Floats
data SimplFloats Source #
Constructors
| SimplFloats | |
Fields  | |
Instances
| Outputable SimplFloats Source # | |
Defined in GHC.Core.Opt.Simplify.Env Methods 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
data FloatEnable Source #
Constructors
| FloatDisabled | |
| FloatNestedOnly | |
| FloatEnabled | 
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 #