logo       

Re: trying to get a registerised alpha build: msg#00144

lang.haskell.glasgow.bugs

Subject: Re: trying to get a registerised alpha build

Duncan Coutts wrote:

/tmp/ghc9727.hc: In function `s1BE_ret':
/tmp/ghc9727.hc:1688: error: unable to find a register to spill in class
`R27_REG'
/tmp/ghc9727.hc:1688: error: this is the insn:
(insn 24 23 26 1 (parallel [
(set (reg/v:DI 14 $14 [ R1 ])
(div:DI (reg:DI 24 $24 [77])
(reg:DI 25 $25 [78])))
(clobber (reg:DI 23 $23))
(clobber (reg:DI 28 $28))
]) 43 {*divmoddi_internal_er} (insn_list 22 (insn_list 21
(nil)))
(expr_list:REG_UNUSED (reg:DI 23 $23)
(expr_list:REG_UNUSED (reg:DI 28 $28)
(expr_list:REG_DEAD (reg:DI 25 $25 [78])
(expr_list:REG_DEAD (reg:DI 24 $24 [77])
(nil))))))
/tmp/ghc9727.hc:1688: confused by earlier errors, bailing out
make[2]: *** [GHC/Base.o] Error 1
make[1]: *** [all] Error 1
make[1]: Leaving directory
`/var/tmp/portage/ghc-6.4.1-r2/work/ghc-6.4.1/libraries'
make: *** [build] Error 1

I find the "divmoddi_internal_er" a bit suspicious. Things often go wrong when gcc is using its builtin functions - you might try -fno-builtin to gcc.

When looking at the MachRegs.h we found that the bit:
# define NCG_Reserved_I1 22
# define NCG_Reserved_I2 27
# define NCG_Reserved_F1 f29
# define NCG_Reserved_F2 f30

The old NCG register allocator needed to reserve some regs for spilling, IIRC. The new one doesn't need to.

Cheers,
Simon


<Prev in Thread] Current Thread [Next in Thread>
Google Custom Search

News | FAQ | advertise