GNU Info

Info Node: (gcc-300.info)Trees

(gcc-300.info)Trees


Next: RTL Prev: Passes Up: Top
Enter node , (file) or (file)node

Trees: The intermediate representation used by the C and C++ front ends
***********************************************************************

   This chapter documents the internal representation used by GCC and
C++ to represent C and C++ source programs.  When presented with a C or
C++ source program, GCC parses the program, performs semantic analysis
(including the generation of error messages), and then produces the
internal representation described here.  This representation contains a
complete representation for the entire translation unit provided as
input to the front end.  This representation is then typically processed
by a code-generator in order to produce machine code, but could also be
used in the creation of source browsers, intelligent editors, automatic
documentation generators, interpreters, and any other programs needing
the ability to process C or C++ code.

   This chapter explains the internal representation.  In particular, it
documents the internal representation for C and C++ source constructs,
and the macros, functions, and variables that can be used to access
these constructs.  The C++ representation which is largely a superset
of the representation used in the C front end.  There is only one
construct used in C that does not appear in the C++ front end and that
is the GNU "nested function" extension.  Many of the macros documented
here do not apply in C because the corresponding language constructs do
not appear in C.

   If you are developing a "back end", be it is a code-generator or some
other tool, that uses this representation, you may occasionally find
that you need to ask questions not easily answered by the functions and
macros available here.  If that situation occurs, it is quite likely
that GCC already supports the functionality you desire, but that the
interface is simply not documented here.  In that case, you should ask
the GCC maintainers (via mail to <gcc@gcc.gnu.org>) about documenting
the functionality you require.  Similarly, if you find yourself writing
functions that do not deal directly with your back end, but instead
might be useful to other people using the GCC front end, you should
submit your patches for inclusion in GCC.

Deficiencies
Topics net yet covered in this document.
Tree overview
All about `tree's.
Types
Fundamental and aggregate types.
Scopes
Namespaces and classes.
Functions
Overloading, function bodies, and linkage.
Declarations
Type declarations and variables.
Attributes
Declaration and type attributes.
Expression trees
From `typeid' to `throw'.

automatically generated by info2www version 1.2.2.9