ghc-9.12.1: GHC/Driver/Config/CoreToStg/Prep.hs
module GHC.Driver.Config.CoreToStg.Prep
( initCorePrepConfig
, initCorePrepPgmConfig
) where
import GHC.Prelude
import GHC.Core.Opt.Pipeline.Types ( CoreToDo(..) )
import GHC.Driver.Env
import GHC.Driver.Session
import GHC.Driver.Config.Core.Lint
import GHC.Driver.Config.Core.Opt.Arity
import GHC.Types.Var
import GHC.Utils.Outputable ( alwaysQualify )
import GHC.CoreToStg.Prep
initCorePrepConfig :: HscEnv -> IO CorePrepConfig
initCorePrepConfig hsc_env = do
let dflags = hsc_dflags hsc_env
return $ CorePrepConfig
{ cp_catchNonexhaustiveCases = gopt Opt_CatchNonexhaustiveCases dflags
, cp_platform = targetPlatform dflags
, cp_arityOpts = if gopt Opt_DoCleverArgEtaExpansion dflags
then Just (initArityOpts dflags)
else Nothing
}
initCorePrepPgmConfig :: DynFlags -> [Var] -> CorePrepPgmConfig
initCorePrepPgmConfig dflags extra_vars = CorePrepPgmConfig
{ cpPgm_endPassConfig = initEndPassConfig dflags extra_vars alwaysQualify CorePrep
, cpPgm_generateDebugInfo = needSourceNotes dflags
}