diff --git a/compiler/main/DriverPipeline.hs b/compiler/main/DriverPipeline.hs index 5d648e60f995d8b4cd9379d364aea913d1ae8ac9..6e61d20dc8638ddc797d4f806ef765d8c656ad56 100644 --- a/compiler/main/DriverPipeline.hs +++ b/compiler/main/DriverPipeline.hs @@ -2099,8 +2099,12 @@ getBackendDefs :: DynFlags -> IO [String] getBackendDefs dflags | hscTarget dflags == HscLlvm = do llvmVer <- figureLlvmVersion dflags return $ case llvmVer of - Just n -> [ "-D__GLASGOW_HASKELL_LLVM__="++show n ] + Just n -> [ "-D__GLASGOW_HASKELL_LLVM__=" ++ format n ] _ -> [] + where + format (major, minor) + | minor >= 100 = error "getBackendDefs: Unsupported minor version" + | otherwise = show $ (100 * major + minor :: Int) -- Contract is Int getBackendDefs _ = return [] diff --git a/docs/users_guide/8.0.2-notes.rst b/docs/users_guide/8.0.2-notes.rst index 43c956209a99de98b29cd9bfff628014672cedd9..82c214e534411d77e940912964a3a634bdf7cff5 100644 --- a/docs/users_guide/8.0.2-notes.rst +++ b/docs/users_guide/8.0.2-notes.rst @@ -40,6 +40,12 @@ Compiler defaulting to decimal, hexadecimal if the address starts with `0x`, and octal if the address starts with `0`. +- Due to an oversight in GHC 8.0.1, the value of the preprocessor macro + ``__GLASGOW_HASKELL_LLVM__``, which exposes the LLVM version used by GHC, was + no longer an integer. This value is now turned into an integer again, but the + formatting is changed to be in line with ``__GLASGOW_HASKELL__`` + (:ghc-ticket:`12628`). + Runtime system ~~~~~~~~~~~~~~ diff --git a/docs/users_guide/phases.rst b/docs/users_guide/phases.rst index 0c3b59f54c45a0a7c2886bf9914f6798a0ca34d9..01c2e1f35fba76c35158beca9678ec3508516629 100644 --- a/docs/users_guide/phases.rst +++ b/docs/users_guide/phases.rst @@ -291,7 +291,9 @@ defined by your local GHC installation, the following trick is useful: Only defined when ``-fllvm`` is specified. When GHC is using version ``x.y.z`` of LLVM, the value of ``__GLASGOW_HASKELL_LLVM__`` is the - integer ⟨xy⟩. + integer ⟨xyy⟩ (if ⟨y⟩ is a single digit, then a leading zero + is added, so for example when using version 3.7 of LLVM, + ``__GLASGOW_HASKELL_LLVM__==307``). ``__PARALLEL_HASKELL__`` .. index::