xref: /dflybsd-src/contrib/gcc-4.7/gcc/doc/gccint.texi (revision 04febcfb30580676d3e95f58a16c5137ee478b32)
1*e4b17023SJohn Marino\input texinfo  @c -*-texinfo-*-
2*e4b17023SJohn Marino@c %**start of header
3*e4b17023SJohn Marino@setfilename gccint.info
4*e4b17023SJohn Marino@c INTERNALS is used by md.texi to determine whether to include the
5*e4b17023SJohn Marino@c whole of that file, in the internals manual, or only the part
6*e4b17023SJohn Marino@c dealing with constraints, in the user manual.
7*e4b17023SJohn Marino@set INTERNALS
8*e4b17023SJohn Marino
9*e4b17023SJohn Marino@c See miscellaneous notes in gcc.texi on checks/things to do.
10*e4b17023SJohn Marino
11*e4b17023SJohn Marino@include gcc-common.texi
12*e4b17023SJohn Marino
13*e4b17023SJohn Marino@settitle GNU Compiler Collection (GCC) Internals
14*e4b17023SJohn Marino
15*e4b17023SJohn Marino@c Create a separate index for command line options.
16*e4b17023SJohn Marino@defcodeindex op
17*e4b17023SJohn Marino@c Merge the standard indexes into a single one.
18*e4b17023SJohn Marino@syncodeindex fn cp
19*e4b17023SJohn Marino@syncodeindex vr cp
20*e4b17023SJohn Marino@syncodeindex ky cp
21*e4b17023SJohn Marino@syncodeindex pg cp
22*e4b17023SJohn Marino@syncodeindex tp cp
23*e4b17023SJohn Marino
24*e4b17023SJohn Marino@paragraphindent 1
25*e4b17023SJohn Marino
26*e4b17023SJohn Marino@c %**end of header
27*e4b17023SJohn Marino
28*e4b17023SJohn Marino@copying
29*e4b17023SJohn MarinoCopyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998,
30*e4b17023SJohn Marino1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
31*e4b17023SJohn Marino2008, 2010 Free Software Foundation, Inc.
32*e4b17023SJohn Marino
33*e4b17023SJohn MarinoPermission is granted to copy, distribute and/or modify this document
34*e4b17023SJohn Marinounder the terms of the GNU Free Documentation License, Version 1.3 or
35*e4b17023SJohn Marinoany later version published by the Free Software Foundation; with the
36*e4b17023SJohn MarinoInvariant Sections being ``Funding Free Software'', the Front-Cover
37*e4b17023SJohn MarinoTexts being (a) (see below), and with the Back-Cover Texts being (b)
38*e4b17023SJohn Marino(see below).  A copy of the license is included in the section entitled
39*e4b17023SJohn Marino``GNU Free Documentation License''.
40*e4b17023SJohn Marino
41*e4b17023SJohn Marino(a) The FSF's Front-Cover Text is:
42*e4b17023SJohn Marino
43*e4b17023SJohn Marino     A GNU Manual
44*e4b17023SJohn Marino
45*e4b17023SJohn Marino(b) The FSF's Back-Cover Text is:
46*e4b17023SJohn Marino
47*e4b17023SJohn Marino     You have freedom to copy and modify this GNU Manual, like GNU
48*e4b17023SJohn Marino     software.  Copies published by the Free Software Foundation raise
49*e4b17023SJohn Marino     funds for GNU development.
50*e4b17023SJohn Marino@end copying
51*e4b17023SJohn Marino@ifnottex
52*e4b17023SJohn Marino@dircategory Software development
53*e4b17023SJohn Marino@direntry
54*e4b17023SJohn Marino* gccint: (gccint).            Internals of the GNU Compiler Collection.
55*e4b17023SJohn Marino@end direntry
56*e4b17023SJohn MarinoThis file documents the internals of the GNU compilers.
57*e4b17023SJohn Marino@sp 1
58*e4b17023SJohn Marino@insertcopying
59*e4b17023SJohn Marino@sp 1
60*e4b17023SJohn Marino@end ifnottex
61*e4b17023SJohn Marino
62*e4b17023SJohn Marino@setchapternewpage odd
63*e4b17023SJohn Marino@titlepage
64*e4b17023SJohn Marino@title GNU Compiler Collection Internals
65*e4b17023SJohn Marino@versionsubtitle
66*e4b17023SJohn Marino@author Richard M. Stallman and the @sc{GCC} Developer Community
67*e4b17023SJohn Marino@page
68*e4b17023SJohn Marino@vskip 0pt plus 1filll
69*e4b17023SJohn Marino@insertcopying
70*e4b17023SJohn Marino@end titlepage
71*e4b17023SJohn Marino@summarycontents
72*e4b17023SJohn Marino@contents
73*e4b17023SJohn Marino@page
74*e4b17023SJohn Marino
75*e4b17023SJohn Marino@node Top, Contributing,, (DIR)
76*e4b17023SJohn Marino@top Introduction
77*e4b17023SJohn Marino@cindex introduction
78*e4b17023SJohn Marino
79*e4b17023SJohn MarinoThis manual documents the internals of the GNU compilers, including
80*e4b17023SJohn Marinohow to port them to new targets and some information about how to
81*e4b17023SJohn Marinowrite front ends for new languages.  It corresponds to the compilers
82*e4b17023SJohn Marino@ifset VERSION_PACKAGE
83*e4b17023SJohn Marino@value{VERSION_PACKAGE}
84*e4b17023SJohn Marino@end ifset
85*e4b17023SJohn Marinoversion @value{version-GCC}.  The use of the GNU compilers is documented in a
86*e4b17023SJohn Marinoseparate manual.  @xref{Top,, Introduction, gcc, Using the GNU
87*e4b17023SJohn MarinoCompiler Collection (GCC)}.
88*e4b17023SJohn Marino
89*e4b17023SJohn MarinoThis manual is mainly a reference manual rather than a tutorial.  It
90*e4b17023SJohn Marinodiscusses how to contribute to GCC (@pxref{Contributing}), the
91*e4b17023SJohn Marinocharacteristics of the machines supported by GCC as hosts and targets
92*e4b17023SJohn Marino(@pxref{Portability}), how GCC relates to the ABIs on such systems
93*e4b17023SJohn Marino(@pxref{Interface}), and the characteristics of the languages for
94*e4b17023SJohn Marinowhich GCC front ends are written (@pxref{Languages}).  It then
95*e4b17023SJohn Marinodescribes the GCC source tree structure and build system, some of the
96*e4b17023SJohn Marinointerfaces to GCC front ends, and how support for a target system is
97*e4b17023SJohn Marinoimplemented in GCC@.
98*e4b17023SJohn Marino
99*e4b17023SJohn MarinoAdditional tutorial information is linked to from
100*e4b17023SJohn Marino@uref{http://gcc.gnu.org/readings.html}.
101*e4b17023SJohn Marino
102*e4b17023SJohn Marino@menu
103*e4b17023SJohn Marino* Contributing::    How to contribute to testing and developing GCC.
104*e4b17023SJohn Marino* Portability::     Goals of GCC's portability features.
105*e4b17023SJohn Marino* Interface::       Function-call interface of GCC output.
106*e4b17023SJohn Marino* Libgcc::          Low-level runtime library used by GCC.
107*e4b17023SJohn Marino* Languages::       Languages for which GCC front ends are written.
108*e4b17023SJohn Marino* Source Tree::     GCC source tree structure and build system.
109*e4b17023SJohn Marino* Testsuites::      GCC testsuites.
110*e4b17023SJohn Marino* Options::         Option specification files.
111*e4b17023SJohn Marino* Passes::          Order of passes, what they do, and what each file is for.
112*e4b17023SJohn Marino* GENERIC::         Language-independent representation generated by Front Ends
113*e4b17023SJohn Marino* GIMPLE::          Tuple representation used by Tree SSA optimizers
114*e4b17023SJohn Marino* Tree SSA::        Analysis and optimization of GIMPLE
115*e4b17023SJohn Marino* RTL::             Machine-dependent low-level intermediate representation.
116*e4b17023SJohn Marino* Control Flow::    Maintaining and manipulating the control flow graph.
117*e4b17023SJohn Marino* Loop Analysis and Representation:: Analysis and representation of loops
118*e4b17023SJohn Marino* Machine Desc::    How to write machine description instruction patterns.
119*e4b17023SJohn Marino* Target Macros::   How to write the machine description C macros and functions.
120*e4b17023SJohn Marino* Host Config::     Writing the @file{xm-@var{machine}.h} file.
121*e4b17023SJohn Marino* Fragments::       Writing the @file{t-@var{target}} and @file{x-@var{host}} files.
122*e4b17023SJohn Marino* Collect2::        How @code{collect2} works; how it finds @code{ld}.
123*e4b17023SJohn Marino* Header Dirs::     Understanding the standard header file directories.
124*e4b17023SJohn Marino* Type Information:: GCC's memory management; generating type information.
125*e4b17023SJohn Marino* Plugins::         Extending the compiler with plugins.
126*e4b17023SJohn Marino* LTO::             Using Link-Time Optimization.
127*e4b17023SJohn Marino
128*e4b17023SJohn Marino* Funding::         How to help assure funding for free software.
129*e4b17023SJohn Marino* GNU Project::     The GNU Project and GNU/Linux.
130*e4b17023SJohn Marino
131*e4b17023SJohn Marino* Copying::         GNU General Public License says
132*e4b17023SJohn Marino                    how you can copy and share GCC.
133*e4b17023SJohn Marino* GNU Free Documentation License:: How you can copy and share this manual.
134*e4b17023SJohn Marino* Contributors::    People who have contributed to GCC.
135*e4b17023SJohn Marino
136*e4b17023SJohn Marino* Option Index::    Index to command line options.
137*e4b17023SJohn Marino* Concept Index::   Index of concepts and symbol names.
138*e4b17023SJohn Marino@end menu
139*e4b17023SJohn Marino
140*e4b17023SJohn Marino@include contribute.texi
141*e4b17023SJohn Marino@include portability.texi
142*e4b17023SJohn Marino@include interface.texi
143*e4b17023SJohn Marino@include libgcc.texi
144*e4b17023SJohn Marino@include languages.texi
145*e4b17023SJohn Marino@include sourcebuild.texi
146*e4b17023SJohn Marino@include options.texi
147*e4b17023SJohn Marino@include passes.texi
148*e4b17023SJohn Marino@include rtl.texi
149*e4b17023SJohn Marino@include generic.texi
150*e4b17023SJohn Marino@include gimple.texi
151*e4b17023SJohn Marino@include tree-ssa.texi
152*e4b17023SJohn Marino@include loop.texi
153*e4b17023SJohn Marino@include cfg.texi
154*e4b17023SJohn Marino@include md.texi
155*e4b17023SJohn Marino@include tm.texi
156*e4b17023SJohn Marino@include hostconfig.texi
157*e4b17023SJohn Marino@include fragments.texi
158*e4b17023SJohn Marino@include collect2.texi
159*e4b17023SJohn Marino@include headerdirs.texi
160*e4b17023SJohn Marino@include gty.texi
161*e4b17023SJohn Marino@include plugins.texi
162*e4b17023SJohn Marino@include lto.texi
163*e4b17023SJohn Marino
164*e4b17023SJohn Marino@include funding.texi
165*e4b17023SJohn Marino@include gnu.texi
166*e4b17023SJohn Marino@include gpl_v3.texi
167*e4b17023SJohn Marino
168*e4b17023SJohn Marino@c ---------------------------------------------------------------------
169*e4b17023SJohn Marino@c GFDL
170*e4b17023SJohn Marino@c ---------------------------------------------------------------------
171*e4b17023SJohn Marino
172*e4b17023SJohn Marino@include fdl.texi
173*e4b17023SJohn Marino
174*e4b17023SJohn Marino@include contrib.texi
175*e4b17023SJohn Marino
176*e4b17023SJohn Marino@c ---------------------------------------------------------------------
177*e4b17023SJohn Marino@c Indexes
178*e4b17023SJohn Marino@c ---------------------------------------------------------------------
179*e4b17023SJohn Marino
180*e4b17023SJohn Marino@node Option Index
181*e4b17023SJohn Marino@unnumbered Option Index
182*e4b17023SJohn Marino
183*e4b17023SJohn MarinoGCC's command line options are indexed here without any initial @samp{-}
184*e4b17023SJohn Marinoor @samp{--}.  Where an option has both positive and negative forms
185*e4b17023SJohn Marino(such as @option{-f@var{option}} and @option{-fno-@var{option}}),
186*e4b17023SJohn Marinorelevant entries in the manual are indexed under the most appropriate
187*e4b17023SJohn Marinoform; it may sometimes be useful to look up both forms.
188*e4b17023SJohn Marino
189*e4b17023SJohn Marino@printindex op
190*e4b17023SJohn Marino
191*e4b17023SJohn Marino@node Concept Index
192*e4b17023SJohn Marino@unnumbered Concept Index
193*e4b17023SJohn Marino
194*e4b17023SJohn Marino@printindex cp
195*e4b17023SJohn Marino
196*e4b17023SJohn Marino@c ---------------------------------------------------------------------
197*e4b17023SJohn Marino@c Epilogue
198*e4b17023SJohn Marino@c ---------------------------------------------------------------------
199*e4b17023SJohn Marino
200*e4b17023SJohn Marino@bye
201