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