projects
/
ghc-hetmet.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
Making -fhpc work with a stage1 build, via the compat 'package'.
[ghc-hetmet.git]
/
compiler
/
main
/
StaticFlags.hs
diff --git
a/compiler/main/StaticFlags.hs
b/compiler/main/StaticFlags.hs
index
fbdcb68
..
457626c
100644
(file)
--- a/
compiler/main/StaticFlags.hs
+++ b/
compiler/main/StaticFlags.hs
@@
-12,9
+12,10
@@
module StaticFlags (
parseStaticFlags,
staticFlags,
module StaticFlags (
parseStaticFlags,
staticFlags,
+ initStaticOpts,
-- Ways
-- Ways
- WayName(..), v_Ways, v_Build_tag, v_RTS_Build_tag,
+ WayName(..), v_Ways, v_Build_tag, v_RTS_Build_tag, isRTSWay,
-- Output style options
opt_PprUserLength,
-- Output style options
opt_PprUserLength,
@@
-29,7
+30,6
@@
module StaticFlags (
-- Hpc opts
opt_Hpc,
-- Hpc opts
opt_Hpc,
- opt_Hpc_Tracer,
-- language opts
opt_DictsStrict,
-- language opts
opt_DictsStrict,
@@
-42,7
+42,6
@@
module StaticFlags (
opt_NoMethodSharing,
opt_NoStateHack,
opt_CprOff,
opt_NoMethodSharing,
opt_NoStateHack,
opt_CprOff,
- opt_RulesOff,
opt_SimplNoPreInlining,
opt_SimplExcessPrecision,
opt_MaxWorkerArgs,
opt_SimplNoPreInlining,
opt_SimplExcessPrecision,
opt_MaxWorkerArgs,
@@
-93,6
+92,9
@@
import Data.List ( sort, intersperse, nub )
parseStaticFlags :: [String] -> IO [String]
parseStaticFlags args = do
parseStaticFlags :: [String] -> IO [String]
parseStaticFlags args = do
+ ready <- readIORef v_opt_C_ready
+ when ready $ throwDyn (ProgramError "Too late for parseStaticFlags: call it before newSession")
+
(leftover, errs) <- processArgs static_flags args
when (not (null errs)) $ throwDyn (UsageError (unlines errs))
(leftover, errs) <- processArgs static_flags args
when (not (null errs)) $ throwDyn (UsageError (unlines errs))
@@
-119,6
+121,8
@@
parseStaticFlags args = do
when (not (null errs)) $ ghcError (UsageError (unlines errs))
return (cg_flags++more_leftover++leftover)
when (not (null errs)) $ ghcError (UsageError (unlines errs))
return (cg_flags++more_leftover++leftover)
+initStaticOpts :: IO ()
+initStaticOpts = writeIORef v_opt_C_ready True
static_flags :: [(String, OptKind IO)]
-- All the static flags should appear in this list. It describes how each
static_flags :: [(String, OptKind IO)]
-- All the static flags should appear in this list. It describes how each
@@
-159,7
+163,6
@@
static_flags = [
--------- Haskell Program Coverage -----------------------------------
, ( "fhpc" , PassFlag addOpt )
--------- Haskell Program Coverage -----------------------------------
, ( "fhpc" , PassFlag addOpt )
- , ( "fhpc-tracer" , PassFlag addOpt )
--------- Profiling --------------------------------------------------
, ( "auto-all" , NoArg (addOpt "-fauto-sccs-on-all-toplevs") )
--------- Profiling --------------------------------------------------
, ( "auto-all" , NoArg (addOpt "-fauto-sccs-on-all-toplevs") )
@@
-281,10
+284,7
@@
opt_SccProfilingOn = lookUp FSLIT("-fscc-profiling")
opt_DoTickyProfiling = WayTicky `elem` (unsafePerformIO $ readIORef v_Ways)
-- Hpc opts
opt_DoTickyProfiling = WayTicky `elem` (unsafePerformIO $ readIORef v_Ways)
-- Hpc opts
-
opt_Hpc = lookUp FSLIT("-fhpc")
opt_Hpc = lookUp FSLIT("-fhpc")
- || opt_Hpc_Tracer
-opt_Hpc_Tracer = lookUp FSLIT("-fhpc-tracer")
-- language opts
opt_DictsStrict = lookUp FSLIT("-fdicts-strict")
-- language opts
opt_DictsStrict = lookUp FSLIT("-fdicts-strict")
@@
-296,7
+296,6
@@
opt_Flatten = lookUp FSLIT("-fflatten")
opt_NoStateHack = lookUp FSLIT("-fno-state-hack")
opt_NoMethodSharing = lookUp FSLIT("-fno-method-sharing")
opt_CprOff = lookUp FSLIT("-fcpr-off")
opt_NoStateHack = lookUp FSLIT("-fno-state-hack")
opt_NoMethodSharing = lookUp FSLIT("-fno-method-sharing")
opt_CprOff = lookUp FSLIT("-fcpr-off")
-opt_RulesOff = lookUp FSLIT("-frules-off")
-- Switch off CPR analysis in the new demand analyser
opt_MaxWorkerArgs = lookup_def_int "-fmax-worker-args" (10::Int)
-- Switch off CPR analysis in the new demand analyser
opt_MaxWorkerArgs = lookup_def_int "-fmax-worker-args" (10::Int)
@@
-369,7
+368,6
@@
isStaticFlag f =
"static",
"funregisterised",
"fext-core",
"static",
"funregisterised",
"fext-core",
- "frules-off",
"fcpr-off",
"ferror-spans",
"fPIC"
"fcpr-off",
"ferror-spans",
"fPIC"
@@
-515,6
+513,8
@@
lkupWay w =
Nothing -> error "findBuildTag"
Just details -> details
Nothing -> error "findBuildTag"
Just details -> details
+isRTSWay = wayRTSOnly . lkupWay
+
data Way = Way {
wayTag :: String,
wayRTSOnly :: Bool,
data Way = Way {
wayTag :: String,
wayRTSOnly :: Bool,