LLVM backend: Show expected LLVM version in warnings/errors
authorÖmer Sinan Ağacan <omeragacan@gmail.com>
Fri, 18 Dec 2015 17:21:47 +0000 (12:21 -0500)
committerÖmer Sinan Ağacan <omeragacan@gmail.com>
Fri, 18 Dec 2015 17:41:44 +0000 (12:41 -0500)
Summary:
Before:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )
    You are using a new version of LLVM that hasn't been tested yet!
    We will try though...

After:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )
    You are using an unsupported version of LLVM!
    Currently only 3.7 is supported.
    We will try though...

Before:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )

    <no location info>:
        Warning: Couldn't figure out LLVM version!
                 Make sure you have installed LLVM
    ghc: could not execute: opt

After:

    [1 of 1] Compiling Main             ( Main.hs, Main.o )

    <no location info>: error:
        Warning: Couldn't figure out LLVM version!
                 Make sure you have installed LLVM 3.7
    ghc-stage1: could not execute: opt

Reviewers: austin, rwbarton, bgamari

Subscribers: thomie

Differential Revision: https://phabricator.haskell.org/D1658

compiler/llvmGen/LlvmCodeGen.hs
compiler/llvmGen/LlvmCodeGen/Base.hs
compiler/main/SysTools.hs

index 3453484..3c63aa0 100644 (file)
@@ -54,6 +54,9 @@ llvmCodeGen dflags h us cmm_stream
        let doWarn = wopt Opt_WarnUnsupportedLlvmVersion dflags
        when (ver /= supportedLlvmVersion && doWarn) $
            putMsg dflags (text "You are using an unsupported version of LLVM!"
+                            $+$ text ("Currently only " ++
+                                      llvmVersionStr supportedLlvmVersion ++
+                                      " is supported.")
                             $+$ text "We will try though...")
 
        -- run code generation
index 3367cda..82c1eea 100644 (file)
@@ -12,7 +12,7 @@ module LlvmCodeGen.Base (
         LiveGlobalRegs,
         LlvmUnresData, LlvmData, UnresLabel, UnresStatic,
 
-        LlvmVersion, supportedLlvmVersion,
+        LlvmVersion, supportedLlvmVersion, llvmVersionStr,
 
         LlvmM,
         runLlvm, liftStream, withClearVars, varLookup, varInsert,
@@ -184,6 +184,9 @@ type LlvmVersion = (Int, Int)
 supportedLlvmVersion :: LlvmVersion
 supportedLlvmVersion = sUPPORTED_LLVM_VERSION
 
+llvmVersionStr :: LlvmVersion -> String
+llvmVersionStr (major, minor) = show major ++ "." ++ show minor
+
 -- ----------------------------------------------------------------------------
 -- * Environment Handling
 --
index c7ca4a6..4166b9b 100644 (file)
@@ -66,6 +66,8 @@ import Util
 import DynFlags
 import Exception
 
+import LlvmCodeGen.Base (llvmVersionStr, supportedLlvmVersion)
+
 import Data.IORef
 import Control.Monad
 import System.Exit
@@ -653,7 +655,8 @@ figureLlvmVersion dflags = do
                 errorMsg dflags $ vcat
                     [ text "Warning:", nest 9 $
                           text "Couldn't figure out LLVM version!" $$
-                          text "Make sure you have installed LLVM"]
+                          text ("Make sure you have installed LLVM " ++
+                                llvmVersionStr supportedLlvmVersion) ]
                 return Nothing)
   return ver