[Bug tree-optimization/91293] [8/9/10 Regression] Wrong code with -O3 -mavx2
rguenth at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Wed Jul 31 12:37:00 GMT 2019
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=91293
--- Comment #4 from Richard Biener <rguenth at gcc dot gnu.org> ---
Equivalent testcase that doesn't run into the operator swapping and thus works:
long long a;
unsigned b, c;
int d = 62;
void e(long long *f, int p2) { *f = p2; }
int xx = 5, yy = 4;
int main()
{
for (int g = 2; g <= d; g++)
{
c += xx - g;
b += yy + g;
}
e(&a, b);
if (a != 2196)
__builtin_abort ();
return 0;
}
swapping operands confuses reduction code-generation. It would probably
be "easiest" to not swap operands in this case. This results in no longer
vectorizing this in an optimal way but is probably the way to go for release
branches.
More information about the Gcc-bugs
mailing list