gccint.texi 6.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201
  1. \input texinfo @c -*-texinfo-*-
  2. @c %**start of header
  3. @setfilename gccint.info
  4. @c INTERNALS is used by md.texi to determine whether to include the
  5. @c whole of that file, in the internals manual, or only the part
  6. @c dealing with constraints, in the user manual.
  7. @set INTERNALS
  8. @c See miscellaneous notes in gcc.texi on checks/things to do.
  9. @include gcc-common.texi
  10. @settitle GNU Compiler Collection (GCC) Internals
  11. @c Create a separate index for command line options.
  12. @defcodeindex op
  13. @c Merge the standard indexes into a single one.
  14. @syncodeindex fn cp
  15. @syncodeindex vr cp
  16. @syncodeindex ky cp
  17. @syncodeindex pg cp
  18. @syncodeindex tp cp
  19. @paragraphindent 1
  20. @c %**end of header
  21. @copying
  22. Copyright @copyright{} 1988-2015 Free Software Foundation, Inc.
  23. Permission is granted to copy, distribute and/or modify this document
  24. under the terms of the GNU Free Documentation License, Version 1.3 or
  25. any later version published by the Free Software Foundation; with the
  26. Invariant Sections being ``Funding Free Software'', the Front-Cover
  27. Texts being (a) (see below), and with the Back-Cover Texts being (b)
  28. (see below). A copy of the license is included in the section entitled
  29. ``GNU Free Documentation License''.
  30. (a) The FSF's Front-Cover Text is:
  31. A GNU Manual
  32. (b) The FSF's Back-Cover Text is:
  33. You have freedom to copy and modify this GNU Manual, like GNU
  34. software. Copies published by the Free Software Foundation raise
  35. funds for GNU development.
  36. @end copying
  37. @ifnottex
  38. @dircategory Software development
  39. @direntry
  40. * gccint: (gccint). Internals of the GNU Compiler Collection.
  41. @end direntry
  42. This file documents the internals of the GNU compilers.
  43. @sp 1
  44. @insertcopying
  45. @sp 1
  46. @end ifnottex
  47. @setchapternewpage odd
  48. @titlepage
  49. @title GNU Compiler Collection Internals
  50. @versionsubtitle
  51. @author Richard M. Stallman and the @sc{GCC} Developer Community
  52. @page
  53. @vskip 0pt plus 1filll
  54. @insertcopying
  55. @end titlepage
  56. @summarycontents
  57. @contents
  58. @page
  59. @node Top, Contributing,, (DIR)
  60. @top Introduction
  61. @cindex introduction
  62. This manual documents the internals of the GNU compilers, including
  63. how to port them to new targets and some information about how to
  64. write front ends for new languages. It corresponds to the compilers
  65. @ifset VERSION_PACKAGE
  66. @value{VERSION_PACKAGE}
  67. @end ifset
  68. version @value{version-GCC}. The use of the GNU compilers is documented in a
  69. separate manual. @xref{Top,, Introduction, gcc, Using the GNU
  70. Compiler Collection (GCC)}.
  71. This manual is mainly a reference manual rather than a tutorial. It
  72. discusses how to contribute to GCC (@pxref{Contributing}), the
  73. characteristics of the machines supported by GCC as hosts and targets
  74. (@pxref{Portability}), how GCC relates to the ABIs on such systems
  75. (@pxref{Interface}), and the characteristics of the languages for
  76. which GCC front ends are written (@pxref{Languages}). It then
  77. describes the GCC source tree structure and build system, some of the
  78. interfaces to GCC front ends, and how support for a target system is
  79. implemented in GCC@.
  80. Additional tutorial information is linked to from
  81. @uref{http://gcc.gnu.org/readings.html}.
  82. @menu
  83. * Contributing:: How to contribute to testing and developing GCC.
  84. * Portability:: Goals of GCC's portability features.
  85. * Interface:: Function-call interface of GCC output.
  86. * Libgcc:: Low-level runtime library used by GCC.
  87. * Languages:: Languages for which GCC front ends are written.
  88. * Source Tree:: GCC source tree structure and build system.
  89. * Testsuites:: GCC testsuites.
  90. * Options:: Option specification files.
  91. * Passes:: Order of passes, what they do, and what each file is for.
  92. * GENERIC:: Language-independent representation generated by Front Ends
  93. * GIMPLE:: Tuple representation used by Tree SSA optimizers
  94. * Tree SSA:: Analysis and optimization of GIMPLE
  95. * RTL:: Machine-dependent low-level intermediate representation.
  96. * Control Flow:: Maintaining and manipulating the control flow graph.
  97. * Loop Analysis and Representation:: Analysis and representation of loops
  98. * Machine Desc:: How to write machine description instruction patterns.
  99. * Target Macros:: How to write the machine description C macros and functions.
  100. * Host Config:: Writing the @file{xm-@var{machine}.h} file.
  101. * Fragments:: Writing the @file{t-@var{target}} and @file{x-@var{host}} files.
  102. * Collect2:: How @code{collect2} works; how it finds @code{ld}.
  103. * Header Dirs:: Understanding the standard header file directories.
  104. * Type Information:: GCC's memory management; generating type information.
  105. * Plugins:: Extending the compiler with plugins.
  106. * LTO:: Using Link-Time Optimization.
  107. * Match and Simplify:: How to write expression simplification patterns for GIMPLE and GENERIC
  108. * Funding:: How to help assure funding for free software.
  109. * GNU Project:: The GNU Project and GNU/Linux.
  110. * Copying:: GNU General Public License says
  111. how you can copy and share GCC.
  112. * GNU Free Documentation License:: How you can copy and share this manual.
  113. * Contributors:: People who have contributed to GCC.
  114. * Option Index:: Index to command line options.
  115. * Concept Index:: Index of concepts and symbol names.
  116. @end menu
  117. @include contribute.texi
  118. @include portability.texi
  119. @include interface.texi
  120. @include libgcc.texi
  121. @include languages.texi
  122. @include sourcebuild.texi
  123. @include options.texi
  124. @include passes.texi
  125. @include generic.texi
  126. @include gimple.texi
  127. @include tree-ssa.texi
  128. @include rtl.texi
  129. @include cfg.texi
  130. @include loop.texi
  131. @include md.texi
  132. @include tm.texi
  133. @include hostconfig.texi
  134. @include fragments.texi
  135. @include collect2.texi
  136. @include headerdirs.texi
  137. @include gty.texi
  138. @include plugins.texi
  139. @include lto.texi
  140. @include match-and-simplify.texi
  141. @include funding.texi
  142. @include gnu.texi
  143. @include gpl_v3.texi
  144. @c ---------------------------------------------------------------------
  145. @c GFDL
  146. @c ---------------------------------------------------------------------
  147. @include fdl.texi
  148. @include contrib.texi
  149. @c ---------------------------------------------------------------------
  150. @c Indexes
  151. @c ---------------------------------------------------------------------
  152. @node Option Index
  153. @unnumbered Option Index
  154. GCC's command line options are indexed here without any initial @samp{-}
  155. or @samp{--}. Where an option has both positive and negative forms
  156. (such as @option{-f@var{option}} and @option{-fno-@var{option}}),
  157. relevant entries in the manual are indexed under the most appropriate
  158. form; it may sometimes be useful to look up both forms.
  159. @printindex op
  160. @node Concept Index
  161. @unnumbered Concept Index
  162. @printindex cp
  163. @c ---------------------------------------------------------------------
  164. @c Epilogue
  165. @c ---------------------------------------------------------------------
  166. @bye