110d565efSmrg\input texinfo @c -*-texinfo-*- 210d565efSmrg@c %**start of header 310d565efSmrg@setfilename gccint.info 410d565efSmrg@c INTERNALS is used by md.texi to determine whether to include the 510d565efSmrg@c whole of that file, in the internals manual, or only the part 610d565efSmrg@c dealing with constraints, in the user manual. 710d565efSmrg@set INTERNALS 810d565efSmrg 910d565efSmrg@c See miscellaneous notes in gcc.texi on checks/things to do. 1010d565efSmrg 1110d565efSmrg@include gcc-common.texi 1210d565efSmrg 1310d565efSmrg@settitle GNU Compiler Collection (GCC) Internals 1410d565efSmrg 1510d565efSmrg@c Create a separate index for command line options. 1610d565efSmrg@defcodeindex op 1710d565efSmrg@c Merge the standard indexes into a single one. 1810d565efSmrg@syncodeindex fn cp 1910d565efSmrg@syncodeindex vr cp 2010d565efSmrg@syncodeindex ky cp 2110d565efSmrg@syncodeindex pg cp 2210d565efSmrg@syncodeindex tp cp 2310d565efSmrg 2410d565efSmrg@paragraphindent 1 2510d565efSmrg 2610d565efSmrg@c %**end of header 2710d565efSmrg 2810d565efSmrg@copying 29*ec02198aSmrgCopyright @copyright{} 1988-2020 Free Software Foundation, Inc. 3010d565efSmrg 3110d565efSmrgPermission is granted to copy, distribute and/or modify this document 3210d565efSmrgunder the terms of the GNU Free Documentation License, Version 1.3 or 3310d565efSmrgany later version published by the Free Software Foundation; with the 3410d565efSmrgInvariant Sections being ``Funding Free Software'', the Front-Cover 3510d565efSmrgTexts being (a) (see below), and with the Back-Cover Texts being (b) 3610d565efSmrg(see below). A copy of the license is included in the section entitled 3710d565efSmrg``GNU Free Documentation License''. 3810d565efSmrg 3910d565efSmrg(a) The FSF's Front-Cover Text is: 4010d565efSmrg 4110d565efSmrg A GNU Manual 4210d565efSmrg 4310d565efSmrg(b) The FSF's Back-Cover Text is: 4410d565efSmrg 4510d565efSmrg You have freedom to copy and modify this GNU Manual, like GNU 4610d565efSmrg software. Copies published by the Free Software Foundation raise 4710d565efSmrg funds for GNU development. 4810d565efSmrg@end copying 4910d565efSmrg@ifnottex 5010d565efSmrg@dircategory Software development 5110d565efSmrg@direntry 5210d565efSmrg* gccint: (gccint). Internals of the GNU Compiler Collection. 5310d565efSmrg@end direntry 5410d565efSmrgThis file documents the internals of the GNU compilers. 5510d565efSmrg@sp 1 5610d565efSmrg@insertcopying 5710d565efSmrg@sp 1 5810d565efSmrg@end ifnottex 5910d565efSmrg 6010d565efSmrg@setchapternewpage odd 6110d565efSmrg@titlepage 6210d565efSmrg@title GNU Compiler Collection Internals 6310d565efSmrg@versionsubtitle 6410d565efSmrg@author Richard M. Stallman and the @sc{GCC} Developer Community 6510d565efSmrg@page 6610d565efSmrg@vskip 0pt plus 1filll 6710d565efSmrg@insertcopying 6810d565efSmrg@end titlepage 6910d565efSmrg@summarycontents 7010d565efSmrg@contents 7110d565efSmrg@page 7210d565efSmrg 7310d565efSmrg@node Top, Contributing 7410d565efSmrg@top Introduction 7510d565efSmrg@cindex introduction 7610d565efSmrg 7710d565efSmrgThis manual documents the internals of the GNU compilers, including 7810d565efSmrghow to port them to new targets and some information about how to 7910d565efSmrgwrite front ends for new languages. It corresponds to the compilers 8010d565efSmrg@ifset VERSION_PACKAGE 8110d565efSmrg@value{VERSION_PACKAGE} 8210d565efSmrg@end ifset 8310d565efSmrgversion @value{version-GCC}. The use of the GNU compilers is documented in a 8410d565efSmrgseparate manual. @xref{Top,, Introduction, gcc, Using the GNU 8510d565efSmrgCompiler Collection (GCC)}. 8610d565efSmrg 8710d565efSmrgThis manual is mainly a reference manual rather than a tutorial. It 8810d565efSmrgdiscusses how to contribute to GCC (@pxref{Contributing}), the 8910d565efSmrgcharacteristics of the machines supported by GCC as hosts and targets 9010d565efSmrg(@pxref{Portability}), how GCC relates to the ABIs on such systems 9110d565efSmrg(@pxref{Interface}), and the characteristics of the languages for 9210d565efSmrgwhich GCC front ends are written (@pxref{Languages}). It then 9310d565efSmrgdescribes the GCC source tree structure and build system, some of the 9410d565efSmrginterfaces to GCC front ends, and how support for a target system is 9510d565efSmrgimplemented in GCC@. 9610d565efSmrg 9710d565efSmrgAdditional tutorial information is linked to from 9810d565efSmrg@uref{http://gcc.gnu.org/readings.html}. 9910d565efSmrg 10010d565efSmrg@menu 10110d565efSmrg* Contributing:: How to contribute to testing and developing GCC. 10210d565efSmrg* Portability:: Goals of GCC's portability features. 10310d565efSmrg* Interface:: Function-call interface of GCC output. 10410d565efSmrg* Libgcc:: Low-level runtime library used by GCC. 10510d565efSmrg* Languages:: Languages for which GCC front ends are written. 10610d565efSmrg* Source Tree:: GCC source tree structure and build system. 10710d565efSmrg* Testsuites:: GCC testsuites. 10810d565efSmrg* Options:: Option specification files. 10910d565efSmrg* Passes:: Order of passes, what they do, and what each file is for. 110c7a68eb7Smrg* poly_int:: Representation of runtime sizes and offsets. 11110d565efSmrg* GENERIC:: Language-independent representation generated by Front Ends 11210d565efSmrg* GIMPLE:: Tuple representation used by Tree SSA optimizers 11310d565efSmrg* Tree SSA:: Analysis and optimization of GIMPLE 11410d565efSmrg* RTL:: Machine-dependent low-level intermediate representation. 11510d565efSmrg* Control Flow:: Maintaining and manipulating the control flow graph. 11610d565efSmrg* Loop Analysis and Representation:: Analysis and representation of loops 11710d565efSmrg* Machine Desc:: How to write machine description instruction patterns. 11810d565efSmrg* Target Macros:: How to write the machine description C macros and functions. 11910d565efSmrg* Host Config:: Writing the @file{xm-@var{machine}.h} file. 12010d565efSmrg* Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files. 12110d565efSmrg* Collect2:: How @code{collect2} works; how it finds @code{ld}. 12210d565efSmrg* Header Dirs:: Understanding the standard header file directories. 12310d565efSmrg* Type Information:: GCC's memory management; generating type information. 12410d565efSmrg* Plugins:: Extending the compiler with plugins. 12510d565efSmrg* LTO:: Using Link-Time Optimization. 12610d565efSmrg 12710d565efSmrg* Match and Simplify:: How to write expression simplification patterns for GIMPLE and GENERIC 128*ec02198aSmrg* Static Analyzer:: Working with the static analyzer. 1290fc04c29Smrg* User Experience Guidelines:: Guidelines for implementing diagnostics and options. 13010d565efSmrg* Funding:: How to help assure funding for free software. 13110d565efSmrg* GNU Project:: The GNU Project and GNU/Linux. 13210d565efSmrg 13310d565efSmrg* Copying:: GNU General Public License says 13410d565efSmrg how you can copy and share GCC. 13510d565efSmrg* GNU Free Documentation License:: How you can copy and share this manual. 13610d565efSmrg* Contributors:: People who have contributed to GCC. 13710d565efSmrg 13810d565efSmrg* Option Index:: Index to command line options. 13910d565efSmrg* Concept Index:: Index of concepts and symbol names. 14010d565efSmrg@end menu 14110d565efSmrg 14210d565efSmrg@include contribute.texi 14310d565efSmrg@include portability.texi 14410d565efSmrg@include interface.texi 14510d565efSmrg@include libgcc.texi 14610d565efSmrg@include languages.texi 14710d565efSmrg@include sourcebuild.texi 14810d565efSmrg@include options.texi 14910d565efSmrg@include passes.texi 150c7a68eb7Smrg@include poly-int.texi 15110d565efSmrg@include generic.texi 15210d565efSmrg@include gimple.texi 15310d565efSmrg@include tree-ssa.texi 15410d565efSmrg@include rtl.texi 15510d565efSmrg@include cfg.texi 15610d565efSmrg@include loop.texi 15710d565efSmrg@include md.texi 15810d565efSmrg@include tm.texi 15910d565efSmrg@include hostconfig.texi 16010d565efSmrg@include fragments.texi 16110d565efSmrg@include collect2.texi 16210d565efSmrg@include headerdirs.texi 16310d565efSmrg@include gty.texi 16410d565efSmrg@include plugins.texi 16510d565efSmrg@include lto.texi 16610d565efSmrg@include match-and-simplify.texi 167*ec02198aSmrg@include analyzer.texi 1680fc04c29Smrg@include ux.texi 16910d565efSmrg 17010d565efSmrg@include funding.texi 17110d565efSmrg@include gnu.texi 17210d565efSmrg@include gpl_v3.texi 17310d565efSmrg 17410d565efSmrg@c --------------------------------------------------------------------- 17510d565efSmrg@c GFDL 17610d565efSmrg@c --------------------------------------------------------------------- 17710d565efSmrg 17810d565efSmrg@include fdl.texi 17910d565efSmrg 18010d565efSmrg@include contrib.texi 18110d565efSmrg 18210d565efSmrg@c --------------------------------------------------------------------- 18310d565efSmrg@c Indexes 18410d565efSmrg@c --------------------------------------------------------------------- 18510d565efSmrg 18610d565efSmrg@node Option Index 18710d565efSmrg@unnumbered Option Index 18810d565efSmrg 18910d565efSmrgGCC's command line options are indexed here without any initial @samp{-} 19010d565efSmrgor @samp{--}. Where an option has both positive and negative forms 19110d565efSmrg(such as @option{-f@var{option}} and @option{-fno-@var{option}}), 19210d565efSmrgrelevant entries in the manual are indexed under the most appropriate 19310d565efSmrgform; it may sometimes be useful to look up both forms. 19410d565efSmrg 19510d565efSmrg@printindex op 19610d565efSmrg 19710d565efSmrg@node Concept Index 19810d565efSmrg@unnumbered Concept Index 19910d565efSmrg 20010d565efSmrg@printindex cp 20110d565efSmrg 20210d565efSmrg@c --------------------------------------------------------------------- 20310d565efSmrg@c Epilogue 20410d565efSmrg@c --------------------------------------------------------------------- 20510d565efSmrg 20610d565efSmrg@bye 207