https://gcc.gnu.org/bugzilla/show_bug.cgi?id=51848
alalaw01 at gcc dot gnu.org changed:
What |Removed |Added
----------------------------------------------------------------------------
CC| |alalaw01 at gcc dot gnu.org
--- Comment #5 from alalaw01 at gcc dot gnu.org ---
(In reply to Richard Biener from comment #3)
> (In reply to comment #2)
> > We don't recognize this as reduction because we look for:
> >
> > a1 = phi < a0, a2 >
> > a3 = ...
> > a2 = operation (a3, a1)
> >
> > and here we have
> >
> > a1 = phi < a0, a2 >
> > a3 = ...
> > a4 = operation (a3, a1)
> > a2 = a4 + 1
>
> It seems reassociation should "fix" this. IIRC we had some special code
> in there that was supposed to handle this.
We do reassociate equivalent functions in C, for example
float x[30];
float bar() {
float s = 0;
for (int i = 0; i < 30; i++)
{
s += x[i];
s += 1;
}
return s;
}
which vectorizes just fine.