
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/

Erik de Castro Lopo wrote:
At this point we need to decide whether:
a) Require llvm-3.6 for 7.10.2 and later.
I've done some testing on the ghc-7.10 branch (with a couple of patches cherry picked from master) with llvm-3.6 on amd64-linux. WIth this, there are 17 unexpected failures during validate: deriving/should_fail T7959 [stderr mismatch] (normal) deriving/should_fail drvfail005 [stderr mismatch] (normal) deriving/should_fail drvfail009 [stderr mismatch] (normal) indexed-types/should_fail SimpleFail14 [stderr mismatch] (normal) simplCore/should_compile spec-inline [stderr mismatch] (optasm) typecheck/should_compile T10195 [exit code non-0] (normal) typecheck/should_fail T2994 [stderr mismatch] (normal) typecheck/should_fail T3540 [stderr mismatch] (normal) typecheck/should_fail T7778 [stderr mismatch] (normal) typecheck/should_fail tcfail036 [stderr mismatch] (normal) typecheck/should_fail tcfail057 [stderr mismatch] (normal) typecheck/should_fail tcfail063 [stderr mismatch] (normal) typecheck/should_fail tcfail134 [stderr mismatch] (normal) typecheck/should_fail tcfail146 [stderr mismatch] (normal) typecheck/should_fail tcfail147 [stderr mismatch] (normal) typecheck/should_fail tcfail151 [stderr mismatch] (normal) typecheck/should_fail tcfail209 [stderr mismatch] (normal) All bit one oft these all seem to be stderr mismatches rather than actual problems. My validate run on armhf is still running. Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/

I believe we need to do b) Revert commit 07da52ce2d in the ghc-7.10 branch
and continue to use llvm-3.5 for the 7.10 series.
I think the plan is to require llvm-3.6 or a later version for 7.12.1 and
later
Ghc 7.10.1 only supports llvm 3.5 as stated in
https://ghc.haskell.org/trac/ghc/ticket/9929
I filed a doc bug on this yesterday,
https://ghc.haskell.org/trac/ghc/ticket/10302
On Wed, Apr 15, 2015 at 7:12 AM, Erik de Castro Lopo
Erik de Castro Lopo wrote:
At this point we need to decide whether:
a) Require llvm-3.6 for 7.10.2 and later.
I've done some testing on the ghc-7.10 branch (with a couple of patches cherry picked from master) with llvm-3.6 on amd64-linux. WIth this, there are 17 unexpected failures during validate:
deriving/should_fail T7959 [stderr mismatch] (normal) deriving/should_fail drvfail005 [stderr mismatch] (normal) deriving/should_fail drvfail009 [stderr mismatch] (normal) indexed-types/should_fail SimpleFail14 [stderr mismatch] (normal) simplCore/should_compile spec-inline [stderr mismatch] (optasm) typecheck/should_compile T10195 [exit code non-0] (normal) typecheck/should_fail T2994 [stderr mismatch] (normal) typecheck/should_fail T3540 [stderr mismatch] (normal) typecheck/should_fail T7778 [stderr mismatch] (normal) typecheck/should_fail tcfail036 [stderr mismatch] (normal) typecheck/should_fail tcfail057 [stderr mismatch] (normal) typecheck/should_fail tcfail063 [stderr mismatch] (normal) typecheck/should_fail tcfail134 [stderr mismatch] (normal) typecheck/should_fail tcfail146 [stderr mismatch] (normal) typecheck/should_fail tcfail147 [stderr mismatch] (normal) typecheck/should_fail tcfail151 [stderr mismatch] (normal) typecheck/should_fail tcfail209 [stderr mismatch] (normal)
All bit one oft these all seem to be stderr mismatches rather than actual problems.
My validate run on armhf is still running.
Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/ _______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

On Wed, Apr 15, 2015 at 2:04 AM, Erik de Castro Lopo
At this point we need to decide whether:
a) Require llvm-3.6 for 7.10.2 and later.
Surely we're not going to do this.
or
b) Revert commit 07da52ce2d in the ghc-7.10 branch and continue to use llvm-3.5 for the 7.10 series.
Why do we need to revert anything, can't we just make a one-character fix of 3.6 to 3.5 on the ghc-7.10 branch? Regards, Reid Barton

yes wrt b) making a one-character fix of 3.6 to 3.5 on the ghc-7.10 branch
sound like the right thing to me.
wrt a) my understanding is that for 7.10.2 we will also use llvm 3.5 as in
7.10.1
For 7.12.1 and forward we will also have one supported llvm version per
release which right now for 7.12.1 is 3.6 but could become 3.7
The plan for llvm for 7.12.1and later is given in
https://ghc.haskell.org/trac/ghc/wiki/ImprovedLLVMBackend.
On Wed, Apr 15, 2015 at 9:55 AM, Reid Barton
On Wed, Apr 15, 2015 at 2:04 AM, Erik de Castro Lopo
wrote:
At this point we need to decide whether:
a) Require llvm-3.6 for 7.10.2 and later.
Surely we're not going to do this.
or
b) Revert commit 07da52ce2d in the ghc-7.10 branch and continue to use llvm-3.5 for the 7.10 series.
Why do we need to revert anything, can't we just make a one-character fix of 3.6 to 3.5 on the ghc-7.10 branch?
Regards, Reid Barton
_______________________________________________ ghc-devs mailing list ghc-devs@haskell.org http://mail.haskell.org/cgi-bin/mailman/listinfo/ghc-devs

Reid Barton wrote:
Why do we need to revert anything, can't we just make a one-character fix of 3.6 to 3.5 on the ghc-7.10 branch?
Even with that one character change the LLVM detection is not complete or correct. Specifically, building the compiler will enforce the right llvm version, but the binary-dist configure script just uses "llc" and "opt". Furthermore, I am pretty sure that #10292 is causes by llvm-3.5 and that if we use llvm-3.6 buildng on Arm works. Unfortunately building and testing on Arm takes a long time and I am still in the process of verifying this. Erik -- ---------------------------------------------------------------------- Erik de Castro Lopo http://www.mega-nerd.com/

Erik de Castro Lopo
Reid Barton wrote:
Why do we need to revert anything, can't we just make a one-character fix of 3.6 to 3.5 on the ghc-7.10 branch?
Even with that one character change the LLVM detection is not complete or correct. Specifically, building the compiler will enforce the right llvm version, but the binary-dist configure script just uses "llc" and "opt".
Furthermore, I am pretty sure that #10292 is causes by llvm-3.5 and that if we use llvm-3.6 buildng on Arm works. Unfortunately building and testing on Arm takes a long time and I am still in the process of verifying this.
While I would love to see LLVM 3.6 rolled out soon as a GHC target (it is substantially more stable on ARM in my experience) I agree that doing this for 7.10.2 would be a bit of a large change for a minor release. If nothing else it would be surprising for users to find that their previously working LLVM/GHC combination needed to be upgraded upon moving to 7.10.2. In my experience LLVM 3.5 works reasonably well on ARM; it seems like this should be sufficient to carry us through to 7.12. Cheers, - Ben
participants (4)
-
Ben Gamari
-
Erik de Castro Lopo
-
George Colpitts
-
Reid Barton