X-Git-Url: http://git.megacz.com/?a=blobdiff_plain;f=compiler%2Fmain%2FDynFlags.hs;h=75f31cac9a85e9586d077d83b3c2c623df376bc2;hb=a937c2742f1b71bac0e0f4144e9638b2797c819b;hp=1775bbf36a494661f24b6b5ae182a00a2e19d52b;hpb=0693e611c20365dae3eb2cd5762b6c2f8e735e72;p=ghc-hetmet.git diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 1775bbf..75f31ca 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -17,6 +17,7 @@ module DynFlags ( DOpt(..), DynFlag(..), ExtensionFlag(..), + glasgowExtsFlags, flattenExtensionFlags, ensureFlattenedExtensionFlags, lopt_set_flattened, @@ -60,7 +61,12 @@ module DynFlags ( -- * Compiler configuration suitable for display to the user Printable(..), - compilerInfo, rtsIsProfiled + compilerInfo +#ifdef GHCI +-- Only in stage 2 can we be sure that the RTS +-- exposes the appropriate runtime boolean + , rtsIsProfiled +#endif ) where #include "HsVersions.h" @@ -308,7 +314,8 @@ data ExtensionFlag | Opt_RecordPuns | Opt_ViewPatterns | Opt_GADTs - | Opt_RelaxedPolyRec + | Opt_OutsideIn + | Opt_RelaxedPolyRec -- Deprecated | Opt_NPlusKPatterns | Opt_DoAndIfThenElse @@ -595,7 +602,6 @@ defaultObjectTarget data DynLibLoader = Deployable - | Wrapped (Maybe String) | SystemDependent deriving Eq @@ -927,9 +933,6 @@ parseDynLibLoaderMode f d = case splitAt 8 f of ("deploy", "") -> d{ dynLibLoader = Deployable } ("sysdep", "") -> d{ dynLibLoader = SystemDependent } - ("wrapped", "") -> d{ dynLibLoader = Wrapped Nothing } - ("wrapped:", "hard") -> d{ dynLibLoader = Wrapped Nothing } - ("wrapped:", flex) -> d{ dynLibLoader = Wrapped (Just flex) } _ -> ghcError (CmdLineError ("Unknown dynlib loader: " ++ f)) setDumpPrefixForce f d = d { dumpPrefixForce = f} @@ -1019,6 +1022,7 @@ optLevelFlags , ([2], Opt_LiberateCase) , ([2], Opt_SpecConstr) + , ([2], Opt_RegsGraph) -- , ([2], Opt_StaticArgumentTransformation) -- Max writes: I think it's probably best not to enable SAT with -O2 for the @@ -1498,7 +1502,7 @@ type FlagSpec flag , Bool -> DynP ()) -- Extra action to run when the flag is found -- Typically, emit a warning or error -- True <=> we are turning the flag on - -- False <=> we are turning the flag on + -- False <=> we are turning the flag off mkFlag :: Bool -- ^ True <=> it should be turned on @@ -1710,7 +1714,10 @@ xFlags = [ ( "AlternativeLayoutRuleTransitional",Opt_AlternativeLayoutRuleTransitional, nop ), ( "DatatypeContexts", Opt_DatatypeContexts, nop ), ( "MonoLocalBinds", Opt_MonoLocalBinds, nop ), - ( "RelaxedPolyRec", Opt_RelaxedPolyRec, nop ), + ( "RelaxedPolyRec", Opt_RelaxedPolyRec, + \ turn_on -> if not turn_on + then deprecate "You can't turn off RelaxedPolyRec any more" + else return () ), ( "ExtendedDefaultRules", Opt_ExtendedDefaultRules, nop ), ( "ImplicitParams", Opt_ImplicitParams, nop ), ( "ScopedTypeVariables", Opt_ScopedTypeVariables, nop ), @@ -1748,14 +1755,14 @@ impliedFlags , (Opt_ExistentialQuantification, Opt_ExplicitForAll) , (Opt_PolymorphicComponents, Opt_ExplicitForAll) - , (Opt_GADTs, Opt_RelaxedPolyRec) -- We want type-sig variables to + , (Opt_GADTs, Opt_OutsideIn) -- We want type-sig variables to -- be completely rigid for GADTs - , (Opt_TypeFamilies, Opt_RelaxedPolyRec) -- Trac #2944 gives a nice example + , (Opt_TypeFamilies, Opt_OutsideIn) -- Trac #2944 gives a nice example , (Opt_TypeFamilies, Opt_KindSignatures) -- Type families use kind signatures -- all over the place - , (Opt_ScopedTypeVariables, Opt_RelaxedPolyRec) -- Ditto for scoped type variables; see + , (Opt_ScopedTypeVariables, Opt_OutsideIn) -- Ditto for scoped type variables; see -- Note [Scoped tyvars] in TcBinds , (Opt_ImpredicativeTypes, Opt_RankNTypes) @@ -1809,12 +1816,13 @@ glasgowExtsFlags = [ , Opt_GeneralizedNewtypeDeriving , Opt_TypeFamilies ] +#ifdef GHCI -- Consult the RTS to find whether GHC itself has been built profiled -- If so, you can't use Template Haskell foreign import ccall unsafe "rts_isProfiled" rtsIsProfiledIO :: IO CInt rtsIsProfiled :: Bool -rtsIsProfiled = False -- unsafePerformIO rtsIsProfiledIO /= 0 +rtsIsProfiled = unsafePerformIO rtsIsProfiledIO /= 0 checkTemplateHaskellOk :: Bool -> DynP () checkTemplateHaskellOk turn_on @@ -1822,6 +1830,12 @@ checkTemplateHaskellOk turn_on = addErr "You can't use Template Haskell with a profiled compiler" | otherwise = return () +#else +-- In stage 1 we don't know that the RTS has rts_isProfiled, +-- so we simply say "ok". It doesn't matter because TH isn't +-- available in stage 1 anyway. +checkTemplateHaskellOk turn_on = return () +#endif {- ********************************************************************** %* * @@ -2138,7 +2152,12 @@ setOptHpcDir arg = upd $ \ d -> d{hpcDir = arg} machdepCCOpts :: DynFlags -> ([String], -- flags for all C compilations [String]) -- for registerised HC compilations -machdepCCOpts _dflags +machdepCCOpts dflags = let (flagsAll, flagsRegHc) = machdepCCOpts' dflags + in (cCcOpts ++ flagsAll, flagsRegHc) + +machdepCCOpts' :: DynFlags -> ([String], -- flags for all C compilations + [String]) -- for registerised HC compilations +machdepCCOpts' _dflags #if alpha_TARGET_ARCH = ( ["-w", "-mieee" #ifdef HAVE_THREADED_RTS_SUPPORT @@ -2173,19 +2192,9 @@ machdepCCOpts _dflags -- the fp (%ebp) for our register maps. = let n_regs = stolen_x86_regs _dflags in - ( -#if darwin_TARGET_OS - -- By default, gcc on OS X will generate SSE - -- instructions, which need things 16-byte aligned, - -- but we don't 16-byte align things. Thus drop - -- back to generic i686 compatibility. Trac #2983. - -- - -- Since Snow Leopard (10.6), gcc defaults to x86_64. - ["-march=i686", "-m32"], -#else + ( [ if opt_Static then "-DDONT_WANT_WIN32_DLL_SUPPORT" else "" ], -#endif [ "-fno-defer-pop", "-fomit-frame-pointer", -- we want -fno-builtin, because when gcc inlines @@ -2200,11 +2209,7 @@ machdepCCOpts _dflags #elif x86_64_TARGET_ARCH = ( -#if darwin_TARGET_OS - ["-m64"], -#else - [], -#endif + [], ["-fomit-frame-pointer", "-fno-asynchronous-unwind-tables", -- the unwind tables are unnecessary for HC code,