Andreas Schwab wrote:
Jeff Law <[EMAIL PROTECTED]> writes:
Andreas Schwab wrote:
I'm testing IRA on m68k (with IRA_COVER_CLASSES defined to {
GENERAL_REGS, FP_REGS, LIM_REG_CLASSES }) and get a crash in
process_regs_for_copy. It is called with
(insn 22 17 28 4 /cvs/gcc/libgcc/../gcc/libgcc2.c:169 (set (reg/i:SI 0 %d0)
(subreg:SI (reg/v:DI 30 [ w ]) 4)) 36 {*movsi_m68k2}
(expr_list:REG_DEAD (reg/v:DI 30 [ w ])
(nil)))
and hard_regno becomes -1 due to offset2 == 1. I don't understand how
substracting offset2 from REGNO (reg1) can make sense here.
Andreas.
Do you have a testcase handy?
It's _mulvsi3.o from libgcc. The same problem exists on all 32-bit
big-endian targets, on little-endian the subreg offset is zero.
Andreas.
Strange as I didn't trip this at all. I wonder if I've got something
out-of-date in my tree....
jeff