[project @ 2001-05-28 03:31:19 by sof]
[ghc-hetmet.git] / ghc / compiler / main / CmdLineOpts.lhs
index 4442443..972e9bb 100644 (file)
@@ -28,6 +28,8 @@ module CmdLineOpts (
        opt_PprStyle_Debug,
 
        dopt,
+       dopt_set,
+       dopt_unset,
 
        -- other dynamic flags
        dopt_CoreToDo,
@@ -57,7 +59,7 @@ module CmdLineOpts (
        opt_Parallel,
        opt_SMP,
        opt_NoMonomorphismRestriction,
-       opt_KeepStgTypes,
+       opt_RuntimeTypes,
 
        -- optimisation opts
        opt_NoMethodSharing,
@@ -75,7 +77,6 @@ module CmdLineOpts (
        opt_SimplExcessPrecision,
 
        -- Unfolding control
-       opt_UF_HiFileThreshold,
        opt_UF_CreationThreshold,
        opt_UF_UseThreshold,
        opt_UF_FunAppDiscount,
@@ -185,6 +186,7 @@ data CoreToDo               -- These are diff core-to-core passes,
   | CoreDoStrictness
   | CoreDoWorkerWrapper
   | CoreDoSpecialising
+  | CoreDoSpecConstr
   | CoreDoUSPInf
   | CoreDoCPResult
   | CoreDoGlomBinds
@@ -274,6 +276,7 @@ data DynFlag
    | Opt_WarnUnusedImports
    | Opt_WarnUnusedMatches
    | Opt_WarnDeprecations
+   | Opt_WarnMisc
 
    -- language opts
    | Opt_AllowOverlappingInstances
@@ -289,6 +292,8 @@ data DynFlags = DynFlags {
   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,         
@@ -309,6 +314,7 @@ defaultDynFlags = DynFlags {
   coreToDo = [], stgToDo = [], 
   hscLang = HscC, 
   hscOutName = "", 
+  hscStubHOutName = "", hscStubCOutName = "",
   verbosity = 0, 
   cppFlag              = False,
   stolen_x86_regs      = 4,
@@ -344,13 +350,17 @@ dopt_StgToDo = stgToDo
 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)
 
@@ -378,7 +388,8 @@ minusWOpts
       [        Opt_WarnUnusedBinds,
        Opt_WarnUnusedMatches,
        Opt_WarnUnusedImports,
-       Opt_WarnIncompletePatterns
+       Opt_WarnIncompletePatterns,
+       Opt_WarnMisc
       ]
 
 minusWallOpts
@@ -488,7 +499,7 @@ opt_UnboxStrictFields               = lookUp  SLIT("-funbox-strict-fields")
 {-
    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
@@ -504,7 +515,7 @@ opt_IgnoreIfacePragmas              = lookUp  SLIT("-fignore-interface-pragmas")
 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")
@@ -516,7 +527,6 @@ opt_SimplCaseMerge          = lookUp  SLIT("-fcase-merge")
 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
@@ -569,7 +579,7 @@ isStaticHscFlag f =
        "fno-method-sharing",
         "fno-monomorphism-restriction",
        "fomit-interface-pragmas",
-       "fkeep-stg-types",
+       "fruntime-types",
        "fno-pre-inlining",
        "fdo-eta-reduction",
        "fdo-lambda-eta-expansion",
@@ -585,7 +595,6 @@ isStaticHscFlag f =
        "fcontext-stack",
        "fliberate-case-threshold",
        "fhistory-size",
-       "funfolding-interface-threshold",
        "funfolding-creation-threshold",
        "funfolding-use-threshold",
        "funfolding-fun-discount",