X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=ghc%2Fcompiler%2Fmain%2FDynFlags.hs;h=9d279d688ef0b4f8a5e41ada7006467df55a2395;hb=5d3051c66796dcf884b052f9e4afc3ed19b9f514;hp=c6702b11936c8634d1dce0c233f7f3b6857d6df1;hpb=554959511db7fd80b6da073abcfceb2392902054;p=ghc-hetmet.git diff --git a/ghc/compiler/main/DynFlags.hs b/ghc/compiler/main/DynFlags.hs index c6702b1..9d279d6 100644 --- a/ghc/compiler/main/DynFlags.hs +++ b/ghc/compiler/main/DynFlags.hs @@ -152,6 +152,7 @@ data DynFlag | Opt_Generics | Opt_ImplicitPrelude | Opt_ScopedTypeVariables + | Opt_BangPatterns -- optimisation opts | Opt_Strictness @@ -194,8 +195,6 @@ data DynFlags = DynFlags { stgToDo :: Maybe [StgToDo], -- similarly hscTarget :: HscTarget, 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 extCoreName :: String, -- name of the .core output file verbosity :: Int, -- verbosity level optLevel :: Int, -- optimisation level @@ -213,13 +212,17 @@ data DynFlags = DynFlags { rtsBuildTag :: String, -- the RTS "way" -- paths etc. - outputDir :: Maybe String, - outputFile :: Maybe String, - outputHi :: Maybe String, + objectDir :: Maybe String, + hiDir :: Maybe String, + stubDir :: Maybe String, + objectSuf :: String, hcSuf :: String, - hiDir :: Maybe String, hiSuf :: String, + + outputFile :: Maybe String, + outputHi :: Maybe String, + includePaths :: [String], libraryPaths :: [String], frameworkPaths :: [String], -- used on darwin only @@ -326,8 +329,6 @@ defaultDynFlags = stgToDo = Nothing, hscTarget = defaultHscTarget, hscOutName = "", - hscStubHOutName = "", - hscStubCOutName = "", extCoreName = "", verbosity = 0, optLevel = 0, @@ -343,13 +344,16 @@ defaultDynFlags = buildTag = panic "buildTag", rtsBuildTag = panic "rtsBuildTag", - outputDir = Nothing, - outputFile = Nothing, - outputHi = Nothing, + objectDir = Nothing, + hiDir = Nothing, + stubDir = Nothing, + objectSuf = phaseInputExt StopLn, hcSuf = phaseInputExt HCc, - hiDir = Nothing, hiSuf = "hi", + + outputFile = Nothing, + outputHi = Nothing, includePaths = [], libraryPaths = [], frameworkPaths = [], @@ -442,13 +446,16 @@ getVerbFlag dflags | verbosity dflags >= 3 = "-v" | otherwise = "" -setOutputDir f d = d{ outputDir = f} -setOutputFile f d = d{ outputFile = f} -setOutputHi f d = d{ outputHi = f} +setObjectDir f d = d{ objectDir = f} +setHiDir f d = d{ hiDir = f} +setStubDir f d = d{ stubDir = f} + setObjectSuf f d = d{ objectSuf = f} -setHcSuf f d = d{ hcSuf = f} setHiSuf f d = d{ hiSuf = f} -setHiDir f d = d{ hiDir = f} +setHcSuf f d = d{ hcSuf = f} + +setOutputFile f d = d{ outputFile = f} +setOutputHi f d = d{ outputHi = f} -- XXX HACK: Prelude> words "'does not' work" ===> ["'does","not'","work"] -- Config.hs should really use Option. @@ -805,7 +812,7 @@ dynamic_flags = [ , ( "framework" , HasArg (upd . addCmdlineFramework) ) ------- Output Redirection ------------------------------------------ - , ( "odir" , HasArg (upd . setOutputDir . Just)) + , ( "odir" , HasArg (upd . setObjectDir . Just)) , ( "o" , SepArg (upd . setOutputFile . Just)) , ( "ohi" , HasArg (upd . setOutputHi . Just )) , ( "osuf" , HasArg (upd . setObjectSuf)) @@ -813,6 +820,7 @@ dynamic_flags = [ , ( "hisuf" , HasArg (upd . setHiSuf)) , ( "hidir" , HasArg (upd . setHiDir . Just)) , ( "tmpdir" , HasArg (upd . setTmpDir)) + , ( "stubdir" , HasArg (upd . setStubDir . Just)) ------- Keeping temporary files ------------------------------------- , ( "keep-hc-file" , AnySuffix (\_ -> setDynFlag Opt_KeepHcFiles)) @@ -884,7 +892,7 @@ dynamic_flags = [ , ( "dverbose-stg2stg", setDumpFlag Opt_D_verbose_stg2stg) , ( "ddump-hi-diffs", NoArg (setDynFlag Opt_D_dump_hi_diffs)) , ( "ddump-hi", setDumpFlag Opt_D_dump_hi) - , ( "ddump-minimal-imports", setDumpFlag Opt_D_dump_minimal_imports) + , ( "ddump-minimal-imports", NoArg (setDynFlag Opt_D_dump_minimal_imports)) , ( "ddump-vect", setDumpFlag Opt_D_dump_vect) , ( "dcore-lint", NoArg (setDynFlag Opt_DoCoreLinting)) , ( "dstg-lint", NoArg (setDynFlag Opt_DoStgLinting)) @@ -961,6 +969,7 @@ fFlags = [ ( "th", Opt_TH ), ( "implicit-prelude", Opt_ImplicitPrelude ), ( "scoped-type-variables", Opt_ScopedTypeVariables ), + ( "bang-patterns", Opt_BangPatterns ), ( "monomorphism-restriction", Opt_MonomorphismRestriction ), ( "implicit-params", Opt_ImplicitParams ), ( "allow-overlapping-instances", Opt_AllowOverlappingInstances ), @@ -986,7 +995,8 @@ glasgowExtsFlags = [ Opt_FFI, Opt_TH, Opt_ImplicitParams, - Opt_ScopedTypeVariables ] + Opt_ScopedTypeVariables, + Opt_BangPatterns ] isFFlag f = f `elem` (map fst fFlags) getFFlag f = fromJust (lookup f fFlags) @@ -1239,11 +1249,16 @@ machdepCCOpts dflags #elif x86_64_TARGET_ARCH = ( [], ["-fomit-frame-pointer", - "-fno-asynchronous-unwind-tables" + "-fno-asynchronous-unwind-tables", -- the unwind tables are unnecessary for HC code, -- and get in the way of -split-objs. Another option -- would be to throw them away in the mangler, but this -- is easier. + "-fno-unit-at-a-time" + -- unit-at-a-time doesn't do us any good, and screws + -- up -split-objs by moving the split markers around. + -- It's only turned on with -O2, but put it here just + -- in case someone uses -optc-O2. ] ) #elif mips_TARGET_ARCH