ghc-7.10 branch regression
Erik de Castro Lopo
mle+hs at mega-nerd.com
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.
or
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:
https://ghc.haskell.org/trac/ghc/ticket/10234#comment:11
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.
Cheers,
Erik
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
involved.
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
in https://ghc.haskell.org/trac/ghc/ticket/10234#comment:11).
--
----------------------------------------------------------------------
Erik de Castro Lopo
http://www.mega-nerd.com/
More information about the ghc-devs
mailing list