-- Output style options
opt_PprUserLength,
+ opt_PprCols,
+ opt_PprCaseAsLet,
+ opt_PprStyle_Debug, opt_TraceLevel,
+ opt_NoDebugOutput,
+
+ -- Suppressing boring aspects of core dumps
+ opt_SuppressAll,
opt_SuppressUniques,
opt_SuppressCoercions,
opt_SuppressModulePrefixes,
- opt_PprStyle_Debug, opt_TraceLevel,
- opt_NoDebugOutput,
+ opt_SuppressTypeApplications,
+ opt_SuppressIdInfo,
+ opt_SuppressTypeSignatures,
-- profiling opts
opt_SccProfilingOn,
opt_CprOff,
opt_SimplNoPreInlining,
opt_SimplExcessPrecision,
+ opt_NoOptCoercion,
opt_MaxWorkerArgs,
-- Unfolding control
= case reads str of
((x,_):_) -> x -- Be forgiving: ignore trailing goop, and alternative parses
[] -> ghcError (UsageError ("Malformed argument " ++ str ++ " for flag " ++ sw))
- -- ToDo: hack alert. We should really parse the arugments
+ -- ToDo: hack alert. We should really parse the arguments
-- and announce errors in a more civilised way.
opt_IgnoreDotGhci :: Bool
opt_IgnoreDotGhci = lookUp (fsLit "-ignore-dot-ghci")
--- debugging opts
-opt_SuppressUniques :: Bool
-opt_SuppressUniques = lookUp (fsLit "-dsuppress-uniques")
+-- debugging options
+-- | Suppress all that is suppressable in core dumps.
+-- Except for uniques, as some simplifier phases introduce new varibles that
+-- have otherwise identical names.
+opt_SuppressAll :: Bool
+opt_SuppressAll
+ = lookUp (fsLit "-dsuppress-all")
+-- | Suppress all coercions, them replacing with '...'
opt_SuppressCoercions :: Bool
-opt_SuppressCoercions = lookUp (fsLit "-dsuppress-coercions")
+opt_SuppressCoercions
+ = lookUp (fsLit "-dsuppress-all")
+ || lookUp (fsLit "-dsuppress-coercions")
+-- | Suppress module id prefixes on variables.
opt_SuppressModulePrefixes :: Bool
-opt_SuppressModulePrefixes = lookUp (fsLit "-dsuppress-module-prefixes")
+opt_SuppressModulePrefixes
+ = lookUp (fsLit "-dsuppress-all")
+ || lookUp (fsLit "-dsuppress-module-prefixes")
+
+-- | Suppress type applications.
+opt_SuppressTypeApplications :: Bool
+opt_SuppressTypeApplications
+ = lookUp (fsLit "-dsuppress-all")
+ || lookUp (fsLit "-dsuppress-type-applications")
+
+-- | Suppress info such as arity and unfoldings on identifiers.
+opt_SuppressIdInfo :: Bool
+opt_SuppressIdInfo
+ = lookUp (fsLit "-dsuppress-all")
+ || lookUp (fsLit "-dsuppress-idinfo")
+
+-- | Suppress seprate type signatures in core, but leave types on lambda bound vars
+opt_SuppressTypeSignatures :: Bool
+opt_SuppressTypeSignatures
+ = lookUp (fsLit "-dsuppress-all")
+ || lookUp (fsLit "-dsuppress-type-signatures")
+
+-- | Suppress unique ids on variables.
+-- Except for uniques, as some simplifier phases introduce new variables that
+-- have otherwise identical names.
+opt_SuppressUniques :: Bool
+opt_SuppressUniques
+ = lookUp (fsLit "-dsuppress-uniques")
+
+-- | Display case expressions with a single alternative as strict let bindings
+opt_PprCaseAsLet :: Bool
+opt_PprCaseAsLet = lookUp (fsLit "-dppr-case-as-let")
+
+-- | Set the maximum width of the dumps
+-- If GHC's command line options are bad then the options parser uses the
+-- pretty printer display the error message. In this case the staticFlags
+-- won't be initialized yet, so we must check for this case explicitly
+-- and return the default value.
+opt_PprCols :: Int
+opt_PprCols
+ = unsafePerformIO
+ $ do ready <- readIORef v_opt_C_ready
+ if (not ready)
+ then return 100
+ else return $ lookup_def_int "-dppr-cols" 100
+
opt_PprStyle_Debug :: Bool
opt_PprStyle_Debug = lookUp (fsLit "-dppr-debug")
opt_NoDebugOutput :: Bool
opt_NoDebugOutput = lookUp (fsLit "-dno-debug-output")
-
-- profiling opts
opt_SccProfilingOn :: Bool
opt_SccProfilingOn = lookUp (fsLit "-fscc-profiling")
opt_SimplExcessPrecision :: Bool
opt_SimplExcessPrecision = lookUp (fsLit "-fexcess-precision")
+opt_NoOptCoercion :: Bool
+opt_NoOptCoercion = lookUp (fsLit "-fno-opt-coercion")
+
-- Unfolding control
-- See Note [Discounts and thresholds] in CoreUnfold