This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]

Re: peephole eliminating register use: how to not ICE?


> 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.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]