code instrumentation in the tree structure

Björn Skoglund
Thu Sep 7 11:19:00 GMT 2006

I see. I'm not sure but get the feeling i'm working in GENERIC-form. I
also found this in the internals documentation:

>Early on, there was a great deal of debate about how to think 
>about statements in a tree IL. In GENERIC, a statement is
>defined as any expression whose value, if any, is ignored. 
>A statement will always have |TREE_SIDE_EFFECTS| set (or it
>will be discarded), but a non-statement expression may also 
>have side effects. A |CALL_EXPR|, for instance.

I suppose this is what I am interested in, does anyone know when this
discussion occurred and if I can read it?


p.s. I tried setting TREE_SIDE_EFFECTS(t_new_stmt) = 1; and
TREE_TYPE(t_new_stmt) = void_type_node; but it didn't really get me much

Ian Lance Taylor wrote:
> Björn Skoglund <> writes:
>> I don't know if this is a development-list issue but I thought I'd
>> start here. I'm writing a code instrumentation tool using the GEM
>> plugin-system ( as a part of my
>> thesis project. I got it working in gcc-3.4 with a little help from
>> the GEM maintainer but I have realized I need to move to gcc-4 to get
>> access to the control-flow manipulation tools. Now my problem is that
>> my code which inserted function call statements does not work under
>> the gcc-4
>> environment. the EXPR_STMT-symbol is gone for example. which makes the line
>>  >t_new_stmt = build_nt(EXPR_STMT, t_call);
>> cause compilation errors. Now, has the notion of statements been
>> removed in gcc-4, and in that case what has replaced it? I am quite
>> confused at the moment so if something doesn't make sense I'd be very
>> happy with any kind of explanation that makes me understand again. The
>> following piece of code is what I'm working with at the moment. It
>> compiles but doesn't really cause anything to happen when run.
> gcc4 internals are very different from gcc3 internals.  That's why we
> bumped the version number.  In gcc4, everything is translated into
> GIMPLE, a tree based language, and works from there.
> There is no need for EXPR_STMT in GIMPLE, so it was moved to the C++
> frontend which continues to use it when handling templates.
> Ian

More information about the Gcc-help mailing list