[project @ 2000-12-08 10:26:41 by simonmar]
[ghc-hetmet.git] / ghc / compiler / main / DriverFlags.hs
index e07ec11..4bd5129 100644 (file)
@@ -1,5 +1,5 @@
 -----------------------------------------------------------------------------
--- $Id: DriverFlags.hs,v 1.23 2000/11/22 12:19:29 simonmar Exp $
+-- $Id: DriverFlags.hs,v 1.29 2000/12/08 10:26:41 simonmar Exp $
 --
 -- Driver flags
 --
@@ -18,7 +18,8 @@ import TmpFiles       ( v_TmpDir )
 import CmdLineOpts
 import Config
 import Util
-
+import TmpFiles         ( newTempName )
+import Directory ( removeFile )
 import Exception
 import IOExts
 import IO
@@ -193,6 +194,7 @@ static_flags =
 
        ------- Miscellaneous -----------------------------------------------
   ,  ( "no-link-chk"    , NoArg (return ()) ) -- ignored for backwards compat
+  ,  ( "no-hs-main"     , NoArg (writeIORef v_NoHsMain True) )
 
        ------- Output Redirection ------------------------------------------
   ,  ( "odir"          , HasArg (writeIORef v_Output_dir  . Just) )
@@ -257,6 +259,7 @@ static_flags =
 
        ----- Linker --------------------------------------------------------
   ,  ( "static"        , NoArg (writeIORef v_Static True) )
+  ,  ( "rdynamic"       , NoArg (return ()) ) -- ignored for compat w/ gcc
 
        ----- RTS opts ------------------------------------------------------
 #ifdef not_yet
@@ -378,6 +381,7 @@ dynamic_flags = [
   ,  ( "ddump-simpl",           NoArg (setDynFlag Opt_D_dump_simpl) )
   ,  ( "ddump-simpl-iterations", NoArg (setDynFlag Opt_D_dump_simpl_iterations) )
   ,  ( "ddump-spec",            NoArg (setDynFlag Opt_D_dump_spec) )
+  ,  ( "ddump-sat",             NoArg (setDynFlag Opt_D_dump_sat) )
   ,  ( "ddump-stg",             NoArg (setDynFlag Opt_D_dump_stg) )
   ,  ( "ddump-stranal",         NoArg (setDynFlag Opt_D_dump_stranal) )
   ,  ( "ddump-tc",              NoArg (setDynFlag Opt_D_dump_tc) )
@@ -435,6 +439,13 @@ dynamic_flags = [
   ,  ( "fglasgow-exts", NoArg (setDynFlag Opt_GlasgowExts) )
   ,  ( "fno-implicit-prelude", NoArg (setDynFlag Opt_NoImplicitPrelude) )
 
+       -- Optimisation flags are treated specially, so the normal
+       -- -fno-* pattern below doesn't work.  We therefore allow
+       -- certain optimisation passes to be turned off explicitly:
+  ,  ( "fno-strictness"           , NoArg (writeIORef v_Strictness False) )
+  ,  ( "fno-cpr"          , NoArg (writeIORef v_CPR False) )
+  ,  ( "fno-cse"          , NoArg (writeIORef v_CSE False) )
+
   ,  ( "fallow-overlapping-instances", 
                NoArg (setDynFlag Opt_AllowOverlappingInstances) )
 
@@ -526,7 +537,7 @@ runSomething phase_name cmd
    hPutStrLn h cmd
    hClose h
    exit_code <- system ("sh - " ++ tmp) `catchAllIO` 
-                  (\e -> throwDyn (PhaseFailed phase_name (ExitFailure 1)))
+                  (\_ -> throwDyn (PhaseFailed phase_name (ExitFailure 1)))
    removeFile tmp
 #endif