https://gcc.gnu.org/bugzilla/show_bug.cgi?id=109088
--- Comment #18 from Richard Biener <rguenth at gcc dot gnu.org> ---
Ah, so this is for
int foo (int *a, int x)
{
int sum = 0;
for (int i = 0; i < 1024; ++i)
if (a[i] < 10)
sum = sum + a[i] + x;
return sum;
}
transforming it to
int foo (int *a, int x)
{
int sum = 0;
for (int i = 0; i < 1024; ++i)
{
tem = a[i] + x;
if (a[i] < 10)
sum = sum + tem;
}
return sum;
}
note this is re-associating and thus not always valid. It also executes
stmts unconditionally (also not always valid, for FP spurious exceptions
might be raised).