--- gcc/gcc.info-23 2018/04/24 18:11:10 1.1 +++ gcc/gcc.info-23 2018/04/24 18:41:49 1.1.1.4 @@ -1,12 +1,13 @@ -This is Info file gcc.info, produced by Makeinfo-1.54 from the input -file gcc.texi. +This is Info file gcc.info, produced by Makeinfo version 1.67 from the +input file gcc.texi. This file documents the use and the internals of the GNU compiler. - Published by the Free Software Foundation 675 Massachusetts Avenue -Cambridge, MA 02139 USA + Published by the Free Software Foundation 59 Temple Place - Suite 330 +Boston, MA 02111-1307 USA - Copyright (C) 1988, 1989, 1992, 1993 Free Software Foundation, Inc. + Copyright (C) 1988, 1989, 1992, 1993, 1994, 1995 Free Software +Foundation, Inc. Permission is granted to make and distribute verbatim copies of this manual provided the copyright notice and this permission notice are @@ -14,1838 +15,1132 @@ preserved on all copies. Permission is granted to copy and distribute modified versions of this manual under the conditions for verbatim copying, provided also -that the sections entitled "GNU General Public License" and "Protect -Your Freedom--Fight `Look And Feel'" are included exactly as in the -original, and provided that the entire resulting derived work is -distributed under the terms of a permission notice identical to this -one. +that the sections entitled "GNU General Public License," "Funding for +Free Software," and "Protect Your Freedom--Fight `Look And Feel'" are +included exactly as in the original, and provided that the entire +resulting derived work is distributed under the terms of a permission +notice identical to this one. Permission is granted to copy and distribute translations of this manual into another language, under the above conditions for modified versions, except that the sections entitled "GNU General Public -License" and "Protect Your Freedom--Fight `Look And Feel'", and this -permission notice, may be included in translations approved by the Free -Software Foundation instead of in the original English. +License," "Funding for Free Software," and "Protect Your Freedom--Fight +`Look And Feel'", and this permission notice, may be included in +translations approved by the Free Software Foundation instead of in the +original English.  -File: gcc.info, Node: Index, Prev: Config, Up: Top +File: gcc.info, Node: Uninitialized Data, Next: Label Output, Prev: Data Output, Up: Assembler Format -Index -***** +Output of Uninitialized Variables +--------------------------------- + + Each of the macros in this section is used to do the whole job of +outputting a single uninitialized variable. + +`ASM_OUTPUT_COMMON (STREAM, NAME, SIZE, ROUNDED)' + A C statement (sans semicolon) to output to the stdio stream + STREAM the assembler definition of a common-label named NAME whose + size is SIZE bytes. The variable ROUNDED is the size rounded up + to whatever alignment the caller wants. + + Use the expression `assemble_name (STREAM, NAME)' to output the + name itself; before and after that, output the additional + assembler syntax for defining the name, and a newline. + + This macro controls how the assembler definitions of uninitialized + global variables are output. + +`ASM_OUTPUT_ALIGNED_COMMON (STREAM, NAME, SIZE, ALIGNMENT)' + Like `ASM_OUTPUT_COMMON' except takes the required alignment as a + separate, explicit argument. If you define this macro, it is used + in place of `ASM_OUTPUT_COMMON', and gives you more flexibility in + handling the required alignment of the variable. The alignment is + specified as the number of bits. + +`ASM_OUTPUT_SHARED_COMMON (STREAM, NAME, SIZE, ROUNDED)' + If defined, it is similar to `ASM_OUTPUT_COMMON', except that it + is used when NAME is shared. If not defined, `ASM_OUTPUT_COMMON' + will be used. + +`ASM_OUTPUT_LOCAL (STREAM, NAME, SIZE, ROUNDED)' + A C statement (sans semicolon) to output to the stdio stream + STREAM the assembler definition of a local-common-label named NAME + whose size is SIZE bytes. The variable ROUNDED is the size + rounded up to whatever alignment the caller wants. + + Use the expression `assemble_name (STREAM, NAME)' to output the + name itself; before and after that, output the additional + assembler syntax for defining the name, and a newline. + + This macro controls how the assembler definitions of uninitialized + static variables are output. + +`ASM_OUTPUT_ALIGNED_LOCAL (STREAM, NAME, SIZE, ALIGNMENT)' + Like `ASM_OUTPUT_LOCAL' except takes the required alignment as a + separate, explicit argument. If you define this macro, it is used + in place of `ASM_OUTPUT_LOCAL', and gives you more flexibility in + handling the required alignment of the variable. The alignment is + specified as the number of bits. + +`ASM_OUTPUT_SHARED_LOCAL (STREAM, NAME, SIZE, ROUNDED)' + If defined, it is similar to `ASM_OUTPUT_LOCAL', except that it is + used when NAME is shared. If not defined, `ASM_OUTPUT_LOCAL' will + be used. + + +File: gcc.info, Node: Label Output, Next: Initialization, Prev: Uninitialized Data, Up: Assembler Format + +Output and Generation of Labels +------------------------------- + + This is about outputting labels. + +`ASM_OUTPUT_LABEL (STREAM, NAME)' + A C statement (sans semicolon) to output to the stdio stream + STREAM the assembler definition of a label named NAME. Use the + expression `assemble_name (STREAM, NAME)' to output the name + itself; before and after that, output the additional assembler + syntax for defining the name, and a newline. + +`ASM_DECLARE_FUNCTION_NAME (STREAM, NAME, DECL)' + A C statement (sans semicolon) to output to the stdio stream + STREAM any text necessary for declaring the name NAME of a + function which is being defined. This macro is responsible for + outputting the label definition (perhaps using + `ASM_OUTPUT_LABEL'). The argument DECL is the `FUNCTION_DECL' + tree node representing the function. + + If this macro is not defined, then the function name is defined in + the usual manner as a label (by means of `ASM_OUTPUT_LABEL'). + +`ASM_DECLARE_FUNCTION_SIZE (STREAM, NAME, DECL)' + A C statement (sans semicolon) to output to the stdio stream + STREAM any text necessary for declaring the size of a function + which is being defined. The argument NAME is the name of the + function. The argument DECL is the `FUNCTION_DECL' tree node + representing the function. + + If this macro is not defined, then the function size is not + defined. + +`ASM_DECLARE_OBJECT_NAME (STREAM, NAME, DECL)' + A C statement (sans semicolon) to output to the stdio stream + STREAM any text necessary for declaring the name NAME of an + initialized variable which is being defined. This macro must + output the label definition (perhaps using `ASM_OUTPUT_LABEL'). + The argument DECL is the `VAR_DECL' tree node representing the + variable. + + If this macro is not defined, then the variable name is defined in + the usual manner as a label (by means of `ASM_OUTPUT_LABEL'). + +`ASM_FINISH_DECLARE_OBJECT (STREAM, DECL, TOPLEVEL, ATEND)' + A C statement (sans semicolon) to finish up declaring a variable + name once the compiler has processed its initializer fully and + thus has had a chance to determine the size of an array when + controlled by an initializer. This is used on systems where it's + necessary to declare something about the size of the object. + + If you don't define this macro, that is equivalent to defining it + to do nothing. + +`ASM_GLOBALIZE_LABEL (STREAM, NAME)' + A C statement (sans semicolon) to output to the stdio stream + STREAM some commands that will make the label NAME global; that + is, available for reference from other files. Use the expression + `assemble_name (STREAM, NAME)' to output the name itself; before + and after that, output the additional assembler syntax for making + that name global, and a newline. + +`ASM_WEAKEN_LABEL' + A C statement (sans semicolon) to output to the stdio stream + STREAM some commands that will make the label NAME weak; that is, + available for reference from other files but only used if no other + definition is available. Use the expression `assemble_name + (STREAM, NAME)' to output the name itself; before and after that, + output the additional assembler syntax for making that name weak, + and a newline. + + If you don't define this macro, GNU CC will not support weak + symbols and you should not define the `SUPPORTS_WEAK' macro. + +`SUPPORTS_WEAK' + A C expression which evaluates to true if the target supports weak + symbols. + + If you don't define this macro, `defaults.h' provides a default + definition. If `ASM_WEAKEN_LABEL' is defined, the default + definition is `1'; otherwise, it is `0'. Define this macro if you + want to control weak symbol support with a compiler flag such as + `-melf'. + +`ASM_OUTPUT_EXTERNAL (STREAM, DECL, NAME)' + A C statement (sans semicolon) to output to the stdio stream + STREAM any text necessary for declaring the name of an external + symbol named NAME which is referenced in this compilation but not + defined. The value of DECL is the tree node for the declaration. + + This macro need not be defined if it does not need to output + anything. The GNU assembler and most Unix assemblers don't + require anything. + +`ASM_OUTPUT_EXTERNAL_LIBCALL (STREAM, SYMREF)' + A C statement (sans semicolon) to output on STREAM an assembler + pseudo-op to declare a library function name external. The name + of the library function is given by SYMREF, which has type `rtx' + and is a `symbol_ref'. + + This macro need not be defined if it does not need to output + anything. The GNU assembler and most Unix assemblers don't + require anything. + +`ASM_OUTPUT_LABELREF (STREAM, NAME)' + A C statement (sans semicolon) to output to the stdio stream + STREAM a reference in assembler syntax to a label named NAME. + This should add `_' to the front of the name, if that is customary + on your operating system, as it is in most Berkeley Unix systems. + This macro is used in `assemble_name'. + +`ASM_OUTPUT_INTERNAL_LABEL (STREAM, PREFIX, NUM)' + A C statement to output to the stdio stream STREAM a label whose + name is made from the string PREFIX and the number NUM. + + It is absolutely essential that these labels be distinct from the + labels used for user-level functions and variables. Otherwise, + certain programs will have name conflicts with internal labels. + + It is desirable to exclude internal labels from the symbol table + of the object file. Most assemblers have a naming convention for + labels that should be excluded; on many systems, the letter `L' at + the beginning of a label has this effect. You should find out what + convention your system uses, and follow it. + + The usual definition of this macro is as follows: + + fprintf (STREAM, "L%s%d:\n", PREFIX, NUM) + +`ASM_GENERATE_INTERNAL_LABEL (STRING, PREFIX, NUM)' + A C statement to store into the string STRING a label whose name + is made from the string PREFIX and the number NUM. + + This string, when output subsequently by `assemble_name', should + produce the output that `ASM_OUTPUT_INTERNAL_LABEL' would produce + with the same PREFIX and NUM. + + If the string begins with `*', then `assemble_name' will output + the rest of the string unchanged. It is often convenient for + `ASM_GENERATE_INTERNAL_LABEL' to use `*' in this way. If the + string doesn't start with `*', then `ASM_OUTPUT_LABELREF' gets to + output the string, and may change it. (Of course, + `ASM_OUTPUT_LABELREF' is also part of your machine description, so + you should know what it does on your machine.) + +`ASM_FORMAT_PRIVATE_NAME (OUTVAR, NAME, NUMBER)' + A C expression to assign to OUTVAR (which is a variable of type + `char *') a newly allocated string made from the string NAME and + the number NUMBER, with some suitable punctuation added. Use + `alloca' to get space for the string. + + The string will be used as an argument to `ASM_OUTPUT_LABELREF' to + produce an assembler label for an internal static variable whose + name is NAME. Therefore, the string must be such as to result in + valid assembler code. The argument NUMBER is different each time + this macro is executed; it prevents conflicts between + similarly-named internal static variables in different scopes. + + Ideally this string should not be a valid C identifier, to prevent + any conflict with the user's own symbols. Most assemblers allow + periods or percent signs in assembler symbols; putting at least + one of these between the name and the number will suffice. + +`ASM_OUTPUT_DEF (STREAM, NAME, VALUE)' + A C statement to output to the stdio stream STREAM assembler code + which defines (equates) the symbol NAME to have the value VALUE. + + If SET_ASM_OP is defined, a default definition is provided which is + correct for most systems. + +`OBJC_GEN_METHOD_LABEL (BUF, IS_INST, CLASS_NAME, CAT_NAME, SEL_NAME)' + Define this macro to override the default assembler names used for + Objective C methods. + + The default name is a unique method number followed by the name of + the class (e.g. `_1_Foo'). For methods in categories, the name of + the category is also included in the assembler name (e.g. + `_1_Foo_Bar'). + + These names are safe on most systems, but make debugging difficult + since the method's selector is not present in the name. + Therefore, particular systems define other ways of computing names. + + BUF is an expression of type `char *' which gives you a buffer in + which to store the name; its length is as long as CLASS_NAME, + CAT_NAME and SEL_NAME put together, plus 50 characters extra. + + The argument IS_INST specifies whether the method is an instance + method or a class method; CLASS_NAME is the name of the class; + CAT_NAME is the name of the category (or NULL if the method is not + in a category); and SEL_NAME is the name of the selector. + + On systems where the assembler can handle quoted names, you can + use this macro to provide more human-readable names. + + +File: gcc.info, Node: Initialization, Next: Macros for Initialization, Prev: Label Output, Up: Assembler Format + +How Initialization Functions Are Handled +---------------------------------------- + + The compiled code for certain languages includes "constructors" +(also called "initialization routines")--functions to initialize data +in the program when the program is started. These functions need to be +called before the program is "started"--that is to say, before `main' +is called. + + Compiling some languages generates "destructors" (also called +"termination routines") that should be called when the program +terminates. + + To make the initialization and termination functions work, the +compiler must output something in the assembler code to cause those +functions to be called at the appropriate time. When you port the +compiler to a new system, you need to specify how to do this. + + There are two major ways that GCC currently supports the execution of +initialization and termination functions. Each way has two variants. +Much of the structure is common to all four variations. + + The linker must build two lists of these functions--a list of +initialization functions, called `__CTOR_LIST__', and a list of +termination functions, called `__DTOR_LIST__'. + + Each list always begins with an ignored function pointer (which may +hold 0, -1, or a count of the function pointers after it, depending on +the environment). This is followed by a series of zero or more function +pointers to constructors (or destructors), followed by a function +pointer containing zero. + + Depending on the operating system and its executable file format, +either `crtstuff.c' or `libgcc2.c' traverses these lists at startup +time and exit time. Constructors are called in reverse order of the +list; destructors in forward order. + + The best way to handle static constructors works only for object file +formats which provide arbitrarily-named sections. A section is set +aside for a list of constructors, and another for a list of destructors. +Traditionally these are called `.ctors' and `.dtors'. Each object file +that defines an initialization function also puts a word in the +constructor section to point to that function. The linker accumulates +all these words into one contiguous `.ctors' section. Termination +functions are handled similarly. + + To use this method, you need appropriate definitions of the macros +`ASM_OUTPUT_CONSTRUCTOR' and `ASM_OUTPUT_DESTRUCTOR'. Usually you can +get them by including `svr4.h'. + + When arbitrary sections are available, there are two variants, +depending upon how the code in `crtstuff.c' is called. On systems that +support an "init" section which is executed at program startup, parts +of `crtstuff.c' are compiled into that section. The program is linked +by the `gcc' driver like this: + + ld -o OUTPUT_FILE crtbegin.o ... crtend.o -lgcc + + The head of a function (`__do_global_ctors') appears in the init +section of `crtbegin.o'; the remainder of the function appears in the +init section of `crtend.o'. The linker will pull these two parts of +the section together, making a whole function. If any of the user's +object files linked into the middle of it contribute code, then that +code will be executed as part of the body of `__do_global_ctors'. + + To use this variant, you must define the `INIT_SECTION_ASM_OP' macro +properly. + + If no init section is available, do not define +`INIT_SECTION_ASM_OP'. Then `__do_global_ctors' is built into the text +section like all other functions, and resides in `libgcc.a'. When GCC +compiles any function called `main', it inserts a procedure call to +`__main' as the first executable code after the function prologue. The +`__main' function, also defined in `libgcc2.c', simply calls +`__do_global_ctors'. + + In file formats that don't support arbitrary sections, there are +again two variants. In the simplest variant, the GNU linker (GNU `ld') +and an `a.out' format must be used. In this case, +`ASM_OUTPUT_CONSTRUCTOR' is defined to produce a `.stabs' entry of type +`N_SETT', referencing the name `__CTOR_LIST__', and with the address of +the void function containing the initialization code as its value. The +GNU linker recognizes this as a request to add the value to a "set"; +the values are accumulated, and are eventually placed in the executable +as a vector in the format described above, with a leading (ignored) +count and a trailing zero element. `ASM_OUTPUT_DESTRUCTOR' is handled +similarly. Since no init section is available, the absence of +`INIT_SECTION_ASM_OP' causes the compilation of `main' to call `__main' +as above, starting the initialization process. + + The last variant uses neither arbitrary sections nor the GNU linker. +This is preferable when you want to do dynamic linking and when using +file formats which the GNU linker does not support, such as `ECOFF'. In +this case, `ASM_OUTPUT_CONSTRUCTOR' does not produce an `N_SETT' +symbol; initialization and termination functions are recognized simply +by their names. This requires an extra program in the linkage step, +called `collect2'. This program pretends to be the linker, for use +with GNU CC; it does its job by running the ordinary linker, but also +arranges to include the vectors of initialization and termination +functions. These functions are called via `__main' as described above. + + Choosing among these configuration options has been simplified by a +set of operating-system-dependent files in the `config' subdirectory. +These files define all of the relevant parameters. Usually it is +sufficient to include one into your specific machine-dependent +configuration file. These files are: + +`aoutos.h' + For operating systems using the `a.out' format. + +`next.h' + For operating systems using the `MachO' format. + +`svr3.h' + For System V Release 3 and similar systems using `COFF' format. + +`svr4.h' + For System V Release 4 and similar systems using `ELF' format. + +`vms.h' + For the VMS operating system. + + The following section describes the specific macros that control and +customize the handling of initialization and termination functions. + + +File: gcc.info, Node: Macros for Initialization, Next: Instruction Output, Prev: Initialization, Up: Assembler Format + +Macros Controlling Initialization Routines +------------------------------------------ + + Here are the macros that control how the compiler handles +initialization and termination functions: + +`INIT_SECTION_ASM_OP' + If defined, a C string constant for the assembler operation to + identify the following data as initialization code. If not + defined, GNU CC will assume such a section does not exist. When + you are using special sections for initialization and termination + functions, this macro also controls how `crtstuff.c' and + `libgcc2.c' arrange to run the initialization functions. + +`HAS_INIT_SECTION' + If defined, `main' will not call `__main' as described above. + This macro should be defined for systems that control the contents + of the init section on a symbol-by-symbol basis, such as OSF/1, + and should not be defined explicitly for systems that support + `INIT_SECTION_ASM_OP'. + +`LD_INIT_SWITCH' + If defined, a C string constant for a switch that tells the linker + that the following symbol is an initialization routine. + +`LD_FINI_SWITCH' + If defined, a C string constant for a switch that tells the linker + that the following symbol is a finalization routine. + +`INVOKE__main' + If defined, `main' will call `__main' despite the presence of + `INIT_SECTION_ASM_OP'. This macro should be defined for systems + where the init section is not actually run automatically, but is + still useful for collecting the lists of constructors and + destructors. + +`ASM_OUTPUT_CONSTRUCTOR (STREAM, NAME)' + Define this macro as a C statement to output on the stream STREAM + the assembler code to arrange to call the function named NAME at + initialization time. + + Assume that NAME is the name of a C function generated + automatically by the compiler. This function takes no arguments. + Use the function `assemble_name' to output the name NAME; this + performs any system-specific syntactic transformations such as + adding an underscore. + + If you don't define this macro, nothing special is output to + arrange to call the function. This is correct when the function + will be called in some other manner--for example, by means of the + `collect2' program, which looks through the symbol table to find + these functions by their names. + +`ASM_OUTPUT_DESTRUCTOR (STREAM, NAME)' + This is like `ASM_OUTPUT_CONSTRUCTOR' but used for termination + functions rather than initialization functions. + + If your system uses `collect2' as the means of processing +constructors, then that program normally uses `nm' to scan an object +file for constructor functions to be called. On certain kinds of +systems, you can define these macros to make `collect2' work faster +(and, in some cases, make it work at all): + +`OBJECT_FORMAT_COFF' + Define this macro if the system uses COFF (Common Object File + Format) object files, so that `collect2' can assume this format + and scan object files directly for dynamic constructor/destructor + functions. + +`OBJECT_FORMAT_ROSE' + Define this macro if the system uses ROSE format object files, so + that `collect2' can assume this format and scan object files + directly for dynamic constructor/destructor functions. + + These macros are effective only in a native compiler; `collect2' as + part of a cross compiler always uses `nm' for the target machine. + +`REAL_NM_FILE_NAME' + Define this macro as a C string constant containing the file name + to use to execute `nm'. The default is to search the path + normally for `nm'. + + If your system supports shared libraries and has a program to list + the dynamic dependencies of a given library or executable, you can + define these macros to enable support for running initialization + and termination functions in shared libraries: + +`LDD_SUFFIX' + Define this macro to a C string constant containing the name of the + program which lists dynamic dependencies, like `"ldd"' under SunOS + 4. + +`PARSE_LDD_OUTPUT (PTR)' + Define this macro to be C code that extracts filenames from the + output of the program denoted by `LDD_SUFFIX'. PTR is a variable + of type `char *' that points to the beginning of a line of output + from `LDD_SUFFIX'. If the line lists a dynamic dependency, the + code must advance PTR to the beginning of the filename on that + line. Otherwise, it must set PTR to `NULL'. + + +File: gcc.info, Node: Instruction Output, Next: Dispatch Tables, Prev: Macros for Initialization, Up: Assembler Format + +Output of Assembler Instructions +-------------------------------- + + This describes assembler instruction output. + +`REGISTER_NAMES' + A C initializer containing the assembler's names for the machine + registers, each one as a C string constant. This is what + translates register numbers in the compiler into assembler + language. + +`ADDITIONAL_REGISTER_NAMES' + If defined, a C initializer for an array of structures containing + a name and a register number. This macro defines additional names + for hard registers, thus allowing the `asm' option in declarations + to refer to registers using alternate names. + +`ASM_OUTPUT_OPCODE (STREAM, PTR)' + Define this macro if you are using an unusual assembler that + requires different names for the machine instructions. + + The definition is a C statement or statements which output an + assembler instruction opcode to the stdio stream STREAM. The + macro-operand PTR is a variable of type `char *' which points to + the opcode name in its "internal" form--the form that is written + in the machine description. The definition should output the + opcode name to STREAM, performing any translation you desire, and + increment the variable PTR to point at the end of the opcode so + that it will not be output twice. + + In fact, your macro definition may process less than the entire + opcode name, or more than the opcode name; but if you want to + process text that includes `%'-sequences to substitute operands, + you must take care of the substitution yourself. Just be sure to + increment PTR over whatever text should not be output normally. + + If you need to look at the operand values, they can be found as the + elements of `recog_operand'. + + If the macro definition does nothing, the instruction is output in + the usual way. + +`FINAL_PRESCAN_INSN (INSN, OPVEC, NOPERANDS)' + If defined, a C statement to be executed just prior to the output + of assembler code for INSN, to modify the extracted operands so + they will be output differently. + + Here the argument OPVEC is the vector containing the operands + extracted from INSN, and NOPERANDS is the number of elements of + the vector which contain meaningful data for this insn. The + contents of this vector are what will be used to convert the insn + template into assembler code, so you can change the assembler + output by changing the contents of the vector. + + This macro is useful when various assembler syntaxes share a single + file of instruction patterns; by defining this macro differently, + you can cause a large class of instructions to be output + differently (such as with rearranged operands). Naturally, + variations in assembler syntax affecting individual insn patterns + ought to be handled by writing conditional output routines in + those patterns. + + If this macro is not defined, it is equivalent to a null statement. + +`PRINT_OPERAND (STREAM, X, CODE)' + A C compound statement to output to stdio stream STREAM the + assembler syntax for an instruction operand X. X is an RTL + expression. + + CODE is a value that can be used to specify one of several ways of + printing the operand. It is used when identical operands must be + printed differently depending on the context. CODE comes from the + `%' specification that was used to request printing of the + operand. If the specification was just `%DIGIT' then CODE is 0; + if the specification was `%LTR DIGIT' then CODE is the ASCII code + for LTR. + + If X is a register, this macro should print the register's name. + The names can be found in an array `reg_names' whose type is `char + *[]'. `reg_names' is initialized from `REGISTER_NAMES'. + + When the machine description has a specification `%PUNCT' (a `%' + followed by a punctuation character), this macro is called with a + null pointer for X and the punctuation character for CODE. + +`PRINT_OPERAND_PUNCT_VALID_P (CODE)' + A C expression which evaluates to true if CODE is a valid + punctuation character for use in the `PRINT_OPERAND' macro. If + `PRINT_OPERAND_PUNCT_VALID_P' is not defined, it means that no + punctuation characters (except for the standard one, `%') are used + in this way. + +`PRINT_OPERAND_ADDRESS (STREAM, X)' + A C compound statement to output to stdio stream STREAM the + assembler syntax for an instruction operand that is a memory + reference whose address is X. X is an RTL expression. + + On some machines, the syntax for a symbolic address depends on the + section that the address refers to. On these machines, define the + macro `ENCODE_SECTION_INFO' to store the information into the + `symbol_ref', and then check for it here. *Note Assembler + Format::. + +`DBR_OUTPUT_SEQEND(FILE)' + A C statement, to be executed after all slot-filler instructions + have been output. If necessary, call `dbr_sequence_length' to + determine the number of slots filled in a sequence (zero if not + currently outputting a sequence), to decide how many no-ops to + output, or whatever. + + Don't define this macro if it has nothing to do, but it is helpful + in reading assembly output if the extent of the delay sequence is + made explicit (e.g. with white space). + + Note that output routines for instructions with delay slots must be + prepared to deal with not being output as part of a sequence (i.e. + when the scheduling pass is not run, or when no slot fillers could + be found.) The variable `final_sequence' is null when not + processing a sequence, otherwise it contains the `sequence' rtx + being output. + +`REGISTER_PREFIX' +`LOCAL_LABEL_PREFIX' +`USER_LABEL_PREFIX' +`IMMEDIATE_PREFIX' + If defined, C string expressions to be used for the `%R', `%L', + `%U', and `%I' options of `asm_fprintf' (see `final.c'). These + are useful when a single `md' file must support multiple assembler + formats. In that case, the various `tm.h' files can define these + macros differently. + +`ASSEMBLER_DIALECT' + If your target supports multiple dialects of assembler language + (such as different opcodes), define this macro as a C expression + that gives the numeric index of the assembler language dialect to + use, with zero as the first variant. + + If this macro is defined, you may use + `{option0|option1|option2...}' constructs in the output templates + of patterns (*note Output Template::.) or in the first argument of + `asm_fprintf'. This construct outputs `option0', `option1' or + `option2', etc., if the value of `ASSEMBLER_DIALECT' is zero, one + or two, etc. Any special characters within these strings retain + their usual meaning. + + If you do not define this macro, the characters `{', `|' and `}' + do not have any special meaning when used in templates or operands + to `asm_fprintf'. + + Define the macros `REGISTER_PREFIX', `LOCAL_LABEL_PREFIX', + `USER_LABEL_PREFIX' and `IMMEDIATE_PREFIX' if you can express the + variations in assemble language syntax with that mechanism. Define + `ASSEMBLER_DIALECT' and use the `{option0|option1}' syntax if the + syntax variant are larger and involve such things as different + opcodes or operand order. + +`ASM_OUTPUT_REG_PUSH (STREAM, REGNO)' + A C expression to output to STREAM some assembler code which will + push hard register number REGNO onto the stack. The code need not + be optimal, since this macro is used only when profiling. + +`ASM_OUTPUT_REG_POP (STREAM, REGNO)' + A C expression to output to STREAM some assembler code which will + pop hard register number REGNO off of the stack. The code need + not be optimal, since this macro is used only when profiling. + + +File: gcc.info, Node: Dispatch Tables, Next: Alignment Output, Prev: Instruction Output, Up: Assembler Format + +Output of Dispatch Tables +------------------------- + + This concerns dispatch tables. + +`ASM_OUTPUT_ADDR_DIFF_ELT (STREAM, VALUE, REL)' + This macro should be provided on machines where the addresses in a + dispatch table are relative to the table's own address. + + The definition should be a C statement to output to the stdio + stream STREAM an assembler pseudo-instruction to generate a + difference between two labels. VALUE and REL are the numbers of + two internal labels. The definitions of these labels are output + using `ASM_OUTPUT_INTERNAL_LABEL', and they must be printed in the + same way here. For example, + + fprintf (STREAM, "\t.word L%d-L%d\n", + VALUE, REL) + +`ASM_OUTPUT_ADDR_VEC_ELT (STREAM, VALUE)' + This macro should be provided on machines where the addresses in a + dispatch table are absolute. + + The definition should be a C statement to output to the stdio + stream STREAM an assembler pseudo-instruction to generate a + reference to a label. VALUE is the number of an internal label + whose definition is output using `ASM_OUTPUT_INTERNAL_LABEL'. For + example, + + fprintf (STREAM, "\t.word L%d\n", VALUE) + +`ASM_OUTPUT_CASE_LABEL (STREAM, PREFIX, NUM, TABLE)' + Define this if the label before a jump-table needs to be output + specially. The first three arguments are the same as for + `ASM_OUTPUT_INTERNAL_LABEL'; the fourth argument is the jump-table + which follows (a `jump_insn' containing an `addr_vec' or + `addr_diff_vec'). + + This feature is used on system V to output a `swbeg' statement for + the table. + + If this macro is not defined, these labels are output with + `ASM_OUTPUT_INTERNAL_LABEL'. + +`ASM_OUTPUT_CASE_END (STREAM, NUM, TABLE)' + Define this if something special must be output at the end of a + jump-table. The definition should be a C statement to be executed + after the assembler code for the table is written. It should write + the appropriate code to stdio stream STREAM. The argument TABLE + is the jump-table insn, and NUM is the label-number of the + preceding label. + + If this macro is not defined, nothing special is output at the end + of the jump-table. + + +File: gcc.info, Node: Alignment Output, Prev: Dispatch Tables, Up: Assembler Format + +Assembler Commands for Alignment +-------------------------------- + + This describes commands for alignment. + +`ASM_OUTPUT_ALIGN_CODE (FILE)' + A C expression to output text to align the location counter in the + way that is desirable at a point in the code that is reached only + by jumping. + + This macro need not be defined if you don't want any special + alignment to be done at such a time. Most machine descriptions do + not currently define the macro. + +`ASM_OUTPUT_LOOP_ALIGN (FILE)' + A C expression to output text to align the location counter in the + way that is desirable at the beginning of a loop. + + This macro need not be defined if you don't want any special + alignment to be done at such a time. Most machine descriptions do + not currently define the macro. + +`ASM_OUTPUT_SKIP (STREAM, NBYTES)' + A C statement to output to the stdio stream STREAM an assembler + instruction to advance the location counter by NBYTES bytes. + Those bytes should be zero when loaded. NBYTES will be a C + expression of type `int'. + +`ASM_NO_SKIP_IN_TEXT' + Define this macro if `ASM_OUTPUT_SKIP' should not be used in the + text section because it fails put zeros in the bytes that are + skipped. This is true on many Unix systems, where the pseudo-op + to skip bytes produces no-op instructions rather than zeros when + used in the text section. + +`ASM_OUTPUT_ALIGN (STREAM, POWER)' + A C statement to output to the stdio stream STREAM an assembler + command to advance the location counter to a multiple of 2 to the + POWER bytes. POWER will be a C expression of type `int'. + + +File: gcc.info, Node: Debugging Info, Next: Cross-compilation, Prev: Assembler Format, Up: Target Macros + +Controlling Debugging Information Format +======================================== + + This describes how to specify debugging information. * Menu: -* #pragma: Misc. -* $: Dollar Signs. -* ': Incompatibilities. -* (nil): RTL Objects. -* 3b1 installation: 3b1 Install. -* ?: Min and Max. -* ?: side effect: Conditionals. -* #pragma implementation, implied: C++ Interface. -* #pragma, reason for not using: Function Attributes. -* # in template: Output Template. -* * in template: Output Statement. -* ?: extensions: Lvalues. -* ?: extensions: Conditionals. -* absM2 instruction pattern: Standard Names. -* abs and attributes: Expressions. -* ACCUMULATE_OUTGOING_ARGS and stack frames: Function Entry. -* addM3 instruction pattern: Standard Names. -* addr_diff_vec, length of: Insn Lengths. -* addr_vec, length of: Insn Lengths. -* aligned attribute: Variable Attributes. -* allocate_stack instruction pattern: Standard Names. -* alloca and SunOs: Installation. -* alloca vs variable-length arrays: Variable Length. -* alloca, for SunOs: Sun Install. -* alloca, for Unos: Unos Install. -* andM3 instruction pattern: Standard Names. -* and and attributes: Expressions. -* and, canonicalization of: Insn Canonicalizations. -* ARG_POINTER_REGNUM and virtual registers: Regs and Memory. -* ashiftrt and attributes: Expressions. -* ashift and attributes: Expressions. -* ashlM3 instruction pattern: Standard Names. -* ashrM3 instruction pattern: Standard Names. -* asm_operands, RTL sharing: Sharing. -* asm_operands, usage: Assembler. -* asm expressions: Extended Asm. -* bCOND instruction pattern: Standard Names. -* bcopy, implicit usage: Library Calls. -* BITS_BIG_ENDIAN, effect on sign_extract: Bit Fields. -* BLKmode, and function return values: Calls. -* bzero, implicit usage: Library Calls. -* call_insn and /u: Flags. -* call_pop instruction pattern: Standard Names. -* call_value_pop instruction pattern: Standard Names. -* call_value instruction pattern: Standard Names. -* call instruction pattern: Standard Names. -* call usage: Calls. -* casesi instruction pattern: Standard Names. -* cc0, RTL sharing: Sharing. -* cmpM instruction pattern: Standard Names. -* cmpstrM instruction pattern: Standard Names. -* code_label and /i: Flags. -* compare, canonicalization of: Insn Canonicalizations. -* cond and attributes: Expressions. -* const_double, RTL sharing: Sharing. -* const_int and attribute tests: Expressions. -* const_int and attributes: Expressions. -* const_int, RTL sharing: Sharing. -* const_string and attributes: Expressions. -* const applied to function: Function Attributes. -* const function attribute: Function Attributes. -* define_insn example: Example. -* divM3 instruction pattern: Standard Names. -* divmodM4 instruction pattern: Standard Names. -* div and attributes: Expressions. -* EDOM, implicit usage: Library Calls. -* ENCODE_SECTION_INFO and address validation: Addressing Modes. -* ENCODE_SECTION_INFO usage: Instruction Output. -* eq and attributes: Expressions. -* errno, implicit usage: Library Calls. -* extendMN instruction pattern: Standard Names. -* extv instruction pattern: Standard Names. -* extzv instruction pattern: Standard Names. -* ffsM2 instruction pattern: Standard Names. -* FIRST_PARM_OFFSET and virtual registers: Regs and Memory. -* fixMN2 instruction pattern: Standard Names. -* fixunsMN2 instruction pattern: Standard Names. -* fixuns_truncMN2 instruction pattern: Standard Names. -* fix_truncMN2 instruction pattern: Standard Names. -* floatMN2 instruction pattern: Standard Names. -* floatunsMN2 instruction pattern: Standard Names. -* float as function value type: Incompatibilities. -* format function attribute: Function Attributes. -* FRAME_GROWS_DOWNWARD and virtual registers: Regs and Memory. -* FRAME_POINTER_REGNUM and virtual registers: Regs and Memory. -* fscanf, and constant strings: Incompatibilities. -* ftruncM2 instruction pattern: Standard Names. -* FUNCTION_EPILOGUE and trampolines: Trampolines. -* FUNCTION_PROLOGUE and trampolines: Trampolines. -* g++ 1.XX: Invoking G++. -* g++ older version: Invoking G++. -* g++, separate compiler: Invoking G++. -* genflags, crash on Sun 4: Installation Problems. -* geu and attributes: Expressions. -* ge and attributes: Expressions. -* goto in C++: Destructors and Goto. -* gprof: Debugging Options. -* gtu and attributes: Expressions. -* gt and attributes: Expressions. -* HImode, in insn: Insns. -* if_then_else and attributes: Expressions. -* if_then_else usage: Side Effects. -* indirect_jump instruction pattern: Standard Names. -* inline automatic for C++ member fns: Inline. -* insn and /i: Flags. -* insn and /s: Flags. -* insn and /u: Flags. -* insv instruction pattern: Standard Names. -* integrated, in insn: Flags. -* integrated, in reg: Flags. -* in_struct, in code_label: Flags. -* in_struct, in insn: Flags. -* in_struct, in insn: Flags. -* in_struct, in label_ref: Flags. -* in_struct, in mem: Flags. -* in_struct, in reg: Flags. -* in_struct, in subreg: Flags. -* iorM3 instruction pattern: Standard Names. -* ior and attributes: Expressions. -* ior, canonicalization of: Insn Canonicalizations. -* label_ref and /s: Flags. -* label_ref, RTL sharing: Sharing. -* leu and attributes: Expressions. -* le and attributes: Expressions. -* load_multiple instruction pattern: Standard Names. -* long long data types: Long Long. -* longjmp and automatic variables: C Dialect Options. -* longjmp and automatic variables: Interface. -* longjmp incompatibilities: Incompatibilities. -* longjmp warnings: Warning Options. -* lshiftrt and attributes: Expressions. -* lshift and attributes: Expressions. -* lshlM3 instruction pattern: Standard Names. -* lshrM3 instruction pattern: Standard Names. -* lt and attributes: Expressions. -* main and the exit status: VMS Misc. -* match_dup and attributes: Insn Lengths. -* match_operand and attributes: Expressions. -* maxM3 instruction pattern: Standard Names. -* memcpy, implicit usage: Library Calls. -* memset, implicit usage: Library Calls. -* mem and /s: Flags. -* mem and /u: Flags. -* mem and /v: Flags. -* mem, RTL sharing: Sharing. -* minM3 instruction pattern: Standard Names. -* minus and attributes: Expressions. -* minus, canonicalization of: Insn Canonicalizations. -* mktemp, and constant strings: Incompatibilities. -* modM3 instruction pattern: Standard Names. -* mode attribute: Variable Attributes. -* mod and attributes: Expressions. -* movM instruction pattern: Standard Names. -* movstrM instruction pattern: Standard Names. -* movstrictM instruction pattern: Standard Names. -* mulM3 instruction pattern: Standard Names. -* mulhisi3 instruction pattern: Standard Names. -* mulqihi3 instruction pattern: Standard Names. -* mulsidi3 instruction pattern: Standard Names. -* mult and attributes: Expressions. -* mult, canonicalization of: Insn Canonicalizations. -* MUST_PASS_IN_STACK, and FUNCTION_ARG: Register Arguments. -* negM2 instruction pattern: Standard Names. -* neg and attributes: Expressions. -* neg, canonicalization of: Insn Canonicalizations. -* ne and attributes: Expressions. -* nop instruction pattern: Standard Names. -* noreturn function attribute: Function Attributes. -* not and attributes: Expressions. -* not, canonicalization of: Insn Canonicalizations. -* one_cmplM2 instruction pattern: Standard Names. -* packed attribute: Variable Attributes. -* pc and attributes: Insn Lengths. -* pc, RTL sharing: Sharing. -* plus and attributes: Expressions. -* plus, canonicalization of: Insn Canonicalizations. -* prof: Debugging Options. -* PUSH_ROUNDING, interaction with STACK_BOUNDARY: Storage Layout. -* QImode, in insn: Insns. -* qsort, and global register variables: Global Reg Vars. -* REG_PARM_STACK_SPACE, and FUNCTION_ARG: Register Arguments. -* reg and /i: Flags. -* reg and /s: Flags. -* reg and /u: Flags. -* reg and /v: Flags. -* reg, RTL sharing: Sharing. -* reload_in instruction pattern: Standard Names. -* reload_out instruction pattern: Standard Names. -* restore_stack_block instruction pattern: Standard Names. -* restore_stack_function instruction pattern: Standard Names. -* restore_stack_nonlocal instruction pattern: Standard Names. -* return instruction pattern: Standard Names. -* return, in C++ function header: Naming Results. -* rotlM3 instruction pattern: Standard Names. -* rotrM3 instruction pattern: Standard Names. -* sCOND instruction pattern: Standard Names. -* save_stack_block instruction pattern: Standard Names. -* save_stack_function instruction pattern: Standard Names. -* save_stack_nonlocal instruction pattern: Standard Names. -* scanf, and constant strings: Incompatibilities. -* scratch, RTL sharing: Sharing. -* setjmp incompatibilities: Incompatibilities. -* sign_extract, canonicalization of: Insn Canonicalizations. -* sqrtM2 instruction pattern: Standard Names. -* sscanf, and constant strings: Incompatibilities. -* STACK_DYNAMIC_OFFSET and virtual registers: Regs and Memory. -* STACK_POINTER_OFFSET and virtual registers: Regs and Memory. -* STACK_POINTER_REGNUM and virtual registers: Regs and Memory. -* STARTING_FRAME_OFFSET and virtual registers: Regs and Memory. -* strlenM instruction pattern: Standard Names. -* subM3 instruction pattern: Standard Names. -* subreg and /s: Flags. -* subreg and /u: Flags. -* subreg, in strict_low_part: RTL Declarations. -* subreg, special reload handling: Regs and Memory. -* SYMBOL_REF_FLAG, in ENCODE_SECTION_INFO: Sections. -* symbol_ref and /u: Flags. -* symbol_ref and /v: Flags. -* symbol_ref, RTL sharing: Sharing. -* tablejump instruction pattern: Standard Names. -* tcov: Debugging Options. -* truncMN instruction pattern: Standard Names. -* tstM instruction pattern: Standard Names. -* udivM3 instruction pattern: Standard Names. -* udivmodM4 instruction pattern: Standard Names. -* umaxM3 instruction pattern: Standard Names. -* uminM3 instruction pattern: Standard Names. -* umodM3 instruction pattern: Standard Names. -* umulhisi3 instruction pattern: Standard Names. -* umulqihi3 instruction pattern: Standard Names. -* umulsidi3 instruction pattern: Standard Names. -* unchanging, in call_insn: Flags. -* unchanging, in insn: Flags. -* unchanging, in reg and mem: Flags. -* unchanging, in subreg: Flags. -* unchanging, in symbol_ref: Flags. -* untyped_call instruction pattern: Standard Names. -* untyped_return instruction pattern: Standard Names. -* used, in symbol_ref: Flags. -* volatile applied to function: Function Attributes. -* volatil, in insn: Flags. -* volatil, in mem: Flags. -* volatil, in reg: Flags. -* volatil, in symbol_ref: Flags. -* WORDS_BIG_ENDIAN, effect on subreg: Regs and Memory. -* xorM3 instruction pattern: Standard Names. -* xor, canonicalization of: Insn Canonicalizations. -* zero_extendMN instruction pattern: Standard Names. -* zero_extract, canonicalization of: Insn Canonicalizations. -* libgcc.a: Library Calls. -* stdarg.h and register arguments: Register Arguments. -* stdarg.h and RT PC: RT Options. -* tm.h macros: Target Macros. -* varargs.h and RT PC: RT Options. -* VAXCRTL: VMS Misc. -* xm-MACHINE.h: Config. -* ! in constraint: Multi-Alternative. -* # in constraint: Modifiers. -* % in constraint: Modifiers. -* % in template: Output Template. -* & in constraint: Modifiers. -* * in constraint: Modifiers. -* + in constraint: Modifiers. -* /i in RTL dump: Flags. -* /s in RTL dump: Flags. -* /s in RTL dump: Flags. -* /u in RTL dump: Flags. -* /v in RTL dump: Flags. -* 0 in constraint: Simple Constraints. -* < in constraint: Simple Constraints. -* = in constraint: Modifiers. -* > in constraint: Simple Constraints. -* ? in constraint: Multi-Alternative. -* d in constraint: Simple Constraints. -* E in constraint: Simple Constraints. -* F in constraint: Simple Constraints. -* g in constraint: Simple Constraints. -* G in constraint: Simple Constraints. -* H in constraint: Simple Constraints. -* i in constraint: Simple Constraints. -* I in constraint: Simple Constraints. -* m in constraint: Simple Constraints. -* n in constraint: Simple Constraints. -* o in constraint: Simple Constraints. -* p in constraint: Simple Constraints. -* Q, in constraint: Simple Constraints. -* r in constraint: Simple Constraints. -* store_multiple instruction pattern: Standard Names. -* s in constraint: Simple Constraints. -* V in constraint: Simple Constraints. -* X in constraint: Simple Constraints. -* _ in variables in macros: Naming Types. -* abort: C Dialect Options. -* abort: Portability. -* abs: C Dialect Options. -* abs: Arithmetic. -* absolute value: Arithmetic. -* access to operands: Accessors. -* accessors: Accessors. -* ACCUMULATE_OUTGOING_ARGS: Stack Arguments. -* ADDITIONAL_REGISTER_NAMES: Instruction Output. -* address: RTL Template. -* address constraints: Simple Constraints. -* address of a label: Labels as Values. -* addressing modes: Addressing Modes. -* ADDRESS_COST: Costs. -* address_operand: Simple Constraints. -* addr_diff_vec: Side Effects. -* addr_vec: Side Effects. -* ADJUST_COST: Costs. -* ADJUST_INSN_LENGTH: Insn Lengths. -* aggregates as return values: Aggregate Return. -* alignment: Alignment. -* Alliant: Interoperation. -* alloca: C Dialect Options. -* ALLOCATE_TRAMPOLINE: Trampolines. -* ALL_REGS: Register Classes. -* alternate keywords: Alternate Keywords. -* AMD29K options: AMD29K Options. -* analysis, data flow: Passes. -* and: Arithmetic. -* ANSI support: C Dialect Options. -* apostrophes: Incompatibilities. -* APPLY_RESULT_SIZE: Scalar Return. -* ARGS_GROW_DOWNWARD: Frame Layout. -* argument passing: Interface. -* arguments in frame (88k): M88K Options. -* arguments in registers: Register Arguments. -* arguments on stack: Stack Arguments. -* ARG_POINTER_REGNUM: Frame Registers. -* arg_pointer_rtx: Frame Registers. -* arithmetic libraries: Interface. -* arithmetic shift: Arithmetic. -* arithmetic simplifications: Passes. -* arithmetic, in RTL: Arithmetic. -* arrays of length zero: Zero Length. -* arrays of variable length: Variable Length. -* arrays, non-lvalue: Subscripting. -* ashift: Arithmetic. -* ashiftrt: Arithmetic. -* ASM_APP_OFF: File Framework. -* ASM_APP_ON: File Framework. -* ASM_BYTE_OP: Data Output. -* ASM_CLOSE_PAREN: Data Output. -* ASM_COMMENT_START: File Framework. -* ASM_DECLARE_FUNCTION_NAME: Label Output. -* ASM_DECLARE_FUNCTION_SIZE: Label Output. -* ASM_DECLARE_OBJECT_NAME: Label Output. -* ASM_FILE_END: File Framework. -* ASM_FILE_START: File Framework. -* ASM_FINAL_SPEC: Driver. -* ASM_FINISH_DECLARE_OBJECT: Label Output. -* ASM_FORMAT_PRIVATE_NAME: Label Output. -* asm_fprintf: Instruction Output. -* ASM_GENERATE_INTERNAL_LABEL: Label Output. -* ASM_GLOBALIZE_LABEL: Label Output. -* ASM_IDENTIFY_GCC: File Framework. -* asm_input: Side Effects. -* asm_noperands: Insns. -* ASM_NO_SKIP_IN_TEXT: Alignment Output. -* ASM_OPEN_PAREN: Data Output. -* ASM_OUTPUT_ADDR_DIFF_ELT: Dispatch Tables. -* ASM_OUTPUT_ADDR_VEC_ELT: Dispatch Tables. -* ASM_OUTPUT_ALIGN: Alignment Output. -* ASM_OUTPUT_ALIGNED_COMMON: Uninitialized Data. -* ASM_OUTPUT_ALIGNED_LOCAL: Uninitialized Data. -* ASM_OUTPUT_ALIGN_CODE: Alignment Output. -* ASM_OUTPUT_ASCII: Data Output. -* ASM_OUTPUT_BYTE: Data Output. -* ASM_OUTPUT_CASE_END: Dispatch Tables. -* ASM_OUTPUT_CASE_LABEL: Dispatch Tables. -* ASM_OUTPUT_CHAR: Data Output. -* ASM_OUTPUT_COMMON: Uninitialized Data. -* ASM_OUTPUT_CONSTRUCTOR: Macros for Initialization. -* ASM_OUTPUT_DESTRUCTOR: Macros for Initialization. -* ASM_OUTPUT_DOUBLE: Data Output. -* ASM_OUTPUT_DOUBLE_INT: Data Output. -* ASM_OUTPUT_EXTERNAL: Label Output. -* ASM_OUTPUT_EXTERNAL_LIBCALL: Label Output. -* ASM_OUTPUT_FLOAT: Data Output. -* ASM_OUTPUT_IDENT: File Framework. -* ASM_OUTPUT_INT: Data Output. -* ASM_OUTPUT_INTERNAL_LABEL: Label Output. -* ASM_OUTPUT_LABEL: Label Output. -* ASM_OUTPUT_LABELREF: Label Output. -* ASM_OUTPUT_LOCAL: Uninitialized Data. -* ASM_OUTPUT_LONG_DOUBLE: Data Output. -* ASM_OUTPUT_LOOP_ALIGN: Alignment Output. -* ASM_OUTPUT_OPCODE: Instruction Output. -* ASM_OUTPUT_POOL_PROLOGUE: Data Output. -* ASM_OUTPUT_QUADRUPLE_INT: Data Output. -* ASM_OUTPUT_REG_POP: Instruction Output. -* ASM_OUTPUT_REG_PUSH: Instruction Output. -* ASM_OUTPUT_SHARED_COMMON: Uninitialized Data. -* ASM_OUTPUT_SHARED_LOCAL: Uninitialized Data. -* ASM_OUTPUT_SHORT: Data Output. -* ASM_OUTPUT_SKIP: Alignment Output. -* ASM_OUTPUT_SOURCE_FILENAME: File Framework. -* ASM_OUTPUT_SOURCE_LINE: File Framework. -* ASM_OUTPUT_SPECIAL_POOL_ENTRY: Data Output. -* ASM_SPEC: Driver. -* ASM_STABD_OP: DBX Options. -* ASM_STABN_OP: DBX Options. -* ASM_STABS_OP: DBX Options. -* assembler format: File Framework. -* assembler instructions: Extended Asm. -* assembler instructions in RTL: Assembler. -* assembler names for identifiers: Asm Labels. -* assembler syntax, 88k: M88K Options. -* ASSEMBLER_DIALECT: Instruction Output. -* assemble_name: Label Output. -* assembly code, invalid: Bug Criteria. -* assigning attribute values to insns: Tagging Insns. -* asterisk in template: Output Statement. -* atof: Cross-compilation. -* attr: Tagging Insns. -* attribute expressions: Expressions. -* attribute of variables: Variable Attributes. -* attribute specifications: Attr Example. -* attribute specifications example: Attr Example. -* attributes, defining: Defining Attributes. -* attr_flag: Expressions. -* autoincrement addressing, availability: Portability. -* autoincrement/decrement addressing: Simple Constraints. -* autoincrement/decrement analysis: Passes. -* automatic inline for C++ member fns: Inline. -* backslash: Output Template. -* backtrace for bug reports: Bug Reporting. -* barrier: Insns. -* BASE_REG_CLASS: Register Classes. -* basic blocks: Passes. -* bcmp: Config. -* BIGGEST_ALIGNMENT: Storage Layout. -* BIGGEST_FIELD_ALIGNMENT: Storage Layout. -* Bison parser generator: Installation. -* bit fields: Bit Fields. -* bit shift overflow (88k): M88K Options. -* BITFIELD_NBYTES_LIMITED: Storage Layout. -* BITS_BIG_ENDIAN: Storage Layout. -* BITS_PER_UNIT: Storage Layout. -* BITS_PER_WORD: Storage Layout. -* bitwise complement: Arithmetic. -* bitwise exclusive-or: Arithmetic. -* bitwise inclusive-or: Arithmetic. -* bitwise logical-and: Arithmetic. -* BLKmode: Machine Modes. -* BLOCK_PROFILER: Profiling. -* BLOCK_PROFILER_CODE: Profiling. -* BRANCH_COST: Costs. -* break_out_memory_refs: Addressing Modes. -* bug criteria: Bug Criteria. -* bug report mailing lists: Bug Lists. -* bugs: Bugs. -* bugs, known: Trouble. -* builtin functions: C Dialect Options. -* byte writes (29k): AMD29K Options. -* BYTES_BIG_ENDIAN: Storage Layout. -* byte_mode: Machine Modes. -* bzero: Config. -* C compilation options: Invoking GCC. -* C intermediate output, nonexistent: G++ and GCC. -* C language extensions: C Extensions. -* C language, traditional: C Dialect Options. -* C statements for assembler output: Output Statement. -* c++: Invoking G++. -* C++: G++ and GCC. -* C++ compilation options: Invoking GCC. -* C++ interface and implementation headers: C++ Interface. -* C++ language extensions: C++ Extensions. -* C++ member fns, automatically inline: Inline. -* C++ misunderstandings: C++ Misunderstandings. -* C++ named return value: Naming Results. -* C++ options, command line: C++ Dialect Options. -* C++ pragmas, effect on inlining: C++ Interface. -* C++ source file suffixes: Invoking G++. -* C++ static data, declaring and defining: Static Definitions. -* call: Side Effects. -* call-clobbered register: Register Basics. -* call-saved register: Register Basics. -* call-used register: Register Basics. -* CALLER_SAVE_PROFITABLE: Caller Saves. -* calling conventions: Stack and Calling. -* calling functions in RTL: Calls. -* call_insn: Insns. -* CALL_USED_REGISTERS: Register Basics. -* call_used_regs: Register Basics. -* canonicalization of instructions: Insn Canonicalizations. -* CAN_ELIMINATE: Elimination. -* case labels in initializers: Labeled Elements. -* case ranges: Case Ranges. -* case sensitivity and VMS: VMS Misc. -* CASE_DROPS_THROUGH: Misc. -* CASE_VALUES_THRESHOLD: Misc. -* CASE_VECTOR_MODE: Misc. -* CASE_VECTOR_PC_RELATIVE: Misc. -* cast to a union: Cast to Union. -* casts as lvalues: Lvalues. -* cc0: Regs and Memory. -* cc0_rtx: Regs and Memory. -* CC1PLUS_SPEC: Driver. -* CC1_SPEC: Driver. -* CCmode: Machine Modes. -* cc_status: Condition Code. -* CC_STATUS_MDEP: Condition Code. -* CC_STATUS_MDEP_INIT: Condition Code. -* CDImode: Machine Modes. -* change_address: Standard Names. -* CHAR_TYPE_SIZE: Type Layout. -* CHECK_FLOAT_VALUE: Storage Layout. -* CHImode: Machine Modes. -* class definitions, register: Register Classes. -* class preference constraints: Class Preferences. -* classes of RTX codes: Accessors. -* CLASS_LIKELY_SPILLED_P: Register Classes. -* CLASS_MAX_NREGS: Register Classes. -* CLEAR_INSN_CACHE (BEG, END): Trampolines. -* clobber: Side Effects. -* code generation conventions: Code Gen Options. -* code generation RTL sequences: Expander Definitions. -* code motion: Passes. -* codes, RTL expression: RTL Objects. -* code_label: Insns. -* CODE_LABEL_NUMBER: Insns. -* COImode: Machine Modes. -* combiner pass: Regs and Memory. -* command options: Invoking GCC. -* common subexpression elimination: Passes. -* compare: Arithmetic. -* compilation in a separate directory: Other Dir. -* compiler bugs, reporting: Bug Reporting. -* compiler compared to C++ preprocessor: G++ and GCC. -* compiler options, C++: C++ Dialect Options. -* compiler passes and files: Passes. -* compiler version, specifying: Target Options. -* COMPILER_PATH: Environment Variables. -* complement, bitwise: Arithmetic. -* complex numbers: Complex. -* compound expressions as lvalues: Lvalues. -* computed gotos: Labels as Values. -* computing the length of an insn: Insn Lengths. -* cond: Comparisons. -* condition code register: Regs and Memory. -* condition code status: Condition Code. -* condition codes: Comparisons. -* conditional expressions as lvalues: Lvalues. -* conditional expressions, extensions: Conditionals. -* CONDITIONAL_REGISTER_USAGE: Register Basics. -* conditions, in patterns: Patterns. -* configuration file: Config. -* conflicting types: Disappointments. -* const0_rtx: Constants. -* CONST0_RTX: Constants. -* const1_rtx: Constants. -* CONST1_RTX: Constants. -* CONST2_RTX: Constants. -* const2_rtx: Constants. -* constant attributes: Constant Attributes. -* constant folding: Passes. -* constant folding and floating point: Cross-compilation. -* constant propagation: Passes. -* constants in constraints: Simple Constraints. -* CONSTANT_ADDRESS_P: Addressing Modes. -* CONSTANT_ALIGNMENT: Storage Layout. -* CONSTANT_P: Addressing Modes. -* CONSTANT_POOL_ADDRESS_P: Flags. -* constm1_rtx: Constants. -* constraint modifier characters: Modifiers. -* constraint, matching: Simple Constraints. -* constraints: Constraints. -* constraints, machine specific: Machine Constraints. -* constructing calls: Constructing Calls. -* constructor expressions: Constructors. -* constructors vs goto: Destructors and Goto. -* constructors, output of: Initialization. -* CONST_CALL_P: Flags. -* CONST_COSTS: Costs. -* const_double: Constants. -* CONST_DOUBLE_CHAIN: Constants. -* CONST_DOUBLE_LOW: Constants. -* CONST_DOUBLE_MEM: Constants. -* CONST_DOUBLE_OK_FOR_LETTER_P: Register Classes. -* const_int: Constants. -* CONST_OK_FOR_LETTER_P: Register Classes. -* const_string: Constants. -* const_true_rtx: Constants. -* contributors: Contributors. -* controlling register usage: Register Basics. -* controlling the compilation driver: Driver. -* conventions, run-time: Interface. -* conversions: Conversions. -* Convex options: Convex Options. -* copy_rtx_if_shared: Sharing. -* core dump: Bug Criteria. -* cos: C Dialect Options. -* costs of instructions: Costs. -* COSTS_N_INSNS: Costs. -* CPLUS_INCLUDE_PATH: Environment Variables. -* CPP_PREDEFINES: Run-time Target. -* CPP_SPEC: Driver. -* CQImode: Machine Modes. -* cross compilation and floating point: Cross-compilation. -* cross compiling: Target Options. -* cross-compiler, installation: Cross-Compiler. -* cross-jumping: Passes. -* CSImode: Machine Modes. -* CTImode: Machine Modes. -* CUMULATIVE_ARGS: Register Arguments. -* current_function_epilogue_delay_list: Function Entry. -* current_function_outgoing_args_size: Stack Arguments. -* current_function_pops_args: Function Entry. -* current_function_pretend_args_size: Function Entry. -* C_INCLUDE_PATH: Environment Variables. -* data flow analysis: Passes. -* DATA_ALIGNMENT: Storage Layout. -* data_section: Sections. -* DATA_SECTION_ASM_OP: Sections. -* DBR_OUTPUT_SEQEND: Instruction Output. -* dbr_sequence_length: Instruction Output. -* DBX: Interoperation. -* DBX_CONTIN_CHAR: DBX Options. -* DBX_CONTIN_LENGTH: DBX Options. -* DBX_DEBUGGING_INFO: DBX Options. -* DBX_FUNCTION_FIRST: DBX Options. -* DBX_LBRAC_FIRST: DBX Options. -* DBX_MEMPARM_STABS_LETTER: DBX Options. -* DBX_NO_XREFS: DBX Options. -* DBX_OUTPUT_ENUM: DBX Hooks. -* DBX_OUTPUT_FUNCTION_END: DBX Hooks. -* DBX_OUTPUT_LBRAC: DBX Hooks. -* DBX_OUTPUT_MAIN_SOURCE_DIRECTORY: File Names and DBX. -* DBX_OUTPUT_MAIN_SOURCE_FILENAME: File Names and DBX. -* DBX_OUTPUT_MAIN_SOURCE_FILE_END: File Names and DBX. -* DBX_OUTPUT_RBRAC: DBX Hooks. -* DBX_OUTPUT_SOURCE_FILENAME: File Names and DBX. -* DBX_OUTPUT_STANDARD_TYPES: DBX Hooks. -* DBX_REGISTER_NUMBER: All Debuggers. -* DBX_REGPARM_STABS_CODE: DBX Options. -* DBX_REGPARM_STABS_LETTER: DBX Options. -* DBX_STATIC_CONST_VAR_CODE: DBX Options. -* DBX_STATIC_STAB_DATA_SECTION: DBX Options. -* DBX_TYPE_DECL_STABS_CODE: DBX Options. -* DBX_WORKING_DIRECTORY: File Names and DBX. -* DCmode: Machine Modes. -* De Morgan's law: Insn Canonicalizations. -* dead code: Passes. -* dead_or_set_p: Peephole Definitions. -* deallocating variable length arrays: Variable Length. -* death notes: Obsolete Register Macros. -* DEBUGGER_ARG_OFFSET: All Debuggers. -* DEBUGGER_AUTO_OFFSET: All Debuggers. -* debugging information generation: Passes. -* debugging information options: Debugging Options. -* debugging, 88k OCS: M88K Options. -* debug_rtx: Bug Reporting. -* DEBUG_SYMS_TEXT: DBX Options. -* declaration scope: Incompatibilities. -* declarations inside expressions: Statement Exprs. -* declarations, RTL: RTL Declarations. -* declaring attributes of functions: Function Attributes. -* declaring static data in C++: Static Definitions. -* DEFAULT_CALLER_SAVES: Caller Saves. -* DEFAULT_GDB_EXTENSIONS: DBX Options. -* DEFAULT_MAIN_RETURN: Misc. -* DEFAULT_PCC_STRUCT_RETURN: Aggregate Return. -* DEFAULT_SHORT_ENUMS: Type Layout. -* DEFAULT_SIGNED_CHAR: Type Layout. -* define_asm_attributes: Tagging Insns. -* define_attr: Defining Attributes. -* define_delay: Delay Slots. -* define_expand: Expander Definitions. -* define_function_unit: Function Units. -* define_insn: Patterns. -* define_peephole: Expander Definitions. -* define_split: Insn Splitting. -* defining attributes and their values: Defining Attributes. -* defining jump instruction patterns: Jump Patterns. -* defining peephole optimizers: Peephole Definitions. -* defining RTL sequences for code generation: Expander Definitions. -* defining static data in C++: Static Definitions. -* delay slots, defining: Delay Slots. -* delayed branch scheduling: Passes. -* DELAY_SLOTS_FOR_EPILOGUE: Function Entry. -* dependencies for make as output: Environment Variables. -* dependencies, make: Preprocessor Options. -* DEPENDENCIES_OUTPUT: Environment Variables. -* Dependent Patterns: Dependent Patterns. -* destructors vs goto: Destructors and Goto. -* destructors, output of: Initialization. -* detecting -traditional: C Dialect Options. -* DFmode: Machine Modes. -* dialect options: C Dialect Options. -* digits in constraint: Simple Constraints. -* DImode: Machine Modes. -* directory options: Directory Options. -* disabling certain registers: Register Basics. -* dispatch table: Dispatch Tables. -* div: Arithmetic. -* DIVDI3_LIBCALL: Library Calls. -* divide instruction, 88k: M88K Options. -* division: Arithmetic. -* division: Arithmetic. -* division: Arithmetic. -* DIVSI3_LIBCALL: Library Calls. -* dollar signs in identifier names: Dollar Signs. -* DOLLARS_IN_IDENTIFIERS: Misc. -* DONE: Expander Definitions. -* DONT_REDUCE_ADDR: Costs. -* double-word arithmetic: Long Long. -* DOUBLE_TYPE_SIZE: Type Layout. -* downward funargs: Nested Functions. -* driver: Driver. -* DW bit (29k): AMD29K Options. -* DWARF_DEBUGGING_INFO: SDB and DWARF. -* DYNAMIC_CHAIN_ADDRESS: Frame Layout. -* EASY_DIV_EXPR: Misc. -* ELIGIBLE_FOR_EPILOGUE_DELAY: Function Entry. -* ELIMINABLE_REGS: Elimination. -* empty constraints: No Constraints. -* EMPTY_FIELD_BOUNDARY: Storage Layout. -* ENCODE_SECTION_INFO: Sections. -* ENDFILE_SPEC: Driver. -* endianness: Portability. -* enum machine_mode: Machine Modes. -* enum reg_class: Register Classes. -* enumeration clash warnings: Warning Options. -* environment variables: Environment Variables. -* epilogue: Function Entry. -* eq: Comparisons. -* equal: Comparisons. -* eq_attr: Expressions. -* error: Storage Layout. -* error messages: Warnings and Errors. -* escape sequences, traditional: C Dialect Options. -* exclamation point: Multi-Alternative. -* exclusive-or, bitwise: Arithmetic. -* EXECUTABLE_SUFFIX: Config. -* exit: C Dialect Options. -* exit status and VMS: VMS Misc. -* EXIT_BODY: Misc. -* EXIT_IGNORE_STACK: Function Entry. -* expander definitions: Expander Definitions. -* EXPAND_BUILTIN_SAVEREGS: Varargs. -* explicit register variables: Explicit Reg Vars. -* expression codes: RTL Objects. -* expressions containing statements: Statement Exprs. -* expressions, compound, as lvalues: Lvalues. -* expressions, conditional, as lvalues: Lvalues. -* expressions, constructor: Constructors. -* expr_list: Insns. -* extended asm: Extended Asm. -* extensible constraints: Simple Constraints. -* extensions, ?:: Conditionals. -* extensions, ?:: Lvalues. -* extensions, C language: C Extensions. -* extensions, C++ language: C++ Extensions. -* extern int target_flags: Run-time Target. -* external declaration scope: Incompatibilities. -* EXTRA_CC_MODES: Condition Code. -* EXTRA_CC_NAMES: Condition Code. -* EXTRA_CONSTRAINT: Register Classes. -* EXTRA_SECTIONS: Sections. -* EXTRA_SECTION_FUNCTIONS: Sections. -* fabs: C Dialect Options. -* FAIL: Expander Definitions. -* FAILURE_EXIT_CODE: Config. -* fatal signal: Bug Criteria. -* features, optional, in system conventions: Run-time Target. -* ffs: Arithmetic. -* ffs: C Dialect Options. -* file name suffix: Overall Options. -* file names: Link Options. -* files and passes of the compiler: Passes. -* final pass: Passes. -* FINALIZE_PIC: PIC. -* FINAL_PRESCAN_INSN: Instruction Output. -* FINAL_REG_PARM_STACK_SPACE: Stack Arguments. -* final_scan_insn: Function Entry. -* final_sequence: Instruction Output. -* FIRST_INSN_ADDRESS: Insn Lengths. -* FIRST_PARM_OFFSET: Frame Layout. -* FIRST_PSEUDO_REGISTER: Register Basics. -* FIRST_STACK_REG: Stack Registers. -* FIRST_VIRTUAL_REGISTER: Regs and Memory. -* fix: Conversions. -* fix: Conversions. -* fixed register: Register Basics. -* FIXED_REGISTERS: Register Basics. -* fixed_regs: Register Basics. -* FIXUNS_TRUNC_LIKE_FIX_TRUNC: Misc. -* flags in RTL expression: Flags. -* float: Conversions. -* FLOATIFY: Library Calls. -* floating point and cross compilation: Cross-compilation. -* FLOAT_ARG_TYPE: Library Calls. -* float_extend: Conversions. -* FLOAT_STORE_FLAG_VALUE: Misc. -* float_truncate: Conversions. -* FLOAT_TYPE_SIZE: Type Layout. -* FLOAT_VALUE_TYPE: Library Calls. -* FLOAT_WORDS_BIG_ENDIAN: Storage Layout. -* force_reg: Standard Names. -* forwarding calls: Constructing Calls. -* frame layout: Frame Layout. -* FRAME_GROWS_DOWNWARD: Frame Layout. -* frame_pointer_needed: Function Entry. -* FRAME_POINTER_REGNUM: Frame Registers. -* FRAME_POINTER_REQUIRED: Elimination. -* frame_pointer_rtx: Frame Registers. -* function attributes: Function Attributes. -* function call conventions: Interface. -* function entry and exit: Function Entry. -* function pointers, arithmetic: Pointer Arith. -* function prototype declarations: Function Prototypes. -* function units, for scheduling: Function Units. -* function, size of pointer to: Pointer Arith. -* function-call insns: Calls. -* functions that have no side effects: Function Attributes. -* functions that never return: Function Attributes. -* functions with printf or scanf style arguments: Function Attributes. -* functions, leaf: Leaf Functions. -* FUNCTION_ARG: Register Arguments. -* FUNCTION_ARG_ADVANCE: Register Arguments. -* FUNCTION_ARG_BOUNDARY: Register Arguments. -* FUNCTION_ARG_CALLEE_COPIES: Register Arguments. -* FUNCTION_ARG_PADDING: Register Arguments. -* FUNCTION_ARG_PARTIAL_NREGS: Register Arguments. -* FUNCTION_ARG_PASS_BY_REFERENCE: Register Arguments. -* FUNCTION_ARG_REGNO_P: Register Arguments. -* FUNCTION_BLOCK_PROFILER: Profiling. -* FUNCTION_BOUNDARY: Storage Layout. -* FUNCTION_CONVERSION_BUG: Config. -* FUNCTION_EPILOGUE: Function Entry. -* FUNCTION_INCOMING_ARG: Register Arguments. -* FUNCTION_MODE: Misc. -* FUNCTION_OUTGOING_VALUE: Scalar Return. -* FUNCTION_PROFILER: Profiling. -* FUNCTION_PROLOGUE: Function Entry. -* FUNCTION_VALUE: Scalar Return. -* FUNCTION_VALUE_REGNO_P: Scalar Return. -* G++: G++ and GCC. -* g++: Invoking G++. -* GCC: G++ and GCC. -* GCC_EXEC_PREFIX: Environment Variables. -* ge: Comparisons. -* gencodes: Passes. -* genconfig: Passes. -* generalized lvalues: Lvalues. -* general_operand: RTL Template. -* GENERAL_REGS: Register Classes. -* generating assembler output: Output Statement. -* generating insns: RTL Template. -* genflags: Passes. -* GEN_ERRNO_RTX: Library Calls. -* get_attr: Expressions. -* get_attr_length: Insn Lengths. -* GET_CLASS_NARROWEST_MODE: Machine Modes. -* GET_CODE: RTL Objects. -* get_frame_size: Elimination. -* get_insns: Insns. -* get_last_insn: Insns. -* GET_MODE: Machine Modes. -* GET_MODE_ALIGNMENT: Machine Modes. -* GET_MODE_BITSIZE: Machine Modes. -* GET_MODE_CLASS: Machine Modes. -* GET_MODE_MASK: Machine Modes. -* GET_MODE_NAME: Machine Modes. -* GET_MODE_NUNITS: Machine Modes. -* GET_MODE_SIZE: Machine Modes. -* GET_MODE_UNIT_SIZE: Machine Modes. -* GET_MODE_WIDER_MODE: Machine Modes. -* GET_RTX_CLASS: Accessors. -* GET_RTX_FORMAT: Accessors. -* GET_RTX_LENGTH: Accessors. -* geu: Comparisons. -* global offset table: Code Gen Options. -* global register after longjmp: Global Reg Vars. -* global register allocation: Passes. -* global register variables: Global Reg Vars. -* GLOBALDEF: Global Declarations. -* GLOBALREF: Global Declarations. -* GLOBALVALUEDEF: Global Declarations. -* GLOBALVALUEREF: Global Declarations. -* GNU CC and portability: Portability. -* GNU CC command options: Invoking GCC. -* goto with computed label: Labels as Values. -* GO_IF_LEGITIMATE_ADDRESS: Addressing Modes. -* GO_IF_MODE_DEPENDENT_ADDRESS: Addressing Modes. -* gp-relative references (MIPS): MIPS Options. -* greater than: Comparisons. -* greater than: Comparisons. -* greater than: Comparisons. -* grouping options: Invoking GCC. -* gt: Comparisons. -* gtu: Comparisons. -* HANDLE_PRAGMA: Misc. -* hard registers: Regs and Memory. -* hardware models and configurations, specifying: Submodel Options. -* HARD_FRAME_POINTER_REGNUM: Frame Registers. -* HARD_REGNO_MODE_OK: Values in Registers. -* HARD_REGNO_NREGS: Values in Registers. -* HAVE_ATEXIT: Misc. -* HAVE_POST_DECREMENT: Addressing Modes. -* HAVE_POST_INCREMENT: Addressing Modes. -* HAVE_PRE_DECREMENT: Addressing Modes. -* HAVE_PRE_INCREMENT: Addressing Modes. -* HAVE_PUTENV: Config. -* HAVE_VPRINTF: Config. -* header files and VMS: Include Files and VMS. -* high: Constants. -* HImode: Machine Modes. -* HOST_BITS_PER_CHAR: Config. -* HOST_BITS_PER_INT: Config. -* HOST_BITS_PER_LONG: Config. -* HOST_BITS_PER_SHORT: Config. -* HOST_FLOAT_FORMAT: Config. -* HOST_FLOAT_WORDS_BIG_ENDIAN: Config. -* HOST_WORDS_BIG_ENDIAN: Config. -* HPPA Options: HPPA Options. -* i386 Options: i386 Options. -* IBM RS/6000 and PowerPC Options: RS/6000 and PowerPC Options. -* IBM RT options: RT Options. -* IBM RT PC: Interoperation. -* identifier names, dollar signs in: Dollar Signs. -* identifiers, names in assembler code: Asm Labels. -* identifying source, compiler (88k): M88K Options. -* IEEE_FLOAT_FORMAT: Storage Layout. -* if_then_else: Comparisons. -* immediate_operand: RTL Template. -* IMMEDIATE_PREFIX: Instruction Output. -* implicit argument: return value: Naming Results. -* IMPLICIT_FIX_EXPR: Misc. -* implied #pragma implementation: C++ Interface. -* include files and VMS: Include Files and VMS. -* INCLUDE_DEFAULTS: Driver. -* inclusive-or, bitwise: Arithmetic. -* INCOMING_REGNO: Register Basics. -* incompatibilities of GNU CC: Incompatibilities. -* increment operators: Bug Criteria. -* INDEX_REG_CLASS: Register Classes. -* initialization routines: Initialization. -* initializations in expressions: Constructors. -* initializers with labeled elements: Labeled Elements. -* initializers, non-constant: Initializers. -* INITIALIZE_TRAMPOLINE: Trampolines. -* INITIAL_ELIMINATION_OFFSET: Elimination. -* INITIAL_FRAME_POINTER_OFFSET: Elimination. -* INIT_CUMULATIVE_ARGS: Register Arguments. -* INIT_CUMULATIVE_INCOMING_ARGS: Register Arguments. -* INIT_SECTION_ASM_OP: Sections. -* INIT_SECTION_ASM_OP: Macros for Initialization. -* inline functions: Inline. -* inline functions, omission of: Inline. -* inline, automatic: Passes. -* inlining and C++ pragmas: C++ Interface. -* insn: Insns. -* insn attributes: Insn Attributes. -* insn canonicalization: Insn Canonicalizations. -* insn lengths, computing: Insn Lengths. -* insn splitting: Insn Splitting. -* insn-attr.h: Defining Attributes. -* insns: Insns. -* insns, generating: RTL Template. -* insns, recognizing: RTL Template. -* INSN_ANNULLED_BRANCH_P: Flags. -* INSN_CACHE_DEPTH: Trampolines. -* INSN_CACHE_LINE_WIDTH: Trampolines. -* INSN_CACHE_SIZE: Trampolines. -* INSN_CLOBBERS_REGNO_P: Obsolete Register Macros. -* INSN_CODE: Insns. -* INSN_DELETED_P: Flags. -* INSN_FROM_TARGET_P: Flags. -* insn_list: Insns. -* INSN_REFERENCES_ARE_DELAYED: Misc. -* INSN_SETS_ARE_DELAYED: Misc. -* INSN_UID: Insns. -* installation trouble: Trouble. -* installing GNU CC: Installation. -* installing GNU CC on the 3b1: 3b1 Install. -* installing GNU CC on the Sun: Sun Install. -* installing GNU CC on Unos: Unos Install. -* installing GNU CC on VMS: VMS Install. -* instruction attributes: Insn Attributes. -* instruction combination: Passes. -* instruction patterns: Patterns. -* instruction recognizer: Passes. -* instruction scheduling: Passes. -* instruction scheduling: Passes. -* instruction splitting: Insn Splitting. -* integrated: Flags. -* INTEGRATE_THRESHOLD: Misc. -* integrating function code: Inline. -* Intel 386 Options: i386 Options. -* Interdependence of Patterns: Dependent Patterns. -* interface and implementation headers, C++: C++ Interface. -* interfacing to GNU CC output: Interface. -* intermediate C version, nonexistent: G++ and GCC. -* INTIFY: Library Calls. -* introduction: Top. -* INT_TYPE_SIZE: Type Layout. -* invalid assembly code: Bug Criteria. -* invalid input: Bug Criteria. -* invoking g++: Invoking G++. -* in_data: Sections. -* in_struct: Flags. -* in_text: Sections. -* ior: Arithmetic. -* isinf: Cross-compilation. -* isnan: Cross-compilation. -* jump instruction patterns: Jump Patterns. -* jump instructions and set: Side Effects. -* jump optimization: Passes. -* jump threading: Passes. -* jump_insn: Insns. -* JUMP_LABEL: Insns. -* JUMP_TABLES_IN_TEXT_SECTION: Sections. -* kernel and user registers (29k): AMD29K Options. -* keywords, alternate: Alternate Keywords. -* known causes of trouble: Trouble. -* labeled elements in initializers: Labeled Elements. -* labels as values: Labels as Values. -* LABEL_NUSES: Insns. -* LABEL_OUTSIDE_LOOP_P: Flags. -* LABEL_PRESERVE_P: Flags. -* label_ref: Constants. -* labs: C Dialect Options. -* language dialect options: C Dialect Options. -* large bit shifts (88k): M88K Options. -* large return values: Aggregate Return. -* LAST_STACK_REG: Stack Registers. -* LAST_VIRTUAL_REGISTER: Regs and Memory. -* ldexp: Cross-compilation. -* le: Comparisons. -* leaf functions: Leaf Functions. -* leaf_function: Leaf Functions. -* leaf_function_p: Standard Names. -* LEAF_REGISTERS: Leaf Functions. -* LEAF_REG_REMAP: Leaf Functions. -* left rotate: Arithmetic. -* left shift: Arithmetic. -* left shift: Arithmetic. -* LEGITIMATE_CONSTANT_P: Addressing Modes. -* LEGITIMATE_PIC_OPERAND_P: PIC. -* LEGITIMIZE_ADDRESS: Addressing Modes. -* length-zero arrays: Zero Length. -* less than: Comparisons. -* less than or equal: Comparisons. -* leu: Comparisons. -* LIBCALL_VALUE: Scalar Return. -* LIBGCC_NEEDS_DOUBLE: Library Calls. -* Libraries: Link Options. -* library subroutine names: Library Calls. -* LIBRARY_PATH: Environment Variables. -* LIB_SPEC: Driver. -* LIMIT_RELOAD_CLASS: Register Classes. -* link options: Link Options. -* LINK_LIBGCC_SPECIAL: Driver. -* LINK_LIBGCC_SPECIAL_1: Driver. -* LINK_SPEC: Driver. -* load address instruction: Simple Constraints. -* LOAD_EXTEND_OP: Misc. -* local labels: Local Labels. -* local register allocation: Passes. -* local variables in macros: Naming Types. -* local variables, specifying registers: Local Reg Vars. -* LOCAL_INCLUDE_DIR: Driver. -* LOCAL_LABEL_PREFIX: Instruction Output. -* logical shift: Arithmetic. -* logical-and, bitwise: Arithmetic. -* LOG_LINKS: Insns. -* longjmp: Global Reg Vars. -* LONGJMP_RESTORE_FROM_STACK: Elimination. -* LONG_DOUBLE_TYPE_SIZE: Type Layout. -* LONG_LONG_TYPE_SIZE: Type Layout. -* LONG_TYPE_SIZE: Type Layout. -* loop optimization: Passes. -* lo_sum: Arithmetic. -* lshift: Arithmetic. -* lshiftrt: Arithmetic. -* lt: Comparisons. -* ltu: Comparisons. -* lvalues, generalized: Lvalues. -* M680x0 options: M680x0 Options. -* M88k options: M88K Options. -* machine dependent options: Submodel Options. -* machine description macros: Target Macros. -* machine descriptions: Machine Desc. -* machine mode conversions: Conversions. -* machine modes: Machine Modes. -* machine specific constraints: Machine Constraints. -* macro with variable arguments: Macro Varargs. -* macros containing asm: Extended Asm. -* macros, inline alternative: Inline. -* macros, local labels: Local Labels. -* macros, local variables in: Naming Types. -* macros, statements in expressions: Statement Exprs. -* macros, target description: Target Macros. -* macros, types of arguments: Typeof. -* make: Preprocessor Options. -* make_safe_from: Expander Definitions. -* matching constraint: Simple Constraints. -* matching operands: Output Template. -* match_dup: RTL Template. -* match_operand: RTL Template. -* match_operator: RTL Template. -* match_op_dup: RTL Template. -* match_parallel: RTL Template. -* match_par_dup: RTL Template. -* match_scratch: RTL Template. -* math libraries: Interface. -* math, in RTL: Arithmetic. -* maximum operator: Min and Max. -* MAX_BITS_PER_WORD: Storage Layout. -* MAX_CHAR_TYPE_SIZE: Type Layout. -* MAX_FIXED_MODE_SIZE: Storage Layout. -* MAX_INT_TYPE_SIZE: Type Layout. -* MAX_LONG_TYPE_SIZE: Type Layout. -* MAX_MOVE_MAX: Misc. -* MAX_OFILE_ALIGNMENT: Storage Layout. -* MAX_REGS_PER_ADDRESS: Addressing Modes. -* MAX_UNITS_PER_WORD: Storage Layout. -* MAX_WCHAR_TYPE_SIZE: Type Layout. -* MAYBE_REG_PARM_STACK_SPACE: Stack Arguments. -* mcount: Profiling. -* MD_CALL_PROTOTYPES: Config. -* MD_EXEC_PREFIX: Driver. -* MD_STARTFILE_PREFIX: Driver. -* MD_STARTFILE_PREFIX_1: Driver. -* mem: Regs and Memory. -* member fns, automatically inline: Inline. -* memcmp: C Dialect Options. -* memcpy: C Dialect Options. -* memory model (29k): AMD29K Options. -* memory reference, nonoffsettable: Simple Constraints. -* memory references in constraints: Simple Constraints. -* MEMORY_MOVE_COST: Costs. -* MEM_IN_STRUCT_P: Flags. -* MEM_VOLATILE_P: Flags. -* messages, warning: Warning Options. -* messages, warning and error: Warnings and Errors. -* middle-operands, omitted: Conditionals. -* minimum operator: Min and Max. -* minus: Arithmetic. -* MIPS options: MIPS Options. -* misunderstandings in C++: C++ Misunderstandings. -* mod: Arithmetic. -* MODDI3_LIBCALL: Library Calls. -* mode classes: Machine Modes. -* MODES_TIEABLE_P: Values in Registers. -* MODE_CC: Machine Modes. -* MODE_COMPLEX_FLOAT: Machine Modes. -* MODE_COMPLEX_INT: Machine Modes. -* MODE_FLOAT: Machine Modes. -* MODE_FUNCTION: Machine Modes. -* MODE_INT: Machine Modes. -* MODE_PARTIAL_INT: Machine Modes. -* MODE_RANDOM: Machine Modes. -* modifiers in constraints: Modifiers. -* MODSI3_LIBCALL: Library Calls. -* MOVE_MAX: Misc. -* MOVE_RATIO: Costs. -* MULDI3_LIBCALL: Library Calls. -* MULSI3_LIBCALL: Library Calls. -* mult: Arithmetic. -* MULTIBYTE_CHARS: Config. -* multiple alternative constraints: Multi-Alternative. -* multiplication: Arithmetic. -* multiprecision arithmetic: Long Long. -* name augmentation: VMS Misc. -* named patterns and conditions: Patterns. -* named return value in C++: Naming Results. -* names used in assembler code: Asm Labels. -* names, pattern: Standard Names. -* naming convention, implementation headers: C++ Interface. -* naming types: Naming Types. -* ne: Comparisons. -* neg: Arithmetic. -* nested functions: Nested Functions. -* nested functions, trampolines for: Trampolines. -* newline vs string constants: C Dialect Options. -* next_cc0_user: Jump Patterns. -* NEXT_INSN: Insns. -* NEXT_OBJC_RUNTIME: Library Calls. -* nil: RTL Objects. -* no constraints: No Constraints. -* no-op move instructions: Passes. -* non-constant initializers: Initializers. -* non-static inline function: Inline. -* nongcc_SI_type: Library Calls. -* nongcc_word_type: Library Calls. -* nonoffsettable memory reference: Simple Constraints. -* NON_SAVING_SETJMP: Register Basics. -* not: Arithmetic. -* not equal: Comparisons. -* not using constraints: No Constraints. -* note: Insns. -* NOTE_INSN_BLOCK_BEG: Insns. -* NOTE_INSN_BLOCK_END: Insns. -* NOTE_INSN_DELETED: Insns. -* NOTE_INSN_FUNCTION_END: Insns. -* NOTE_INSN_LOOP_BEG: Insns. -* NOTE_INSN_LOOP_CONT: Insns. -* NOTE_INSN_LOOP_END: Insns. -* NOTE_INSN_LOOP_VTOP: Insns. -* NOTE_INSN_SETJMP: Insns. -* NOTE_LINE_NUMBER: Insns. -* NOTE_SOURCE_FILE: Insns. -* NOTICE_UPDATE_CC: Condition Code. -* NO_BUILTIN_PTRDIFF_TYPE: Driver. -* NO_BUILTIN_SIZE_TYPE: Driver. -* NO_DOLLAR_IN_LABEL: Misc. -* NO_DOT_IN_LABEL: Misc. -* NO_FUNCTION_CSE: Costs. -* NO_IMPLICIT_EXTERN_C: Misc. -* NO_MD_PROTOTYPES: Config. -* NO_RECURSIVE_FUNCTION_CSE: Costs. -* NO_REGS: Register Classes. -* NO_STAB_H: Config. -* NO_SYS_SIGLIST: Config. -* NUM_MACHINE_MODES: Machine Modes. -* N_REG_CLASSES: Register Classes. -* OBJC_GEN_METHOD_LABEL: Label Output. -* OBJC_INCLUDE_PATH: Environment Variables. -* OBJC_INT_SELECTORS: Type Layout. -* OBJC_PROLOGUE: File Framework. -* OBJC_SELECTORS_WITHOUT_LABELS: Type Layout. -* Objective C: G++ and GCC. -* OBJECT_FORMAT_COFF: Macros for Initialization. -* OBJECT_FORMAT_ROSE: Macros for Initialization. -* OBSTACK_CHUNK_ALLOC: Config. -* OBSTACK_CHUNK_FREE: Config. -* OBSTACK_CHUNK_SIZE: Config. -* obstack_free: 3b1 Install. -* OCS (88k): M88K Options. -* offsettable address: Simple Constraints. -* old-style function definitions: Function Prototypes. -* omitted middle-operands: Conditionals. -* ONLY_INT_FIELDS: Config. -* open coding: Inline. -* operand access: Accessors. -* operand constraints: Constraints. -* operand substitution: Output Template. -* operands: Patterns. -* OPTIMIZATION_OPTIONS: Run-time Target. -* optimize options: Optimize Options. -* optional hardware or system features: Run-time Target. -* options to control warnings: Warning Options. -* options, C++: C++ Dialect Options. -* options, code generation: Code Gen Options. -* options, debugging: Debugging Options. -* options, dialect: C Dialect Options. -* options, directory search: Directory Options. -* options, GNU CC command: Invoking GCC. -* options, grouping: Invoking GCC. -* options, linking: Link Options. -* options, optimization: Optimize Options. -* options, order: Invoking GCC. -* options, preprocessor: Preprocessor Options. -* order of evaluation, side effects: Non-bugs. -* order of options: Invoking GCC. -* order of register allocation: Allocation Order. -* Ordering of Patterns: Pattern Ordering. -* ORDER_REGS_FOR_LOCAL_ALLOC: Allocation Order. -* other directory, compilation in: Other Dir. -* OUTGOING_REGNO: Register Basics. -* OUTGOING_REG_PARM_STACK_SPACE: Stack Arguments. -* output file option: Overall Options. -* output of assembler code: File Framework. -* output statements: Output Statement. -* output templates: Output Template. -* output_addr_const: Data Output. -* output_asm_insn: Output Statement. -* overflow while constant folding: Cross-compilation. -* OVERLAPPING_REGNO_P: Obsolete Register Macros. -* overloaded virtual fn, warning: Warning Options. -* OVERRIDE_OPTIONS: Run-time Target. -* parallel: Side Effects. -* parameter forward declaration: Variable Length. -* parameters, miscellaneous: Misc. -* PARM_BOUNDARY: Storage Layout. -* parser generator, Bison: Installation. -* parsing pass: Passes. -* passes and files of the compiler: Passes. -* passing arguments: Interface. -* PATTERN: Insns. -* pattern conditions: Patterns. -* pattern names: Standard Names. -* Pattern Ordering: Pattern Ordering. -* patterns: Patterns. -* pc: Regs and Memory. -* PCC_BITFIELD_TYPE_MATTERS: Storage Layout. -* PCC_STATIC_STRUCT_RETURN: Aggregate Return. -* pc_rtx: Regs and Memory. -* PDImode: Machine Modes. -* peephole optimization: Passes. -* peephole optimization, RTL representation: Side Effects. -* peephole optimizer definitions: Peephole Definitions. -* percent sign: Output Template. -* perform_...: Library Calls. -* PIC: PIC. -* PIC: Code Gen Options. -* PIC_OFFSET_TABLE_REGNUM: PIC. -* plus: Arithmetic. -* Pmode: Misc. -* pointer arguments: Function Attributes. -* POINTER_SIZE: Storage Layout. -* portability: Portability. -* portions of temporary objects, pointers to: Temporaries. -* position independent code: PIC. -* post_dec: Incdec. -* post_inc: Incdec. -* pragma: Misc. -* pragma, reason for not using: Function Attributes. -* pragmas in C++, effect on inlining: C++ Interface. -* pragmas, interface and implementation: C++ Interface. -* predefined macros: Run-time Target. -* PREDICATE_CODES: Misc. -* PREFERRED_DEBUGGING_TYPE: All Debuggers. -* PREFERRED_OUTPUT_RELOAD_CLASS: Register Classes. -* PREFERRED_RELOAD_CLASS: Register Classes. -* preprocessing numbers: Incompatibilities. -* preprocessing tokens: Incompatibilities. -* preprocessor options: Preprocessor Options. -* PRESERVE_DEATH_INFO_REGNO_P: Obsolete Register Macros. -* prev_cc0_setter: Jump Patterns. -* PREV_INSN: Insns. -* prev_nonnote_insn: Peephole Definitions. -* pre_dec: Incdec. -* pre_inc: Incdec. -* PRINT_OPERAND: Instruction Output. -* PRINT_OPERAND_ADDRESS: Instruction Output. -* PRINT_OPERAND_PUNCT_VALID_P: Instruction Output. -* processor selection (29k): AMD29K Options. -* product: Arithmetic. -* PROFILE_BEFORE_PROLOGUE: Profiling. -* profiling, code generation: Profiling. -* program counter: Regs and Memory. -* prologue: Function Entry. -* PROMOTE_FUNCTION_ARGS: Storage Layout. -* PROMOTE_FUNCTION_RETURN: Storage Layout. -* PROMOTE_MODE: Storage Layout. -* PROMOTE_PROTOTYPES: Stack Arguments. -* promotion of formal parameters: Function Prototypes. -* pseudo registers: Regs and Memory. -* PSImode: Machine Modes. -* PTRDIFF_TYPE: Type Layout. -* push address instruction: Simple Constraints. -* PUSH_ROUNDING: Stack Arguments. -* putenv: Config. -* PUT_CODE: RTL Objects. -* PUT_MODE: Machine Modes. -* PUT_REG_NOTE_KIND: Insns. -* PUT_SDB_...: SDB and DWARF. -* QImode: Machine Modes. -* question mark: Multi-Alternative. -* quotient: Arithmetic. -* r0-relative references (88k): M88K Options. -* ranges in case statements: Case Ranges. -* read-only strings: Incompatibilities. -* READONLY_DATA_SECTION: Sections. -* REAL_ARITHMETIC: Cross-compilation. -* REAL_INFINITY: Cross-compilation. -* REAL_NM_FILE_NAME: Macros for Initialization. -* REAL_VALUES_EQUAL: Cross-compilation. -* REAL_VALUES_LESS: Cross-compilation. -* REAL_VALUE_ATOF: Cross-compilation. -* REAL_VALUE_FIX: Cross-compilation. -* REAL_VALUE_FROM_INT: Cross-compilation. -* REAL_VALUE_ISINF: Cross-compilation. -* REAL_VALUE_ISNAN: Cross-compilation. -* REAL_VALUE_LDEXP: Cross-compilation. -* REAL_VALUE_NEGATE: Cross-compilation. -* REAL_VALUE_RNDZINT: Cross-compilation. -* REAL_VALUE_TO_DECIMAL: Data Output. -* REAL_VALUE_TO_INT: Cross-compilation. -* REAL_VALUE_TO_TARGET_DOUBLE: Data Output. -* REAL_VALUE_TO_TARGET_LONG_DOUBLE: Data Output. -* REAL_VALUE_TO_TARGET_SINGLE: Data Output. -* REAL_VALUE_TRUNCATE: Cross-compilation. -* REAL_VALUE_TYPE: Cross-compilation. -* REAL_VALUE_UNSIGNED_FIX: Cross-compilation. -* REAL_VALUE_UNSIGNED_RNDZINT: Cross-compilation. -* recognizing insns: RTL Template. -* recog_operand: Instruction Output. -* reg: Regs and Memory. -* register allocation: Passes. -* register allocation order: Allocation Order. -* register allocation, stupid: Passes. -* register class definitions: Register Classes. -* register class preference constraints: Class Preferences. -* register class preference pass: Passes. -* register pairs: Values in Registers. -* register positions in frame (88k): M88K Options. -* register positions in frame (88k): M88K Options. -* Register Transfer Language (RTL): RTL. -* register usage: Registers. -* register use analysis: Passes. -* register variable after longjmp: Global Reg Vars. -* register-to-stack conversion: Passes. -* registers: Extended Asm. -* registers arguments: Register Arguments. -* registers for local variables: Local Reg Vars. -* registers in constraints: Simple Constraints. -* registers, global allocation: Explicit Reg Vars. -* registers, global variables in: Global Reg Vars. -* REGISTER_MOVE_COST: Costs. -* REGISTER_NAMES: Instruction Output. -* register_operand: RTL Template. -* REGISTER_PREFIX: Instruction Output. -* REGNO_OK_FOR_BASE_P: Register Classes. -* REGNO_OK_FOR_INDEX_P: Register Classes. -* REGNO_REG_CLASS: Register Classes. -* regs_ever_live: Function Entry. -* REG_ALLOC_ORDER: Allocation Order. -* REG_CC_SETTER: Insns. -* REG_CC_USER: Insns. -* REG_CLASS_CONTENTS: Register Classes. -* REG_CLASS_FROM_LETTER: Register Classes. -* REG_CLASS_NAMES: Register Classes. -* REG_DEAD: Insns. -* REG_DEP_ANTI: Insns. -* REG_DEP_OUTPUT: Insns. -* REG_EQUAL: Insns. -* REG_EQUIV: Insns. -* REG_FUNCTION_VALUE_P: Flags. -* REG_INC: Insns. -* REG_LABEL: Insns. -* REG_LEAF_ALLOC_ORDER: Leaf Functions. -* REG_LIBCALL: Insns. -* REG_LOOP_TEST_P: Flags. -* reg_names: Instruction Output. -* REG_NONNEG: Insns. -* REG_NOTES: Insns. -* REG_NOTE_KIND: Insns. -* REG_NO_CONFLICT: Insns. -* REG_OK_FOR_BASE_P: Addressing Modes. -* REG_OK_FOR_INDEX_P: Addressing Modes. -* REG_OK_STRICT: Addressing Modes. -* REG_PARM_STACK_SPACE: Stack Arguments. -* REG_RETVAL: Insns. -* REG_UNUSED: Insns. -* REG_USERVAR_P: Flags. -* REG_WAS_0: Insns. -* relative costs: Costs. -* RELATIVE_PREFIX_NOT_LINKDIR: Driver. -* reload pass: Regs and Memory. -* reloading: Passes. -* reload_completed: Standard Names. -* reload_in_progress: Standard Names. -* remainder: Arithmetic. -* reporting bugs: Bugs. -* representation of RTL: RTL. -* rest argument (in macro): Macro Varargs. -* rest_of_compilation: Passes. -* rest_of_decl_compilation: Passes. -* return: Side Effects. -* return value of main: VMS Misc. -* return value, named, in C++: Naming Results. -* return values in registers: Scalar Return. -* returning aggregate values: Aggregate Return. -* returning structures and unions: Interface. -* RETURN_ADDR_IN_PREVIOUS_FRAME: Frame Layout. -* RETURN_ADDR_RTX: Frame Layout. -* RETURN_IN_MEMORY: Aggregate Return. -* RETURN_POPS_ARGS: Stack Arguments. -* right rotate: Arithmetic. -* right shift: Arithmetic. -* rotate: Arithmetic. -* rotate: Arithmetic. -* rotatert: Arithmetic. -* ROUND_TYPE_ALIGN: Storage Layout. -* ROUND_TYPE_SIZE: Storage Layout. -* RS/6000 and PowerPC Options: RS/6000 and PowerPC Options. -* RT options: RT Options. -* RT PC: Interoperation. -* RTL addition: Arithmetic. -* RTL comparison: Arithmetic. -* RTL comparison operations: Comparisons. -* RTL constant expression types: Constants. -* RTL constants: Constants. -* RTL declarations: RTL Declarations. -* RTL difference: Arithmetic. -* RTL expression: RTL Objects. -* RTL expressions for arithmetic: Arithmetic. -* RTL format: Accessors. -* RTL format characters: Accessors. -* RTL function-call insns: Calls. -* RTL generation: Passes. -* RTL insn template: RTL Template. -* RTL integers: RTL Objects. -* RTL memory expressions: Regs and Memory. -* RTL object types: RTL Objects. -* RTL postdecrement: Incdec. -* RTL postincrement: Incdec. -* RTL predecrement: Incdec. -* RTL preincrement: Incdec. -* RTL register expressions: Regs and Memory. -* RTL representation: RTL. -* RTL side effect expressions: Side Effects. -* RTL strings: RTL Objects. -* RTL structure sharing assumptions: Sharing. -* RTL subtraction: Arithmetic. -* RTL sum: Arithmetic. -* RTL vectors: RTL Objects. -* RTX (See RTL): RTL Objects. -* RTX_COSTS: Costs. -* RTX_INTEGRATED_P: Flags. -* RTX_UNCHANGING_P: Flags. -* run-time conventions: Interface. -* run-time options: Code Gen Options. -* run-time target specification: Run-time Target. -* saveable_obstack: Addressing Modes. -* scalars, returned as values: Scalar Return. -* SCCS_DIRECTIVE: Misc. -* scheduling, delayed branch: Passes. -* scheduling, instruction: Passes. -* scheduling, instruction: Passes. -* SCHED_GROUP_P: Flags. -* SCmode: Machine Modes. -* scope of a variable length array: Variable Length. -* scope of declaration: Disappointments. -* scope of external declarations: Incompatibilities. -* scratch: Regs and Memory. -* scratch operands: Regs and Memory. -* SDB_ALLOW_FORWARD_REFERENCES: SDB and DWARF. -* SDB_ALLOW_UNKNOWN_REFERENCES: SDB and DWARF. -* SDB_DEBUGGING_INFO: SDB and DWARF. -* SDB_DELIM: SDB and DWARF. -* SDB_GENERATE_FAKE: SDB and DWARF. -* search path: Directory Options. -* second include path: Preprocessor Options. -* SECONDARY_INPUT_RELOAD_CLASS: Register Classes. -* SECONDARY_MEMORY_NEEDED: Register Classes. -* SECONDARY_MEMORY_NEEDED_RTX: Register Classes. -* SECONDARY_OUTPUT_RELOAD_CLASS: Register Classes. -* SECONDARY_RELOAD_CLASS: Register Classes. -* SELECT_CC_MODE: Condition Code. -* SELECT_RTX_SECTION: Sections. -* SELECT_SECTION: Sections. -* separate directory, compilation in: Other Dir. -* sequence: Side Effects. -* sequential consistency on 88k: M88K Options. -* set: Side Effects. -* setjmp: Global Reg Vars. -* SETUP_FRAME_ADDRESSES: Frame Layout. -* SETUP_INCOMING_VARARGS: Varargs. -* set_attr: Tagging Insns. -* set_attr_alternative: Tagging Insns. -* SET_DEST: Side Effects. -* SET_SRC: Side Effects. -* SFmode: Machine Modes. -* shared strings: Incompatibilities. -* shared VMS run time system: VMS Misc. -* SHARED_SECTION_ASM_OP: Sections. -* sharing of RTL components: Sharing. -* shift: Arithmetic. -* SHIFT_COUNT_TRUNCATED: Misc. -* SHORT_TYPE_SIZE: Type Layout. -* side effect in ?:: Conditionals. -* side effects, macro argument: Statement Exprs. -* side effects, order of evaluation: Non-bugs. -* signed division: Arithmetic. -* signed maximum: Arithmetic. -* signed minimum: Arithmetic. -* SIGNED_CHAR_SPEC: Driver. -* sign_extend: Conversions. -* sign_extract: Bit Fields. -* SImode: Machine Modes. -* simple constraints: Simple Constraints. -* simplifications, arithmetic: Passes. -* sin: C Dialect Options. -* sizeof: Typeof. -* SIZE_TYPE: Type Layout. -* SLOW_BYTE_ACCESS: Costs. -* SLOW_UNALIGNED_ACCESS: Costs. -* SLOW_ZERO_EXTEND: Costs. -* smaller data references (88k): M88K Options. -* smaller data references (MIPS): MIPS Options. -* SMALL_REGISTER_CLASSES: Register Classes. -* smax: Arithmetic. -* smin: Arithmetic. -* SPARC options: SPARC Options. -* specified registers: Explicit Reg Vars. -* specifying compiler version and target machine: Target Options. -* specifying hardware config: Submodel Options. -* specifying machine version: Target Options. -* specifying registers for local variables: Local Reg Vars. -* speed of instructions: Costs. -* splitting instructions: Insn Splitting. -* sqrt: C Dialect Options. -* sqrt: Arithmetic. -* square root: Arithmetic. -* stack arguments: Stack Arguments. -* stack checks (29k): AMD29K Options. -* stack frame layout: Frame Layout. -* STACK_BOUNDARY: Storage Layout. -* STACK_DYNAMIC_OFFSET: Frame Layout. -* STACK_GROWS_DOWNWARD: Frame Layout. -* STACK_PARMS_IN_REG_PARM_AREA: Stack Arguments. -* STACK_POINTER_OFFSET: Frame Layout. -* STACK_POINTER_REGNUM: Frame Registers. -* stack_pointer_rtx: Frame Registers. -* STACK_REGS: Stack Registers. -* stage1: Installation. -* standard pattern names: Standard Names. -* STANDARD_EXEC_PREFIX: Driver. -* STANDARD_INCLUDE_DIR: Driver. -* STANDARD_STARTFILE_PREFIX: Driver. -* start files: Tools and Libraries. -* STARTFILE_SPEC: Driver. -* STARTING_FRAME_OFFSET: Frame Layout. -* statements inside expressions: Statement Exprs. -* static data in C++, declaring and defining: Static Definitions. -* STATIC_CHAIN: Frame Registers. -* STATIC_CHAIN_INCOMING: Frame Registers. -* STATIC_CHAIN_INCOMING_REGNUM: Frame Registers. -* STATIC_CHAIN_REGNUM: Frame Registers. -* STDC_VALUE: Run-time Target. -* storage layout: Storage Layout. -* STORE_FLAG_VALUE: Misc. -* strcmp: C Dialect Options. -* strcpy: C Dialect Options. -* strcpy: Storage Layout. -* strength-reduction: Passes. -* STRICT_ALIGNMENT: Storage Layout. -* strict_low_part: RTL Declarations. -* string constants: Incompatibilities. -* string constants vs newline: C Dialect Options. -* STRIP_NAME_ENCODING: Sections. -* strlen: C Dialect Options. -* structure passing (88k): M88K Options. -* structure value address: Aggregate Return. -* structures: Incompatibilities. -* structures, constructor expression: Constructors. -* structures, returning: Interface. -* STRUCTURE_SIZE_BOUNDARY: Storage Layout. -* STRUCT_VALUE: Aggregate Return. -* STRUCT_VALUE_INCOMING: Aggregate Return. -* STRUCT_VALUE_INCOMING_REGNUM: Aggregate Return. -* STRUCT_VALUE_REGNUM: Aggregate Return. -* stupid register allocation: Passes. -* submodel options: Submodel Options. -* subreg: Regs and Memory. -* SUBREG_PROMOTED_UNSIGNED_P: Flags. -* SUBREG_PROMOTED_VAR_P: Flags. -* SUBREG_REG: Regs and Memory. -* SUBREG_WORD: Regs and Memory. -* subscripting: Subscripting. -* subscripting and function values: Subscripting. -* SUCCESS_EXIT_CODE: Config. -* suffixes for C++ source: Invoking G++. -* Sun installation: Sun Install. -* suppressing warnings: Warning Options. -* surprises in C++: C++ Misunderstandings. -* SVr4: M88K Options. -* SWITCHES_NEED_SPACES: Driver. -* SWITCH_TAKES_ARG: Driver. -* symbolic label: Sharing. -* symbol_ref: Constants. -* SYMBOL_REF_FLAG: Flags. -* SYMBOL_REF_USED: Flags. -* syntax checking: Warning Options. -* SYSTEM_INCLUDE_DIR: Driver. -* sys_siglist: Config. -* tagging insns: Tagging Insns. -* tail recursion optimization: Passes. -* target description macros: Target Macros. -* target machine, specifying: Target Options. -* target options: Target Options. -* target specifications: Run-time Target. -* target-parameter-dependent code: Passes. -* TARGET_BELL: Type Layout. -* TARGET_BS: Type Layout. -* TARGET_CR: Type Layout. -* TARGET_EDOM: Library Calls. -* TARGET_FF: Type Layout. -* TARGET_FLOAT_FORMAT: Storage Layout. -* TARGET_MEM_FUNCTIONS: Library Calls. -* TARGET_NEWLINE: Type Layout. -* TARGET_OPTIONS: Run-time Target. -* TARGET_SWITCHES: Run-time Target. -* TARGET_TAB: Type Layout. -* TARGET_VERSION: Run-time Target. -* TARGET_VT: Type Layout. -* TCmode: Machine Modes. -* template debugging: Warning Options. -* temporaries, lifetime of: Temporaries. -* termination routines: Initialization. -* text_section: Sections. -* TEXT_SECTION_ASM_OP: Sections. -* TFmode: Machine Modes. -* thunks: Nested Functions. -* TImode: Machine Modes. -* TMPDIR: Environment Variables. -* top level of compiler: Passes. -* traditional C language: C Dialect Options. -* TRADITIONAL_RETURN_FLOAT: Scalar Return. -* trampolines for nested functions: Trampolines. -* TRAMPOLINE_ALIGNMENT: Trampolines. -* TRAMPOLINE_SECTION: Trampolines. -* TRAMPOLINE_SIZE: Trampolines. -* TRAMPOLINE_TEMPLATE: Trampolines. -* TRANSFER_FROM_TRAMPOLINE: Trampolines. -* TRULY_NOOP_TRUNCATION: Misc. -* truncate: Conversions. -* type alignment: Alignment. -* typedef names as function parameters: Incompatibilities. -* typeof: Typeof. -* udiv: Arithmetic. -* UDIVDI3_LIBCALL: Library Calls. -* UDIVSI3_LIBCALL: Library Calls. -* Ultrix calling convention: Interoperation. -* umax: Arithmetic. -* umin: Arithmetic. -* umod: Arithmetic. -* UMODDI3_LIBCALL: Library Calls. -* UMODSI3_LIBCALL: Library Calls. -* unchanging: Flags. -* undefined behavior: Bug Criteria. -* undefined function value: Bug Criteria. -* underscores in variables in macros: Naming Types. -* underscores, avoiding (88k): M88K Options. -* union, casting to a: Cast to Union. -* unions: Incompatibilities. -* unions, returning: Interface. -* UNITS_PER_WORD: Storage Layout. -* UNKNOWN_FLOAT_FORMAT: Storage Layout. -* Unos installation: Unos Install. -* unreachable code: Passes. -* unshare_all_rtl: Sharing. -* unsigned division: Arithmetic. -* unsigned greater than: Comparisons. -* unsigned greater than: Comparisons. -* unsigned less than: Comparisons. -* unsigned less than: Comparisons. -* unsigned minimum and maximum: Arithmetic. -* unsigned_fix: Conversions. -* unsigned_float: Conversions. -* unspec: Side Effects. -* unspec_volatile: Side Effects. -* use: Side Effects. -* used: Flags. -* USER_LABEL_PREFIX: Instruction Output. -* USE_C_ALLOCA: Config. -* USE_PROTOTYPES: Config. -* USG: Config. -* value after longjmp: Global Reg Vars. -* values, returned by functions: Scalar Return. -* varargs implementation: Varargs. -* variable alignment: Alignment. -* variable attributes: Variable Attributes. -* variable number of arguments: Macro Varargs. -* variable-length array scope: Variable Length. -* variable-length arrays: Variable Length. -* variables in specified registers: Explicit Reg Vars. -* variables, local, in macros: Naming Types. -* Vax calling convention: Interoperation. -* VAX options: VAX Options. -* VAX_FLOAT_FORMAT: Storage Layout. -* VIRTUAL_INCOMING_ARGS_REGNUM: Regs and Memory. -* VIRTUAL_OUTGOING_ARGS_REGNUM: Regs and Memory. -* VIRTUAL_STACK_DYNAMIC_REGNUM: Regs and Memory. -* VIRTUAL_STACK_VARS_REGNUM: Regs and Memory. -* VMS: Config. -* VMS and case sensitivity: VMS Misc. -* VMS and include files: Include Files and VMS. -* VMS installation: VMS Install. -* void pointers, arithmetic: Pointer Arith. -* void, size of pointer to: Pointer Arith. -* VOIDmode: Machine Modes. -* volatil: Flags. -* volatile memory references: Flags. -* voting between constraint alternatives: Class Preferences. -* vprintf: Config. -* warning for enumeration conversions: Warning Options. -* warning for overloaded virtual fn: Warning Options. -* warning messages: Warning Options. -* warnings vs errors: Warnings and Errors. -* WCHAR_TYPE: Type Layout. -* WCHAR_TYPE_SIZE: Type Layout. -* which_alternative: Output Statement. -* whitespace: Incompatibilities. -* WORDS_BIG_ENDIAN: Storage Layout. -* word_mode: Machine Modes. -* WORD_REGISTER_OPERATIONS: Misc. -* WORD_SWITCH_TAKES_ARG: Driver. -* XCmode: Machine Modes. -* XCOFF_DEBUGGING_INFO: DBX Options. -* XEXP: Accessors. -* XFmode: Machine Modes. -* XINT: Accessors. -* xor: Arithmetic. -* XSTR: Accessors. -* XVEC: Accessors. -* XVECEXP: Accessors. -* XVECLEN: Accessors. -* XWINT: Accessors. -* zero division on 88k: M88K Options. -* zero-length arrays: Zero Length. -* zero_extend: Conversions. -* zero_extract: Bit Fields. -* \: Output Template. -* __bb_init_func: Profiling. -* __builtin_apply: Constructing Calls. -* __builtin_apply_args: Constructing Calls. -* __builtin_args_info: Varargs. -* __builtin_classify_type: Varargs. -* __builtin_next_arg: Varargs. -* __builtin_return: Constructing Calls. -* __builtin_saveregs: Varargs. -* __CTOR_LIST__: Initialization. -* __DTOR_LIST__: Initialization. +* All Debuggers:: Macros that affect all debugging formats uniformly. +* DBX Options:: Macros enabling specific options in DBX format. +* DBX Hooks:: Hook macros for varying DBX format. +* File Names and DBX:: Macros controlling output of file names in DBX format. +* SDB and DWARF:: Macros for SDB (COFF) and DWARF formats. + + +File: gcc.info, Node: All Debuggers, Next: DBX Options, Up: Debugging Info + +Macros Affecting All Debugging Formats +-------------------------------------- + + These macros affect all debugging formats. + +`DBX_REGISTER_NUMBER (REGNO)' + A C expression that returns the DBX register number for the + compiler register number REGNO. In simple cases, the value of this + expression may be REGNO itself. But sometimes there are some + registers that the compiler knows about and DBX does not, or vice + versa. In such cases, some register may need to have one number in + the compiler and another for DBX. + + If two registers have consecutive numbers inside GNU CC, and they + can be used as a pair to hold a multiword value, then they *must* + have consecutive numbers after renumbering with + `DBX_REGISTER_NUMBER'. Otherwise, debuggers will be unable to + access such a pair, because they expect register pairs to be + consecutive in their own numbering scheme. + + If you find yourself defining `DBX_REGISTER_NUMBER' in way that + does not preserve register pairs, then what you must do instead is + redefine the actual register numbering scheme. + +`DEBUGGER_AUTO_OFFSET (X)' + A C expression that returns the integer offset value for an + automatic variable having address X (an RTL expression). The + default computation assumes that X is based on the frame-pointer + and gives the offset from the frame-pointer. This is required for + targets that produce debugging output for DBX or COFF-style + debugging output for SDB and allow the frame-pointer to be + eliminated when the `-g' options is used. + +`DEBUGGER_ARG_OFFSET (OFFSET, X)' + A C expression that returns the integer offset value for an + argument having address X (an RTL expression). The nominal offset + is OFFSET. + +`PREFERRED_DEBUGGING_TYPE' + A C expression that returns the type of debugging output GNU CC + produces when the user specifies `-g' or `-ggdb'. Define this if + you have arranged for GNU CC to support more than one format of + debugging output. Currently, the allowable values are `DBX_DEBUG', + `SDB_DEBUG', `DWARF_DEBUG', and `XCOFF_DEBUG'. + + The value of this macro only affects the default debugging output; + the user can always get a specific type of output by using + `-gstabs', `-gcoff', `-gdwarf', or `-gxcoff'. + + +File: gcc.info, Node: DBX Options, Next: DBX Hooks, Prev: All Debuggers, Up: Debugging Info + +Specific Options for DBX Output +------------------------------- + + These are specific options for DBX output. + +`DBX_DEBUGGING_INFO' + Define this macro if GNU CC should produce debugging output for DBX + in response to the `-g' option. + +`XCOFF_DEBUGGING_INFO' + Define this macro if GNU CC should produce XCOFF format debugging + output in response to the `-g' option. This is a variant of DBX + format. + +`DEFAULT_GDB_EXTENSIONS' + Define this macro to control whether GNU CC should by default + generate GDB's extended version of DBX debugging information + (assuming DBX-format debugging information is enabled at all). If + you don't define the macro, the default is 1: always generate the + extended information if there is any occasion to. + +`DEBUG_SYMS_TEXT' + Define this macro if all `.stabs' commands should be output while + in the text section. + +`ASM_STABS_OP' + A C string constant naming the assembler pseudo op to use instead + of `.stabs' to define an ordinary debugging symbol. If you don't + define this macro, `.stabs' is used. This macro applies only to + DBX debugging information format. + +`ASM_STABD_OP' + A C string constant naming the assembler pseudo op to use instead + of `.stabd' to define a debugging symbol whose value is the current + location. If you don't define this macro, `.stabd' is used. This + macro applies only to DBX debugging information format. + +`ASM_STABN_OP' + A C string constant naming the assembler pseudo op to use instead + of `.stabn' to define a debugging symbol with no name. If you + don't define this macro, `.stabn' is used. This macro applies + only to DBX debugging information format. + +`DBX_NO_XREFS' + Define this macro if DBX on your system does not support the + construct `xsTAGNAME'. On some systems, this construct is used to + describe a forward reference to a structure named TAGNAME. On + other systems, this construct is not supported at all. + +`DBX_CONTIN_LENGTH' + A symbol name in DBX-format debugging information is normally + continued (split into two separate `.stabs' directives) when it + exceeds a certain length (by default, 80 characters). On some + operating systems, DBX requires this splitting; on others, + splitting must not be done. You can inhibit splitting by defining + this macro with the value zero. You can override the default + splitting-length by defining this macro as an expression for the + length you desire. + +`DBX_CONTIN_CHAR' + Normally continuation is indicated by adding a `\' character to + the end of a `.stabs' string when a continuation follows. To use + a different character instead, define this macro as a character + constant for the character you want to use. Do not define this + macro if backslash is correct for your system. + +`DBX_STATIC_STAB_DATA_SECTION' + Define this macro if it is necessary to go to the data section + before outputting the `.stabs' pseudo-op for a non-global static + variable. + +`DBX_TYPE_DECL_STABS_CODE' + The value to use in the "code" field of the `.stabs' directive for + a typedef. The default is `N_LSYM'. + +`DBX_STATIC_CONST_VAR_CODE' + The value to use in the "code" field of the `.stabs' directive for + a static variable located in the text section. DBX format does not + provide any "right" way to do this. The default is `N_FUN'. + +`DBX_REGPARM_STABS_CODE' + The value to use in the "code" field of the `.stabs' directive for + a parameter passed in registers. DBX format does not provide any + "right" way to do this. The default is `N_RSYM'. + +`DBX_REGPARM_STABS_LETTER' + The letter to use in DBX symbol data to identify a symbol as a + parameter passed in registers. DBX format does not customarily + provide any way to do this. The default is `'P''. + +`DBX_MEMPARM_STABS_LETTER' + The letter to use in DBX symbol data to identify a symbol as a + stack parameter. The default is `'p''. + +`DBX_FUNCTION_FIRST' + Define this macro if the DBX information for a function and its + arguments should precede the assembler code for the function. + Normally, in DBX format, the debugging information entirely + follows the assembler code. + +`DBX_LBRAC_FIRST' + Define this macro if the `N_LBRAC' symbol for a block should + precede the debugging information for variables and functions + defined in that block. Normally, in DBX format, the `N_LBRAC' + symbol comes first. + +`DBX_BLOCKS_FUNCTION_RELATIVE' + Define this macro if the value of a symbol describing the scope of + a block (`N_LBRAC' or `N_RBRAC') should be relative to the start + of the enclosing function. Normally, GNU C uses an absolute + address. + + +File: gcc.info, Node: DBX Hooks, Next: File Names and DBX, Prev: DBX Options, Up: Debugging Info + +Open-Ended Hooks for DBX Format +------------------------------- + + These are hooks for DBX format. + +`DBX_OUTPUT_LBRAC (STREAM, NAME)' + Define this macro to say how to output to STREAM the debugging + information for the start of a scope level for variable names. The + argument NAME is the name of an assembler symbol (for use with + `assemble_name') whose value is the address where the scope begins. + +`DBX_OUTPUT_RBRAC (STREAM, NAME)' + Like `DBX_OUTPUT_LBRAC', but for the end of a scope level. + +`DBX_OUTPUT_ENUM (STREAM, TYPE)' + Define this macro if the target machine requires special handling + to output an enumeration type. The definition should be a C + statement (sans semicolon) to output the appropriate information + to STREAM for the type TYPE. + +`DBX_OUTPUT_FUNCTION_END (STREAM, FUNCTION)' + Define this macro if the target machine requires special output at + the end of the debugging information for a function. The + definition should be a C statement (sans semicolon) to output the + appropriate information to STREAM. FUNCTION is the + `FUNCTION_DECL' node for the function. + +`DBX_OUTPUT_STANDARD_TYPES (SYMS)' + Define this macro if you need to control the order of output of the + standard data types at the beginning of compilation. The argument + SYMS is a `tree' which is a chain of all the predefined global + symbols, including names of data types. + + Normally, DBX output starts with definitions of the types for + integers and characters, followed by all the other predefined + types of the particular language in no particular order. + + On some machines, it is necessary to output different particular + types first. To do this, define `DBX_OUTPUT_STANDARD_TYPES' to + output those symbols in the necessary order. Any predefined types + that you don't explicitly output will be output afterward in no + particular order. + + Be careful not to define this macro so that it works only for C. + There are no global variables to access most of the built-in + types, because another language may have another set of types. + The way to output a particular type is to look through SYMS to see + if you can find it. Here is an example: + + { + tree decl; + for (decl = syms; decl; decl = TREE_CHAIN (decl)) + if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)), + "long int")) + dbxout_symbol (decl); + ... + } + + This does nothing if the expected type does not exist. + + See the function `init_decl_processing' in `c-decl.c' to find the + names to use for all the built-in C types. + + Here is another way of finding a particular type: + + { + tree decl; + for (decl = syms; decl; decl = TREE_CHAIN (decl)) + if (TREE_CODE (decl) == TYPE_DECL + && (TREE_CODE (TREE_TYPE (decl)) + == INTEGER_CST) + && TYPE_PRECISION (TREE_TYPE (decl)) == 16 + && TYPE_UNSIGNED (TREE_TYPE (decl))) + /* This must be `unsigned short'. */ + dbxout_symbol (decl); + ... + } + + +File: gcc.info, Node: File Names and DBX, Next: SDB and DWARF, Prev: DBX Hooks, Up: Debugging Info + +File Names in DBX Format +------------------------ + + This describes file names in DBX format. + +`DBX_WORKING_DIRECTORY' + Define this if DBX wants to have the current directory recorded in + each object file. + + Note that the working directory is always recorded if GDB + extensions are enabled. + +`DBX_OUTPUT_MAIN_SOURCE_FILENAME (STREAM, NAME)' + A C statement to output DBX debugging information to the stdio + stream STREAM which indicates that file NAME is the main source + file--the file specified as the input file for compilation. This + macro is called only once, at the beginning of compilation. + + This macro need not be defined if the standard form of output for + DBX debugging information is appropriate. + +`DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (STREAM, NAME)' + A C statement to output DBX debugging information to the stdio + stream STREAM which indicates that the current directory during + compilation is named NAME. + + This macro need not be defined if the standard form of output for + DBX debugging information is appropriate. + +`DBX_OUTPUT_MAIN_SOURCE_FILE_END (STREAM, NAME)' + A C statement to output DBX debugging information at the end of + compilation of the main source file NAME. + + If you don't define this macro, nothing special is output at the + end of compilation, which is correct for most machines. + +`DBX_OUTPUT_SOURCE_FILENAME (STREAM, NAME)' + A C statement to output DBX debugging information to the stdio + stream STREAM which indicates that file NAME is the current source + file. This output is generated each time input shifts to a + different source file as a result of `#include', the end of an + included file, or a `#line' command. + + This macro need not be defined if the standard form of output for + DBX debugging information is appropriate. + + +File: gcc.info, Node: SDB and DWARF, Prev: File Names and DBX, Up: Debugging Info + +Macros for SDB and DWARF Output +------------------------------- + + Here are macros for SDB and DWARF output. + +`SDB_DEBUGGING_INFO' + Define this macro if GNU CC should produce COFF-style debugging + output for SDB in response to the `-g' option. + +`DWARF_DEBUGGING_INFO' + Define this macro if GNU CC should produce dwarf format debugging + output in response to the `-g' option. + +`PUT_SDB_...' + Define these macros to override the assembler syntax for the + special SDB assembler directives. See `sdbout.c' for a list of + these macros and their arguments. If the standard syntax is used, + you need not define them yourself. + +`SDB_DELIM' + Some assemblers do not support a semicolon as a delimiter, even + between SDB assembler directives. In that case, define this macro + to be the delimiter to use (usually `\n'). It is not necessary to + define a new set of `PUT_SDB_OP' macros if this is the only change + required. + +`SDB_GENERATE_FAKE' + Define this macro to override the usual method of constructing a + dummy name for anonymous structure and union types. See + `sdbout.c' for more information. + +`SDB_ALLOW_UNKNOWN_REFERENCES' + Define this macro to allow references to unknown structure, union, + or enumeration tags to be emitted. Standard COFF does not allow + handling of unknown references, MIPS ECOFF has support for it. +`SDB_ALLOW_FORWARD_REFERENCES' + Define this macro to allow references to structure, union, or + enumeration tags that have not yet been seen to be handled. Some + assemblers choke if forward tags are used, while some require it.