\unnumbchapentry {GNU GENERAL PUBLIC LICENSE}{1} \unnumbsecentry{Preamble}{1} \unnumbsecentry{TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION}{2} \unnumbsecentry{Appendix: How to Apply These Terms to Your New Programs}{7} \unnumbchapentry {Contributors to GNU CC}{9} \chapentry {Protect Your Freedom---Fight ``Look And Feel''}{1}{11} \chapentry {GNU CC Command Options}{2}{15} \secentry {Options Controlling the Kind of Output}{2}{1}{18} \secentry {Options Controlling Dialect}{2}{2}{19} \secentry {Options to Request or Suppress Warnings}{2}{3}{22} \secentry {Options for Debugging Your Program or GNU CC}{2}{4}{27} \secentry {Options That Control Optimization}{2}{5}{30} \secentry {Options Controlling the Preprocessor}{2}{6}{33} \secentry {Options for Linking}{2}{7}{35} \secentry {Options for Directory Search}{2}{8}{37} \secentry {Specifying Target Machine and Compiler Version}{2}{9}{38} \secentry {Specifying Hardware Models and Configurations}{2}{10}{39} \subsecentry {M680x0 Options}{2}{10}{1}{40} \subsecentry {VAX Options}{2}{10}{2}{41} \subsecentry {SPARC Options}{2}{10}{3}{41} \subsecentry {Convex Options}{2}{10}{4}{41} \subsecentry {AMD29K Options}{2}{10}{5}{42} \subsecentry {M88K Options}{2}{10}{6}{42} \subsecentry {IBM RS/6000 Options}{2}{10}{7}{45} \subsecentry {IBM RT Options}{2}{10}{8}{45} \subsecentry {MIPS Options}{2}{10}{9}{46} \subsecentry {Intel 386 Options}{2}{10}{10}{48} \secentry {Options for Code Generation Conventions}{2}{11}{49} \secentry {Environment Variables Affecting GNU CC}{2}{12}{51} \chapentry {Installing GNU CC}{3}{53} \secentry {Compilation in a Separate Directory}{3}{1}{61} \secentry {Building and Installing a Cross-Compiler}{3}{2}{61} \secentry {Installing GNU CC on the HP Precision Architecture}{3}{3}{63} \secentry {Installing GNU CC on the Sun}{3}{4}{64} \secentry {Installing GNU CC on the 3b1}{3}{5}{64} \secentry {Installing GNU CC on Unos}{3}{6}{65} \secentry {Installing GNU CC on VMS}{3}{7}{65} \chapentry {GNU Extensions to the C Language}{4}{69} \secentry {Statements and Declarations within Expressions}{4}{1}{69} \secentry {Locally Declared Labels}{4}{2}{70} \secentry {Labels as Values}{4}{3}{71} \secentry {Nested Functions}{4}{4}{72} \secentry {Naming an Expression's Type}{4}{5}{74} \secentry {Referring to a Type with \code {typeof}}{4}{6}{75} \secentry {Generalized Lvalues}{4}{7}{76} \secentry {Conditional Expressions with Omitted Operands}{4}{8}{77} \secentry {Double-Word Integers}{4}{9}{78} \secentry {Arrays of Length Zero}{4}{10}{78} \secentry {Arrays of Variable Length}{4}{11}{79} \secentry {Macros with Variable Numbers of Arguments}{4}{12}{80} \secentry {Non-Lvalue Arrays May Have Subscripts}{4}{13}{81} \secentry {Arithmetic on \code {void}- and Function-Pointers}{4}{14}{81} \secentry {Non-Constant Initializers}{4}{15}{81} \secentry {Constructor Expressions}{4}{16}{82} \secentry {Labeled Elements in Initializers}{4}{17}{83} \secentry {Case Ranges}{4}{18}{84} \secentry {Cast to a Union Type}{4}{19}{85} \secentry {Declaring Attributes of Functions}{4}{20}{86} \secentry {Prototypes and Old-Style Function Definitions}{4}{21}{87} \secentry {Dollar Signs in Identifier Names}{4}{22}{88} \secentry {The Character \key {ESC} in Constants}{4}{23}{89} \secentry {Inquiring on Alignment of Types or Variables}{4}{24}{89} \secentry {Specifying Attributes of Variables}{4}{25}{89} \secentry {An Inline Function is As Fast As a Macro}{4}{26}{91} \secentry {Assembler Instructions with C Expression Operands}{4}{27}{92} \secentry {Controlling Names Used in Assembler Code}{4}{28}{96} \secentry {Variables in Specified Registers}{4}{29}{97} \subsecentry {Defining Global Register Variables}{4}{29}{1}{97} \subsecentry {Specifying Registers for Local Variables}{4}{29}{2}{99} \secentry {Alternate Keywords}{4}{30}{100} \secentry {Incomplete \code {enum} Types}{4}{31}{100} \chapentry {Known Causes of Trouble with GNU CC}{5}{103} \secentry {Actual Bugs We Haven't Fixed Yet}{5}{1}{103} \secentry {Installation Problems}{5}{2}{103} \secentry {Cross-Compiler Problems}{5}{3}{105} \secentry {Interoperation}{5}{4}{106} \secentry {Incompatibilities of GNU CC}{5}{5}{108} \secentry {Disappointments and Misunderstandings}{5}{6}{110} \secentry {Certain Changes We Don't Want to Make}{5}{7}{111} \chapentry {Reporting Bugs}{6}{115} \secentry {Have You Found a Bug?}{6}{1}{115} \secentry {Where to Report Bugs}{6}{2}{116} \secentry {How to Report Bugs}{6}{3}{117} \secentry {Sending Patches for GNU CC}{6}{4}{120} \chapentry {How To Get Help with GNU CC}{7}{123} \chapentry {Using GNU CC on VMS}{8}{125} \secentry {Include Files and VMS}{8}{1}{125} \secentry {Global Declarations and VMS}{8}{2}{126} \secentry {Other VMS Issues}{8}{3}{128} \chapentry {GNU CC and Portability}{9}{131} \chapentry {Interfacing to GNU CC Output}{10}{133} \chapentry {Passes and Files of the Compiler}{11}{135} \chapentry {RTL Representation}{12}{141} \secentry {RTL Object Types}{12}{1}{141} \secentry {Access to Operands}{12}{2}{142} \secentry {Flags in an RTL Expression}{12}{3}{144} \secentry {Machine Modes}{12}{4}{148} \secentry {Constant Expression Types}{12}{5}{151} \secentry {Registers and Memory}{12}{6}{153} \secentry {RTL Expressions for Arithmetic}{12}{7}{157} \secentry {Comparison Operations}{12}{8}{160} \secentry {Bit Fields}{12}{9}{162} \secentry {Conversions}{12}{10}{162} \secentry {Declarations}{12}{11}{164} \secentry {Side Effect Expressions}{12}{12}{164} \secentry {Embedded Side-Effects on Addresses}{12}{13}{168} \secentry {Assembler Instructions as Expressions}{12}{14}{169} \secentry {Insns}{12}{15}{170} \secentry {RTL Representation of Function-Call Insns}{12}{16}{178} \secentry {Structure Sharing Assumptions}{12}{17}{180} \chapentry {Machine Descriptions}{13}{183} \secentry {Everything about Instruction Patterns}{13}{1}{183} \secentry {Example of \code {define\vbox to 0pt{}\kern .06em \vbox {\hrule width.3em height.1ex}insn}}{13}{2}{184} \secentry {RTL Template for Generating and Recognizing Insns}{13}{3}{185} \secentry {Output Templates and Operand Substitution}{13}{4}{189} \secentry {C Statements for Generating Assembler Output}{13}{5}{190} \secentry {Operand Constraints}{13}{6}{192} \subsecentry {Simple Constraints}{13}{6}{1}{192} \subsecentry {Multiple Alternative Constraints}{13}{6}{2}{197} \subsecentry {Register Class Preferences}{13}{6}{3}{198} \subsecentry {Constraint Modifier Characters}{13}{6}{4}{198} \subsecentry {Not Using Constraints}{13}{6}{5}{199} \secentry {Standard Names for Patterns Used in Generation}{13}{7}{200} \secentry {When the Order of Patterns Matters}{13}{8}{209} \secentry {Interdependence of Patterns}{13}{9}{209} \secentry {Defining Jump Instruction Patterns}{13}{10}{211} \secentry {Canonicalization of Instructions}{13}{11}{213} \secentry {Defining Machine-Specific Peephole Optimizers}{13}{12}{215} \secentry {Defining RTL Sequences for Code Generation}{13}{13}{218} \secentry {Splitting Instructions into Multiple Instructions}{13}{14}{221} \secentry {Instruction Attributes}{13}{15}{224} \subsecentry {Defining Attributes and their Values}{13}{15}{1}{224} \subsecentry {Attribute Expressions}{13}{15}{2}{225} \subsecentry {Assigning Attribute Values to Insns}{13}{15}{3}{228} \subsecentry {Example of Attribute Specifications}{13}{15}{4}{229} \subsecentry {Computing the Length of an Insn}{13}{15}{5}{231} \subsecentry {Constant Attributes}{13}{15}{6}{232} \subsecentry {Delay Slot Scheduling}{13}{15}{7}{233} \subsecentry {Specifying Function Units}{13}{15}{8}{234} \chapentry {Target Description Macros}{14}{237} \secentry {Controlling the Compilation Driver, \file {gcc}}{14}{1}{237} \secentry {Run-time Target Specification}{14}{2}{241} \secentry {Storage Layout}{14}{3}{243} \secentry {Layout of Source Language Data Types}{14}{4}{247} \secentry {Register Usage}{14}{5}{249} \subsecentry {Basic Characteristics of Registers}{14}{5}{1}{250} \subsecentry {Order of Allocation of Registers}{14}{5}{2}{251} \subsecentry {How Values Fit in Registers}{14}{5}{3}{251} \subsecentry {Handling Leaf Functions}{14}{5}{4}{253} \subsecentry {Registers That Form a Stack}{14}{5}{5}{254} \subsecentry {Obsolete Macros for Controlling Register Usage}{14}{5}{6}{255} \secentry {Register Classes}{14}{6}{256} \secentry {Describing Stack Layout and Calling Conventions}{14}{7}{261} \subsecentry {Basic Stack Layout}{14}{7}{1}{261} \subsecentry {Registers That Address the Stack Frame}{14}{7}{2}{262} \subsecentry {Eliminating Frame Pointer and Arg Pointer}{14}{7}{3}{264} \subsecentry {Passing Function Arguments on the Stack}{14}{7}{4}{265} \subsecentry {Passing Arguments in Registers}{14}{7}{5}{267} \subsecentry {How Scalar Function Values Are Returned}{14}{7}{6}{270} \subsecentry {How Large Values Are Returned}{14}{7}{7}{272} \subsecentry {Caller-Saves Register Allocation}{14}{7}{8}{273} \subsecentry {Function Entry and Exit}{14}{7}{9}{273} \subsecentry {Generating Code for Profiling}{14}{7}{10}{276} \secentry {Implementing the Varargs Macros}{14}{8}{277} \secentry {Trampolines for Nested Functions}{14}{9}{280} \secentry {Implicit Calls to Library Routines}{14}{10}{282} \secentry {Addressing Modes}{14}{11}{285} \secentry {Condition Code Status}{14}{12}{288} \secentry {Describing Relative Costs of Operations}{14}{13}{289} \secentry {Dividing the Output into Sections (Texts, Data, \dots{})}{14}{14}{292} \secentry {Position Independent Code}{14}{15}{294} \secentry {Defining the Output Assembler Language}{14}{16}{295} \subsecentry {The Overall Framework of an Assembler File}{14}{16}{1}{295} \subsecentry {Output of Data}{14}{16}{2}{296} \subsecentry {Output of Uninitialized Variables}{14}{16}{3}{298} \subsecentry {Output and Generation of Labels}{14}{16}{4}{299} \subsecentry {Output of Initialization Routines}{14}{16}{5}{302} \subsecentry {Output of Assembler Instructions}{14}{16}{6}{304} \subsecentry {Output of Dispatch Tables}{14}{16}{7}{306} \subsecentry {Assembler Commands for Alignment}{14}{16}{8}{307} \secentry {Controlling Debugging Information Format}{14}{17}{308} \subsecentry {Macros Affecting All Debugging Formats}{14}{17}{1}{308} \subsecentry {Specific Options for DBX Output}{14}{17}{2}{309} \subsecentry {Open-Ended Hooks for DBX Format}{14}{17}{3}{311} \subsecentry {File Names in DBX Format}{14}{17}{4}{312} \subsecentry {Macros for SDB and DWARF Output}{14}{17}{5}{313} \secentry {Cross Compilation and Floating Point Format}{14}{18}{314} \secentry {Miscellaneous Parameters}{14}{19}{316} \chapentry {The Configuration File}{15}{321} \unnumbchapentry {Index}{325}