[Bug rtl-optimization/68624] [6 Regression] wrong code at -O2 and -O3 on x86_64-linux-gnu (in 64-bit mode)
ktkachov at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Dec 1 11:48:00 GMT 2015
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=68624
--- Comment #5 from ktkachov at gcc dot gnu.org ---
Thanks, I've come to the same conclusion.
The code in noce_cmove_arith that checks for overlapping writes
among the basic blocks has a bug. In the code:
if (emit_a || modified_in_a)
{
modified_in_b = emit_b != NULL_RTX && modified_in_p (orig_a, emit_b);
if (tmp_b && else_bb)
...
changing the second if to:
if (tmp_a && else_bb)
fixes the testcase. But the whole logic there is becoming somewhat convoluted.
I'll see if I can make the control flow there clearer
More information about the Gcc-bugs
mailing list