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