Turn `__GLASGOW_HASKELL_LLVM__` into an integer again
authorNicolas Trangez <ikke@nicolast.be>
Sat, 1 Oct 2016 21:58:11 +0000 (17:58 -0400)
committerBen Gamari <ben@smart-cactus.org>
Sun, 2 Oct 2016 15:39:42 +0000 (11:39 -0400)
commit3b13a0426f59b47fb27646c694caf1df55a684e3
tree680d4e974f9459f374949ab5868bb146fb0f628b
parent4557d944a61f54fcfe99a40cf7de942568ef22b4
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

(cherry picked from commit b0d53a839da0149e0142da036b6ebf5a01b3216f)
compiler/main/DriverPipeline.hs
docs/users_guide/8.0.2-notes.rst
docs/users_guide/phases.rst