trying to get a registerised alpha build

Simon Marlow simonmarhaskell at gmail.com
Tue Mar 28 08:52:39 EST 2006


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



More information about the Glasgow-haskell-bugs mailing list