[Bug rtl-optimization/84780] [8 Regression] wrong code aarch64 with -O3 --param=tree-reassoc-width=32
segher at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Sat Mar 10 16:41:00 GMT 2018
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=84780
--- Comment #5 from Segher Boessenkool <segher at gcc dot gnu.org> ---
Insn 55 is a parallel, and that is split into two insns i1 and i2, both
numbered as 55. The i1 will never become part of the insn stream. It is
this insn that is deleted.
Later on insn 55 is combined into insn 100:
55:
cc:CC_C=zero_extend(r165:DI)+zero_extend(x2:DI)!=zero_extend(r165:DI+x2:DI)
100:
{cc:CC_C=zero_extend(r178:DI)+zero_extend(r198:DI)!=zero_extend(r178:DI+r198:DI);r200:DI=r178:DI+r198:DI;}
REG_DEAD r198:DI
REG_DEAD r178:DI
becomes
100:
{cc:CC_C=zero_extend(r178:DI)+zero_extend(r198:DI)!=zero_extend(r178:DI+r198:DI);r200:DI=r178:DI+r198:DI;}
REG_DEAD r178:DI
REG_DEAD r198:DI
and that seems fine, too? Or does something in between use cc? Ah yes, insn
71
does. Somehow insn 100 has a LOG_LINK to 55 though (for cc). This happens at
the 55 -> 70 combination.
More information about the Gcc-bugs
mailing list