ghc-7.10 branch regression

Erik de Castro Lopo mle+hs at
Wed Apr 15 06:04:31 UTC 2015

Hi all,

It seems that commit 42448e3757 from git HEAD has been pulled into the
ghc-7.10 branch as commit 07da52ce2d.

This is problematic because that patch puts in a *requirement* for llvm-3.6
(which is good for git HEAD) but the llvm backend code in the ghc-7.10 branch
does not compiler with llvm-3.6. Specifically, on armhf I get:

    /usr/bin/opt-3.6: /tmp/ghc16494_0/ghc16494_2.ll:7:6: error: unexpected type in metadata definition
    !0 = metadata !{metadata !"top", i8* null}

Furthermore, validating the ghc-7.10 branch on amd64-linis results in 16
unexpected failures (i'm currenty in the process of validating this branch
with the problematic commit reverted).

At this point we need to decide whether:

   a) Require llvm-3.6 for 7.10.2 and later.


   b) Revert commit 07da52ce2d in the ghc-7.10 branch and continue to use
      llvm-3.5 for the 7.10 series.

For option a) we would need to do the following:

  * Pull in 5d5abdca31 from git HEAD that upgrades the LLVM backend to support
    llvm-3.6 only.
  * Pull in 485dba86 from git HEAD that updates the configure stuff and is
    really the second part of 42448e3757.

For option b) we would need to do the following:

  * Revert 07da52ce2d from ghc-7.10
  * Apply the patch mentioned here:

At this point, my personal preference would be a). For me, git HEAD using
llvm-3.6 has been working a lot better on armhf and arm64 than the ghc-7.10
branch. Ticket #10234 has been set to 'merge' status to refect this.


PS : I would have raised another ticket about this, but I think the problem
     here was actually caused by too many tickets and too many commits being
Interesting tidbits in case anyone is interested:

* On armhf, building the ghc-7.10 branch fails because we a generating LLVM IR
  code targeted for llvm-3.5 and trying to compile it with llcm-3.6.

* The ghc-7.10 validates (with 16 unexpected failures) in x86 variants because
  validation uses the NCG to build the compiler and ignores the requirement for
  llvm-3.6, and then bindisttest compiler just uses "llc" and "opt" (in git
  HEAD this difference between the compiler configure script and the binary-dist
  configure script is fixed in 485dba86 and it is fixed in ghc-7.10 by the patch

Erik de Castro Lopo

More information about the ghc-devs mailing list