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. -- Andreas Schwab, SuSE Labs, [EMAIL PROTECTED] 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."