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