]>
Commit | Line | Data |
---|---|---|
b11cc610 JM |
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 | ||
061151d1 MS |
24 | @paragraphindent 1 |
25 | ||
b11cc610 JM |
26 | @c %**end of header |
27 | ||
bdefb2ab | 28 | @copying |
b11cc610 | 29 | Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
2f41c1d6 PB |
30 | 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, |
31 | 2007 Free Software Foundation, Inc. | |
bdefb2ab | 32 | |
b11cc610 | 33 | Permission is granted to copy, distribute and/or modify this document |
b3a8389d | 34 | under the terms of the GNU Free Documentation License, Version 1.2 or |
b11cc610 JM |
35 | any later version published by the Free Software Foundation; with the |
36 | Invariant Sections being ``GNU General Public License'' and ``Funding | |
37 | Free Software'', the Front-Cover texts being (a) (see below), and with | |
38 | the Back-Cover Texts being (b) (see below). A copy of the license is | |
39 | included in the section entitled ``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. | |
bdefb2ab JM |
50 | @end copying |
51 | @ifnottex | |
c3cb54c6 | 52 | @dircategory Software development |
bdefb2ab JM |
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 | |
bdefb2ab | 58 | @insertcopying |
061151d1 | 59 | @sp 1 |
b11cc610 JM |
60 | @end ifnottex |
61 | ||
62 | @setchapternewpage odd | |
63 | @titlepage | |
7771bb62 BM |
64 | @title GNU Compiler Collection Internals |
65 | @versionsubtitle | |
66 | @author Richard M. Stallman and the @sc{GCC} Developer Community | |
b11cc610 JM |
67 | @page |
68 | @vskip 0pt plus 1filll | |
bdefb2ab | 69 | @insertcopying |
b11cc610 JM |
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 | |
2f41c1d6 PB |
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 | |
b11cc610 JM |
86 | separate manual. @xref{Top,, Introduction, gcc, Using the GNU |
87 | Compiler Collection (GCC)}. | |
88 | ||
0a553c7e JM |
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 | ||
b11cc610 JM |
102 | @menu |
103 | * Contributing:: How to contribute to testing and developing GCC. | |
b11cc610 JM |
104 | * Portability:: Goals of GCC's portability features. |
105 | * Interface:: Function-call interface of GCC output. | |
d2184e79 | 106 | * Libgcc:: Low-level runtime library used by GCC. |
0a553c7e JM |
107 | * Languages:: Languages for which GCC front ends are written. |
108 | * Source Tree:: GCC source tree structure and build system. | |
75685792 | 109 | * Options:: Option specification files. |
b11cc610 JM |
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. | |
6de9cd9a DN |
113 | * Control Flow:: Maintaining and manipulating the control flow graph. |
114 | * Tree SSA:: Analysis and optimization of the tree representation. | |
821f6218 | 115 | * Loop Analysis and Representation:: Analysis and representation of loops |
b11cc610 JM |
116 | * Machine Desc:: How to write machine description instruction patterns. |
117 | * Target Macros:: How to write the machine description C macros and functions. | |
807633e5 | 118 | * Host Config:: Writing the @file{xm-@var{machine}.h} file. |
b11cc610 | 119 | * Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files. |
b11cc610 JM |
120 | * Collect2:: How @code{collect2} works; how it finds @code{ld}. |
121 | * Header Dirs:: Understanding the standard header file directories. | |
e2500fed | 122 | * Type Information:: GCC's memory management; generating type information. |
b11cc610 JM |
123 | |
124 | * Funding:: How to help assure funding for free software. | |
125 | * GNU Project:: The GNU Project and GNU/Linux. | |
126 | ||
127 | * Copying:: GNU General Public License says | |
128 | how you can copy and share GCC. | |
129 | * GNU Free Documentation License:: How you can copy and share this manual. | |
130 | * Contributors:: People who have contributed to GCC. | |
131 | ||
132 | * Option Index:: Index to command line options. | |
061151d1 | 133 | * Concept Index:: Index of concepts and symbol names. |
b11cc610 JM |
134 | @end menu |
135 | ||
136 | @include contribute.texi | |
b11cc610 JM |
137 | @include portability.texi |
138 | @include interface.texi | |
d2184e79 | 139 | @include libgcc.texi |
0a553c7e JM |
140 | @include languages.texi |
141 | @include sourcebuild.texi | |
75685792 | 142 | @include options.texi |
b11cc610 JM |
143 | @include passes.texi |
144 | @include c-tree.texi | |
6de9cd9a | 145 | @include tree-ssa.texi |
01e0ef5a | 146 | @include loop.texi |
b11cc610 | 147 | @include rtl.texi |
6de9cd9a | 148 | @include cfg.texi |
b11cc610 JM |
149 | @include md.texi |
150 | @include tm.texi | |
151 | @include hostconfig.texi | |
152 | @include fragments.texi | |
b11cc610 JM |
153 | @include collect2.texi |
154 | @include headerdirs.texi | |
e2500fed | 155 | @include gty.texi |
b11cc610 JM |
156 | |
157 | @include funding.texi | |
158 | @include gnu.texi | |
159 | @include gpl.texi | |
160 | ||
161 | @c --------------------------------------------------------------------- | |
162 | @c GFDL | |
163 | @c --------------------------------------------------------------------- | |
164 | ||
165 | @include fdl.texi | |
166 | ||
167 | @include contrib.texi | |
168 | ||
169 | @c --------------------------------------------------------------------- | |
170 | @c Indexes | |
171 | @c --------------------------------------------------------------------- | |
172 | ||
173 | @node Option Index | |
174 | @unnumbered Option Index | |
175 | ||
176 | GCC's command line options are indexed here without any initial @samp{-} | |
177 | or @samp{--}. Where an option has both positive and negative forms | |
178 | (such as @option{-f@var{option}} and @option{-fno-@var{option}}), | |
179 | relevant entries in the manual are indexed under the most appropriate | |
180 | form; it may sometimes be useful to look up both forms. | |
181 | ||
182 | @printindex op | |
183 | ||
061151d1 MS |
184 | @node Concept Index |
185 | @unnumbered Concept Index | |
b11cc610 JM |
186 | |
187 | @printindex cp | |
188 | ||
189 | @c --------------------------------------------------------------------- | |
190 | @c Epilogue | |
191 | @c --------------------------------------------------------------------- | |
192 | ||
193 | @bye |