Enable -prof -threaded (#886)
[ghc-hetmet.git] / compiler / main / StaticFlags.hs
index 43f630c..043df54 100644 (file)
@@ -26,6 +26,7 @@ module StaticFlags (
 
        -- Output style options
        opt_PprUserLength,
+       opt_SuppressUniques,
        opt_PprStyle_Debug,
 
        -- profiling opts
@@ -48,6 +49,7 @@ module StaticFlags (
        -- optimisation opts
        opt_NoMethodSharing, 
        opt_NoStateHack,
+       opt_SpecInlineJoinPoints,
        opt_CprOff,
        opt_SimplNoPreInlining,
        opt_SimplExcessPrecision,
@@ -58,13 +60,11 @@ module StaticFlags (
        opt_UF_UseThreshold,
        opt_UF_FunAppDiscount,
        opt_UF_KeenessFactor,
-       opt_UF_UpdateInPlace,
        opt_UF_DearOp,
 
        -- Related to linking
        opt_PIC,
        opt_Static,
-       opt_HardwireLibPaths,
 
        -- misc opts
        opt_IgnoreDotGhci,
@@ -169,8 +169,9 @@ static_flags = [
        -- ToDo: user ways
 
        ------ Debugging ----------------------------------------------------
-  ,  ( "dppr-debug",       PassFlag addOpt )
-  ,  ( "dppr-user-length", AnySuffix addOpt )
+  ,  ( "dppr-debug",        PassFlag addOpt )
+  ,  ( "dsuppress-uniques", PassFlag addOpt )
+  ,  ( "dppr-user-length",  AnySuffix addOpt )
       -- rest of the debugging flags are dynamic
 
        --------- Profiling --------------------------------------------------
@@ -224,7 +225,7 @@ GLOBAL_VAR(v_opt_C_ready, False, Bool)
 staticFlags = unsafePerformIO $ do
   ready <- readIORef v_opt_C_ready
   if (not ready)
-        then panic "a static opt was looked at too early!"
+        then panic "Static flags have not been initialised!\n        Please call GHC.newSession or GHC.parseStaticFlags early enough."
         else readIORef v_opt_C
 
 -- -static is the default
@@ -282,6 +283,7 @@ unpacked_opts =
 opt_IgnoreDotGhci              = lookUp FSLIT("-ignore-dot-ghci")
 
 -- debugging opts
+opt_SuppressUniques            = lookUp  FSLIT("-dsuppress-uniques")
 opt_PprStyle_Debug             = lookUp  FSLIT("-dppr-debug")
 opt_PprUserLength              = lookup_def_int "-dppr-user-length" 5 --ToDo: give this a name
 
@@ -302,6 +304,7 @@ opt_Parallel                        = lookUp  FSLIT("-fparallel")
 opt_Flatten                    = lookUp  FSLIT("-fflatten")
 
 -- optimisation opts
+opt_SpecInlineJoinPoints       = lookUp  FSLIT("-fspec-inline-join-points")
 opt_NoStateHack                        = lookUp  FSLIT("-fno-state-hack")
 opt_NoMethodSharing            = lookUp  FSLIT("-fno-method-sharing")
 opt_CprOff                     = lookUp  FSLIT("-fcpr-off")
@@ -325,7 +328,6 @@ opt_UF_CreationThreshold    = lookup_def_int "-funfolding-creation-threshold"  (45:
 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
 opt_UF_KeenessFactor           = lookup_def_float "-funfolding-keeness-factor"    (1.5::Float)
-opt_UF_UpdateInPlace           = lookUp  FSLIT("-funfolding-update-in-place")
 
 opt_UF_DearOp   = ( 4 :: Int)
                        
@@ -335,7 +337,6 @@ opt_PIC                         = True
 opt_PIC                         = lookUp FSLIT("-fPIC")
 #endif
 opt_Static                     = lookUp  FSLIT("-static")
-opt_HardwireLibPaths           = lookUp  FSLIT("-fhardwire-lib-paths")
 opt_Unregisterised             = lookUp  FSLIT("-funregisterised")
 
 -- Derived, not a real option.  Determines whether we will be compiling
@@ -363,6 +364,7 @@ isStaticFlag f =
        "fauto-sccs-on-individual-cafs",
        "fscc-profiling",
        "fdicts-strict",
+       "fspec-inline-join-points",
        "firrefutable-tuples",
        "fparallel",
        "fflatten",
@@ -374,7 +376,6 @@ isStaticFlag f =
        "fruntime-types",
        "fno-pre-inlining",
        "fexcess-precision",
-       "funfolding-update-in-place",
        "static",
        "fhardwire-lib-paths",
        "funregisterised",
@@ -491,6 +492,7 @@ allowed_combination way = and [ x `allowedWith` y
        WayDebug `allowedWith` _                = True
 
        WayProf `allowedWith` WayNDP            = True
+       WayThreaded `allowedWith` WayProf       = True
        _ `allowedWith` _                       = False