Hello,
That looks interesting thanks for pointing that out.

On Mon, Dec 3, 2012 at 5:11 PM, David Malcolm <dmalc...@redhat.com> wrote:
> On Mon, 2012-12-03 at 12:19 +0100, Richard Biener wrote:
>> On Mon, Dec 3, 2012 at 11:05 AM, Alexey Kravets <mr.kayr...@gmail.com> wrote:
>> > Hello,
>> > I am looking for a way to implement source annotation (or something
>> > similar) for a for loops. Basically, I need some mechanism to mark
>> > certain for loops in the source code for the GIMPLE optimization
>> > passes (for C/C++ only currently).
>> > For example something like this:
>> >
>> > int i;
>> > __attribute__((marked)) // Not compilable by GCC.
>> > for (i =0; i < 100; i++) {
>> >    foo (i);
>> > }
>> >
>> > or
>> >
>> > int i;
>> >
>> > #pragma marked // Can be compiled, but require additional GIMPLE tree 
>> > nodes.
>> > for (i =0; i < 100; i++) {
>> >    foo (i);
>> > }
>> >
>> >
>> > As far as I know, for loops are lowered to jumps by C front-end and
>> > natural loops are detected later, so there is no strait way of passing
>> > such information.
>> > OpenMP pragmas provides such functionality, but require additional
>> > GIMPLE nodes to be defined and carried through all optimization
>> > passes,
>> > which I would prefer to avoid (if possible). So, is there any strait
>> > way to implement this?
>>
>> A natural way would be to attach such information to the on-the side
>> loop structure tree (cfgloop.h, struct loop).  Unfortunately it is build
>> quite late, so at the moment you'd have to use a combination of
>> GIMPLE nodes and later transitioning it to loop struct annotations.
>> There is, of course, no reason to not at some point in the future
>> let frontends populate the initial loop tree and keep that up-to-date.
>
> I don't know if this gives you what you need, but an approach that
> occurred to me is to mark the iterator variable with a custom attribute:
>
> int i __attribute__((iterator_for_one_of_the_interesting_loops));
> for (i =0; i < 100; i++) {
>    foo (i);
> }
>
> Perhaps you could use that to detect the loops of interest: the
> initialization, the comparison, and the increment?
>
> Hope this is helpful
> Dave
>

Reply via email to