Using and Porting the GNU Compiler Collection (GCC)
Compile C, C++, Objective C, or Fortran
GCC Command Options
Option Summary
Options Controlling the Kind of Output
Compiling C++ Programs
Options Controlling C Dialect
Options Controlling C++ Dialect
Options to Request or Suppress Warnings
Options for Debugging Your Program or GCC
Options That Control Optimization
Options Controlling the Preprocessor
Passing Options to the Assembler
Options for Linking
Options for Directory Search
Specifying Target Machine and Compiler Version
Hardware Models and Configurations
M680x0 Options
VAX Options
SPARC Options
Convex Options
AMD29K Options
ARM Options
Thumb Options
MN10200 Options
MN10300 Options
M32R/D Options
M88K Options
IBM RS/6000 and PowerPC Options
IBM RT Options
MIPS Options
Intel 386 Options
HPPA Options
Intel 960 Options
DEC Alpha Options
Clipper Options
H8/300 Options
SH Options
Options for System V
TMS320C3x/C4x Options
V850 Options
ARC Options
NS32K Options
Options for Code Generation Conventions
Environment Variables Affecting GCC
Running Protoize
Installing GNU CC
Files Created by
configure
Configurations Supported by GNU CC
Compilation in a Separate Directory
Building and Installing a Cross-Compiler
Steps of Cross-Compilation
Configuring a Cross-Compiler
Tools and Libraries for a Cross-Compiler
`libgcc.a'
and Cross-Compilers
Cross-Compilers and Header Files
Actually Building the Cross-Compiler
Installing GNU CC on the Sun
Installing GNU CC on VMS
collect2
Standard Header File Directories
Extensions to the C Language Family
Statements and Declarations in Expressions
Locally Declared Labels
Labels as Values
Nested Functions
Constructing Function Calls
Naming an Expression's Type
Referring to a Type with
typeof
Generalized Lvalues
Conditionals with Omitted Operands
Double-Word Integers
Complex Numbers
Hex Floats
Arrays of Length Zero
Arrays of Variable Length
Macros with Variable Numbers of Arguments
Non-Lvalue Arrays May Have Subscripts
Arithmetic on
void
- and Function-Pointers
Non-Constant Initializers
Constructor Expressions
Labeled Elements in Initializers
Case Ranges
Cast to a Union Type
Declaring Attributes of Functions
Prototypes and Old-Style Function Definitions
C++ Style Comments
Dollar Signs in Identifier Names
The Character
ESC
in Constants
Inquiring on Alignment of Types or Variables
Specifying Attributes of Variables
Specifying Attributes of Types
An Inline Function is As Fast As a Macro
Assembler Instructions with C Expression Operands
i386 floating point asm operands
Controlling Names Used in Assembler Code
Variables in Specified Registers
Defining Global Register Variables
Specifying Registers for Local Variables
Alternate Keywords
Incomplete
enum
Types
Function Names as Strings
Getting the Return or Frame Address of a Function
Other built-in functions provided by GNU CC
Deprecated Features
Extensions to the C++ Language
Named Return Values in C++
Minimum and Maximum Operators in C++
goto
and Destructors in GNU C++
Declarations and Definitions in One Header
Where's the Template?
Extracting the function pointer from a bound pointer to member function
Type Abstraction using Signatures
gcov
: a Test Coverage Program
Introduction to
gcov
Invoking gcov
Using
gcov
with GCC Optimization
Brief description of
gcov
data files
Known Causes of Trouble with GCC
Actual Bugs We Haven't Fixed Yet
Installation Problems
Cross-Compiler Problems
Interoperation
Problems Compiling Certain Programs
Incompatibilities of GCC
Fixed Header Files
Standard Libraries
Disappointments and Misunderstandings
Common Misunderstandings with GNU C++
Declare
and
Define Static Members
Temporaries May Vanish Before You Expect
Implicit Copy-Assignment for Virtual Bases
Caveats of using
protoize
Certain Changes We Don't Want to Make
Warning Messages and Error Messages
Reporting Bugs
Have You Found a Bug?
Where to Report Bugs
How to Report Bugs
Sending Patches for GCC
How To Get Help with GCC
Contributing to GCC Development
Using GCC on VMS
Include Files and VMS
Global Declarations and VMS
Other VMS Issues
GCC and Portability
Interfacing to GCC Output
Passes and Files of the Compiler
RTL Representation
RTL Object Types
RTL Classes and Formats
Access to Operands
Flags in an RTL Expression
Machine Modes
Constant Expression Types
Registers and Memory
RTL Expressions for Arithmetic
Comparison Operations
Bit Fields
Conversions
Declarations
Side Effect Expressions
Embedded Side-Effects on Addresses
Assembler Instructions as Expressions
Insns
RTL Representation of Function-Call Insns
Structure Sharing Assumptions
Reading RTL
Machine Descriptions
Everything about Instruction Patterns
Example of
define_insn
RTL Template
Output Templates and Operand Substitution
C Statements for Assembler Output
Operand Constraints
Simple Constraints
Multiple Alternative Constraints
Register Class Preferences
Constraint Modifier Characters
Constraints for Particular Machines
Not Using Constraints
Standard Pattern Names For Generation
When the Order of Patterns Matters
Interdependence of Patterns
Defining Jump Instruction Patterns
Canonicalization of Instructions
Machine-Specific Peephole Optimizers
Defining RTL Sequences for Code Generation
Defining How to Split Instructions
Instruction Attributes
Defining Attributes and their Values
Attribute Expressions
Assigning Attribute Values to Insns
Example of Attribute Specifications
Computing the Length of an Insn
Constant Attributes
Delay Slot Scheduling
Specifying Function Units
Target Description Macros
Controlling the Compilation Driver,
`gcc'
Run-time Target Specification
Storage Layout
Layout of Source Language Data Types
Register Usage
Basic Characteristics of Registers
Order of Allocation of Registers
How Values Fit in Registers
Handling Leaf Functions
Registers That Form a Stack
Obsolete Macros for Controlling Register Usage
Register Classes
Stack Layout and Calling Conventions
Basic Stack Layout
Specifying How Stack Checking is Done
Registers That Address the Stack Frame
Eliminating Frame Pointer and Arg Pointer
Passing Function Arguments on the Stack
Passing Arguments in Registers
How Scalar Function Values Are Returned
How Large Values Are Returned
Caller-Saves Register Allocation
Function Entry and Exit
Generating Code for Profiling
Implementing the Varargs Macros
Trampolines for Nested Functions
Implicit Calls to Library Routines
Addressing Modes
Condition Code Status
Describing Relative Costs of Operations
Dividing the Output into Sections (Texts, Data, ...)
Position Independent Code
Defining the Output Assembler Language
The Overall Framework of an Assembler File
Output of Data
Output of Uninitialized Variables
Output and Generation of Labels
How Initialization Functions Are Handled
Macros Controlling Initialization Routines
Output of Assembler Instructions
Output of Dispatch Tables
Assembler Commands for Exception Regions
Assembler Commands for Alignment
Controlling Debugging Information Format
Macros Affecting All Debugging Formats
Specific Options for DBX Output
Open-Ended Hooks for DBX Format
File Names in DBX Format
Macros for SDB and DWARF Output
Cross Compilation and Floating Point
Miscellaneous Parameters
The Configuration File
Makefile Fragments
The Target Makefile Fragment
The Host Makefile Fragment
Funding Free Software
Linux and the GNU Project
GNU GENERAL PUBLIC LICENSE
Preamble
TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION
How to Apply These Terms to Your New Programs
Contributors to GCC
Index