opt_PprStyle_Debug,
dopt,
+ dopt_set,
+ dopt_unset,
-- other dynamic flags
dopt_CoreToDo,
opt_Parallel,
opt_SMP,
opt_NoMonomorphismRestriction,
- opt_KeepStgTypes,
+ opt_RuntimeTypes,
-- optimisation opts
opt_NoMethodSharing,
opt_SimplExcessPrecision,
-- Unfolding control
- opt_UF_HiFileThreshold,
opt_UF_CreationThreshold,
opt_UF_UseThreshold,
opt_UF_FunAppDiscount,
| CoreDoStrictness
| CoreDoWorkerWrapper
| CoreDoSpecialising
+ | CoreDoSpecConstr
| CoreDoUSPInf
| CoreDoCPResult
| CoreDoGlomBinds
| Opt_WarnUnusedImports
| Opt_WarnUnusedMatches
| Opt_WarnDeprecations
+ | Opt_WarnMisc
-- language opts
| Opt_AllowOverlappingInstances
stgToDo :: [StgToDo],
hscLang :: HscLang,
hscOutName :: String, -- name of the output file
+ hscStubHOutName :: String, -- name of the .stub_h output file
+ hscStubCOutName :: String, -- name of the .stub_c output file
verbosity :: Int, -- verbosity level
cppFlag :: Bool, -- preprocess with cpp?
stolen_x86_regs :: Int,
coreToDo = [], stgToDo = [],
hscLang = HscC,
hscOutName = "",
+ hscStubHOutName = "", hscStubCOutName = "",
verbosity = 0,
cppFlag = False,
stolen_x86_regs = 4,
dopt_OutName :: DynFlags -> String
dopt_OutName = hscOutName
+dopt_set :: DynFlags -> DynFlag -> DynFlags
+dopt_set dfs f = dfs{ flags = f : flags dfs }
+
+dopt_unset :: DynFlags -> DynFlag -> DynFlags
+dopt_unset dfs f = dfs{ flags = filter (/= f) (flags dfs) }
+
data HscLang
= HscC
| HscAsm
| HscJava
-#ifdef ILX
| HscILX
-#endif
| HscInterpreted
deriving (Eq, Show)
[ Opt_WarnUnusedBinds,
Opt_WarnUnusedMatches,
Opt_WarnUnusedImports,
- Opt_WarnIncompletePatterns
+ Opt_WarnIncompletePatterns,
+ Opt_WarnMisc
]
minusWallOpts
{-
The optional '-inpackage=P' flag tells what package
we are compiling this module for.
- The Prelude, for example is compiled with '-inpackage prelude'
+ The Prelude, for example is compiled with '-inpackage std'
-}
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")
+opt_RuntimeTypes = lookUp SLIT("-fruntime-types")
-- Simplifier switches
opt_SimplNoPreInlining = lookUp SLIT("-fno-pre-inlining")
opt_SimplExcessPrecision = lookUp SLIT("-fexcess-precision")
-- Unfolding control
-opt_UF_HiFileThreshold = lookup_def_int "-funfolding-interface-threshold" (45::Int)
opt_UF_CreationThreshold = lookup_def_int "-funfolding-creation-threshold" (45::Int)
opt_UF_UseThreshold = lookup_def_int "-funfolding-use-threshold" (8::Int) -- Discounts can be big
opt_UF_FunAppDiscount = lookup_def_int "-funfolding-fun-discount" (6::Int) -- It's great to inline a fn
"fno-method-sharing",
"fno-monomorphism-restriction",
"fomit-interface-pragmas",
- "fkeep-stg-types",
+ "fruntime-types",
"fno-pre-inlining",
"fdo-eta-reduction",
"fdo-lambda-eta-expansion",
"fcontext-stack",
"fliberate-case-threshold",
"fhistory-size",
- "funfolding-interface-threshold",
"funfolding-creation-threshold",
"funfolding-use-threshold",
"funfolding-fun-discount",