This is the mail archive of the gcc@gcc.gnu.org mailing list for the GCC project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: Struggle with FOR_EACH_EDGE


Hello,

> >To see what kind of code GCC generates for FOR_EACH_EDGE, I wrote a
> >simple dummy function.
> 
> Kazu, I hope I have time to look in detail at your investigation, however
> one thing that might be causing a problem is that FOR_EACH_EDGE is an 
> iterator
> that works for a non-constant VEC.  This means there's an extra level of
> indirection that the optimizer cannot remove, unless it completely inlines
> the body of the loop (there might be some cases it can do it without 
> inlining,
> but I suspect not).  I wonder if it is worthwhile implementing FOR_EACH_EDGE
> and FOR_EACH_EDGE_VOLATILE (I want the default, shorter name, to be the
> constant iterator, so that you have to chose to use the non-constant one).
> 
> Even with a constant iterator, it might be necessary to help the optimizer
> by copying the vector length to somewhere local that the optimizer can see
> cannot be changed by the body of the loop.  Hmm, I guess that does mean you
> need a proper iterator object, rather than the integer index that 
> VEC_iterate
> employs.

you can always start the index from number of edges - 1 and iterate to zero.
But a proper iterator might be useful anyway.

Zdenek


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]