[Bug rtl-optimization/57300] [4.8/4.9 Regression] statement in expression miscompiled at -O3 in 32-bit mode

jakub at gcc dot gnu.org gcc-bugzilla@gcc.gnu.org
Thu May 16 10:08:00 GMT 2013


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

--- Comment #10 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
Re: Eric's question, not easily, because if we implement that define_split as
define_peephole2, then it won't trigger at all, because the next define_split
";; Extend to memory case when source register does not die.", will then split
the insn already during split2 pass rather than waiting for peephole2 pass.

So we'd need to protect that second splitter with peephole2_completed predicate
which we don't have yet, or so.  Is that the way to go?  If so, I can try a
patch.  Note, s390 will still be broken, but we don't have testcases for it
right now.

Re: Steven, we need some solution for 4.8.1 too.  While it is true that
generally df_note doesn't mean the problem is up2date, doesn't df_finish_pass
always kill that problem and thus at least the current pass should have called
df_add_note_problem?  Given the passes that split insns right now (see previous
comments), having df_note non-NULL means either it is a combine pass where it
is fine, or split* pass in which split_dead_or_set_p has been called already.



More information about the Gcc-bugs mailing list