[project @ 2001-03-26 12:28:15 by simonmar]
[ghc-hetmet.git] / ghc / compiler / main / CmdLineOpts.lhs
index 3e6d0bf..9227351 100644 (file)
@@ -1,4 +1,4 @@
-%
+
 % (c) The University of Glasgow, 1996-2000
 %
 \section[CmdLineOpts]{Things to do with command-line options}
@@ -35,6 +35,11 @@ module CmdLineOpts (
        dopt_HscLang,
        dopt_OutName,
 
+       -- sets of warning opts
+       standardWarnings,
+       minusWOpts,
+       minusWallOpts,
+
        -- profiling opts
        opt_AutoSccsOnAllToplevs,
        opt_AutoSccsOnExportedToplevs,
@@ -66,13 +71,10 @@ module CmdLineOpts (
        opt_SimplNoPreInlining,
        opt_SimplDoEtaReduction,
        opt_SimplDoLambdaEtaExpansion,
-       opt_SimplCaseOfCase,
        opt_SimplCaseMerge,
-       opt_SimplPedanticBottoms,
        opt_SimplExcessPrecision,
 
        -- Unfolding control
-       opt_UF_HiFileThreshold,
        opt_UF_CreationThreshold,
        opt_UF_UseThreshold,
        opt_UF_FunAppDiscount,
@@ -182,6 +184,7 @@ data CoreToDo               -- These are diff core-to-core passes,
   | CoreDoStrictness
   | CoreDoWorkerWrapper
   | CoreDoSpecialising
+  | CoreDoSpecConstr
   | CoreDoUSPInf
   | CoreDoCPResult
   | CoreDoGlomBinds
@@ -237,7 +240,6 @@ data DynFlag
    | Opt_D_dump_stranal
    | Opt_D_dump_tc
    | Opt_D_dump_types
-   | Opt_D_dump_tc_trace
    | Opt_D_dump_rules
    | Opt_D_dump_usagesp
    | Opt_D_dump_cse
@@ -246,6 +248,7 @@ data DynFlag
    | Opt_D_dump_rn_stats
    | Opt_D_dump_stix
    | Opt_D_dump_simpl_stats
+   | Opt_D_dump_tc_trace
    | Opt_D_dump_BCOs
    | Opt_D_source_stats
    | Opt_D_verbose_core2core
@@ -279,8 +282,6 @@ data DynFlag
    | Opt_Generics
    | Opt_NoImplicitPrelude 
 
-   -- misc
-   | Opt_ReportCompile
    deriving (Eq)
 
 data DynFlags = DynFlags {
@@ -288,6 +289,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,         
@@ -308,6 +311,7 @@ defaultDynFlags = DynFlags {
   coreToDo = [], stgToDo = [], 
   hscLang = HscC, 
   hscOutName = "", 
+  hscStubHOutName = "", hscStubCOutName = "",
   verbosity = 0, 
   cppFlag              = False,
   stolen_x86_regs      = 4,
@@ -317,7 +321,7 @@ defaultDynFlags = DynFlags {
   opt_c                        = [],
   opt_a                        = [],
   opt_m                        = [],
-  flags = []
+  flags = standardWarnings,
   }
 
 {- 
@@ -347,6 +351,9 @@ data HscLang
   = HscC
   | HscAsm
   | HscJava
+#ifdef ILX
+  | HscILX
+#endif
   | HscInterpreted
     deriving (Eq, Show)
 
@@ -356,6 +363,38 @@ dopt_HscLang = hscLang
 
 %************************************************************************
 %*                                                                     *
+\subsection{Warnings}
+%*                                                                     *
+%************************************************************************
+
+\begin{code}
+standardWarnings
+    = [ Opt_WarnDeprecations,
+       Opt_WarnOverlappingPatterns,
+       Opt_WarnMissingFields,
+       Opt_WarnMissingMethods,
+       Opt_WarnDuplicateExports
+      ]
+
+minusWOpts
+    = standardWarnings ++ 
+      [        Opt_WarnUnusedBinds,
+       Opt_WarnUnusedMatches,
+       Opt_WarnUnusedImports,
+       Opt_WarnIncompletePatterns
+      ]
+
+minusWallOpts
+    = minusWOpts ++
+      [        Opt_WarnTypeDefaults,
+       Opt_WarnNameShadowing,
+       Opt_WarnMissingSigs,
+       Opt_WarnHiShadows
+      ]
+\end{code}
+
+%************************************************************************
+%*                                                                     *
 \subsection{Classifying command-line options}
 %*                                                                     *
 %************************************************************************
@@ -445,14 +484,14 @@ opt_DoSemiTagging         = lookUp  SLIT("-fsemi-tagging")
 opt_FoldrBuildOn               = lookUp  SLIT("-ffoldr-build-on")
 opt_LiberateCaseThreshold      = lookup_def_int "-fliberate-case-threshold" (10::Int)
 opt_StgDoLetNoEscapes          = lookUp  SLIT("-flet-no-escape")
-opt_UnfoldCasms                        = lookUp SLIT("-funfold-casms-in-hi-file")
+opt_UnfoldCasms                        = lookUp  SLIT("-funfold-casms-in-hi-file")
 opt_UsageSPOn                  = lookUp  SLIT("-fusagesp-on")
 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
@@ -471,18 +510,15 @@ opt_OmitInterfacePragmas  = lookUp  SLIT("-fomit-interface-pragmas")
 opt_KeepStgTypes               = lookUp  SLIT("-fkeep-stg-types")
 
 -- Simplifier switches
-opt_SimplNoPreInlining         = lookUp SLIT("-fno-pre-inlining")
+opt_SimplNoPreInlining         = lookUp  SLIT("-fno-pre-inlining")
        -- NoPreInlining is there just to see how bad things
        -- get if you don't do it!
-opt_SimplDoEtaReduction                = lookUp SLIT("-fdo-eta-reduction")
-opt_SimplDoLambdaEtaExpansion  = lookUp SLIT("-fdo-lambda-eta-expansion")
-opt_SimplCaseOfCase            = lookUp SLIT("-fcase-of-case")
-opt_SimplCaseMerge             = lookUp SLIT("-fcase-merge")
-opt_SimplPedanticBottoms       = lookUp SLIT("-fpedantic-bottoms")
-opt_SimplExcessPrecision       = lookUp SLIT("-fexcess-precision")
+opt_SimplDoEtaReduction                = lookUp  SLIT("-fdo-eta-reduction")
+opt_SimplDoLambdaEtaExpansion  = lookUp  SLIT("-fdo-lambda-eta-expansion")
+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
@@ -492,10 +528,10 @@ opt_UF_UpdateInPlace              = lookUp  SLIT("-funfolding-update-in-place")
 opt_UF_CheapOp  = ( 1 :: Int)  -- Only one instruction; and the args are charged for
 opt_UF_DearOp   = ( 4 :: Int)
                        
-opt_NoPruneDecls               = lookUp SLIT("-fno-prune-decls")
-opt_NoPruneTyDecls             = lookUp SLIT("-fno-prune-tydecls")
-opt_Static                     = lookUp SLIT("-static")
-opt_Unregisterised             = lookUp SLIT("-funregisterised")
+opt_NoPruneDecls               = lookUp  SLIT("-fno-prune-decls")
+opt_NoPruneTyDecls             = lookUp  SLIT("-fno-prune-tydecls")
+opt_Static                     = lookUp  SLIT("-static")
+opt_Unregisterised             = lookUp  SLIT("-funregisterised")
 \end{code}
 
 %************************************************************************
@@ -539,12 +575,9 @@ isStaticHscFlag f =
        "fno-pre-inlining",
        "fdo-eta-reduction",
        "fdo-lambda-eta-expansion",
-       "fcase-of-case",
        "fcase-merge",
-       "fpedantic-bottoms",
        "fexcess-precision",
        "funfolding-update-in-place",
-       "freport-compile",
        "fno-prune-decls",
        "fno-prune-tydecls",
        "static",
@@ -554,7 +587,6 @@ isStaticHscFlag f =
        "fcontext-stack",
        "fliberate-case-threshold",
        "fhistory-size",
-       "funfolding-interface-threshold",
        "funfolding-creation-threshold",
        "funfolding-use-threshold",
        "funfolding-fun-discount",