-- Output style options
opt_PprUserLength,
+ opt_SuppressAll,
opt_SuppressUniques,
opt_SuppressCoercions,
opt_SuppressModulePrefixes,
+ opt_SuppressTypeApplications,
+ opt_SuppressIdInfo,
opt_PprStyle_Debug, opt_TraceLevel,
opt_NoDebugOutput,
opt_Parallel,
-- optimisation opts
- opt_DsMultiTyVar,
opt_NoStateHack,
opt_SimpleListLiterals,
opt_CprOff,
import Config
import FastString
import Util
-import Maybes ( firstJust )
+import Maybes ( firstJusts )
import Panic
import Data.Maybe ( listToMaybe )
-- (lookup_str "foo") looks for the flag -foo=X or -fooX,
-- and returns the string X
lookup_str sw
- = case firstJust (map (stripPrefix sw) staticFlags) of
+ = case firstJusts (map (stripPrefix sw) staticFlags) of
Just ('=' : str) -> Just str
Just str -> Just str
Nothing -> Nothing
opt_IgnoreDotGhci :: Bool
opt_IgnoreDotGhci = lookUp (fsLit "-ignore-dot-ghci")
--- debugging opts
+-- debugging options
+-- | Suppress all that is suppressable in core dumps.
+opt_SuppressAll :: Bool
+opt_SuppressAll
+ = lookUp (fsLit "-dsuppress-all")
+
+-- | Suppress unique ids on variables.
opt_SuppressUniques :: Bool
-opt_SuppressUniques = lookUp (fsLit "-dsuppress-uniques")
+opt_SuppressUniques
+ = lookUp (fsLit "-dsuppress-all")
+ || lookUp (fsLit "-dsuppress-uniques")
+-- | 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")
+
opt_PprStyle_Debug :: Bool
opt_PprStyle_Debug = lookUp (fsLit "-dppr-debug")
opt_Parallel :: Bool
opt_Parallel = lookUp (fsLit "-fparallel")
--- optimisation opts
-opt_DsMultiTyVar :: Bool
-opt_DsMultiTyVar = not (lookUp (fsLit "-fno-ds-multi-tyvar"))
- -- On by default
-
opt_SimpleListLiterals :: Bool
opt_SimpleListLiterals = lookUp (fsLit "-fsimple-list-literals")
opt_UF_CreationThreshold = lookup_def_int "-funfolding-creation-threshold" (45::Int)
opt_UF_UseThreshold = lookup_def_int "-funfolding-use-threshold" (6::Int)
opt_UF_FunAppDiscount = lookup_def_int "-funfolding-fun-discount" (6::Int)
-opt_UF_DictDiscount = lookup_def_int "-funfolding-dict-discount" (1::Int)
+
+opt_UF_DictDiscount = lookup_def_int "-funfolding-dict-discount" (3::Int)
+ -- Be fairly keen to inline a fuction if that means
+ -- we'll be able to pick the right method from a dictionary
+
opt_UF_KeenessFactor = lookup_def_float "-funfolding-keeness-factor" (1.5::Float)
opt_UF_DearOp = ( 4 :: Int)