The problem is that this instruction requires three separate registers,
but cmpxchgl already reads and writes %eax leaving only two free
registers (%ecx and %edx).
You'll need to arrange to not use the complicated addressing modes with
cmpxchg on i386, and keep the number of free regs required <= 2.
Really we ought to have 4 usable regs, but for that to happen we need to
change the calling convention and swap R1 with Sp, but we can't easily
do that because it needs a change in LLVM too (sigh).
Cheers,
Simon
On 26/06/2014 19:39, Johan Tibell wrote:
Here's some more debug output. Can someone interpret it:
genRaInsn
cmpxchgl %vI_n1nF,8(%vI_n1nD,%vI_n1nE,4)
r_dying = [%vI_n1nD, %vI_n1nE, %vI_n1nF]
w_dying = []
virt_read = [%vI_n1nD, %vI_n1nE, %vI_n1nF]
virt_written = []
freeregs = FreeRegs 4282318848
assig = [n1nD :-> InMem 0,
n1nE :-> InReg (RealRegSingle 2), n1nF :-> InReg
(RealRegSingle 3)]
ghc-stage1: panic! (the 'impossible' happened)
(GHC version 7.9.20140626 for i386-unknown-linux):
RegAllocLinear.allocRegsAndSpill: no spill candidates
allocating vreg: VirtualRegI n1nD
assignment: [(n1nD,InMem 0),(n1nE,InReg (RealRegSingle
2)),(n1nF,InReg (RealRegSingle 3))]
freeRegs: FreeRegs 4282318848
initFreeRegs: FreeRegs 4282318861
(i.e. it's the cmpxchg instruction which is causing the failure.)
On Thu, Jun 26, 2014 at 8:17 PM, Johan Tibell <johan.tib...@gmail.com
<mailto:johan.tib...@gmail.com>> wrote:
I'm trying to understand the output from the register allocator:
(GHC version 7.9.20140626 for i386-unknown-linux):
RegAllocLinear.allocRegsAndSpill: no spill candidates
allocating vreg: VirtualRegI n1nD
assignment: [(n1nD,InMem 0),(n1nE,InReg (RealRegSingle
2)),(n1nF,InReg (RealRegSingle 3))]
freeRegs: FreeRegs 4282318848
initFreeRegs: FreeRegs 4282318861
Without understanding exactly what's wrong, the message above
suggests that we're trying to allocate a reg for n1nD, but there's
already an assignment for that virtual reg, is that right?
On Thu, Jun 26, 2014 at 3:05 PM, Johan Tibell
<johan.tib...@gmail.com <mailto:johan.tib...@gmail.com>> wrote:
Herbert pushed my revert for me a minute ago. Everyone should be
good once they sync.
On Thu, Jun 26, 2014 at 2:51 PM, Johan Tibell
<johan.tib...@gmail.com <mailto:johan.tib...@gmail.com>> wrote:
I guess you don't have
04dd7cb3423f1940242fdfe2ea2e3b8abd68a177 (which I pushed
this morning) which is fine. You should be in a good state
now when d8abf85f8ca176854e9d5d0b12371c4bc402aac3 is reverted.
On Thu, Jun 26, 2014 at 2:49 PM, Simon Peyton Jones
<simo...@microsoft.com <mailto:simo...@microsoft.com>> wrote:
git revert d8abf85f8ca176854e9d5d0b12371c4bc402aac3 ____
[master f958079] Revert "Add more primops for atomic ops
on byte arrays"____
23 files changed, 86 insertions(+), 1016 deletions(-)____
rewrite compiler/nativeGen/CPrim.hs (62%)____
delete mode 100644 libraries/ghc-prim/cbits/atomic.c____
delete mode 100644
testsuite/tests/concurrent/should_run/AtomicPrimops.hs____
delete mode 100644
testsuite/tests/concurrent/should_run/AtomicPrimops.stdout____
HEAD $ git revert
04dd7cb3423f1940242fdfe2ea2e3b8abd68a177 ____
fatal: bad object
04dd7cb3423f1940242fdfe2ea2e3b8abd68a177____
HEAD $____
What now?____
Simon____
__ __
*From:*Johan Tibell [mailto:johan.tib...@gmail.com
<mailto:johan.tib...@gmail.com>]
*Sent:* 26 June 2014 13:25
*To:* Simon Peyton Jones
*Cc:* Karel Gardas; ghc-devs
*Subject:* Re: Two days old build breakage on i386.____
__ __
Just to make sure this is the same breakage, are you on
an i386 Windows machine? If so git
revert d8abf85f8ca176854e9d5d0b12371c4bc402aac3
and 04dd7cb3423f1940242fdfe2ea2e3b8abd68a177 to get
unstuck.____
__ __
On Thu, Jun 26, 2014 at 2:13 PM, Simon Peyton Jones
<simo...@microsoft.com <mailto:simo...@microsoft.com>>
wrote:____
Aaaargh! Once again the Windows build is broken. I
am utterly stalled.
Moreover -fregs-graph and -fregs-iterative now
*silently* do nothing. At least they should elicit
warnings saying that they are disabled pending the
fix to X and Y.
Please can someone bisect to find out which patch is
the culprit?
I wish we had a more systematic way to find this
out. I hate being the main person who gets stuck
because some unrelated change has broken the Windows
build. (Thanks for Karel, who got to it a day
before me.)
Thanks
Simon____
| -----Original Message-----
| From: ghc-devs
[mailto:ghc-devs-boun...@haskell.org
<mailto:ghc-devs-boun...@haskell.org>] On Behalf Of
Karel
| Gardas
| Sent: 26 June 2014 09:56
| To: ghc-devs; Johan Tibell
| Subject: Two days old build breakage on i386.
|
|
| Hello,
|
| builders running on i386 building for this
platform caught issue which
| shows as a build breakage:
|
| ghc-stage1: panic! (the 'impossible' happened)
| (GHC version 7.9.20140624 for i386-unknown-linux):
| RegAllocLinear.allocRegsAndSpill: no spill candidates
| allocating vreg: VirtualRegI n1Q6
| assignment: [(c1PV,InMem 2),(n1Q5,InBoth
(RealRegSingle 3)
| 0),(n1Q6,InMem 1),(n1Q7,InMem 3),(n1Q9,InReg
(RealRegSingle 2))]
| freeRegs: FreeRegs 4282318848
| initFreeRegs: FreeRegs 4282318861
| Please report this as a GHC bug:
http://www.haskell.org/ghc/reportabug
| make[1]: ***
|
[libraries/ghc-prim/dist-install/build/GHC/PrimopWrappers.o]
Error 1
| libraries/ghc-prim/ghc.mk:4 <http://ghc.mk:4>:
recipe for target
|
'libraries/ghc-prim/dist-install/build/GHC/PrimopWrappers.o'
failed
|
| Have a look for example on linux-i386 buildot log
here:
|
http://haskell.inf.elte.hu/builders/validator1-linux-x86-head/18/7.html
|
| Anyway, this happens on Linux, FreeBSD and Solaris
buildbots on i386 so
| it's OS independent and probably 32bit/i386
platform specific and it's
| two days old breakage now. The last two night
builds fail on all
| mentioned buildbots. I'm not sure but perhaps:
|
| commit d8abf85f8ca176854e9d5d0b12371c4bc402aac3
| Author: Johan Tibell <johan.tib...@gmail.com
<mailto:johan.tib...@gmail.com>>
| Date: Mon Jun 9 11:43:21 2014 +0200
|
| triggers that issue? I'm not claiming that the
commit is actual culprit,
| this may be just recently un-hidden issue in
linear regs allocator on
| i386!
|
| Thanks!
| Karel____
| _______________________________________________
| ghc-devs mailing list
| ghc-devs@haskell.org <mailto:ghc-devs@haskell.org>
| http://www.haskell.org/mailman/listinfo/ghc-devs____
__ __
_______________________________________________
ghc-devs mailing list
ghc-devs@haskell.org
http://www.haskell.org/mailman/listinfo/ghc-devs