X-Git-Url: http://git.megacz.com/?p=ghc-hetmet.git;a=blobdiff_plain;f=compiler%2Fmain%2FDynFlags.hs;h=cda06e5f4c9f444cc929b4882f84a8c9f87d0be0;hp=0a1896434596d8c4f5154698ccba234022e26e71;hb=7d52c74cab50d3c9a5e76be5b97d63b60069bc2e;hpb=2eb04ca0f8d0ec72b417cddc60672c696b4a3daa diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 0a18964..cda06e5 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -92,6 +92,7 @@ data DynFlag -- debugging flags = Opt_D_dump_cmm + | Opt_D_dump_cps_cmm | Opt_D_dump_asm | Opt_D_dump_cpranal | Opt_D_dump_deriv @@ -178,10 +179,21 @@ data DynFlag | Opt_TypeFamilies | Opt_OverloadedStrings | Opt_DisambiguateRecordFields - | Opt_RecordDotDot + | Opt_RecordWildCards | Opt_RecordPuns | Opt_GADTs | Opt_RelaxedPolyRec -- -X=RelaxedPolyRec + | Opt_TypeSynonymInstances + | Opt_FlexibleInstances + | Opt_MultiParamTypeClasses + | Opt_FunctionalDependencies + | Opt_MagicHash + | Opt_EmptyDataDecls + | Opt_KindSignatures + | Opt_ParallelListComp + | Opt_GeneralizedNewtypeDeriving + | Opt_RecursiveDo + | Opt_PatternGuards -- optimisation opts | Opt_Strictness @@ -199,9 +211,9 @@ data DynFlag | Opt_UnboxStrictFields | Opt_DictsCheap | Opt_RewriteRules + | Opt_Vectorise -- misc opts - | Opt_ShortGhciBanner | Opt_Cpp | Opt_Pp | Opt_ForceRecomp @@ -361,7 +373,7 @@ data GhcLink -- What to do in the link step, if there is one = NoLink -- Don't link at all | LinkBinary -- Link object code into a binary | LinkInMemory -- Use the in-memory dynamic linker - | MkDLL -- Make a DLL + | LinkDynLib -- Link objects into a dynamic lib (DLL on Windows, DSO on ELF platforms) deriving Eq isNoLink :: GhcLink -> Bool @@ -561,13 +573,14 @@ data Option updOptLevel :: Int -> DynFlags -> DynFlags -- Set dynflags appropriate to the optimisation level updOptLevel n dfs - = dfs2{ optLevel = n } + = dfs2{ optLevel = final_n } where + final_n = max 0 (min 2 n) -- Clamp to 0 <= n <= 2 dfs1 = foldr (flip dopt_unset) dfs remove_dopts dfs2 = foldr (flip dopt_set) dfs1 extra_dopts - extra_dopts = [ f | (ns,f) <- optLevelFlags, n `elem` ns ] - remove_dopts = [ f | (ns,f) <- optLevelFlags, n `notElem` ns ] + extra_dopts = [ f | (ns,f) <- optLevelFlags, final_n `elem` ns ] + remove_dopts = [ f | (ns,f) <- optLevelFlags, final_n `notElem` ns ] optLevelFlags :: [([Int], DynFlag)] optLevelFlags @@ -842,8 +855,6 @@ dynamic_flags = [ , ( "F" , NoArg (setDynFlag Opt_Pp)) , ( "#include" , HasArg (addCmdlineHCInclude) ) , ( "v" , OptIntSuffix setVerbosity ) - , ( "short-ghci-banner", NoArg (setDynFlag Opt_ShortGhciBanner) ) - , ( "long-ghci-banner" , NoArg (unSetDynFlag Opt_ShortGhciBanner) ) ------- Specific phases -------------------------------------------- , ( "pgmL" , HasArg (upd . setPgmL) ) @@ -873,7 +884,7 @@ dynamic_flags = [ -------- Linking ---------------------------------------------------- , ( "c" , NoArg (upd $ \d -> d{ ghcLink=NoLink } )) , ( "no-link" , NoArg (upd $ \d -> d{ ghcLink=NoLink } )) -- Dep. - , ( "-mk-dll" , NoArg (upd $ \d -> d{ ghcLink=MkDLL } )) + , ( "shared" , NoArg (upd $ \d -> d{ ghcLink=LinkDynLib } )) ------- Libraries --------------------------------------------------- , ( "L" , Prefix addLibraryPath ) @@ -897,10 +908,15 @@ dynamic_flags = [ , ( "stubdir" , HasArg (upd . setStubDir . Just)) ------- Keeping temporary files ------------------------------------- - , ( "keep-hc-file" , AnySuffix (\_ -> setDynFlag Opt_KeepHcFiles)) - , ( "keep-s-file" , AnySuffix (\_ -> setDynFlag Opt_KeepSFiles)) - , ( "keep-raw-s-file", AnySuffix (\_ -> setDynFlag Opt_KeepRawSFiles)) - , ( "keep-tmp-files" , AnySuffix (\_ -> setDynFlag Opt_KeepTmpFiles)) + -- These can be singular (think ghc -c) or plural (think ghc --make) + , ( "keep-hc-file" , NoArg (setDynFlag Opt_KeepHcFiles)) + , ( "keep-hc-files" , NoArg (setDynFlag Opt_KeepHcFiles)) + , ( "keep-s-file" , NoArg (setDynFlag Opt_KeepSFiles)) + , ( "keep-s-files" , NoArg (setDynFlag Opt_KeepSFiles)) + , ( "keep-raw-s-file" , NoArg (setDynFlag Opt_KeepRawSFiles)) + , ( "keep-raw-s-files", NoArg (setDynFlag Opt_KeepRawSFiles)) + -- This only makes sense as plural + , ( "keep-tmp-files" , NoArg (setDynFlag Opt_KeepTmpFiles)) ------- Miscellaneous ---------------------------------------------- , ( "no-hs-main" , NoArg (setDynFlag Opt_NoHsMain)) @@ -934,6 +950,7 @@ dynamic_flags = [ , ( "dstg-stats", NoArg (setDynFlag Opt_StgStats)) , ( "ddump-cmm", setDumpFlag Opt_D_dump_cmm) + , ( "ddump-cps-cmm", setDumpFlag Opt_D_dump_cps_cmm) , ( "ddump-asm", setDumpFlag Opt_D_dump_asm) , ( "ddump-cpranal", setDumpFlag Opt_D_dump_cpranal) , ( "ddump-deriv", setDumpFlag Opt_D_dump_deriv) @@ -967,13 +984,13 @@ dynamic_flags = [ , ( "dsource-stats", setDumpFlag Opt_D_source_stats) , ( "dverbose-core2core", setDumpFlag Opt_D_verbose_core2core) , ( "dverbose-stg2stg", setDumpFlag Opt_D_verbose_stg2stg) - , ( "ddump-hi-diffs", setDumpFlag Opt_D_dump_hi_diffs) , ( "ddump-hi", setDumpFlag Opt_D_dump_hi) , ( "ddump-minimal-imports", setDumpFlag Opt_D_dump_minimal_imports) , ( "ddump-vect", setDumpFlag Opt_D_dump_vect) , ( "ddump-hpc", setDumpFlag Opt_D_dump_hpc) , ( "ddump-mod-cycles", setDumpFlag Opt_D_dump_mod_cycles) + , ( "ddump-hi-diffs", NoArg (setDynFlag Opt_D_dump_hi_diffs)) , ( "dcore-lint", NoArg (setDynFlag Opt_DoCoreLinting)) , ( "dstg-lint", NoArg (setDynFlag Opt_DoStgLinting)) , ( "dcmm-lint", NoArg (setDynFlag Opt_DoCmmLinting)) @@ -1012,7 +1029,7 @@ dynamic_flags = [ ------ Compiler flags ----------------------------------------------- - , ( "fasm", AnySuffix (\_ -> setObjTarget HscAsm) ) + , ( "fasm", NoArg (setObjTarget HscAsm) ) , ( "fvia-c", NoArg (setObjTarget HscC) ) , ( "fvia-C", NoArg (setObjTarget HscC) ) @@ -1078,27 +1095,38 @@ fFlags = [ ( "force-recomp", Opt_ForceRecomp ), ( "hpc-no-auto", Opt_Hpc_No_Auto ), ( "rewrite-rules", Opt_RewriteRules ), - ( "break-on-exception", Opt_BreakOnException ) + ( "break-on-exception", Opt_BreakOnException ), + ( "vectorise", Opt_Vectorise ) ] -- These -X flags can all be reversed with -Xno- xFlags :: [(String, DynFlag)] xFlags = [ + ( "PatternGuards", Opt_PatternGuards ), + ( "MagicHash", Opt_MagicHash ), + ( "KindSignatures", Opt_KindSignatures ), + ( "EmptyDataDecls", Opt_EmptyDataDecls ), + ( "ParallelListComp", Opt_ParallelListComp ), ( "FI", Opt_FFI ), -- support `-ffi'... ( "FFI", Opt_FFI ), -- ...and also `-fffi' - ( "ForeignFunctionInterface", Opt_FFI ), -- ...and also `-fffi' + ( "ForeignFunctionInterface", Opt_FFI ), + ( "RecursiveDo", Opt_RecursiveDo ), ( "Arrows", Opt_Arrows ), -- arrow syntax ( "Parr", Opt_PArr ), - ( "TH", Opt_TH ), + ( "TH", Opt_TH ), -- support -fth ( "TemplateHaskelll", Opt_TH ), ( "Generics", Opt_Generics ), ( "ImplicitPrelude", Opt_ImplicitPrelude ), -- On by default + ( "RecordWildCards", Opt_RecordWildCards ), + ( "RecordPuns", Opt_RecordPuns ), + ( "DisambiguateRecordFields", Opt_DisambiguateRecordFields ), + ( "OverloadedStrings", Opt_OverloadedStrings ), ( "GADTs", Opt_GADTs ), ( "TypeFamilies", Opt_TypeFamilies ), @@ -1109,6 +1137,11 @@ xFlags = [ ( "ExtendedDefaultRules", Opt_ExtendedDefaultRules ), ( "ImplicitParams", Opt_ImplicitParams ), ( "ScopedTypeVariables", Opt_ScopedTypeVariables ), + ( "TypeSynonymInstances", Opt_TypeSynonymInstances ), + ( "FlexibleInstances", Opt_FlexibleInstances ), + ( "MultiParamTypeClasses", Opt_MultiParamTypeClasses ), + ( "FunctionalDependencies", Opt_FunctionalDependencies ), + ( "GeneralizedNewtypeDeriving", Opt_GeneralizedNewtypeDeriving ), ( "AllowOverlappingInstances", Opt_AllowOverlappingInstances ), ( "AllowUndecidableInstances", Opt_AllowUndecidableInstances ), ( "AllowIncoherentInstances", Opt_AllowIncoherentInstances ) @@ -1121,8 +1154,20 @@ impliedFlags = [ glasgowExtsFlags = [ Opt_GlasgowExts , Opt_FFI + , Opt_GADTs , Opt_ImplicitParams , Opt_ScopedTypeVariables + , Opt_TypeSynonymInstances + , Opt_FlexibleInstances + , Opt_MultiParamTypeClasses + , Opt_FunctionalDependencies + , Opt_MagicHash + , Opt_PatternGuards + , Opt_RecursiveDo + , Opt_ParallelListComp + , Opt_EmptyDataDecls + , Opt_KindSignatures + , Opt_GeneralizedNewtypeDeriving , Opt_TypeFamilies ] ------------------ @@ -1419,7 +1464,7 @@ machdepCCOpts dflags sta = opt_Static in ( [ if sta then "-DDONT_WANT_WIN32_DLL_SUPPORT" else "" --- , if suffixMatch "mingw32" cTARGETPLATFORM then "-mno-cygwin" else "" +-- , if "mingw32" `isSuffixOf` cTARGETPLATFORM then "-mno-cygwin" else "" ], [ "-fno-defer-pop", #ifdef HAVE_GCC_MNO_OMIT_LFPTR