This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: peephole eliminating register use: how to not ICE?
- To: poole at troilus dot org (Michael Poole)
- Subject: Re: peephole eliminating register use: how to not ICE?
- From: Joern Rennecke <amylaar at cambridge dot redhat dot com>
- Date: Thu, 12 Apr 2001 19:50:26 +0100 (BST)
- Cc: gcc at gcc dot gnu dot org
> 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.