gccint.texi revision 169689
190075Sobrien\input texinfo @c -*-texinfo-*- 290075Sobrien@c %**start of header 390075Sobrien@setfilename gccint.info 490075Sobrien@c INTERNALS is used by md.texi to determine whether to include the 590075Sobrien@c whole of that file, in the internals manual, or only the part 690075Sobrien@c dealing with constraints, in the user manual. 790075Sobrien@set INTERNALS 890075Sobrien 990075Sobrien@c See miscellaneous notes in gcc.texi on checks/things to do. 1090075Sobrien 1190075Sobrien@include gcc-common.texi 1290075Sobrien 1390075Sobrien@settitle GNU Compiler Collection (GCC) Internals 1490075Sobrien 1590075Sobrien@c Create a separate index for command line options. 1690075Sobrien@defcodeindex op 1790075Sobrien@c Merge the standard indexes into a single one. 1890075Sobrien@syncodeindex fn cp 1990075Sobrien@syncodeindex vr cp 2090075Sobrien@syncodeindex ky cp 2190075Sobrien@syncodeindex pg cp 2290075Sobrien@syncodeindex tp cp 2390075Sobrien 24169689Skan@paragraphindent 1 25169689Skan 2690075Sobrien@c %**end of header 2790075Sobrien 28117395Skan@copying 2990075SobrienCopyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, 30169689Skan1999, 2000, 2001, 2002, 2003, 2004, 2005 Free Software Foundation, Inc. 31117395Skan 3290075SobrienPermission is granted to copy, distribute and/or modify this document 33117395Skanunder the terms of the GNU Free Documentation License, Version 1.2 or 3490075Sobrienany later version published by the Free Software Foundation; with the 3590075SobrienInvariant Sections being ``GNU General Public License'' and ``Funding 3690075SobrienFree Software'', the Front-Cover texts being (a) (see below), and with 3790075Sobrienthe Back-Cover Texts being (b) (see below). A copy of the license is 3890075Sobrienincluded in the section entitled ``GNU Free Documentation License''. 3990075Sobrien 4090075Sobrien(a) The FSF's Front-Cover Text is: 4190075Sobrien 4290075Sobrien A GNU Manual 4390075Sobrien 4490075Sobrien(b) The FSF's Back-Cover Text is: 4590075Sobrien 4690075Sobrien You have freedom to copy and modify this GNU Manual, like GNU 4790075Sobrien software. Copies published by the Free Software Foundation raise 4890075Sobrien funds for GNU development. 49117395Skan@end copying 50117395Skan@ifnottex 51169689Skan@dircategory Software development 52117395Skan@direntry 53117395Skan* gccint: (gccint). Internals of the GNU Compiler Collection. 54117395Skan@end direntry 55117395SkanThis file documents the internals of the GNU compilers. 56117395Skan@sp 1 57117395Skan@insertcopying 58169689Skan@sp 1 5990075Sobrien@end ifnottex 6090075Sobrien 6190075Sobrien@setchapternewpage odd 6290075Sobrien@titlepage 63169689Skan@title GNU Compiler Collection Internals 64169689Skan@versionsubtitle 65169689Skan@author Richard M. Stallman and the @sc{GCC} Developer Community 6690075Sobrien@page 6790075Sobrien@vskip 0pt plus 1filll 68117395Skan@insertcopying 6990075Sobrien@end titlepage 7090075Sobrien@summarycontents 7190075Sobrien@contents 7290075Sobrien@page 7390075Sobrien 7490075Sobrien@node Top, Contributing,, (DIR) 7590075Sobrien@top Introduction 7690075Sobrien@cindex introduction 7790075Sobrien 7890075SobrienThis manual documents the internals of the GNU compilers, including 7990075Sobrienhow to port them to new targets and some information about how to 8090075Sobrienwrite front ends for new languages. It corresponds to GCC version 8190075Sobrien@value{version-GCC}. The use of the GNU compilers is documented in a 8290075Sobrienseparate manual. @xref{Top,, Introduction, gcc, Using the GNU 8390075SobrienCompiler Collection (GCC)}. 8490075Sobrien 8590075SobrienThis manual is mainly a reference manual rather than a tutorial. It 8690075Sobriendiscusses how to contribute to GCC (@pxref{Contributing}), the 8790075Sobriencharacteristics of the machines supported by GCC as hosts and targets 8890075Sobrien(@pxref{Portability}), how GCC relates to the ABIs on such systems 8990075Sobrien(@pxref{Interface}), and the characteristics of the languages for 9090075Sobrienwhich GCC front ends are written (@pxref{Languages}). It then 9190075Sobriendescribes the GCC source tree structure and build system, some of the 9290075Sobrieninterfaces to GCC front ends, and how support for a target system is 9390075Sobrienimplemented in GCC@. 9490075Sobrien 9590075SobrienAdditional tutorial information is linked to from 9690075Sobrien@uref{http://gcc.gnu.org/readings.html}. 9790075Sobrien 9890075Sobrien@menu 9990075Sobrien* Contributing:: How to contribute to testing and developing GCC. 10090075Sobrien* Portability:: Goals of GCC's portability features. 10190075Sobrien* Interface:: Function-call interface of GCC output. 102132718Skan* Libgcc:: Low-level runtime library used by GCC. 10390075Sobrien* Languages:: Languages for which GCC front ends are written. 10490075Sobrien* Source Tree:: GCC source tree structure and build system. 105169689Skan* Options:: Option specification files. 10690075Sobrien* Passes:: Order of passes, what they do, and what each file is for. 10790075Sobrien* Trees:: The source representation used by the C and C++ front ends. 10890075Sobrien* RTL:: The intermediate representation that most passes work on. 109169689Skan* Control Flow:: Maintaining and manipulating the control flow graph. 110169689Skan* Tree SSA:: Analysis and optimization of the tree representation. 111169689Skan* Loop Analysis and Representation:: Analysis and representation of loops 11290075Sobrien* Machine Desc:: How to write machine description instruction patterns. 11390075Sobrien* Target Macros:: How to write the machine description C macros and functions. 11490075Sobrien* Host Config:: Writing the @file{xm-@var{machine}.h} file. 11590075Sobrien* Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files. 11690075Sobrien* Collect2:: How @code{collect2} works; how it finds @code{ld}. 11790075Sobrien* Header Dirs:: Understanding the standard header file directories. 118117395Skan* Type Information:: GCC's memory management; generating type information. 11990075Sobrien 12090075Sobrien* Funding:: How to help assure funding for free software. 12190075Sobrien* GNU Project:: The GNU Project and GNU/Linux. 12290075Sobrien 12390075Sobrien* Copying:: GNU General Public License says 12490075Sobrien how you can copy and share GCC. 12590075Sobrien* GNU Free Documentation License:: How you can copy and share this manual. 12690075Sobrien* Contributors:: People who have contributed to GCC. 12790075Sobrien 12890075Sobrien* Option Index:: Index to command line options. 129169689Skan* Concept Index:: Index of concepts and symbol names. 13090075Sobrien@end menu 13190075Sobrien 13290075Sobrien@include contribute.texi 13390075Sobrien@include portability.texi 13490075Sobrien@include interface.texi 135132718Skan@include libgcc.texi 13690075Sobrien@include languages.texi 13790075Sobrien@include sourcebuild.texi 138169689Skan@include options.texi 13990075Sobrien@include passes.texi 14090075Sobrien@include c-tree.texi 141169689Skan@include tree-ssa.texi 142169689Skan@include loop.texi 14390075Sobrien@include rtl.texi 144169689Skan@include cfg.texi 14590075Sobrien@include md.texi 14690075Sobrien@include tm.texi 14790075Sobrien@include hostconfig.texi 14890075Sobrien@include fragments.texi 14990075Sobrien@include collect2.texi 15090075Sobrien@include headerdirs.texi 151117395Skan@include gty.texi 15290075Sobrien 15390075Sobrien@include funding.texi 15490075Sobrien@include gnu.texi 15590075Sobrien@include gpl.texi 15690075Sobrien 15790075Sobrien@c --------------------------------------------------------------------- 15890075Sobrien@c GFDL 15990075Sobrien@c --------------------------------------------------------------------- 16090075Sobrien 16190075Sobrien@include fdl.texi 16290075Sobrien 16390075Sobrien@include contrib.texi 16490075Sobrien 16590075Sobrien@c --------------------------------------------------------------------- 16690075Sobrien@c Indexes 16790075Sobrien@c --------------------------------------------------------------------- 16890075Sobrien 16990075Sobrien@node Option Index 17090075Sobrien@unnumbered Option Index 17190075Sobrien 17290075SobrienGCC's command line options are indexed here without any initial @samp{-} 17390075Sobrienor @samp{--}. Where an option has both positive and negative forms 17490075Sobrien(such as @option{-f@var{option}} and @option{-fno-@var{option}}), 17590075Sobrienrelevant entries in the manual are indexed under the most appropriate 17690075Sobrienform; it may sometimes be useful to look up both forms. 17790075Sobrien 17890075Sobrien@printindex op 17990075Sobrien 180169689Skan@node Concept Index 181169689Skan@unnumbered Concept Index 18290075Sobrien 18390075Sobrien@printindex cp 18490075Sobrien 18590075Sobrien@c --------------------------------------------------------------------- 18690075Sobrien@c Epilogue 18790075Sobrien@c --------------------------------------------------------------------- 18890075Sobrien 18990075Sobrien@bye 190