| \input texinfo @c -*-texinfo-*- |
| @c %**start of header |
| @setfilename gccint.info |
| @c INTERNALS is used by md.texi to determine whether to include the |
| @c whole of that file, in the internals manual, or only the part |
| @c dealing with constraints, in the user manual. |
| @set INTERNALS |
| |
| @c See miscellaneous notes in gcc.texi on checks/things to do. |
| |
| @include gcc-common.texi |
| |
| @settitle GNU Compiler Collection (GCC) Internals |
| |
| @c Create a separate index for command line options. |
| @defcodeindex op |
| @c Merge the standard indexes into a single one. |
| @syncodeindex fn cp |
| @syncodeindex vr cp |
| @syncodeindex ky cp |
| @syncodeindex pg cp |
| @syncodeindex tp cp |
| |
| @c %**end of header |
| |
| @c Use with @@smallbook. |
| |
| @c Cause even numbered pages to be printed on the left hand side of |
| @c the page and odd numbered pages to be printed on the right hand |
| @c side of the page. Using this, you can print on both sides of a |
| @c sheet of paper and have the text on the same part of the sheet. |
| |
| @c The text on right hand pages is pushed towards the right hand |
| @c margin and the text on left hand pages is pushed toward the left |
| @c hand margin. |
| @c (To provide the reverse effect, set bindingoffset to -0.75in.) |
| |
| @c @tex |
| @c \global\bindingoffset=0.75in |
| @c \global\normaloffset =0.75in |
| @c @end tex |
| |
| @c Change the font used for @def... commands, since the default |
| @c proportional one used is bad for names starting __. |
| @tex |
| \global\setfont\defbf\ttbshape{10}{\magstep1} |
| @end tex |
| |
| @macro copyrightnotice |
| Copyright @copyright{} 1988, 1989, 1992, 1993, 1994, 1995, 1996, 1997, 1998, |
| 1999, 2000, 2001 Free Software Foundation, Inc. |
| @end macro |
| @ifnottex |
| @dircategory Programming |
| @direntry |
| * gccint: (gccint). Internals of the GNU Compiler Collection. |
| @end direntry |
| This file documents the internals of the GNU compilers. |
| @sp 1 |
| Published by the Free Software Foundation@* |
| 59 Temple Place - Suite 330@* |
| Boston, MA 02111-1307 USA |
| @sp 1 |
| @copyrightnotice{} |
| @sp 1 |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.1 or |
| any later version published by the Free Software Foundation; with the |
| Invariant Sections being ``GNU General Public License'' and ``Funding |
| Free Software'', the Front-Cover texts being (a) (see below), and with |
| the Back-Cover Texts being (b) (see below). A copy of the license is |
| included in the section entitled ``GNU Free Documentation License''. |
| |
| (a) The FSF's Front-Cover Text is: |
| |
| A GNU Manual |
| |
| (b) The FSF's Back-Cover Text is: |
| |
| You have freedom to copy and modify this GNU Manual, like GNU |
| software. Copies published by the Free Software Foundation raise |
| funds for GNU development. |
| @end ifnottex |
| |
| @setchapternewpage odd |
| @titlepage |
| @center @titlefont{GNU Compiler Collection Internals} |
| @sp 2 |
| @center Richard M. Stallman |
| @sp 3 |
| @center Last updated 7 December 2001 |
| @sp 1 |
| |
| @center for GCC @value{version-GCC} |
| @page |
| @vskip 0pt plus 1filll |
| @copyrightnotice{} |
| @sp 2 |
| For GCC Version @value{version-GCC}@* |
| @sp 1 |
| Published by the Free Software Foundation @* |
| 59 Temple Place---Suite 330@* |
| Boston, MA 02111-1307, USA@* |
| Last printed April, 1998.@* |
| Printed copies are available for $50 each.@* |
| @c Update this ISBN when printing a new edition. |
| @ifset FSFPRINT |
| ISBN 1-882114-37-X |
| @end ifset |
| @sp 1 |
| Permission is granted to copy, distribute and/or modify this document |
| under the terms of the GNU Free Documentation License, Version 1.1 or |
| any later version published by the Free Software Foundation; with the |
| Invariant Sections being ``GNU General Public License'', the Front-Cover |
| texts being (a) (see below), and with the Back-Cover Texts being (b) |
| (see below). A copy of the license is included in the section entitled |
| ``GNU Free Documentation License''. |
| |
| (a) The FSF's Front-Cover Text is: |
| |
| A GNU Manual |
| |
| (b) The FSF's Back-Cover Text is: |
| |
| You have freedom to copy and modify this GNU Manual, like GNU |
| software. Copies published by the Free Software Foundation raise |
| funds for GNU development. |
| @end titlepage |
| @summarycontents |
| @contents |
| @page |
| |
| @node Top, Contributing,, (DIR) |
| @top Introduction |
| @cindex introduction |
| |
| This manual documents the internals of the GNU compilers, including |
| how to port them to new targets and some information about how to |
| write front ends for new languages. It corresponds to GCC version |
| @value{version-GCC}. The use of the GNU compilers is documented in a |
| separate manual. @xref{Top,, Introduction, gcc, Using the GNU |
| Compiler Collection (GCC)}. |
| |
| @menu |
| * Contributing:: How to contribute to testing and developing GCC. |
| * Makefile:: Additional Makefile and configure information. |
| * Portability:: Goals of GCC's portability features. |
| * Interface:: Function-call interface of GCC output. |
| * Passes:: Order of passes, what they do, and what each file is for. |
| * Trees:: The source representation used by the C and C++ front ends. |
| * RTL:: The intermediate representation that most passes work on. |
| * Machine Desc:: How to write machine description instruction patterns. |
| * Target Macros:: How to write the machine description C macros and functions. |
| * Config:: Writing the @file{xm-@var{machine}.h} file. |
| * Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files. |
| * Configuration Files:: Files created by running @code{configure}. |
| * Collect2:: How @code{collect2} works; how it finds @code{ld}. |
| * Header Dirs:: Understanding the standard header file directories. |
| |
| * Funding:: How to help assure funding for free software. |
| * GNU Project:: The GNU Project and GNU/Linux. |
| |
| * Copying:: GNU General Public License says |
| how you can copy and share GCC. |
| * GNU Free Documentation License:: How you can copy and share this manual. |
| * Contributors:: People who have contributed to GCC. |
| |
| * Option Index:: Index to command line options. |
| * Index:: Index of concepts and symbol names. |
| @end menu |
| |
| @include contribute.texi |
| @include makefile.texi |
| @include configterms.texi |
| @include portability.texi |
| @include interface.texi |
| @include passes.texi |
| @include c-tree.texi |
| @include rtl.texi |
| @include md.texi |
| @include tm.texi |
| @include hostconfig.texi |
| @include fragments.texi |
| @include configfiles.texi |
| @include collect2.texi |
| @include headerdirs.texi |
| |
| @include funding.texi |
| @include gnu.texi |
| @include gpl.texi |
| |
| @c --------------------------------------------------------------------- |
| @c GFDL |
| @c --------------------------------------------------------------------- |
| |
| @include fdl.texi |
| |
| @include contrib.texi |
| |
| @c --------------------------------------------------------------------- |
| @c Indexes |
| @c --------------------------------------------------------------------- |
| |
| @node Option Index |
| @unnumbered Option Index |
| |
| GCC's command line options are indexed here without any initial @samp{-} |
| or @samp{--}. Where an option has both positive and negative forms |
| (such as @option{-f@var{option}} and @option{-fno-@var{option}}), |
| relevant entries in the manual are indexed under the most appropriate |
| form; it may sometimes be useful to look up both forms. |
| |
| @printindex op |
| |
| @node Index |
| @unnumbered Index |
| |
| @printindex cp |
| |
| @c --------------------------------------------------------------------- |
| @c Epilogue |
| @c --------------------------------------------------------------------- |
| |
| @bye |