# Remake the info files.
doc: $(BUILD_INFO) gccbug
-info: $(srcdir)/cpp.info $(srcdir)/gcc.info lang.info $(srcdir)/c-tree.info $(srcdir)/cppinternals.info
+info: $(srcdir)/cpp.info $(srcdir)/gcc.info lang.info $(srcdir)/cppinternals.info
$(srcdir)/cpp.info: $(srcdir)/cpp.texi
cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -o cpp.info cpp.texi
$(srcdir)/gcc.info: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \
- $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \
- $(srcdir)/tm.texi $(srcdir)/gcov.texi $(srcdir)/contrib.texi \
- $(srcdir)/objc.texi
+ $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/c-tree.texi \
+ $(srcdir)/rtl.texi $(srcdir)/tm.texi $(srcdir)/gcov.texi \
+ $(srcdir)/contrib.texi $(srcdir)/objc.texi $(srcdir)/fdl.texi
cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -o gcc.info gcc.texi
-$(srcdir)/c-tree.info: $(srcdir)/c-tree.texi
- cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -o c-tree.info \
- c-tree.texi
-
$(srcdir)/cppinternals.info: $(srcdir)/cppinternals.texi
cd $(srcdir) && $(MAKEINFO) $(MAKEINFOFLAGS) -o cppinternals.info \
cppinternals.texi
-dvi: gcc.dvi cpp.dvi lang.dvi
+dvi: gcc.dvi cpp.dvi lang.dvi cppinternals.dvi
# This works with GNU Make's default rule.
+cpp.dvi: $(srcdir)/cpp.texi
+ $(TEXI2DVI) -I $(srcdir) $(srcdir)/cpp.texi
+
gcc.dvi: $(srcdir)/gcc.texi $(srcdir)/extend.texi $(srcdir)/install.texi \
- $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/rtl.texi \
- $(srcdir)/tm.texi $(srcdir)/gcov.texi $(srcdir)/contrib.texi \
- $(srcdir)/objc.texi
- TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex gcc.texi
- texindex gcc.??
- TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex gcc.texi
+ $(srcdir)/invoke.texi $(srcdir)/md.texi $(srcdir)/c-tree.texi \
+ $(srcdir)/rtl.texi $(srcdir)/tm.texi $(srcdir)/gcov.texi \
+ $(srcdir)/contrib.texi $(srcdir)/objc.texi $(srcdir)/fdl.texi
+ $(TEXI2DVI) -I $(srcdir) $(srcdir)/gcc.texi
-cpp.dvi: $(srcdir)/cpp.texi
- TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex cpp.texi
- texindex cpp.??
- TEXINPUTS=${texidir}:$(srcdir):$$TEXINPUTS tex cpp.texi
+cppinternals.dvi: $(srcdir)/cppinternals.texi
+ $(TEXI2DVI) -I $(srcdir) $(srcdir)/cppinternals.texi
generated-manpages: $(srcdir)/gcov.1 $(srcdir)/cpp.1 $(srcdir)/gcc.1
-rm -f c-parse.y c-parse.c c-parse.output TAGS
-rm -f cpp.??s cpp.*aux
-rm -f gcc.??s gcc.*aux
- -rm -f $(srcdir)/cpp.info* $(srcdir)/gcc.info* $(srcdir)/c-tree.info*
+ -rm -f $(srcdir)/cpp.info* $(srcdir)/gcc.info*
-rm -f $(srcdir)/cppinternals.info*
-rm -f $(srcdir)/gcov.1 $(srcdir)/cpp.1 $(srcdir)/gcc.1
#\f
# to do the install.
install-info: doc installdirs lang.install-info
-rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
- -rm -f $(infodir)/c-tree.info* $(infodir)/cppinternals.info*
+ -rm -f $(infodir)/cppinternals.info*
if [ -f $(srcdir)/gcc.info ]; then \
for f in $(srcdir)/cpp.info* $(srcdir)/gcc.info* \
- $(srcdir)/c-tree.info* $(srcdir)/cppinternals.info*; do \
+ $(srcdir)/cppinternals.info*; do \
realfile=`echo $$f | sed -e 's|.*/\([^/]*\)$$|\1|'`; \
$(INSTALL_DATA) $$f $(infodir)/$$realfile; \
done; \
else true; fi
-if $(SHELL) -c 'install-info --version' >/dev/null 2>&1; then \
if [ -f $(infodir)/dir ] ; then \
- for f in cpp.info gcc.info c-tree.info cppinternals.info; do \
+ for f in cpp.info gcc.info cppinternals.info; do \
if [ -f $(infodir)/$$f ]; then \
install-info --dir-file=$(infodir)/dir $(infodir)/$$f; \
else true; fi \
else true; fi; \
else true; fi;
-chmod a-x $(infodir)/cpp.info* $(infodir)/gcc.info*
- -chmod a-x $(infodir)/c-tree.info* $(infodir)/cppinternals.info*
+ -chmod a-x $(infodir)/cppinternals.info*
# Install the man pages.
install-man: installdirs $(GENERATED_MANPAGES) lang.install-man
-rm -rf $(man1dir)/protoize$(manext)
-rm -rf $(man1dir)/unprotoize$(manext)
-rm -f $(infodir)/cpp.info* $(infodir)/gcc.info*
- -rm -f $(infodir)/c-tree.info* $(infodir)/cppinternals.info*
+ -rm -f $(infodir)/cppinternals.info*
#\f
# These targets are for the dejagnu testsuites. The file site.exp
# contains global variables that all the testsuites will use.
-\input texinfo
+@c Copyright (c) 1999, 2000, 2001 Free Software Foundation, Inc.
+@c Free Software Foundation, Inc.
+@c This is part of the GCC manual.
+@c For copying conditions, see the file gcc.texi.
@c ---------------------------------------------------------------------
-@c Prologue
-@c ---------------------------------------------------------------------
-
-@setfilename c-tree.info
-@settitle C/C++ Internal Representation
-@setchapternewpage on
-
-@ifinfo
-@dircategory Programming
-@direntry
-* c-tree: (c-tree). C/C++ Internal Representation
-@end direntry
-This manual documents the internal representation used by GCC to represent
-C and C++ source programs.
-
-Copyright (c) 1999, 2000, 2001 Free Software Foundation, Inc.
-@end ifinfo
-
-@c ---------------------------------------------------------------------
-@c Title page
-@c ---------------------------------------------------------------------
-
-@titlepage
-@title C/C++ Internal Representation
-@author CodeSourcery, LLC <info@@codesourcery.com>
-@page
-@vskip 0pt plus 1filll
-Copyright @copyright{} 1999, 2000, 2001 Free Software Foundation, Inc.
-
-Permission is granted to copy, distribute and/or modify this document
-under the terms of the GNU Free Documentation License, Version 1.1 or
-any later version published by the Free Software Foundation; with no
-invariant sections, the Front-Cover texts being (a) (see below), and
-with the Back-Cover Texts being (b) (see below). A copy of the license
-is included in the section entitled ``GNU Free Documentation License''.
-
-(a) The FSF's Front-Cover Text is:
-
- A GNU Manual
-
-(b) The FSF's Back-Cover Text is:
-
- You have freedom to copy and modify this GNU Manual, like GNU
- software. Copies published by the Free Software Foundation raise
- funds for GNU development.
-@end titlepage
-
-@c ---------------------------------------------------------------------
-@c Top
+@c Trees
@c ---------------------------------------------------------------------
-@node Top
-@top C/C++ Internal Representation
+@node Trees
+@chapter Trees: The intermediate representation used by the C and C++ front-ends
+@cindex Trees
+@cindex C/C++ Internal Representation
-This manual documents the internal representation used by GCC and C++ to
+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
documentation generators, interpreters, and any other programs needing
the ability to process C or C++ code.
-This manual explains the internal representation. In particular, this
-manual documents the internal representation for C and C++ source
+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.
+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
but instead might be useful to other people using the GCC front-end, you
should submit your patches for inclusion in GCC.
-This manual documents 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.
-
@menu
* Deficiencies:: Topics net yet covered in this document.
-* Overview:: All about @code{tree}s.
+* Tree overview:: All about @code{tree}s.
* Types:: Fundamental and aggregate types.
* Scopes:: Namespaces and classes.
* Functions:: Overloading, function bodies, and linkage.
* Declarations:: Type declarations and variables.
-* Expressions:: From @code{typeid} to @code{throw}.
-* GNU Free Documentation License:: How you can copy and share this manual.
-* Node Index:: The various types of tree nodes.
-* Function Index:: Functions and macros described in this manual.
-* Concept Index:: Index.
+* Expression trees:: From @code{typeid} to @code{throw}.
@end menu
@c ---------------------------------------------------------------------
@c ---------------------------------------------------------------------
@node Deficiencies
-@chapter Deficiencies
+@section Deficiencies
There are many places in which this document is incomplet and incorrekt.
It is, as of yet, only @emph{preliminary} documentation.
@c Overview
@c ---------------------------------------------------------------------
-@node Overview
-@chapter Overview
+@node Tree overview
+@section Overview
@cindex tree
@findex TREE_CODE
bug.
@menu
-* Trees:: Macros and functions that can be used with all trees.
+* Macros and Functions::Macros and functions that can be used with all trees.
* Identifiers:: The names of things.
* Containers:: Lists and vectors.
@end menu
@c Trees
@c ---------------------------------------------------------------------
-@node Trees
-@section Trees
+@node Macros and Functions
+@subsection Trees
@cindex tree
This section is not here yet.
@c ---------------------------------------------------------------------
@node Identifiers
-@section Identifiers
+@subsection Identifiers
@cindex identifier
@cindex name
@tindex IDENTIFIER_NODE
@c ---------------------------------------------------------------------
@node Containers
-@section Containers
+@subsection Containers
@cindex container
@cindex list
@cindex vector
@c ---------------------------------------------------------------------
@node Types
-@chapter Types
+@section Types
@cindex type
@cindex pointer
@cindex reference
@c ---------------------------------------------------------------------
@node Scopes
-@chapter Scopes
+@section Scopes
@cindex namespace, class, scope
The root of the entire intermediate representation is the variable
@c ---------------------------------------------------------------------
@node Namespaces
-@section Namespaces
+@subsection Namespaces
@cindex namespace
@tindex NAMESPACE_DECL
@c ---------------------------------------------------------------------
@node Classes
-@section Classes
+@subsection Classes
@cindex class
@tindex RECORD_TYPE
@tindex UNION_TYPE
@c ---------------------------------------------------------------------
@node Declarations
-@chapter Declarations
+@section Declarations
@cindex declaration
@cindex variable
@cindex type declaration
@findex DECL_ALIGN
@findex DECL_EXTERNAL
-This chapter covers the various kinds of declarations that appear in the
+This section covers the various kinds of declarations that appear in the
internal representation, except for declarations of functions
(represented by @code{FUNCTION_DECL} nodes), which are described in
@ref{Functions}.
@c ---------------------------------------------------------------------
@node Functions
-@chapter Functions
+@section Functions
@cindex function
@tindex FUNCTION_DECL
@tindex OVERLOAD
@c ---------------------------------------------------------------------
@node Function Basics
-@section Function Basics
+@subsection Function Basics
@cindex constructor
@cindex destructor
@cindex copy constructor
@c ---------------------------------------------------------------------
@node Function Bodies
-@section Function Bodies
+@subsection Function Bodies
@cindex function body
@cindex statements
@tindex ASM_STMT
the outermost block of the function, but it may also be a
@code{TRY_BLOCK}, a @code{RETURN_INIT}, or any other valid statement.
-@subsection Statements
+@subsubsection Statements
There are tree nodes corresponding to all of the source-level statement
constructs. These are enumerated here, together with a list of the
@c Expressions
@c ---------------------------------------------------------------------
-@node Expressions
-@chapter Expressions
+@node Expression trees
+@section Expressions
@cindex expression
@findex TREE_OPERAND
@tindex INTEGER_CST
not return a value.
@end table
-
-@c ---------------------------------------------------------------------
-@c GFDL
-@c ---------------------------------------------------------------------
-
-@include fdl.texi
-
-@c ---------------------------------------------------------------------
-@c Node Index
-@c ---------------------------------------------------------------------
-
-@node Node Index
-@unnumbered Node Index
-
-@printindex tp
-
-@c ---------------------------------------------------------------------
-@c Function Index
-@c ---------------------------------------------------------------------
-
-@node Function Index
-@unnumbered Function Index
-
-@printindex fn
-
-@c ---------------------------------------------------------------------
-@c Concept Index
-@c ---------------------------------------------------------------------
-
-@node Concept Index
-@unnumbered Concept Index
-
-@printindex cp
-
-@c ---------------------------------------------------------------------
-@c Epilogue
-@c ---------------------------------------------------------------------
-
-@summarycontents
-@contents
-@contents
-@bye