[project @ 2001-02-28 11:48:34 by simonpj]
[ghc-hetmet.git] / ghc / compiler / main / DriverState.hs
index ab07095..3dc7951 100644 (file)
@@ -1,5 +1,5 @@
 -----------------------------------------------------------------------------
--- $Id: DriverState.hs,v 1.26 2001/02/01 11:47:53 simonmar Exp $
+-- $Id: DriverState.hs,v 1.30 2001/02/28 11:48:34 simonpj Exp $
 --
 -- Settings for the driver
 --
@@ -119,43 +119,6 @@ GLOBAL_VAR(v_Hi_on_stdout,         False,  Bool)
 GLOBAL_VAR(v_Hi_suf,           "hi",   String)
 
 -----------------------------------------------------------------------------
--- Warnings & sanity checking
-
--- Warning packages that are controlled by -W and -Wall.  The 'standard'
--- warnings that you get all the time are
---        
---        -fwarn-overlapping-patterns
---        -fwarn-missing-methods
---        -fwarn-missing-fields
---        -fwarn-deprecations
---        -fwarn-duplicate-exports
--- 
--- these are turned off by -Wnot.
-
-
-standardWarnings  = [ "-fwarn-overlapping-patterns"
-                   , "-fwarn-missing-methods"
-                   , "-fwarn-missing-fields"
-                   , "-fwarn-deprecations"
-                   , "-fwarn-duplicate-exports"
-                   ]
-minusWOpts       = standardWarnings ++ 
-                   [ "-fwarn-unused-binds"
-                   , "-fwarn-unused-matches"
-                   , "-fwarn-incomplete-patterns"
-                   , "-fwarn-unused-imports"
-                   ]
-minusWallOpts    = minusWOpts ++
-                   [ "-fwarn-type-defaults"
-                   , "-fwarn-name-shadowing"
-                   , "-fwarn-missing-signatures"
-                   , "-fwarn-hi-shadowing"
-                   ]
-
-data WarningState = W_default | W_ | W_all | W_not
-GLOBAL_VAR(v_Warning_opt, W_default, WarningState)
-
------------------------------------------------------------------------------
 -- Compiler optimisation options
 
 GLOBAL_VAR(v_OptLevel, 0, Int)
@@ -181,16 +144,20 @@ hsc_minusNoO_flags =
        [ 
        "-fignore-interface-pragmas",
        "-fomit-interface-pragmas",
+       "-fdo-lambda-eta-expansion",    -- This one is important for a tiresome reason:
+                                       -- we want to make sure that the bindings for data 
+                                       -- constructors are eta-expanded.  This is probably
+                                       -- a good thing anyway, but it seems fragile.
        "-flet-no-escape"
        ]
 
 -- these are the static flags you get when -O is on.
 hsc_minusO_flags =
   [ 
+       "-fignore-asserts",
        "-ffoldr-build-on",
         "-fdo-eta-reduction",
        "-fdo-lambda-eta-expansion",
-       "-fcase-of-case",
        "-fcase-merge",
        "-flet-to-case",
        "-flet-no-escape"
@@ -313,6 +280,10 @@ buildCoreToDo = do
           CoreLiberateCase
        else
           CoreDoNothing,
+       if opt_level >= 2 then
+          CoreDoSpecConstr
+       else
+          CoreDoNothing,
 
        -- Final clean-up simplification:
        CoreDoSimplify (isAmongSimpl [