Skip to content
  • Nicolas Trangez's avatar
    Turn `__GLASGOW_HASKELL_LLVM__` into an integer again · b0d53a83
    Nicolas Trangez authored and Ben Gamari's avatar Ben Gamari committed
    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
    b0d53a83