peephole eliminating register use: how to not ICE?

Joern Rennecke amylaar@cambridge.redhat.com
Thu Apr 12 11:50:00 GMT 2001


> I assume that the complaint is because register 9 was added in the
> second regset (from verify_local_live_at_start, the new_live_at_start
> set) but not in the first (new_live_at_start).
> 
> So, digging back through the earlier dump files, I look to see when R9
> was last used in that basic block.  One of the peepholes removed it --
> in mpls.c.21.flow2, I see:
> 
>   (insn 260 261 262 (set (reg/v:QI 9 R9 [73])
>           (zero_extract:QI (reg:QI 2 R2 [100])
>               (const_int 8 [0x8])
>               (const_int 24 [0x18]))) 35 {extzv} (nil)
>       (expr_list:REG_DEAD (reg:QI 2 R2 [100])
>           (nil)))

Is that the first use of register 9 in bb 13?  If so, that would indicate
that life_at_start has been computed incorrectly.  Note, it is not a list of
registers that are used in the basic block, but a list of registers that are
life at the start of the block, i.e. where it does matter what value they
contain at the start.



More information about the Gcc mailing list