ghc-lib-0.20190204: The GHC API, decoupled from GHC versions

Safe HaskellNone
LanguageHaskell2010

CoreOpt

Simple expression optimiser

simpleOptPgm :: DynFlags -> Module -> CoreProgram -> [CoreRule] -> IO (CoreProgram, [CoreRule]) Source #

simpleOptExpr :: DynFlags -> CoreExpr -> CoreExpr Source #

simpleOptExprWith :: DynFlags -> Subst -> InExpr -> OutExpr Source #

Join points

joinPointBinding_maybe :: InBndr -> InExpr -> Maybe (InBndr, InExpr) Source #

Returns Just (bndr,rhs) if the binding is a join point: If it's a JoinId, just return it If it's not yet a JoinId but is always tail-called, make it into a JoinId and return it. In the latter case, eta-expand the RHS if necessary, to make the lambdas explicit, as is required for join points

Precondition: the InBndr has been occurrence-analysed, so its OccInfo is valid

joinPointBindings_maybe :: [(InBndr, InExpr)] -> Maybe [(InBndr, InExpr)] Source #

Predicates on expressions

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 #

exprIsLambda_maybe :: InScopeEnv -> CoreExpr -> Maybe (Var, CoreExpr, [Tickish Id]) Source #

Coercions and casts

pushCoArg :: CoercionR -> CoreArg -> Maybe (CoreArg, MCoercion) Source #

pushCoValArg :: CoercionR -> Maybe (Coercion, MCoercion) Source #

pushCoTyArg :: CoercionR -> Type -> Maybe (Type, MCoercionR) Source #

collectBindersPushingCo :: CoreExpr -> ([Var], CoreExpr) Source #

AltStyle によって変換されたページ (->オリジナル) /