[help] the process from c source file to generic structure

Andi Hellmund mail@andihellmund.com
Sun May 30 23:09:00 GMT 2010


Hey,

> This task confused me a lot, I've work on it for three days

A compiler is a very complicated and complex piece of software. So, 
don't expect too much after just three days of work. :-)

> As for as I know  the purpose of GENERIC is simply to provide a way of
> representing an entire function in trees.

Right, GENERIC is a tree-based, language-independent 
intermediate-representation used e.g. by the C front-end to represent 
functions and variable declarations/definitions.


> so in my opinion, adding my codes(example printf("the function
> begins")) as a number of tree nodes into the original source tree
> could achieve my task

Yes, that would work! But there might be much easier approaches than 
modifying the C parser. As Ian already suggested, the 
-finstrument-functions option exactly does what you want to achieve. 
However, the -finstrument-functions logic doesn't work on the GENERIC 
trees, but on GIMPLE tuples (GIMPLE is another, simplified intermediate 
representation used by GCC). For a reference, please check the source 
file - based on GCC 4.5.0 sources - gcc-4.5.0/gcc/gimplify.c:7631-7657.


> But I do not know how, how GCC achieve the relationship between the
> source code and generic tree?

It would take too long to explain all the details of parsing/scanning, 
but this "relationship" is established by the C front-end parser in 
source file c-parser.c.

I hope that helps,
Andi



More information about the Gcc-help mailing list