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