]>
Commit | Line | Data |
---|---|---|
f5b36051 | 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 | ||
11d1a7ed | 24 | @paragraphindent 1 |
25 | ||
f5b36051 | 26 | @c %**end of header |
27 | ||
372b1b1b | 28 | @copying |
d67510b9 | 29 | Copyright @copyright{} 1988-2014 Free Software Foundation, Inc. |
372b1b1b | 30 | |
f5b36051 | 31 | Permission is granted to copy, distribute and/or modify this document |
2d0c81dc | 32 | under the terms of the GNU Free Documentation License, Version 1.3 or |
f5b36051 | 33 | any later version published by the Free Software Foundation; with the |
a4cb9727 | 34 | Invariant Sections being ``Funding Free Software'', the Front-Cover |
35 | Texts being (a) (see below), and with the Back-Cover Texts being (b) | |
36 | (see below). A copy of the license is included in the section entitled | |
37 | ``GNU Free Documentation License''. | |
f5b36051 | 38 | |
39 | (a) The FSF's Front-Cover Text is: | |
40 | ||
41 | A GNU Manual | |
42 | ||
43 | (b) The FSF's Back-Cover Text is: | |
44 | ||
45 | You have freedom to copy and modify this GNU Manual, like GNU | |
46 | software. Copies published by the Free Software Foundation raise | |
47 | funds for GNU development. | |
372b1b1b | 48 | @end copying |
49 | @ifnottex | |
9249a3df | 50 | @dircategory Software development |
372b1b1b | 51 | @direntry |
52 | * gccint: (gccint). Internals of the GNU Compiler Collection. | |
53 | @end direntry | |
54 | This file documents the internals of the GNU compilers. | |
55 | @sp 1 | |
372b1b1b | 56 | @insertcopying |
11d1a7ed | 57 | @sp 1 |
f5b36051 | 58 | @end ifnottex |
59 | ||
60 | @setchapternewpage odd | |
61 | @titlepage | |
8a667fb9 | 62 | @title GNU Compiler Collection Internals |
63 | @versionsubtitle | |
64 | @author Richard M. Stallman and the @sc{GCC} Developer Community | |
f5b36051 | 65 | @page |
66 | @vskip 0pt plus 1filll | |
372b1b1b | 67 | @insertcopying |
f5b36051 | 68 | @end titlepage |
69 | @summarycontents | |
70 | @contents | |
71 | @page | |
72 | ||
73 | @node Top, Contributing,, (DIR) | |
74 | @top Introduction | |
75 | @cindex introduction | |
76 | ||
77 | This manual documents the internals of the GNU compilers, including | |
78 | how to port them to new targets and some information about how to | |
d25dc80e | 79 | write front ends for new languages. It corresponds to the compilers |
80 | @ifset VERSION_PACKAGE | |
81 | @value{VERSION_PACKAGE} | |
82 | @end ifset | |
83 | version @value{version-GCC}. The use of the GNU compilers is documented in a | |
f5b36051 | 84 | separate manual. @xref{Top,, Introduction, gcc, Using the GNU |
85 | Compiler Collection (GCC)}. | |
86 | ||
a2e68e6d | 87 | This manual is mainly a reference manual rather than a tutorial. It |
88 | discusses how to contribute to GCC (@pxref{Contributing}), the | |
89 | characteristics of the machines supported by GCC as hosts and targets | |
90 | (@pxref{Portability}), how GCC relates to the ABIs on such systems | |
91 | (@pxref{Interface}), and the characteristics of the languages for | |
92 | which GCC front ends are written (@pxref{Languages}). It then | |
93 | describes the GCC source tree structure and build system, some of the | |
94 | interfaces to GCC front ends, and how support for a target system is | |
95 | implemented in GCC@. | |
96 | ||
97 | Additional tutorial information is linked to from | |
98 | @uref{http://gcc.gnu.org/readings.html}. | |
99 | ||
f5b36051 | 100 | @menu |
101 | * Contributing:: How to contribute to testing and developing GCC. | |
f5b36051 | 102 | * Portability:: Goals of GCC's portability features. |
103 | * Interface:: Function-call interface of GCC output. | |
0653bda3 | 104 | * Libgcc:: Low-level runtime library used by GCC. |
a2e68e6d | 105 | * Languages:: Languages for which GCC front ends are written. |
106 | * Source Tree:: GCC source tree structure and build system. | |
caa81816 | 107 | * Testsuites:: GCC testsuites. |
ff05e09e | 108 | * Options:: Option specification files. |
f5b36051 | 109 | * Passes:: Order of passes, what they do, and what each file is for. |
09c20c11 | 110 | * GENERIC:: Language-independent representation generated by Front Ends |
111 | * GIMPLE:: Tuple representation used by Tree SSA optimizers | |
112 | * Tree SSA:: Analysis and optimization of GIMPLE | |
507ec136 | 113 | * RTL:: Machine-dependent low-level intermediate representation. |
4ee9c684 | 114 | * Control Flow:: Maintaining and manipulating the control flow graph. |
339496f1 | 115 | * Loop Analysis and Representation:: Analysis and representation of loops |
f5b36051 | 116 | * Machine Desc:: How to write machine description instruction patterns. |
117 | * Target Macros:: How to write the machine description C macros and functions. | |
531d4872 | 118 | * Host Config:: Writing the @file{xm-@var{machine}.h} file. |
f5b36051 | 119 | * Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files. |
f5b36051 | 120 | * Collect2:: How @code{collect2} works; how it finds @code{ld}. |
121 | * Header Dirs:: Understanding the standard header file directories. | |
1f3233d1 | 122 | * Type Information:: GCC's memory management; generating type information. |
9227b6fc | 123 | * Plugins:: Extending the compiler with plugins. |
26ec0f69 | 124 | * LTO:: Using Link-Time Optimization. |
f5b36051 | 125 | |
2165588a | 126 | * Match and Simplify:: How to write expression simplification patterns for GIMPLE and GENERIC |
f5b36051 | 127 | * Funding:: How to help assure funding for free software. |
128 | * GNU Project:: The GNU Project and GNU/Linux. | |
129 | ||
130 | * Copying:: GNU General Public License says | |
c24c5fac | 131 | how you can copy and share GCC. |
f5b36051 | 132 | * GNU Free Documentation License:: How you can copy and share this manual. |
133 | * Contributors:: People who have contributed to GCC. | |
134 | ||
135 | * Option Index:: Index to command line options. | |
11d1a7ed | 136 | * Concept Index:: Index of concepts and symbol names. |
f5b36051 | 137 | @end menu |
138 | ||
139 | @include contribute.texi | |
f5b36051 | 140 | @include portability.texi |
141 | @include interface.texi | |
0653bda3 | 142 | @include libgcc.texi |
a2e68e6d | 143 | @include languages.texi |
144 | @include sourcebuild.texi | |
ff05e09e | 145 | @include options.texi |
f5b36051 | 146 | @include passes.texi |
09c20c11 | 147 | @include generic.texi |
148 | @include gimple.texi | |
4ee9c684 | 149 | @include tree-ssa.texi |
7edcaecf | 150 | @include rtl.texi |
4ee9c684 | 151 | @include cfg.texi |
7edcaecf | 152 | @include loop.texi |
f5b36051 | 153 | @include md.texi |
154 | @include tm.texi | |
155 | @include hostconfig.texi | |
156 | @include fragments.texi | |
f5b36051 | 157 | @include collect2.texi |
158 | @include headerdirs.texi | |
1f3233d1 | 159 | @include gty.texi |
9227b6fc | 160 | @include plugins.texi |
26ec0f69 | 161 | @include lto.texi |
2165588a | 162 | @include match-and-simplify.texi |
f5b36051 | 163 | |
164 | @include funding.texi | |
165 | @include gnu.texi | |
eae7da65 | 166 | @include gpl_v3.texi |
f5b36051 | 167 | |
168 | @c --------------------------------------------------------------------- | |
169 | @c GFDL | |
170 | @c --------------------------------------------------------------------- | |
171 | ||
172 | @include fdl.texi | |
173 | ||
174 | @include contrib.texi | |
175 | ||
176 | @c --------------------------------------------------------------------- | |
177 | @c Indexes | |
178 | @c --------------------------------------------------------------------- | |
179 | ||
180 | @node Option Index | |
181 | @unnumbered Option Index | |
182 | ||
183 | GCC's command line options are indexed here without any initial @samp{-} | |
184 | or @samp{--}. Where an option has both positive and negative forms | |
185 | (such as @option{-f@var{option}} and @option{-fno-@var{option}}), | |
186 | relevant entries in the manual are indexed under the most appropriate | |
187 | form; it may sometimes be useful to look up both forms. | |
188 | ||
189 | @printindex op | |
190 | ||
11d1a7ed | 191 | @node Concept Index |
192 | @unnumbered Concept Index | |
f5b36051 | 193 | |
194 | @printindex cp | |
195 | ||
196 | @c --------------------------------------------------------------------- | |
197 | @c Epilogue | |
198 | @c --------------------------------------------------------------------- | |
199 | ||
200 | @bye |