[PR rtl-optimization/55604]: fix ICE in remove_some_program_points_and_update_live_ranges
Steven Bosscher
stevenb.gcc@gmail.com
Wed Dec 5 19:15:00 GMT 2012
On Wed, Dec 5, 2012 at 8:11 PM, Steven Bosscher wrote:
> The function that triggers this, has this RTL after IRA:
At which point, of course, I wanted to show after substituting hard
regs for the pseudos, so that:
>
> 1: NOTE_INSN_DELETED
> 3: NOTE_INSN_BASIC_BLOCK 2
> 2: NOTE_INSN_FUNCTION_BEG
> 5: {r60:DI=frame:DI-0x10;clobber flags:CC;}
> REG_UNUSED flags:CC
> REG_EQUIV frame:DI-0x10
> 6: dx:DI=r60:DI
> REG_DEAD r60:DI
> REG_EQUAL frame:DI-0x10
> 7: si:SI=0x5
> 8: di:DI=`*.LC0'
> 9: ax:QI=0
> 10: ax:SI=call [`printf'] argc:0
> REG_DEAD di:DI
> REG_DEAD si:SI
> REG_DEAD dx:DI
> REG_UNUSED ax:SI
> 15: ax:SI=0
> 18: use ax:SI
becomes...
3: NOTE_INSN_BASIC_BLOCK 2
2: NOTE_INSN_FUNCTION_BEG
5: NOTE_INSN_DELETED
6: dx:DI=frame:DI
REG_DEAD r60:DI
REG_EQUAL frame:DI-0x10
7: si:SI=0x5
8: di:DI=`*.LC0'
9: ax:QI=0
10: ax:SI=call [`printf'] argc:0
REG_DEAD di:DI
REG_DEAD si:SI
REG_DEAD dx:DI
REG_UNUSED ax:SI
15: ax:SI=0
18: use ax:SI
on entry to lra_create_live_ranges().
> Note how there are no pseudos at all in the function.
(... apart from the REG_DEAD use of r60. Both IRA and LRA sometimes
leave REG_NOTEs referencing pseudos. I haven't figured out yet why.)
Ciao!
Steven
More information about the Gcc-patches
mailing list