Crash in process_regs_for_copy
Jeff Law
law@redhat.com
Mon Sep 8 19:41:00 GMT 2008
Andreas Schwab wrote:
> Jeff Law <law@redhat.com> 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
More information about the Gcc
mailing list