diff options
author | Nicolas Trangez <ikke@nicolast.be> | 2016-10-01 17:58:11 -0400 |
---|---|---|
committer | Ben Gamari <ben@smart-cactus.org> | 2016-10-01 20:01:29 -0400 |
commit | b0d53a839da0149e0142da036b6ebf5a01b3216f (patch) | |
tree | 40d092148d1e366f3042210c21ca15a5c306847a /docs | |
parent | 0014fa56e9f2fe936da85627c92a288037c8c19b (diff) | |
download | haskell-b0d53a839da0149e0142da036b6ebf5a01b3216f.tar.gz |
Turn `__GLASGOW_HASKELL_LLVM__` into an integer again
In GHC < 8.0.1, the value of `__GLASGOW_HASKELL_LLVM__`, exposed
through the preprocessor when compiled with `-fllvm`, was an integer
value, encoded according to some rules specified in the user guide.
Due to an oversight, in GHC 8.0.1 the value of this define became a
tuple, exposed as e.g. `(3, 7)`. This was an unintended regression.
This patch turns the value of the `__GLASGOW_HASKELL_LLVM__` definition
into a single integer again, but changes the formatting of said number
slightly. Before, any LLVM version where the major or minor component >=
10 would cause ambiguous values for `__GLASGOW_HASKELL_LLVM__`. With
this patch, the value is in line with `__GLASGOW_HASKELL__`, adding a
padding `0` in-between major and minor component if applicable (we
assume no minors >= 100 will ever exist).
The documentation in the user guide is updated accordingly, and a
reference is made in the 8.0.2 release notes.
Test Plan: validate
Reviewers: bgamari, erikd
Reviewed By: bgamari
Subscribers: thomie
Differential Revision: https://phabricator.haskell.org/D2552
GHC Trac Issues: #12628
Diffstat (limited to 'docs')
-rw-r--r-- | docs/users_guide/8.0.2-notes.rst | 6 | ||||
-rw-r--r-- | docs/users_guide/phases.rst | 4 |
2 files changed, 9 insertions, 1 deletions
diff --git a/docs/users_guide/8.0.2-notes.rst b/docs/users_guide/8.0.2-notes.rst index 43c956209a..82c214e534 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 0c3b59f54c..01c2e1f35f 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:: |