C tree question

Jim Wilson wilson@specifixinc.com
Wed Dec 3 04:15:00 GMT 2003


Mathieu Lacage wrote:
> I have been trying lately to understand what kind of data is stored in
> the tree output by the C frontend. Thanks to -fdump-translation-unit, I

This option is a debugging aid.  It isn't meant to be complete.  Its 
output may change from time to time.  In current sources, it only 
appears to be dumping declarations, so it isn't dumping function bodies 
for instance.

> The exact question I'd like to answer is:
> 1) if (foo) bar;
> 2) if (foo) {bar;}
> where bar; is a non-compound statement generates the exact same tree out
> of the language frontend.

It would be unwise to make any assumptions here.  This may depend on the 
contents of bar, it may depend on the language front end being used, it 
may depend on the target, it may depend on which gcc version you have, etc.

> 	1) is the code fragment above relevant to my if (foo) {bar} sample ? I
> suspect it might be related only to the enclosing {s of function bodies.

Yes.

> 	2) If it is related to my sample, does the COMPOUND_STMT node still
> exist at the end of the frontend run ?

No.  It might be optimized away in the front end or the middle end, 
depending on the circumstances.

Note that this whole area will change when the tree-ssa branch gets 
accepted into the mainline, which could happen sometime after the 
gcc-3.4 release branch is made.  This will change how the front ends 
work because it adds a new higher level IL.
-- 
Jim Wilson, GNU Tools Support, http://www.SpecifixInc.com



More information about the Gcc mailing list