Crash in process_regs_for_copy

Andreas Schwab schwab@suse.de
Mon Sep 8 19:33:00 GMT 2008


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.

-- 
Andreas Schwab, SuSE Labs, schwab@suse.de
SuSE Linux Products GmbH, Maxfeldstraße 5, 90409 Nürnberg, Germany
PGP key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."



More information about the Gcc mailing list