This is the mail archive of the gcc-help@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: code instrumentation in the tree structure


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




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