190075Sobrien\input texinfo  @c -*-texinfo-*-
290075Sobrien@c %**start of header
390075Sobrien@setfilename gccint.info
490075Sobrien@c INTERNALS is used by md.texi to determine whether to include the
590075Sobrien@c whole of that file, in the internals manual, or only the part
690075Sobrien@c dealing with constraints, in the user manual.
790075Sobrien@set INTERNALS
890075Sobrien
990075Sobrien@c See miscellaneous notes in gcc.texi on checks/things to do.
1090075Sobrien
1190075Sobrien@include gcc-common.texi
1290075Sobrien
1390075Sobrien@settitle GNU Compiler Collection (GCC) Internals
1490075Sobrien
1590075Sobrien@c Create a separate index for command line options.
1690075Sobrien@defcodeindex op
1790075Sobrien@c Merge the standard indexes into a single one.
1890075Sobrien@syncodeindex fn cp
1990075Sobrien@syncodeindex vr cp
2090075Sobrien@syncodeindex ky cp
2190075Sobrien@syncodeindex pg cp
2290075Sobrien@syncodeindex tp cp
2390075Sobrien
24169689Skan@paragraphindent 1
25169689Skan
2690075Sobrien@c %**end of header
2790075Sobrien
28117395Skan@copying
2990075SobrienCopyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
30169689Skan1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc.
31117395Skan
3290075SobrienPermission is granted to copy, distribute and/or modify this document
33117395Skanunder the terms of the GNU Free Documentation License, Version 1.2 or
3490075Sobrienany later version published by the Free Software Foundation; with the
3590075SobrienInvariant Sections being ``GNU General Public License'' and ``Funding
3690075SobrienFree Software'', the Front-Cover texts being (a) (see below), and with
3790075Sobrienthe Back-Cover Texts being (b) (see below).  A copy of the license is
3890075Sobrienincluded in the section entitled ``GNU Free Documentation License''.
3990075Sobrien
4090075Sobrien(a) The FSF's Front-Cover Text is:
4190075Sobrien
4290075Sobrien     A GNU Manual
4390075Sobrien
4490075Sobrien(b) The FSF's Back-Cover Text is:
4590075Sobrien
4690075Sobrien     You have freedom to copy and modify this GNU Manual, like GNU
4790075Sobrien     software.  Copies published by the Free Software Foundation raise
4890075Sobrien     funds for GNU development.
49117395Skan@end copying
50117395Skan@ifnottex
51169689Skan@dircategory Software development
52117395Skan@direntry
53117395Skan* gccint: (gccint).            Internals of the GNU Compiler Collection.
54117395Skan@end direntry
55117395SkanThis file documents the internals of the GNU compilers.
56117395Skan@sp 1
57117395Skan@insertcopying
58169689Skan@sp 1
5990075Sobrien@end ifnottex
6090075Sobrien
6190075Sobrien@setchapternewpage odd
6290075Sobrien@titlepage
63169689Skan@title GNU Compiler Collection Internals
64169689Skan@versionsubtitle
65169689Skan@author Richard M. Stallman and the @sc{GCC} Developer Community
6690075Sobrien@page
6790075Sobrien@vskip 0pt plus 1filll
68117395Skan@insertcopying
6990075Sobrien@end titlepage
7090075Sobrien@summarycontents
7190075Sobrien@contents
7290075Sobrien@page
7390075Sobrien
7490075Sobrien@node Top, Contributing,, (DIR)
7590075Sobrien@top Introduction
7690075Sobrien@cindex introduction
7790075Sobrien
7890075SobrienThis manual documents the internals of the GNU compilers, including
7990075Sobrienhow to port them to new targets and some information about how to
8090075Sobrienwrite front ends for new languages.  It corresponds to GCC version
8190075Sobrien@value{version-GCC}.  The use of the GNU compilers is documented in a
8290075Sobrienseparate manual.  @xref{Top,, Introduction, gcc, Using the GNU
8390075SobrienCompiler Collection (GCC)}.
8490075Sobrien
8590075SobrienThis manual is mainly a reference manual rather than a tutorial.  It
8690075Sobriendiscusses how to contribute to GCC (@pxref{Contributing}), the
8790075Sobriencharacteristics of the machines supported by GCC as hosts and targets
8890075Sobrien(@pxref{Portability}), how GCC relates to the ABIs on such systems
8990075Sobrien(@pxref{Interface}), and the characteristics of the languages for
9090075Sobrienwhich GCC front ends are written (@pxref{Languages}).  It then
9190075Sobriendescribes the GCC source tree structure and build system, some of the
9290075Sobrieninterfaces to GCC front ends, and how support for a target system is
9390075Sobrienimplemented in GCC@.
9490075Sobrien
9590075SobrienAdditional tutorial information is linked to from
9690075Sobrien@uref{http://gcc.gnu.org/readings.html}.
9790075Sobrien
9890075Sobrien@menu
9990075Sobrien* Contributing::    How to contribute to testing and developing GCC.
10090075Sobrien* Portability::     Goals of GCC's portability features.
10190075Sobrien* Interface::       Function-call interface of GCC output.
102132718Skan* Libgcc::          Low-level runtime library used by GCC.
10390075Sobrien* Languages::       Languages for which GCC front ends are written.
10490075Sobrien* Source Tree::     GCC source tree structure and build system.
105169689Skan* Options::         Option specification files.
10690075Sobrien* Passes::          Order of passes, what they do, and what each file is for.
10790075Sobrien* Trees::           The source representation used by the C and C++ front ends.
10890075Sobrien* RTL::             The intermediate representation that most passes work on.
109169689Skan* Control Flow::    Maintaining and manipulating the control flow graph.
110169689Skan* Tree SSA::        Analysis and optimization of the tree representation.
111169689Skan* Loop Analysis and Representation:: Analysis and representation of loops
11290075Sobrien* Machine Desc::    How to write machine description instruction patterns.
11390075Sobrien* Target Macros::   How to write the machine description C macros and functions.
11490075Sobrien* Host Config::     Writing the @file{xm-@var{machine}.h} file.
11590075Sobrien* Fragments::       Writing the @file{t-@var{target}} and @file{x-@var{host}} files.
11690075Sobrien* Collect2::        How @code{collect2} works; how it finds @code{ld}.
11790075Sobrien* Header Dirs::     Understanding the standard header file directories.
118117395Skan* Type Information:: GCC's memory management; generating type information.
11990075Sobrien
12090075Sobrien* Funding::         How to help assure funding for free software.
12190075Sobrien* GNU Project::     The GNU Project and GNU/Linux.
12290075Sobrien
12390075Sobrien* Copying::         GNU General Public License says
12490075Sobrien                     how you can copy and share GCC.
12590075Sobrien* GNU Free Documentation License:: How you can copy and share this manual.
12690075Sobrien* Contributors::    People who have contributed to GCC.
12790075Sobrien
12890075Sobrien* Option Index::    Index to command line options.
129169689Skan* Concept Index::   Index of concepts and symbol names.
13090075Sobrien@end menu
13190075Sobrien
13290075Sobrien@include contribute.texi
13390075Sobrien@include portability.texi
13490075Sobrien@include interface.texi
135132718Skan@include libgcc.texi
13690075Sobrien@include languages.texi
13790075Sobrien@include sourcebuild.texi
138169689Skan@include options.texi
13990075Sobrien@include passes.texi
14090075Sobrien@include c-tree.texi
141169689Skan@include tree-ssa.texi
142169689Skan@include loop.texi
14390075Sobrien@include rtl.texi
144169689Skan@include cfg.texi
14590075Sobrien@include md.texi
14690075Sobrien@include tm.texi
14790075Sobrien@include hostconfig.texi
14890075Sobrien@include fragments.texi
14990075Sobrien@include collect2.texi
15090075Sobrien@include headerdirs.texi
151117395Skan@include gty.texi
15290075Sobrien
15390075Sobrien@include funding.texi
15490075Sobrien@include gnu.texi
15590075Sobrien@include gpl.texi
15690075Sobrien
15790075Sobrien@c ---------------------------------------------------------------------
15890075Sobrien@c GFDL
15990075Sobrien@c ---------------------------------------------------------------------
16090075Sobrien
16190075Sobrien@include fdl.texi
16290075Sobrien
16390075Sobrien@include contrib.texi
16490075Sobrien
16590075Sobrien@c ---------------------------------------------------------------------
16690075Sobrien@c Indexes
16790075Sobrien@c ---------------------------------------------------------------------
16890075Sobrien
16990075Sobrien@node Option Index
17090075Sobrien@unnumbered Option Index
17190075Sobrien
17290075SobrienGCC's command line options are indexed here without any initial @samp{-}
17390075Sobrienor @samp{--}.  Where an option has both positive and negative forms
17490075Sobrien(such as @option{-f@var{option}} and @option{-fno-@var{option}}),
17590075Sobrienrelevant entries in the manual are indexed under the most appropriate
17690075Sobrienform; it may sometimes be useful to look up both forms.
17790075Sobrien
17890075Sobrien@printindex op
17990075Sobrien
180169689Skan@node Concept Index
181169689Skan@unnumbered Concept Index
18290075Sobrien
18390075Sobrien@printindex cp
18490075Sobrien
18590075Sobrien@c ---------------------------------------------------------------------
18690075Sobrien@c Epilogue
18790075Sobrien@c ---------------------------------------------------------------------
18890075Sobrien
18990075Sobrien@bye
190