code instrumentation in the tree structure

Björn Skoglund skoglund@lysator.liu.se
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?

/Björn

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
further.

Ian Lance Taylor wrote:
> Björn Skoglund <skoglund@lysator.liu.se> 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 (http://www.ecsl.cs.sunysb.edu/gem/) 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