X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDynFlags.hs;h=206b4948705280586455d8115c4f6f9338ec2198;hb=90dc9026b091be5cca5da4c6cbd3713ecc493361;hp=17990338aec1e4c3636fd180a11dd05947d91eef;hpb=ead424357937b23f30295608b467aacbc3a8a8bc;p=ghc-hetmet.git diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 1799033..206b494 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -81,12 +81,13 @@ import Data.List ( isPrefixOf ) import Util ( split ) #endif -import Data.Char ( isDigit, isUpper ) +import Data.Char ( isUpper ) import System.IO ( hPutStrLn, stderr ) +#ifdef GHCI import Breakpoints ( BkptHandler ) import Module ( ModuleName ) - +#endif -- ----------------------------------------------------------------------------- -- DynFlags @@ -101,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 @@ -154,6 +156,7 @@ data DynFlag | Opt_WarnDeprecations | Opt_WarnDodgyImports | Opt_WarnOrphans + | Opt_WarnTabs -- language opts | Opt_AllowOverlappingInstances @@ -173,6 +176,7 @@ data DynFlag | Opt_ScopedTypeVariables | Opt_BangPatterns | Opt_IndexedTypes + | Opt_OverloadedStrings -- optimisation opts | Opt_Strictness @@ -200,8 +204,12 @@ data DynFlag | Opt_SplitObjs | Opt_StgStats | Opt_HideAllPackages +#if defined(GHCI) && defined(DEBUGGER) + | Opt_Debugging +#endif | Opt_PrintBindResult | Opt_Haddock + | Opt_Hpc_No_Auto -- keeping stuff | Opt_KeepHiDiffs @@ -224,6 +232,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], @@ -307,8 +317,10 @@ data DynFlags = DynFlags { -- message output log_action :: Severity -> SrcSpan -> PprStyle -> Message -> IO () +#ifdef GHCI -- breakpoint handling ,bkptHandler :: Maybe (BkptHandler Module) +#endif } data HscTarget @@ -376,6 +388,7 @@ defaultDynFlags = optLevel = 0, maxSimplIterations = 4, ruleCheck = Nothing, + libCaseThreshold = 20, stolen_x86_regs = 4, cmdlineHcIncludes = [], importPaths = ["."], @@ -417,8 +430,9 @@ defaultDynFlags = packageFlags = [], pkgDatabase = Nothing, pkgState = panic "no package state yet: call GHC.setSessionDynFlags", - +#ifdef GHCI bkptHandler = Nothing, +#endif flags = [ Opt_ReadUserPackageConf, @@ -824,6 +838,7 @@ dynamic_flags = [ , ( "F" , NoArg (setDynFlag Opt_Pp)) , ( "#include" , HasArg (addCmdlineHCInclude) ) , ( "v" , OptIntSuffix setVerbosity ) + ------- Specific phases -------------------------------------------- , ( "pgmL" , HasArg (upd . setPgmL) ) , ( "pgmP" , HasArg (upd . setPgmP) ) @@ -920,6 +935,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) @@ -972,18 +988,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)))) + , ( "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 - , ( "fmax-simplifier-iterations", - PrefixPred (all isDigit) - (\n -> upd (\dfs -> - dfs{ maxSimplIterations = read n })) ) - - , ( "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 ----------------------------------------------- @@ -995,8 +1009,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)) ) @@ -1022,6 +1034,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 @@ -1030,6 +1043,7 @@ fFlags = [ ( "implicit-prelude", Opt_ImplicitPrelude ), ( "scoped-type-variables", Opt_ScopedTypeVariables ), ( "bang-patterns", Opt_BangPatterns ), + ( "overloaded-strings", Opt_OverloadedStrings ), ( "indexed-types", Opt_IndexedTypes ), ( "monomorphism-restriction", Opt_MonomorphismRestriction ), ( "mono-pat-binds", Opt_MonoPatBinds ), @@ -1054,7 +1068,11 @@ fFlags = [ ( "excess-precision", Opt_ExcessPrecision ), ( "asm-mangling", Opt_DoAsmMangling ), ( "print-bind-result", Opt_PrintBindResult ), - ( "force-recomp", Opt_ForceRecomp ) +#if defined(GHCI) && defined(DEBUGGER) + ( "debugging", Opt_Debugging), +#endif + ( "force-recomp", Opt_ForceRecomp ), + ( "hpc-no-auto", Opt_Hpc_No_Auto ) ]