This is the mail archive of the
gcc@gcc.gnu.org
mailing list for the GCC project.
Re: New loop unroller broken?
Hello,
> On Jan 22, 2004, at 10:53 AM, Andrew Pinski wrote:
> >On Jan 22, 2004, at 10:47, Ulrich Weigand wrote:
> >
> >>void test(float *data, float d)
> >>{
> >> int i;
> >> for (i = 0; i < 8; i++)
> >> data[i] = d;
> >>}
> >>
> >>because of
> >>'Unable to prove that the loop iterates constant times'
> >>which strikes me as somewhat odd.
> >>
> >>Is this the same on other platforms? Any ideas how to fix
> >>this (or how to debug it)?
> >
> >Yes I see this also on PPC because of the doloop optimizations.
> >I do know that this was fixed on rtlopt branch though but I do not
> >when it is going to be fixed.
>
> Incidentally, my quick analysis was that the problem is caused by
> doing doloop analysis before unrolling, instead of after as the old
> unroller did. Why was this choice made?
because the doloop optimization is a part of the old loop optimizer, so
it must be run before the new loop unrolling pass. I know about this
problem for some time, but I never got to fixing it (mainly because I
consider the current state temporary, as the need for completely new loop
optimizer is obvious).
Zdenek