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