[Bug rtl-optimization/28965] distribute_notes fails to change REG_DEAD into REG_UNUSED notes for global registers

ebotcazou at gcc dot gnu dot org gcc-bugzilla@gcc.gnu.org
Tue Sep 12 20:00:00 GMT 2006



------- Comment #4 from ebotcazou at gcc dot gnu dot org  2006-09-12 20:00 -------
> The invalid REG_DEAD note triggered an ICE during sched1 with a 4.1.1
> based compiler with ENABLE_CHECKING set, compiling for sh4-elf with -O2
> -fno-exceptions.
>
> I can replicate the invalid REG_DEAD note with vanilla 4.1-2006-03-21,
> although of course it won't ICE, since checking is disabled.

Thanks, I can replicate with current 4.1 branch.

> This insn appears in the combine dump:
> 
> (insn 13 8 14 0 (set (reg:QI 162)
>         (mem:QI (post_inc:SI (reg/v/f:SI 159 [ a ])) [0 S1 A8])) 182 {movqi_i}
> (
> insn_list:REG_DEP_TRUE 6 (nil))
>     (expr_list:REG_UNUSED (reg:QI 162)
>         (expr_list:REG_DEAD (reg/v/f:SI 159 [ a ])
>             (expr_list:REG_INC (reg/v/f:SI 159 [ a ])
>                 (nil)))))

OK, I agree that the REG_DEAD note should have been turned into a REG_UNUSED
note here.  But of course changing PATTERN (tem) into tem at the hot spot is
enough to fix that so it would be nice to have a testcase for the global reg
case.  Also note that the ChangeLog entry doesn't even mention global regs.


-- 


http://gcc.gnu.org/bugzilla/show_bug.cgi?id=28965



More information about the Gcc-bugs mailing list