opt_NumbersStrict,
opt_Parallel,
opt_SMP,
+ opt_NoMonomorphismRestriction,
+ opt_KeepStgTypes,
-- optimisation opts
+ opt_NoMethodSharing,
opt_DoSemiTagging,
opt_FoldrBuildOn,
opt_LiberateCaseThreshold,
\begin{code}
data StgToDo
- = StgDoStaticArgs
- | StgDoLambdaLift
- | StgDoMassageForProfiling -- should be (next to) last
+ = StgDoMassageForProfiling -- should be (next to) last
-- There's also setStgVarInfo, but its absolute "lastness"
-- is so critical that it is hardwired in (no flag).
| D_stg_stats
| Opt_D_dump_simpl
| Opt_D_dump_simpl_iterations
| Opt_D_dump_spec
+ | Opt_D_dump_sat
| Opt_D_dump_stg
| Opt_D_dump_stranal
| Opt_D_dump_tc
| Opt_D_dump_types
+ | Opt_D_dump_tc_trace
| Opt_D_dump_rules
| Opt_D_dump_usagesp
| Opt_D_dump_cse
| Opt_D_dump_rn_stats
| Opt_D_dump_stix
| Opt_D_dump_simpl_stats
- | Opt_D_dump_InterpSyn
+ | Opt_D_dump_BCOs
| Opt_D_source_stats
| Opt_D_verbose_core2core
| Opt_D_verbose_stg2stg
deriving (Eq)
data DynFlags = DynFlags {
- coreToDo :: [CoreToDo],
- stgToDo :: [StgToDo],
- hscLang :: HscLang,
- hscOutName :: String, -- name of the file in which to place output
- verbosity :: Int, -- verbosity level
- flags :: [DynFlag]
+ coreToDo :: [CoreToDo],
+ stgToDo :: [StgToDo],
+ hscLang :: HscLang,
+ hscOutName :: String, -- name of the output file
+ verbosity :: Int, -- verbosity level
+ cppFlag :: Bool, -- preprocess with cpp?
+ stolen_x86_regs :: Int,
+ cmdlineHcIncludes :: [String], -- -#includes
+
+ -- options for particular phases
+ opt_L :: [String],
+ opt_P :: [String],
+ opt_c :: [String],
+ opt_a :: [String],
+ opt_m :: [String],
+
+ -- hsc dynamic flags
+ flags :: [DynFlag]
}
defaultDynFlags = DynFlags {
coreToDo = [], stgToDo = [],
- hscLang = HscC, hscOutName = "",
- verbosity = 0, flags = []
+ hscLang = HscC,
+ hscOutName = "",
+ verbosity = 0,
+ cppFlag = False,
+ stolen_x86_regs = 4,
+ cmdlineHcIncludes = [],
+ opt_L = [],
+ opt_P = [],
+ opt_c = [],
+ opt_a = [],
+ opt_m = [],
+ flags = []
}
{-
-- language opts
opt_AllStrict = lookUp SLIT("-fall-strict")
+opt_NoMonomorphismRestriction = lookUp SLIT("-fno-monomorphism-restriction")
opt_DictsStrict = lookUp SLIT("-fdicts-strict")
opt_IrrefutableTuples = lookUp SLIT("-firrefutable-tuples")
opt_MaxContextReductionDepth = lookup_def_int "-fcontext-stack" mAX_CONTEXT_REDUCTION_DEPTH
opt_SMP = lookUp SLIT("-fsmp")
-- optimisation opts
+opt_NoMethodSharing = lookUp SLIT("-fno-method-sharing")
opt_DoSemiTagging = lookUp SLIT("-fsemi-tagging")
opt_FoldrBuildOn = lookUp SLIT("-ffoldr-build-on")
opt_LiberateCaseThreshold = lookup_def_int "-fliberate-case-threshold" (10::Int)
{-
The optional '-inpackage=P' flag tells what package
we are compiling this module for.
- The Prelude, for example is compiled with '-package prelude'
+ The Prelude, for example is compiled with '-inpackage prelude'
-}
opt_InPackage = case lookup_str "-inpackage=" of
Just p -> _PK_ p
opt_NoHiCheck = lookUp SLIT("-fno-hi-version-check")
opt_OmitBlackHoling = lookUp SLIT("-dno-black-holing")
opt_OmitInterfacePragmas = lookUp SLIT("-fomit-interface-pragmas")
+opt_KeepStgTypes = lookUp SLIT("-fkeep-stg-types")
-- Simplifier switches
opt_SimplNoPreInlining = lookUp SLIT("-fno-pre-inlining")
"fignore-asserts",
"fignore-interface-pragmas",
"fno-hi-version-check",
- "fno-implicit-prelude",
"dno-black-holing",
+ "fno-method-sharing",
+ "fno-monomorphism-restriction",
"fomit-interface-pragmas",
+ "fkeep-stg-types",
"fno-pre-inlining",
"fdo-eta-reduction",
"fdo-lambda-eta-expansion",