From 5cd20c4026ffecda7822979b7de87e6a6a6fef20 Mon Sep 17 00:00:00 2001 From: "simonpj@microsoft.com" Date: Mon, 23 Aug 2010 13:33:53 +0000 Subject: [PATCH] The templateHaskellOk check should only run in stage2 Because rtsIsProfiled is only available in stage2 --- compiler/main/DynFlags.hs | 16 ++++++++++++++-- 1 file changed, 14 insertions(+), 2 deletions(-) diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs index 2e7e1fe..b067782 100644 --- a/compiler/main/DynFlags.hs +++ b/compiler/main/DynFlags.hs @@ -61,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" @@ -1810,12 +1815,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 @@ -1823,6 +1829,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 {- ********************************************************************** %* * -- 1.7.10.4