X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDynFlags.hs;h=3e9ca8f90fe9d7ca57773bcfb51468022a4baa04;hb=6e2021202c3eec0c95a9d0b7c355559f2630d380;hp=d1226eaf741509ff86f1741c9451ce9b56d78b4b;hpb=8b08c15b8ace5a76e341939081fbb6ad2736ddd1;p=ghc-hetmet.git diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index d1226ea..3e9ca8f 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -81,7 +81,7 @@ import Data.List ( isPrefixOf ) import Util ( split ) #endif -import Data.Char ( isDigit, isUpper ) +import Data.Char ( isUpper ) import System.IO ( hPutStrLn, stderr ) #ifdef GHCI @@ -102,6 +102,7 @@ data DynFlag | Opt_D_dump_flatC | Opt_D_dump_foreign | Opt_D_dump_inlinings + | Opt_D_dump_rule_firings | Opt_D_dump_occur_anal | Opt_D_dump_parsed | Opt_D_dump_rn @@ -155,6 +156,7 @@ data DynFlag | Opt_WarnDeprecations | Opt_WarnDodgyImports | Opt_WarnOrphans + | Opt_WarnTabs -- language opts | Opt_AllowOverlappingInstances @@ -206,6 +208,7 @@ data DynFlag #endif | Opt_PrintBindResult | Opt_Haddock + | Opt_Hpc_No_Auto -- keeping stuff | Opt_KeepHiDiffs @@ -228,6 +231,8 @@ data DynFlags = DynFlags { optLevel :: Int, -- optimisation level maxSimplIterations :: Int, -- max simplifier iterations ruleCheck :: Maybe String, + libCaseThreshold :: Int, -- Threshold for liberate-case + stolen_x86_regs :: Int, cmdlineHcIncludes :: [String], -- -#includes importPaths :: [FilePath], @@ -382,6 +387,7 @@ defaultDynFlags = optLevel = 0, maxSimplIterations = 4, ruleCheck = Nothing, + libCaseThreshold = 20, stolen_x86_regs = 4, cmdlineHcIncludes = [], importPaths = ["."], @@ -831,6 +837,7 @@ dynamic_flags = [ , ( "F" , NoArg (setDynFlag Opt_Pp)) , ( "#include" , HasArg (addCmdlineHCInclude) ) , ( "v" , OptIntSuffix setVerbosity ) + ------- Specific phases -------------------------------------------- , ( "pgmL" , HasArg (upd . setPgmL) ) , ( "pgmP" , HasArg (upd . setPgmP) ) @@ -927,6 +934,7 @@ dynamic_flags = [ , ( "ddump-flatC", setDumpFlag Opt_D_dump_flatC) , ( "ddump-foreign", setDumpFlag Opt_D_dump_foreign) , ( "ddump-inlinings", setDumpFlag Opt_D_dump_inlinings) + , ( "ddump-rule-firings", setDumpFlag Opt_D_dump_rule_firings) , ( "ddump-occur-anal", setDumpFlag Opt_D_dump_occur_anal) , ( "ddump-parsed", setDumpFlag Opt_D_dump_parsed) , ( "ddump-rn", setDumpFlag Opt_D_dump_rn) @@ -979,18 +987,16 @@ dynamic_flags = [ , ( "w" , NoArg (mapM_ unSetDynFlag minusWallOpts) ) ------ Optimisation flags ------------------------------------------ - , ( "O" , NoArg (upd (setOptLevel 1))) - , ( "Onot" , NoArg (upd (setOptLevel 0))) - , ( "O" , PrefixPred (all isDigit) - (\f -> upd (setOptLevel (read f)))) - - , ( "fmax-simplifier-iterations", - PrefixPred (all isDigit) - (\n -> upd (\dfs -> - dfs{ maxSimplIterations = read n })) ) + , ( "O" , NoArg (upd (setOptLevel 1))) + , ( "Onot" , NoArg (upd (setOptLevel 0))) + , ( "O" , OptIntSuffix (\mb_n -> upd (setOptLevel (mb_n `orElse` 1)))) + -- If the number is missing, use 1 - , ( "frule-check", - SepArg (\s -> upd (\dfs -> dfs{ ruleCheck = Just s }))) + , ( "fmax-simplifier-iterations", IntSuffix (\n -> + upd (\dfs -> dfs{ maxSimplIterations = n })) ) + , ( "fliberate-case-threshold", IntSuffix (\n -> upd (\dfs -> dfs{ libCaseThreshold = n }))) + , ( "frule-check", SepArg (\s -> upd (\dfs -> dfs{ ruleCheck = Just s }))) + , ( "fcontext-stack" , IntSuffix $ \n -> upd $ \dfs -> dfs{ ctxtStkDepth = n }) ------ Compiler flags ----------------------------------------------- @@ -1002,8 +1008,6 @@ dynamic_flags = [ , ( "fglasgow-exts", NoArg (mapM_ setDynFlag glasgowExtsFlags) ) , ( "fno-glasgow-exts", NoArg (mapM_ unSetDynFlag glasgowExtsFlags) ) - , ( "fcontext-stack" , OptIntSuffix $ \mb_n -> upd $ \dfs -> - dfs{ ctxtStkDepth = mb_n `orElse` 3 }) -- the rest of the -f* and -fno-* flags , ( "fno-", PrefixPred (\f -> isFFlag f) (\f -> unSetDynFlag (getFFlag f)) ) @@ -1029,6 +1033,7 @@ fFlags = [ ( "warn-unused-matches", Opt_WarnUnusedMatches ), ( "warn-deprecations", Opt_WarnDeprecations ), ( "warn-orphans", Opt_WarnOrphans ), + ( "warn-tabs", Opt_WarnTabs ), ( "fi", Opt_FFI ), -- support `-ffi'... ( "ffi", Opt_FFI ), -- ...and also `-fffi' ( "arrows", Opt_Arrows ), -- arrow syntax @@ -1061,9 +1066,11 @@ fFlags = [ ( "excess-precision", Opt_ExcessPrecision ), ( "asm-mangling", Opt_DoAsmMangling ), ( "print-bind-result", Opt_PrintBindResult ), +#if defined(GHCI) && defined(DEBUGGER) + ( "debugging", Opt_Debugging), +#endif ( "force-recomp", Opt_ForceRecomp ), - ( "hpc", Opt_Hpc ), - ( "hpc-tracer", Opt_Hpc_Tracer ) + ( "hpc-no-auto", Opt_Hpc_No_Auto ) ]