[commit: ghc] master: Add -f[no-]warn-unsupported-llvm-version. Closes Trac #7579. (5cca0b4)

Austin Seipp mad.one at gmail.com
Thu Jan 17 06:48:58 CET 2013


Repository : ssh://darcs.haskell.org//srv/darcs/ghc

On branch  : master

http://hackage.haskell.org/trac/ghc/changeset/5cca0b443ed2b0328e58fb7881cb393c300f64ed

>---------------------------------------------------------------

commit 5cca0b443ed2b0328e58fb7881cb393c300f64ed
Author: Austin Seipp <mad.one at gmail.com>
Date:   Sun Jan 13 22:23:37 2013 -0600

    Add -f[no-]warn-unsupported-llvm-version. Closes Trac #7579.
    
    This controls whether or not the compiler warns if we're using an LLVM
    version that's too old or too new. It's mostly useful when building the
    compiler knowingly with an unsupported version, so you don't get a lot
    of warnings in the build process.
    
    There's no documentation for this since it's a flag only a few
    developers would care about anyway.
    
    Signed-off-by: Austin Seipp <mad.one at gmail.com>

>---------------------------------------------------------------

 compiler/llvmGen/LlvmCodeGen.hs |    5 +++--
 compiler/main/DynFlags.hs       |    5 ++++-
 2 files changed, 7 insertions(+), 3 deletions(-)

diff --git a/compiler/llvmGen/LlvmCodeGen.hs b/compiler/llvmGen/LlvmCodeGen.hs
index 4b8455f..04064bb 100644
--- a/compiler/llvmGen/LlvmCodeGen.hs
+++ b/compiler/llvmGen/LlvmCodeGen.hs
@@ -68,11 +68,12 @@ llvmCodeGen dflags h us cmms
         ver <- (fromMaybe defaultLlvmVersion) `fmap` figureLlvmVersion dflags
         -- cache llvm version for later use
         writeIORef (llvmVersion dflags) ver
-        when (ver < minSupportLlvmVersion) $
+        let doWarn = wopt Opt_WarnUnsupportedLlvmVersion dflags
+        when (ver < minSupportLlvmVersion && doWarn) $
             errorMsg dflags (text "You are using an old version of LLVM that"
                              <> text " isn't supported anymore!"
                              $+$ text "We will try though...")
-        when (ver > maxSupportLlvmVersion) $
+        when (ver > maxSupportLlvmVersion && doWarn) $
             putMsg dflags (text "You are using a new version of LLVM that"
                            <> text " hasn't been tested yet!"
                            $+$ text "We will try though...")
diff --git a/compiler/main/DynFlags.hs b/compiler/main/DynFlags.hs
index 4edeb23..f3e5df3 100644
--- a/compiler/main/DynFlags.hs
+++ b/compiler/main/DynFlags.hs
@@ -425,6 +425,7 @@ data WarningFlag =
    | Opt_WarnSafe
    | Opt_WarnPointlessPragmas
    | Opt_WarnUnsupportedCallingConventions
+   | Opt_WarnUnsupportedLlvmVersion
    | Opt_WarnInlineRuleShadowing
    deriving (Eq, Show, Enum)
 
@@ -2398,7 +2399,8 @@ fWarningFlags = [
   ( "warn-safe",                        Opt_WarnSafe, setWarnSafe ),
   ( "warn-pointless-pragmas",           Opt_WarnPointlessPragmas, nop ),
   ( "warn-unsupported-calling-conventions", Opt_WarnUnsupportedCallingConventions, nop ),
-  ( "warn-inline-rule-shadowing",       Opt_WarnInlineRuleShadowing, nop ) ]
+  ( "warn-inline-rule-shadowing",       Opt_WarnInlineRuleShadowing, nop ),
+  ( "warn-unsupported-llvm-version",    Opt_WarnUnsupportedLlvmVersion, nop ) ]
 
 -- | These @-\<blah\>@ flags can all be reversed with @-no-\<blah\>@
 negatableFlags :: [FlagSpec GeneralFlag]
@@ -2783,6 +2785,7 @@ standardWarnings
         Opt_WarnAlternativeLayoutRuleTransitional,
         Opt_WarnPointlessPragmas,
         Opt_WarnUnsupportedCallingConventions,
+        Opt_WarnUnsupportedLlvmVersion,
         Opt_WarnInlineRuleShadowing,
         Opt_WarnDuplicateConstraints
       ]





More information about the ghc-commits mailing list