Import final gcc2 snapshot (990109)
[official-gcc.git] / gcc / tm.texi
blobdd2ad2a2af2cce80b2ffdc4a8e13a54a6ce4adcf
1 @c Copyright (C) 1988,89,92,93,94,96,97,1998 Free Software Foundation, Inc.
2 @c This is part of the GCC manual.
3 @c For copying conditions, see the file gcc.texi.
5 @node Target Macros
6 @chapter Target Description Macros
7 @cindex machine description macros
8 @cindex target description macros
9 @cindex macros, target description
10 @cindex @file{tm.h} macros
12 In addition to the file @file{@var{machine}.md}, a machine description
13 includes a C header file conventionally given the name
14 @file{@var{machine}.h}.  This header file defines numerous macros
15 that convey the information about the target machine that does not fit
16 into the scheme of the @file{.md} file.  The file @file{tm.h} should be
17 a link to @file{@var{machine}.h}.  The header file @file{config.h}
18 includes @file{tm.h} and most compiler source files include
19 @file{config.h}.
21 @menu
22 * Driver::              Controlling how the driver runs the compilation passes.
23 * Run-time Target::     Defining @samp{-m} options like @samp{-m68000} and @samp{-m68020}.
24 * Storage Layout::      Defining sizes and alignments of data.
25 * Type Layout::         Defining sizes and properties of basic user data types.
26 * Registers::           Naming and describing the hardware registers.
27 * Register Classes::    Defining the classes of hardware registers.
28 * Stack and Calling::   Defining which way the stack grows and by how much.
29 * Varargs::             Defining the varargs macros.
30 * Trampolines::         Code set up at run time to enter a nested function.
31 * Library Calls::       Controlling how library routines are implicitly called.
32 * Addressing Modes::    Defining addressing modes valid for memory operands.
33 * Condition Code::      Defining how insns update the condition code.
34 * Costs::               Defining relative costs of different operations.
35 * Sections::            Dividing storage into text, data, and other sections.
36 * PIC::                 Macros for position independent code.
37 * Assembler Format::    Defining how to write insns and pseudo-ops to output.
38 * Debugging Info::      Defining the format of debugging output.
39 * Cross-compilation::   Handling floating point for cross-compilers.
40 * Misc::                Everything else.
41 @end menu
43 @node Driver
44 @section Controlling the Compilation Driver, @file{gcc}
45 @cindex driver
46 @cindex controlling the compilation driver
48 @c prevent bad page break with this line
49 You can control the compilation driver.
51 @table @code
52 @findex SWITCH_TAKES_ARG
53 @item SWITCH_TAKES_ARG (@var{char})
54 A C expression which determines whether the option @samp{-@var{char}}
55 takes arguments.  The value should be the number of arguments that
56 option takes--zero, for many options.
58 By default, this macro is defined as
59 @code{DEFAULT_SWITCH_TAKES_ARG}, which handles the standard options
60 properly.  You need not define @code{SWITCH_TAKES_ARG} unless you
61 wish to add additional options which take arguments.  Any redefinition
62 should call @code{DEFAULT_SWITCH_TAKES_ARG} and then check for
63 additional options.
65 @findex WORD_SWITCH_TAKES_ARG
66 @item WORD_SWITCH_TAKES_ARG (@var{name})
67 A C expression which determines whether the option @samp{-@var{name}}
68 takes arguments.  The value should be the number of arguments that
69 option takes--zero, for many options.  This macro rather than
70 @code{SWITCH_TAKES_ARG} is used for multi-character option names.
72 By default, this macro is defined as
73 @code{DEFAULT_WORD_SWITCH_TAKES_ARG}, which handles the standard options
74 properly.  You need not define @code{WORD_SWITCH_TAKES_ARG} unless you
75 wish to add additional options which take arguments.  Any redefinition
76 should call @code{DEFAULT_WORD_SWITCH_TAKES_ARG} and then check for
77 additional options.
79 @findex SWITCHES_NEED_SPACES
80 @item SWITCHES_NEED_SPACES
81 A string-valued C expression which enumerates the options for which
82 the linker needs a space between the option and its argument.
84 If this macro is not defined, the default value is @code{""}.
86 @findex CPP_SPEC
87 @item CPP_SPEC
88 A C string constant that tells the GNU CC driver program options to
89 pass to CPP.  It can also specify how to translate options you
90 give to GNU CC into options for GNU CC to pass to the CPP.
92 Do not define this macro if it does not need to do anything.
94 @findex NO_BUILTIN_SIZE_TYPE
95 @item NO_BUILTIN_SIZE_TYPE
96 If this macro is defined, the preprocessor will not define the builtin macro
97 @code{__SIZE_TYPE__}.  The macro @code{__SIZE_TYPE__} must then be defined
98 by @code{CPP_SPEC} instead.
100 This should be defined if @code{SIZE_TYPE} depends on target dependent flags
101 which are not accessible to the preprocessor.  Otherwise, it should not
102 be defined.
104 @findex NO_BUILTIN_PTRDIFF_TYPE
105 @item NO_BUILTIN_PTRDIFF_TYPE
106 If this macro is defined, the preprocessor will not define the builtin macro
107 @code{__PTRDIFF_TYPE__}.  The macro @code{__PTRDIFF_TYPE__} must then be
108 defined by @code{CPP_SPEC} instead.
110 This should be defined if @code{PTRDIFF_TYPE} depends on target dependent flags
111 which are not accessible to the preprocessor.  Otherwise, it should not
112 be defined.
114 @findex SIGNED_CHAR_SPEC
115 @item SIGNED_CHAR_SPEC
116 A C string constant that tells the GNU CC driver program options to
117 pass to CPP.  By default, this macro is defined to pass the option
118 @samp{-D__CHAR_UNSIGNED__} to CPP if @code{char} will be treated as
119 @code{unsigned char} by @code{cc1}.
121 Do not define this macro unless you need to override the default
122 definition.
124 @findex CC1_SPEC
125 @item CC1_SPEC
126 A C string constant that tells the GNU CC driver program options to
127 pass to @code{cc1}.  It can also specify how to translate options you
128 give to GNU CC into options for GNU CC to pass to the @code{cc1}.
130 Do not define this macro if it does not need to do anything.
132 @findex CC1PLUS_SPEC
133 @item CC1PLUS_SPEC
134 A C string constant that tells the GNU CC driver program options to
135 pass to @code{cc1plus}.  It can also specify how to translate options you
136 give to GNU CC into options for GNU CC to pass to the @code{cc1plus}.
138 Do not define this macro if it does not need to do anything.
140 @findex ASM_SPEC
141 @item ASM_SPEC
142 A C string constant that tells the GNU CC driver program options to
143 pass to the assembler.  It can also specify how to translate options
144 you give to GNU CC into options for GNU CC to pass to the assembler.
145 See the file @file{sun3.h} for an example of this.
147 Do not define this macro if it does not need to do anything.
149 @findex ASM_FINAL_SPEC
150 @item ASM_FINAL_SPEC
151 A C string constant that tells the GNU CC driver program how to
152 run any programs which cleanup after the normal assembler.
153 Normally, this is not needed.  See the file @file{mips.h} for
154 an example of this.
156 Do not define this macro if it does not need to do anything.
158 @findex LINK_SPEC
159 @item LINK_SPEC
160 A C string constant that tells the GNU CC driver program options to
161 pass to the linker.  It can also specify how to translate options you
162 give to GNU CC into options for GNU CC to pass to the linker.
164 Do not define this macro if it does not need to do anything.
166 @findex LIB_SPEC
167 @item LIB_SPEC
168 Another C string constant used much like @code{LINK_SPEC}.  The difference
169 between the two is that @code{LIB_SPEC} is used at the end of the
170 command given to the linker.
172 If this macro is not defined, a default is provided that
173 loads the standard C library from the usual place.  See @file{gcc.c}.
175 @findex LIBGCC_SPEC
176 @item LIBGCC_SPEC
177 Another C string constant that tells the GNU CC driver program
178 how and when to place a reference to @file{libgcc.a} into the
179 linker command line.  This constant is placed both before and after
180 the value of @code{LIB_SPEC}.
182 If this macro is not defined, the GNU CC driver provides a default that
183 passes the string @samp{-lgcc} to the linker unless the @samp{-shared}
184 option is specified.
186 @findex STARTFILE_SPEC
187 @item STARTFILE_SPEC
188 Another C string constant used much like @code{LINK_SPEC}.  The
189 difference between the two is that @code{STARTFILE_SPEC} is used at
190 the very beginning of the command given to the linker.
192 If this macro is not defined, a default is provided that loads the
193 standard C startup file from the usual place.  See @file{gcc.c}.
195 @findex ENDFILE_SPEC
196 @item ENDFILE_SPEC
197 Another C string constant used much like @code{LINK_SPEC}.  The
198 difference between the two is that @code{ENDFILE_SPEC} is used at
199 the very end of the command given to the linker.
201 Do not define this macro if it does not need to do anything.
203 @findex EXTRA_SPECS
204 @item EXTRA_SPECS
205 Define this macro to provide additional specifications to put in the
206 @file{specs} file that can be used in various specifications like
207 @code{CC1_SPEC}.
209 The definition should be an initializer for an array of structures,
210 containing a string constant, that defines the specification name, and a
211 string constant that provides the specification.
213 Do not define this macro if it does not need to do anything.
215 @code{EXTRA_SPECS} is useful when an architecture contains several
216 related targets, which have various @code{..._SPECS} which are similar
217 to each other, and the maintainer would like one central place to keep
218 these definitions.
220 For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to
221 define either @code{_CALL_SYSV} when the System V calling sequence is
222 used or @code{_CALL_AIX} when the older AIX-based calling sequence is
223 used.
225 The @file{config/rs6000/rs6000.h} target file defines:
227 @example
228 #define EXTRA_SPECS \
229   @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @},
231 #define CPP_SYS_DEFAULT ""
232 @end example
234 The @file{config/rs6000/sysv.h} target file defines:
235 @smallexample
236 #undef CPP_SPEC
237 #define CPP_SPEC \
238 "%@{posix: -D_POSIX_SOURCE @} \
239 %@{mcall-sysv: -D_CALL_SYSV @} %@{mcall-aix: -D_CALL_AIX @} \
240 %@{!mcall-sysv: %@{!mcall-aix: %(cpp_sysv_default) @}@} \
241 %@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}"
243 #undef CPP_SYSV_DEFAULT
244 #define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
245 @end smallexample
247 while the @file{config/rs6000/eabiaix.h} target file defines
248 @code{CPP_SYSV_DEFAULT} as:
250 @smallexample
251 #undef CPP_SYSV_DEFAULT
252 #define CPP_SYSV_DEFAULT "-D_CALL_AIX"
253 @end smallexample
255 @findex LINK_LIBGCC_SPECIAL
256 @item LINK_LIBGCC_SPECIAL
257 Define this macro if the driver program should find the library
258 @file{libgcc.a} itself and should not pass @samp{-L} options to the
259 linker.  If you do not define this macro, the driver program will pass
260 the argument @samp{-lgcc} to tell the linker to do the search and will
261 pass @samp{-L} options to it.
263 @findex LINK_LIBGCC_SPECIAL_1
264 @item LINK_LIBGCC_SPECIAL_1
265 Define this macro if the driver program should find the library
266 @file{libgcc.a}.  If you do not define this macro, the driver program will pass
267 the argument @samp{-lgcc} to tell the linker to do the search.
268 This macro is similar to @code{LINK_LIBGCC_SPECIAL}, except that it does
269 not affect @samp{-L} options.
271 @findex LINK_COMMAND_SPEC
272 @item LINK_COMMAND_SPEC
273 A C string constant giving the complete command line need to execute the
274 linker.  When you do this, you will need to update your port each time a
275 change is made to the link command line within @file{gcc.c}.  Therefore,
276 define this macro only if you need to completely redefine the command
277 line for invoking the linker and there is no other way to accomplish
278 the effect you need.
280 @findex MULTILIB_DEFAULTS
281 @item MULTILIB_DEFAULTS
282 Define this macro as a C expression for the initializer of an array of
283 string to tell the driver program which options are defaults for this
284 target and thus do not need to be handled specially when using
285 @code{MULTILIB_OPTIONS}.
287 Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in
288 the target makefile fragment or if none of the options listed in
289 @code{MULTILIB_OPTIONS} are set by default.
290 @xref{Target Fragment}.
292 @findex RELATIVE_PREFIX_NOT_LINKDIR
293 @item RELATIVE_PREFIX_NOT_LINKDIR
294 Define this macro to tell @code{gcc} that it should only translate
295 a @samp{-B} prefix into a @samp{-L} linker option if the prefix
296 indicates an absolute file name.
298 @findex STANDARD_EXEC_PREFIX
299 @item STANDARD_EXEC_PREFIX
300 Define this macro as a C string constant if you wish to override the
301 standard choice of @file{/usr/local/lib/gcc-lib/} as the default prefix to
302 try when searching for the executable files of the compiler.
304 @findex MD_EXEC_PREFIX
305 @item MD_EXEC_PREFIX
306 If defined, this macro is an additional prefix to try after
307 @code{STANDARD_EXEC_PREFIX}.  @code{MD_EXEC_PREFIX} is not searched
308 when the @samp{-b} option is used, or the compiler is built as a cross
309 compiler.
311 @findex STANDARD_STARTFILE_PREFIX
312 @item STANDARD_STARTFILE_PREFIX
313 Define this macro as a C string constant if you wish to override the
314 standard choice of @file{/usr/local/lib/} as the default prefix to
315 try when searching for startup files such as @file{crt0.o}.
317 @findex MD_STARTFILE_PREFIX
318 @item MD_STARTFILE_PREFIX
319 If defined, this macro supplies an additional prefix to try after the
320 standard prefixes.  @code{MD_EXEC_PREFIX} is not searched when the
321 @samp{-b} option is used, or when the compiler is built as a cross
322 compiler.
324 @findex MD_STARTFILE_PREFIX_1
325 @item MD_STARTFILE_PREFIX_1
326 If defined, this macro supplies yet another prefix to try after the
327 standard prefixes.  It is not searched when the @samp{-b} option is
328 used, or when the compiler is built as a cross compiler.
330 @findex INIT_ENVIRONMENT
331 @item INIT_ENVIRONMENT
332 Define this macro as a C string constant if you wish to set environment
333 variables for programs called by the driver, such as the assembler and
334 loader.  The driver passes the value of this macro to @code{putenv} to
335 initialize the necessary environment variables.
337 @findex LOCAL_INCLUDE_DIR
338 @item LOCAL_INCLUDE_DIR
339 Define this macro as a C string constant if you wish to override the
340 standard choice of @file{/usr/local/include} as the default prefix to
341 try when searching for local header files.  @code{LOCAL_INCLUDE_DIR}
342 comes before @code{SYSTEM_INCLUDE_DIR} in the search order.
344 Cross compilers do not use this macro and do not search either
345 @file{/usr/local/include} or its replacement.
347 @findex SYSTEM_INCLUDE_DIR
348 @item SYSTEM_INCLUDE_DIR
349 Define this macro as a C string constant if you wish to specify a
350 system-specific directory to search for header files before the standard
351 directory.  @code{SYSTEM_INCLUDE_DIR} comes before
352 @code{STANDARD_INCLUDE_DIR} in the search order.
354 Cross compilers do not use this macro and do not search the directory
355 specified.
357 @findex STANDARD_INCLUDE_DIR
358 @item STANDARD_INCLUDE_DIR
359 Define this macro as a C string constant if you wish to override the
360 standard choice of @file{/usr/include} as the default prefix to
361 try when searching for header files.
363 Cross compilers do not use this macro and do not search either
364 @file{/usr/include} or its replacement.
366 @findex STANDARD_INCLUDE_COMPONENT
367 @item STANDARD_INCLUDE_COMPONENT
368 The ``component'' corresponding to @code{STANDARD_INCLUDE_DIR}.
369 See @code{INCLUDE_DEFAULTS}, below, for the description of components.
370 If you do not define this macro, no component is used.
372 @findex INCLUDE_DEFAULTS
373 @item INCLUDE_DEFAULTS
374 Define this macro if you wish to override the entire default search path
375 for include files.  For a native compiler, the default search path
376 usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR},
377 @code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
378 @code{STANDARD_INCLUDE_DIR}.  In addition, @code{GPLUSPLUS_INCLUDE_DIR}
379 and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
380 and specify private search areas for GCC.  The directory
381 @code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
383 The definition should be an initializer for an array of structures.
384 Each array element should have four elements: the directory name (a
385 string constant), the component name, and flag for C++-only directories,
386 and a flag showing that the includes in the directory don't need to be
387 wrapped in @code{extern @samp{C}} when compiling C++.  Mark the end of
388 the array with a null element.
390 The component name denotes what GNU package the include file is part of,
391 if any, in all upper-case letters.  For example, it might be @samp{GCC}
392 or @samp{BINUTILS}.  If the package is part of the a vendor-supplied
393 operating system, code the component name as @samp{0}.
396 For example, here is the definition used for VAX/VMS:
398 @example
399 #define INCLUDE_DEFAULTS \
400 @{                                       \
401   @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@},   \
402   @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@},    \
403   @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@},  \
404   @{ ".", 0, 0, 0@},                      \
405   @{ 0, 0, 0, 0@}                         \
407 @end example
408 @end table
410 Here is the order of prefixes tried for exec files:
412 @enumerate
413 @item
414 Any prefixes specified by the user with @samp{-B}.
416 @item
417 The environment variable @code{GCC_EXEC_PREFIX}, if any.
419 @item
420 The directories specified by the environment variable @code{COMPILER_PATH}.
422 @item
423 The macro @code{STANDARD_EXEC_PREFIX}.
425 @item
426 @file{/usr/lib/gcc/}.
428 @item
429 The macro @code{MD_EXEC_PREFIX}, if any.
430 @end enumerate
432 Here is the order of prefixes tried for startfiles:
434 @enumerate
435 @item
436 Any prefixes specified by the user with @samp{-B}.
438 @item
439 The environment variable @code{GCC_EXEC_PREFIX}, if any.
441 @item
442 The directories specified by the environment variable @code{LIBRARY_PATH}
443 (native only, cross compilers do not use this).
445 @item
446 The macro @code{STANDARD_EXEC_PREFIX}.
448 @item
449 @file{/usr/lib/gcc/}.
451 @item
452 The macro @code{MD_EXEC_PREFIX}, if any.
454 @item
455 The macro @code{MD_STARTFILE_PREFIX}, if any.
457 @item
458 The macro @code{STANDARD_STARTFILE_PREFIX}.
460 @item
461 @file{/lib/}.
463 @item
464 @file{/usr/lib/}.
465 @end enumerate
467 @node Run-time Target
468 @section Run-time Target Specification
469 @cindex run-time target specification
470 @cindex predefined macros
471 @cindex target specifications
473 @c prevent bad page break with this line
474 Here are run-time target specifications.
476 @table @code
477 @findex CPP_PREDEFINES
478 @item CPP_PREDEFINES
479 Define this to be a string constant containing @samp{-D} options to
480 define the predefined macros that identify this machine and system.
481 These macros will be predefined unless the @samp{-ansi} option is
482 specified.
484 In addition, a parallel set of macros are predefined, whose names are
485 made by appending @samp{__} at the beginning and at the end.  These
486 @samp{__} macros are permitted by the ANSI standard, so they are
487 predefined regardless of whether @samp{-ansi} is specified.
489 For example, on the Sun, one can use the following value:
491 @smallexample
492 "-Dmc68000 -Dsun -Dunix"
493 @end smallexample
495 The result is to define the macros @code{__mc68000__}, @code{__sun__}
496 and @code{__unix__} unconditionally, and the macros @code{mc68000},
497 @code{sun} and @code{unix} provided @samp{-ansi} is not specified.
499 @findex extern int target_flags
500 @item extern int target_flags;
501 This declaration should be present.
503 @cindex optional hardware or system features
504 @cindex features, optional, in system conventions
505 @item TARGET_@dots{}
506 This series of macros is to allow compiler command arguments to
507 enable or disable the use of optional features of the target machine.
508 For example, one machine description serves both the 68000 and
509 the 68020; a command argument tells the compiler whether it should
510 use 68020-only instructions or not.  This command argument works
511 by means of a macro @code{TARGET_68020} that tests a bit in
512 @code{target_flags}.
514 Define a macro @code{TARGET_@var{featurename}} for each such option.
515 Its definition should test a bit in @code{target_flags}; for example:
517 @smallexample
518 #define TARGET_68020 (target_flags & 1)
519 @end smallexample
521 One place where these macros are used is in the condition-expressions
522 of instruction patterns.  Note how @code{TARGET_68020} appears
523 frequently in the 68000 machine description file, @file{m68k.md}.
524 Another place they are used is in the definitions of the other
525 macros in the @file{@var{machine}.h} file.
527 @findex TARGET_SWITCHES
528 @item TARGET_SWITCHES
529 This macro defines names of command options to set and clear
530 bits in @code{target_flags}.  Its definition is an initializer
531 with a subgrouping for each command option.
533 Each subgrouping contains a string constant, that defines the option
534 name, and a number, which contains the bits to set in
535 @code{target_flags}.  A negative number says to clear bits instead;
536 the negative of the number is which bits to clear.  The actual option
537 name is made by appending @samp{-m} to the specified name.
539 One of the subgroupings should have a null string.  The number in
540 this grouping is the default value for @code{target_flags}.  Any
541 target options act starting with that value.
543 Here is an example which defines @samp{-m68000} and @samp{-m68020}
544 with opposite meanings, and picks the latter as the default:
546 @smallexample
547 #define TARGET_SWITCHES \
548   @{ @{ "68020", 1@},      \
549     @{ "68000", -1@},     \
550     @{ "", 1@}@}
551 @end smallexample
553 @findex TARGET_OPTIONS
554 @item TARGET_OPTIONS
555 This macro is similar to @code{TARGET_SWITCHES} but defines names of command
556 options that have values.  Its definition is an initializer with a
557 subgrouping for each command option.
559 Each subgrouping contains a string constant, that defines the fixed part
560 of the option name, and the address of a variable.  The variable, type
561 @code{char *}, is set to the variable part of the given option if the fixed
562 part matches.  The actual option name is made by appending @samp{-m} to the
563 specified name.
565 Here is an example which defines @samp{-mshort-data-@var{number}}.  If the
566 given option is @samp{-mshort-data-512}, the variable @code{m88k_short_data}
567 will be set to the string @code{"512"}.
569 @smallexample
570 extern char *m88k_short_data;
571 #define TARGET_OPTIONS \
572  @{ @{ "short-data-", &m88k_short_data @} @}
573 @end smallexample
575 @findex TARGET_VERSION
576 @item TARGET_VERSION
577 This macro is a C statement to print on @code{stderr} a string
578 describing the particular machine description choice.  Every machine
579 description should define @code{TARGET_VERSION}.  For example:
581 @smallexample
582 #ifdef MOTOROLA
583 #define TARGET_VERSION \
584   fprintf (stderr, " (68k, Motorola syntax)");
585 #else
586 #define TARGET_VERSION \
587   fprintf (stderr, " (68k, MIT syntax)");
588 #endif
589 @end smallexample
591 @findex OVERRIDE_OPTIONS
592 @item OVERRIDE_OPTIONS
593 Sometimes certain combinations of command options do not make sense on
594 a particular target machine.  You can define a macro
595 @code{OVERRIDE_OPTIONS} to take account of this.  This macro, if
596 defined, is executed once just after all the command options have been
597 parsed.
599 Don't use this macro to turn on various extra optimizations for
600 @samp{-O}.  That is what @code{OPTIMIZATION_OPTIONS} is for.
602 @findex OPTIMIZATION_OPTIONS
603 @item OPTIMIZATION_OPTIONS (@var{level})
604 Some machines may desire to change what optimizations are performed for
605 various optimization levels.   This macro, if defined, is executed once
606 just after the optimization level is determined and before the remainder
607 of the command options have been parsed.  Values set in this macro are
608 used as the default values for the other command line options.
610 @var{level} is the optimization level specified; 2 if @samp{-O2} is
611 specified, 1 if @samp{-O} is specified, and 0 if neither is specified.
613 You should not use this macro to change options that are not
614 machine-specific.  These should uniformly selected by the same
615 optimization level on all supported machines.  Use this macro to enable
616 machine-specific optimizations.
618 @strong{Do not examine @code{write_symbols} in
619 this macro!} The debugging options are not supposed to alter the
620 generated code.
622 @findex CAN_DEBUG_WITHOUT_FP
623 @item CAN_DEBUG_WITHOUT_FP
624 Define this macro if debugging can be performed even without a frame
625 pointer.  If this macro is defined, GNU CC will turn on the
626 @samp{-fomit-frame-pointer} option whenever @samp{-O} is specified.
627 @end table
629 @node Storage Layout
630 @section Storage Layout
631 @cindex storage layout
633 Note that the definitions of the macros in this table which are sizes or
634 alignments measured in bits do not need to be constant.  They can be C
635 expressions that refer to static variables, such as the @code{target_flags}.
636 @xref{Run-time Target}.
638 @table @code
639 @findex BITS_BIG_ENDIAN
640 @item BITS_BIG_ENDIAN
641 Define this macro to have the value 1 if the most significant bit in a
642 byte has the lowest number; otherwise define it to have the value zero.
643 This means that bit-field instructions count from the most significant
644 bit.  If the machine has no bit-field instructions, then this must still
645 be defined, but it doesn't matter which value it is defined to.  This
646 macro need not be a constant.
648 This macro does not affect the way structure fields are packed into
649 bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}.
651 @findex BYTES_BIG_ENDIAN
652 @item BYTES_BIG_ENDIAN
653 Define this macro to have the value 1 if the most significant byte in a
654 word has the lowest number.  This macro need not be a constant.
656 @findex WORDS_BIG_ENDIAN
657 @item WORDS_BIG_ENDIAN
658 Define this macro to have the value 1 if, in a multiword object, the
659 most significant word has the lowest number.  This applies to both
660 memory locations and registers; GNU CC fundamentally assumes that the
661 order of words in memory is the same as the order in registers.  This
662 macro need not be a constant.
664 @findex LIBGCC2_WORDS_BIG_ENDIAN
665 @item LIBGCC2_WORDS_BIG_ENDIAN
666 Define this macro if WORDS_BIG_ENDIAN is not constant.  This must be a
667 constant value with the same meaning as WORDS_BIG_ENDIAN, which will be
668 used only when compiling libgcc2.c.  Typically the value will be set
669 based on preprocessor defines.
671 @findex FLOAT_WORDS_BIG_ENDIAN
672 @item FLOAT_WORDS_BIG_ENDIAN
673 Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
674 @code{TFmode} floating point numbers are stored in memory with the word
675 containing the sign bit at the lowest address; otherwise define it to
676 have the value 0.  This macro need not be a constant.
678 You need not define this macro if the ordering is the same as for
679 multi-word integers.
681 @findex BITS_PER_UNIT
682 @item BITS_PER_UNIT
683 Define this macro to be the number of bits in an addressable storage
684 unit (byte); normally 8.
686 @findex BITS_PER_WORD
687 @item BITS_PER_WORD
688 Number of bits in a word; normally 32.
690 @findex MAX_BITS_PER_WORD
691 @item MAX_BITS_PER_WORD
692 Maximum number of bits in a word.  If this is undefined, the default is
693 @code{BITS_PER_WORD}.  Otherwise, it is the constant value that is the
694 largest value that @code{BITS_PER_WORD} can have at run-time.
696 @findex UNITS_PER_WORD
697 @item UNITS_PER_WORD
698 Number of storage units in a word; normally 4.
700 @findex MIN_UNITS_PER_WORD
701 @item MIN_UNITS_PER_WORD
702 Minimum number of units in a word.  If this is undefined, the default is
703 @code{UNITS_PER_WORD}.  Otherwise, it is the constant value that is the
704 smallest value that @code{UNITS_PER_WORD} can have at run-time.
706 @findex POINTER_SIZE
707 @item POINTER_SIZE
708 Width of a pointer, in bits.  You must specify a value no wider than the
709 width of @code{Pmode}.  If it is not equal to the width of @code{Pmode},
710 you must define @code{POINTERS_EXTEND_UNSIGNED}.
712 @findex POINTERS_EXTEND_UNSIGNED
713 @item POINTERS_EXTEND_UNSIGNED
714 A C expression whose value is nonzero if pointers that need to be
715 extended from being @code{POINTER_SIZE} bits wide to @code{Pmode} are to
716 be zero-extended and zero if they are to be sign-extended.
718 You need not define this macro if the @code{POINTER_SIZE} is equal
719 to the width of @code{Pmode}.
721 @findex PROMOTE_MODE
722 @item PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type})
723 A macro to update @var{m} and @var{unsignedp} when an object whose type
724 is @var{type} and which has the specified mode and signedness is to be
725 stored in a register.  This macro is only called when @var{type} is a
726 scalar type.
728 On most RISC machines, which only have operations that operate on a full
729 register, define this macro to set @var{m} to @code{word_mode} if
730 @var{m} is an integer mode narrower than @code{BITS_PER_WORD}.  In most
731 cases, only integer modes should be widened because wider-precision
732 floating-point operations are usually more expensive than their narrower
733 counterparts.
735 For most machines, the macro definition does not change @var{unsignedp}.
736 However, some machines, have instructions that preferentially handle
737 either signed or unsigned quantities of certain modes.  For example, on
738 the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
739 sign-extend the result to 64 bits.  On such machines, set
740 @var{unsignedp} according to which kind of extension is more efficient.
742 Do not define this macro if it would never modify @var{m}.
744 @findex PROMOTE_FUNCTION_ARGS
745 @item PROMOTE_FUNCTION_ARGS
746 Define this macro if the promotion described by @code{PROMOTE_MODE}
747 should also be done for outgoing function arguments.
749 @findex PROMOTE_FUNCTION_RETURN
750 @item PROMOTE_FUNCTION_RETURN
751 Define this macro if the promotion described by @code{PROMOTE_MODE}
752 should also be done for the return value of functions.
754 If this macro is defined, @code{FUNCTION_VALUE} must perform the same
755 promotions done by @code{PROMOTE_MODE}.
757 @findex PROMOTE_FOR_CALL_ONLY
758 @item PROMOTE_FOR_CALL_ONLY
759 Define this macro if the promotion described by @code{PROMOTE_MODE}
760 should @emph{only} be performed for outgoing function arguments or
761 function return values, as specified by @code{PROMOTE_FUNCTION_ARGS}
762 and @code{PROMOTE_FUNCTION_RETURN}, respectively.
764 @findex PARM_BOUNDARY
765 @item PARM_BOUNDARY
766 Normal alignment required for function parameters on the stack, in
767 bits.  All stack parameters receive at least this much alignment
768 regardless of data type.  On most machines, this is the same as the
769 size of an integer.
771 @findex STACK_BOUNDARY
772 @item STACK_BOUNDARY
773 Define this macro if you wish to preserve a certain alignment for
774 the stack pointer.  The definition is a C expression
775 for the desired alignment (measured in bits).
777 @cindex @code{PUSH_ROUNDING}, interaction with @code{STACK_BOUNDARY}
778 If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned
779 to the specified boundary.  If @code{PUSH_ROUNDING} is defined and specifies a
780 less strict alignment than @code{STACK_BOUNDARY}, the stack may be
781 momentarily unaligned while pushing arguments.
783 @findex FUNCTION_BOUNDARY
784 @item FUNCTION_BOUNDARY
785 Alignment required for a function entry point, in bits.
787 @findex BIGGEST_ALIGNMENT
788 @item BIGGEST_ALIGNMENT
789 Biggest alignment that any data type can require on this machine, in bits.
791 @findex MINIMUM_ATOMIC_ALIGNMENT
792 @item MINIMUM_ATOMIC_ALIGNMENT
793 If defined, the smallest alignment, in bits, that can be given to an
794 object that can be referenced in one operation, without disturbing any
795 nearby object.  Normally, this is @code{BITS_PER_UNIT}, but may be larger
796 on machines that don't have byte or half-word store operations.
798 @findex BIGGEST_FIELD_ALIGNMENT
799 @item BIGGEST_FIELD_ALIGNMENT
800 Biggest alignment that any structure field can require on this machine,
801 in bits.  If defined, this overrides @code{BIGGEST_ALIGNMENT} for
802 structure fields only.
804 @findex ADJUST_FIELD_ALIGN
805 @item ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
806 An expression for the alignment of a structure field @var{field} if the
807 alignment computed in the usual way is @var{computed}.  GNU CC uses
808 this value instead of the value in @code{BIGGEST_ALIGNMENT} or
809 @code{BIGGEST_FIELD_ALIGNMENT}, if defined, for structure fields only.
811 @findex MAX_OFILE_ALIGNMENT
812 @item MAX_OFILE_ALIGNMENT
813 Biggest alignment supported by the object file format of this machine.
814 Use this macro to limit the alignment which can be specified using the
815 @code{__attribute__ ((aligned (@var{n})))} construct.  If not defined,
816 the default value is @code{BIGGEST_ALIGNMENT}.
818 @findex DATA_ALIGNMENT
819 @item DATA_ALIGNMENT (@var{type}, @var{basic-align})
820 If defined, a C expression to compute the alignment for a static
821 variable.  @var{type} is the data type, and @var{basic-align} is the
822 alignment that the object would ordinarily have.  The value of this
823 macro is used instead of that alignment to align the object.
825 If this macro is not defined, then @var{basic-align} is used.
827 @findex strcpy
828 One use of this macro is to increase alignment of medium-size data to
829 make it all fit in fewer cache lines.  Another is to cause character
830 arrays to be word-aligned so that @code{strcpy} calls that copy
831 constants to character arrays can be done inline.
833 @findex CONSTANT_ALIGNMENT
834 @item CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
835 If defined, a C expression to compute the alignment given to a constant
836 that is being placed in memory.  @var{constant} is the constant and
837 @var{basic-align} is the alignment that the object would ordinarily
838 have.  The value of this macro is used instead of that alignment to
839 align the object.
841 If this macro is not defined, then @var{basic-align} is used.
843 The typical use of this macro is to increase alignment for string
844 constants to be word aligned so that @code{strcpy} calls that copy
845 constants can be done inline.
847 @findex EMPTY_FIELD_BOUNDARY
848 @item EMPTY_FIELD_BOUNDARY
849 Alignment in bits to be given to a structure bit field that follows an
850 empty field such as @code{int : 0;}.
852 Note that @code{PCC_BITFIELD_TYPE_MATTERS} also affects the alignment
853 that results from an empty field.
855 @findex STRUCTURE_SIZE_BOUNDARY
856 @item STRUCTURE_SIZE_BOUNDARY
857 Number of bits which any structure or union's size must be a multiple of.
858 Each structure or union's size is rounded up to a multiple of this.
860 If you do not define this macro, the default is the same as
861 @code{BITS_PER_UNIT}.
863 @findex STRICT_ALIGNMENT
864 @item STRICT_ALIGNMENT
865 Define this macro to be the value 1 if instructions will fail to work
866 if given data not on the nominal alignment.  If instructions will merely
867 go slower in that case, define this macro as 0.
869 @findex PCC_BITFIELD_TYPE_MATTERS
870 @item PCC_BITFIELD_TYPE_MATTERS
871 Define this if you wish to imitate the way many other C compilers handle
872 alignment of bitfields and the structures that contain them.
874 The behavior is that the type written for a bitfield (@code{int},
875 @code{short}, or other integer type) imposes an alignment for the
876 entire structure, as if the structure really did contain an ordinary
877 field of that type.  In addition, the bitfield is placed within the
878 structure so that it would fit within such a field, not crossing a
879 boundary for it.
881 Thus, on most machines, a bitfield whose type is written as @code{int}
882 would not cross a four-byte boundary, and would force four-byte
883 alignment for the whole structure.  (The alignment used may not be four
884 bytes; it is controlled by the other alignment parameters.)
886 If the macro is defined, its definition should be a C expression;
887 a nonzero value for the expression enables this behavior.
889 Note that if this macro is not defined, or its value is zero, some
890 bitfields may cross more than one alignment boundary.  The compiler can
891 support such references if there are @samp{insv}, @samp{extv}, and
892 @samp{extzv} insns that can directly reference memory.
894 The other known way of making bitfields work is to define
895 @code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}.
896 Then every structure can be accessed with fullwords.
898 Unless the machine has bitfield instructions or you define
899 @code{STRUCTURE_SIZE_BOUNDARY} that way, you must define
900 @code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value.
902 If your aim is to make GNU CC use the same conventions for laying out
903 bitfields as are used by another compiler, here is how to investigate
904 what the other compiler does.  Compile and run this program:
906 @example
907 struct foo1
909   char x;
910   char :0;
911   char y;
914 struct foo2
916   char x;
917   int :0;
918   char y;
921 main ()
923   printf ("Size of foo1 is %d\n",
924           sizeof (struct foo1));
925   printf ("Size of foo2 is %d\n",
926           sizeof (struct foo2));
927   exit (0);
929 @end example
931 If this prints 2 and 5, then the compiler's behavior is what you would
932 get from @code{PCC_BITFIELD_TYPE_MATTERS}.
934 @findex BITFIELD_NBYTES_LIMITED
935 @item BITFIELD_NBYTES_LIMITED
936 Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited to
937 aligning a bitfield within the structure.
939 @findex ROUND_TYPE_SIZE
940 @item ROUND_TYPE_SIZE (@var{struct}, @var{size}, @var{align})
941 Define this macro as an expression for the overall size of a structure
942 (given by @var{struct} as a tree node) when the size computed from the
943 fields is @var{size} and the alignment is @var{align}.
945 The default is to round @var{size} up to a multiple of @var{align}.
947 @findex ROUND_TYPE_ALIGN
948 @item ROUND_TYPE_ALIGN (@var{struct}, @var{computed}, @var{specified})
949 Define this macro as an expression for the alignment of a structure
950 (given by @var{struct} as a tree node) if the alignment computed in the
951 usual way is @var{computed} and the alignment explicitly specified was
952 @var{specified}.
954 The default is to use @var{specified} if it is larger; otherwise, use
955 the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT}
957 @findex MAX_FIXED_MODE_SIZE
958 @item MAX_FIXED_MODE_SIZE
959 An integer expression for the size in bits of the largest integer
960 machine mode that should actually be used.  All integer machine modes of
961 this size or smaller can be used for structures and unions with the
962 appropriate sizes.  If this macro is undefined, @code{GET_MODE_BITSIZE
963 (DImode)} is assumed.
965 @findex STACK_SAVEAREA_MODE
966 @item STACK_SAVEAREA_MODE (@var{mode}, @var{save_level})
967 If specified, an expression of type @code{enum machine_mode} that overrides
968 the mode specified by operand 0 of a @code{save_stack_@var{level}} named
969 pattern (@pxref{Standard Names}).  @var{mode} is the mode previously
970 chosen from that pattern and @var{save_leve} is one of @code{SAVE_BLOCK},
971 @code{SAVE_FUNCTION}, or @code{SAVE_NONLOCAL} and selects which of the
972 three named patterns are having their mode overrided.
974 You need not define this macro if it always returns @var{mode}.  You would
975 most commonly define this macro if the @code{save_stack_@var{level}}
976 patterns need to support both a 32- and a 64-bit mode, in which case
977 taking the mode from operand 0 is inconvenient.
979 @findex CHECK_FLOAT_VALUE
980 @item CHECK_FLOAT_VALUE (@var{mode}, @var{value}, @var{overflow})
981 A C statement to validate the value @var{value} (of type
982 @code{double}) for mode @var{mode}.  This means that you check whether
983 @var{value} fits within the possible range of values for mode
984 @var{mode} on this target machine.  The mode @var{mode} is always
985 a mode of class @code{MODE_FLOAT}.  @var{overflow} is nonzero if
986 the value is already known to be out of range.
988 If @var{value} is not valid or if @var{overflow} is nonzero, you should
989 set @var{overflow} to 1 and then assign some valid value to @var{value}.
990 Allowing an invalid value to go through the compiler can produce
991 incorrect assembler code which may even cause Unix assemblers to crash.
993 This macro need not be defined if there is no work for it to do.
995 @findex TARGET_FLOAT_FORMAT
996 @item TARGET_FLOAT_FORMAT
997 A code distinguishing the floating point format of the target machine.
998 There are three defined values:
1000 @table @code
1001 @findex IEEE_FLOAT_FORMAT
1002 @item IEEE_FLOAT_FORMAT
1003 This code indicates IEEE floating point.  It is the default; there is no
1004 need to define this macro when the format is IEEE.
1006 @findex VAX_FLOAT_FORMAT
1007 @item VAX_FLOAT_FORMAT
1008 This code indicates the peculiar format used on the Vax.
1010 @findex UNKNOWN_FLOAT_FORMAT
1011 @item UNKNOWN_FLOAT_FORMAT
1012 This code indicates any other format.
1013 @end table
1015 The value of this macro is compared with @code{HOST_FLOAT_FORMAT}
1016 (@pxref{Config}) to determine whether the target machine has the same
1017 format as the host machine.  If any other formats are actually in use on
1018 supported machines, new codes should be defined for them.
1020 The ordering of the component words of floating point values stored in
1021 memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN} for the target
1022 machine and @code{HOST_FLOAT_WORDS_BIG_ENDIAN} for the host.
1024 @findex DEFAULT_VTABLE_THUNKS
1025 @item DEFAULT_VTABLE_THUNKS
1026 GNU CC supports two ways of implementing C++ vtables:  traditional or with
1027 so-called ``thunks''.  The flag @samp{-fvtable-thunk} chooses between them.
1028 Define this macro to be a C expression for the default value of that flag.
1029 If @code{DEFAULT_VTABLE_THUNKS} is 0, GNU CC uses the traditional
1030 implementation by default.  The ``thunk'' implementation is more efficient
1031 (especially if you have provided an implementation of
1032 @code{ASM_OUTPUT_MI_THUNK}, see @ref{Function Entry}), but is not binary
1033 compatible with code compiled using the traditional implementation.  
1034 If you are writing a new ports, define @code{DEFAULT_VTABLE_THUNKS} to 1.
1036 If you do not define this macro, the default for @samp{-fvtable-thunk} is 0.
1037 @end table
1039 @node Type Layout
1040 @section Layout of Source Language Data Types
1042 These macros define the sizes and other characteristics of the standard
1043 basic data types used in programs being compiled.  Unlike the macros in
1044 the previous section, these apply to specific features of C and related
1045 languages, rather than to fundamental aspects of storage layout.
1047 @table @code
1048 @findex INT_TYPE_SIZE
1049 @item INT_TYPE_SIZE
1050 A C expression for the size in bits of the type @code{int} on the
1051 target machine.  If you don't define this, the default is one word.
1053 @findex MAX_INT_TYPE_SIZE
1054 @item MAX_INT_TYPE_SIZE
1055 Maximum number for the size in bits of the type @code{int} on the target
1056 machine.  If this is undefined, the default is @code{INT_TYPE_SIZE}.
1057 Otherwise, it is the constant value that is the largest value that
1058 @code{INT_TYPE_SIZE} can have at run-time.  This is used in @code{cpp}.
1060 @findex SHORT_TYPE_SIZE
1061 @item SHORT_TYPE_SIZE
1062 A C expression for the size in bits of the type @code{short} on the
1063 target machine.  If you don't define this, the default is half a word.
1064 (If this would be less than one storage unit, it is rounded up to one
1065 unit.)
1067 @findex LONG_TYPE_SIZE
1068 @item LONG_TYPE_SIZE
1069 A C expression for the size in bits of the type @code{long} on the
1070 target machine.  If you don't define this, the default is one word.
1072 @findex MAX_LONG_TYPE_SIZE
1073 @item MAX_LONG_TYPE_SIZE
1074 Maximum number for the size in bits of the type @code{long} on the
1075 target machine.  If this is undefined, the default is
1076 @code{LONG_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1077 largest value that @code{LONG_TYPE_SIZE} can have at run-time.  This is
1078 used in @code{cpp}.
1080 @findex LONG_LONG_TYPE_SIZE
1081 @item LONG_LONG_TYPE_SIZE
1082 A C expression for the size in bits of the type @code{long long} on the
1083 target machine.  If you don't define this, the default is two
1084 words.  If you want to support GNU Ada on your machine, the value of
1085 macro must be at least 64.
1087 @findex CHAR_TYPE_SIZE
1088 @item CHAR_TYPE_SIZE
1089 A C expression for the size in bits of the type @code{char} on the
1090 target machine.  If you don't define this, the default is one quarter
1091 of a word.  (If this would be less than one storage unit, it is rounded up
1092 to one unit.)
1094 @findex MAX_CHAR_TYPE_SIZE
1095 @item MAX_CHAR_TYPE_SIZE
1096 Maximum number for the size in bits of the type @code{char} on the
1097 target machine.  If this is undefined, the default is
1098 @code{CHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1099 largest value that @code{CHAR_TYPE_SIZE} can have at run-time.  This is
1100 used in @code{cpp}.
1102 @findex FLOAT_TYPE_SIZE
1103 @item FLOAT_TYPE_SIZE
1104 A C expression for the size in bits of the type @code{float} on the
1105 target machine.  If you don't define this, the default is one word.
1107 @findex DOUBLE_TYPE_SIZE
1108 @item DOUBLE_TYPE_SIZE
1109 A C expression for the size in bits of the type @code{double} on the
1110 target machine.  If you don't define this, the default is two
1111 words.
1113 @findex LONG_DOUBLE_TYPE_SIZE
1114 @item LONG_DOUBLE_TYPE_SIZE
1115 A C expression for the size in bits of the type @code{long double} on
1116 the target machine.  If you don't define this, the default is two
1117 words.
1119 @findex WIDEST_HARDWARE_FP_SIZE
1120 @item WIDEST_HARDWARE_FP_SIZE
1121 A C expression for the size in bits of the widest floating-point format
1122 supported by the hardware.  If you define this macro, you must specify a
1123 value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}.
1124 If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE}
1125 is the default.
1127 @findex DEFAULT_SIGNED_CHAR
1128 @item DEFAULT_SIGNED_CHAR
1129 An expression whose value is 1 or 0, according to whether the type
1130 @code{char} should be signed or unsigned by default.  The user can
1131 always override this default with the options @samp{-fsigned-char}
1132 and @samp{-funsigned-char}.
1134 @findex DEFAULT_SHORT_ENUMS
1135 @item DEFAULT_SHORT_ENUMS
1136 A C expression to determine whether to give an @code{enum} type
1137 only as many bytes as it takes to represent the range of possible values
1138 of that type.  A nonzero value means to do that; a zero value means all
1139 @code{enum} types should be allocated like @code{int}.
1141 If you don't define the macro, the default is 0.
1143 @findex SIZE_TYPE
1144 @item SIZE_TYPE
1145 A C expression for a string describing the name of the data type to use
1146 for size values.  The typedef name @code{size_t} is defined using the
1147 contents of the string.
1149 The string can contain more than one keyword.  If so, separate them with
1150 spaces, and write first any length keyword, then @code{unsigned} if
1151 appropriate, and finally @code{int}.  The string must exactly match one
1152 of the data type names defined in the function
1153 @code{init_decl_processing} in the file @file{c-decl.c}.  You may not
1154 omit @code{int} or change the order---that would cause the compiler to
1155 crash on startup.
1157 If you don't define this macro, the default is @code{"long unsigned
1158 int"}.
1160 @findex PTRDIFF_TYPE
1161 @item PTRDIFF_TYPE
1162 A C expression for a string describing the name of the data type to use
1163 for the result of subtracting two pointers.  The typedef name
1164 @code{ptrdiff_t} is defined using the contents of the string.  See
1165 @code{SIZE_TYPE} above for more information.
1167 If you don't define this macro, the default is @code{"long int"}.
1169 @findex WCHAR_TYPE
1170 @item WCHAR_TYPE
1171 A C expression for a string describing the name of the data type to use
1172 for wide characters.  The typedef name @code{wchar_t} is defined using
1173 the contents of the string.  See @code{SIZE_TYPE} above for more
1174 information.
1176 If you don't define this macro, the default is @code{"int"}.
1178 @findex WCHAR_TYPE_SIZE
1179 @item WCHAR_TYPE_SIZE
1180 A C expression for the size in bits of the data type for wide
1181 characters.  This is used in @code{cpp}, which cannot make use of
1182 @code{WCHAR_TYPE}.
1184 @findex MAX_WCHAR_TYPE_SIZE
1185 @item MAX_WCHAR_TYPE_SIZE
1186 Maximum number for the size in bits of the data type for wide
1187 characters.  If this is undefined, the default is
1188 @code{WCHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1189 largest value that @code{WCHAR_TYPE_SIZE} can have at run-time.  This is
1190 used in @code{cpp}.
1192 @findex OBJC_INT_SELECTORS
1193 @item OBJC_INT_SELECTORS
1194 Define this macro if the type of Objective C selectors should be
1195 @code{int}.
1197 If this macro is not defined, then selectors should have the type
1198 @code{struct objc_selector *}.
1200 @findex OBJC_SELECTORS_WITHOUT_LABELS
1201 @item OBJC_SELECTORS_WITHOUT_LABELS
1202 Define this macro if the compiler can group all the selectors together
1203 into a vector and use just one label at the beginning of the vector.
1204 Otherwise, the compiler must give each selector its own assembler
1205 label.
1207 On certain machines, it is important to have a separate label for each
1208 selector because this enables the linker to eliminate duplicate selectors.
1210 @findex TARGET_BELL
1211 @item TARGET_BELL
1212 A C constant expression for the integer value for escape sequence
1213 @samp{\a}.
1215 @findex TARGET_TAB
1216 @findex TARGET_BS
1217 @findex TARGET_NEWLINE
1218 @item TARGET_BS
1219 @itemx TARGET_TAB
1220 @itemx TARGET_NEWLINE
1221 C constant expressions for the integer values for escape sequences
1222 @samp{\b}, @samp{\t} and @samp{\n}.
1224 @findex TARGET_VT
1225 @findex TARGET_FF
1226 @findex TARGET_CR
1227 @item TARGET_VT
1228 @itemx TARGET_FF
1229 @itemx TARGET_CR
1230 C constant expressions for the integer values for escape sequences
1231 @samp{\v}, @samp{\f} and @samp{\r}.
1232 @end table
1234 @node Registers
1235 @section Register Usage
1236 @cindex register usage
1238 This section explains how to describe what registers the target machine
1239 has, and how (in general) they can be used.
1241 The description of which registers a specific instruction can use is
1242 done with register classes; see @ref{Register Classes}.  For information
1243 on using registers to access a stack frame, see @ref{Frame Registers}.
1244 For passing values in registers, see @ref{Register Arguments}.
1245 For returning values in registers, see @ref{Scalar Return}.
1247 @menu
1248 * Register Basics::             Number and kinds of registers.
1249 * Allocation Order::            Order in which registers are allocated.
1250 * Values in Registers::         What kinds of values each reg can hold.
1251 * Leaf Functions::              Renumbering registers for leaf functions.
1252 * Stack Registers::             Handling a register stack such as 80387.
1253 * Obsolete Register Macros::    Macros formerly used for the 80387.
1254 @end menu
1256 @node Register Basics
1257 @subsection Basic Characteristics of Registers
1259 @c prevent bad page break with this line
1260 Registers have various characteristics.
1262 @table @code
1263 @findex FIRST_PSEUDO_REGISTER
1264 @item FIRST_PSEUDO_REGISTER
1265 Number of hardware registers known to the compiler.  They receive
1266 numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
1267 pseudo register's number really is assigned the number
1268 @code{FIRST_PSEUDO_REGISTER}.
1270 @item FIXED_REGISTERS
1271 @findex FIXED_REGISTERS
1272 @cindex fixed register
1273 An initializer that says which registers are used for fixed purposes
1274 all throughout the compiled code and are therefore not available for
1275 general allocation.  These would include the stack pointer, the frame
1276 pointer (except on machines where that can be used as a general
1277 register when no frame pointer is needed), the program counter on
1278 machines where that is considered one of the addressable registers,
1279 and any other numbered register with a standard use.
1281 This information is expressed as a sequence of numbers, separated by
1282 commas and surrounded by braces.  The @var{n}th number is 1 if
1283 register @var{n} is fixed, 0 otherwise.
1285 The table initialized from this macro, and the table initialized by
1286 the following one, may be overridden at run time either automatically,
1287 by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
1288 the user with the command options @samp{-ffixed-@var{reg}},
1289 @samp{-fcall-used-@var{reg}} and @samp{-fcall-saved-@var{reg}}.
1291 @findex CALL_USED_REGISTERS
1292 @item CALL_USED_REGISTERS
1293 @cindex call-used register
1294 @cindex call-clobbered register
1295 @cindex call-saved register
1296 Like @code{FIXED_REGISTERS} but has 1 for each register that is
1297 clobbered (in general) by function calls as well as for fixed
1298 registers.  This macro therefore identifies the registers that are not
1299 available for general allocation of values that must live across
1300 function calls.
1302 If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler
1303 automatically saves it on function entry and restores it on function
1304 exit, if the register is used within the function.
1306 @findex CONDITIONAL_REGISTER_USAGE
1307 @findex fixed_regs
1308 @findex call_used_regs
1309 @item CONDITIONAL_REGISTER_USAGE
1310 Zero or more C statements that may conditionally modify two variables
1311 @code{fixed_regs} and @code{call_used_regs} (both of type @code{char
1312 []}) after they have been initialized from the two preceding macros.
1314 This is necessary in case the fixed or call-clobbered registers depend
1315 on target flags.
1317 You need not define this macro if it has no work to do.
1319 @cindex disabling certain registers
1320 @cindex controlling register usage
1321 If the usage of an entire class of registers depends on the target
1322 flags, you may indicate this to GCC by using this macro to modify
1323 @code{fixed_regs} and @code{call_used_regs} to 1 for each of the
1324 registers in the classes which should not be used by GCC.  Also define
1325 the macro @code{REG_CLASS_FROM_LETTER} to return @code{NO_REGS} if it
1326 is called with a letter for a class that shouldn't be used.
1328 (However, if this class is not included in @code{GENERAL_REGS} and all
1329 of the insn patterns whose constraints permit this class are
1330 controlled by target switches, then GCC will automatically avoid using
1331 these registers when the target switches are opposed to them.)
1333 @findex NON_SAVING_SETJMP
1334 @item NON_SAVING_SETJMP
1335 If this macro is defined and has a nonzero value, it means that
1336 @code{setjmp} and related functions fail to save the registers, or that
1337 @code{longjmp} fails to restore them.  To compensate, the compiler
1338 avoids putting variables in registers in functions that use
1339 @code{setjmp}.
1341 @findex INCOMING_REGNO
1342 @item INCOMING_REGNO (@var{out})
1343 Define this macro if the target machine has register windows.  This C
1344 expression returns the register number as seen by the called function
1345 corresponding to the register number @var{out} as seen by the calling
1346 function.  Return @var{out} if register number @var{out} is not an
1347 outbound register.
1349 @findex OUTGOING_REGNO
1350 @item OUTGOING_REGNO (@var{in})
1351 Define this macro if the target machine has register windows.  This C
1352 expression returns the register number as seen by the calling function
1353 corresponding to the register number @var{in} as seen by the called
1354 function.  Return @var{in} if register number @var{in} is not an inbound
1355 register.
1357 @ignore
1358 @findex PC_REGNUM
1359 @item PC_REGNUM
1360 If the program counter has a register number, define this as that
1361 register number.  Otherwise, do not define it.
1362 @end ignore
1363 @end table
1365 @node Allocation Order
1366 @subsection Order of Allocation of Registers
1367 @cindex order of register allocation
1368 @cindex register allocation order
1370 @c prevent bad page break with this line
1371 Registers are allocated in order.
1373 @table @code
1374 @findex REG_ALLOC_ORDER
1375 @item REG_ALLOC_ORDER
1376 If defined, an initializer for a vector of integers, containing the
1377 numbers of hard registers in the order in which GNU CC should prefer
1378 to use them (from most preferred to least).
1380 If this macro is not defined, registers are used lowest numbered first
1381 (all else being equal).
1383 One use of this macro is on machines where the highest numbered
1384 registers must always be saved and the save-multiple-registers
1385 instruction supports only sequences of consecutive registers.  On such
1386 machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists
1387 the highest numbered allocable register first.
1389 @findex ORDER_REGS_FOR_LOCAL_ALLOC
1390 @item ORDER_REGS_FOR_LOCAL_ALLOC
1391 A C statement (sans semicolon) to choose the order in which to allocate
1392 hard registers for pseudo-registers local to a basic block.
1394 Store the desired register order in the array @code{reg_alloc_order}.
1395 Element 0 should be the register to allocate first; element 1, the next
1396 register; and so on.
1398 The macro body should not assume anything about the contents of
1399 @code{reg_alloc_order} before execution of the macro.
1401 On most machines, it is not necessary to define this macro.
1402 @end table
1404 @node Values in Registers
1405 @subsection How Values Fit in Registers
1407 This section discusses the macros that describe which kinds of values
1408 (specifically, which machine modes) each register can hold, and how many
1409 consecutive registers are needed for a given mode.
1411 @table @code
1412 @findex HARD_REGNO_NREGS
1413 @item HARD_REGNO_NREGS (@var{regno}, @var{mode})
1414 A C expression for the number of consecutive hard registers, starting
1415 at register number @var{regno}, required to hold a value of mode
1416 @var{mode}.
1418 On a machine where all registers are exactly one word, a suitable
1419 definition of this macro is
1421 @smallexample
1422 #define HARD_REGNO_NREGS(REGNO, MODE)            \
1423    ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
1424     / UNITS_PER_WORD))
1425 @end smallexample
1427 @findex HARD_REGNO_MODE_OK
1428 @item HARD_REGNO_MODE_OK (@var{regno}, @var{mode})
1429 A C expression that is nonzero if it is permissible to store a value
1430 of mode @var{mode} in hard register number @var{regno} (or in several
1431 registers starting with that one).  For a machine where all registers
1432 are equivalent, a suitable definition is
1434 @smallexample
1435 #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
1436 @end smallexample
1438 You need not include code to check for the numbers of fixed registers,
1439 because the allocation mechanism considers them to be always occupied.
1441 @cindex register pairs
1442 On some machines, double-precision values must be kept in even/odd
1443 register pairs.  You can implement that by defining this macro to reject
1444 odd register numbers for such modes.
1446 The minimum requirement for a mode to be OK in a register is that the
1447 @samp{mov@var{mode}} instruction pattern support moves between the
1448 register and other hard register in the same class and that moving a
1449 value into the register and back out not alter it.
1451 Since the same instruction used to move @code{word_mode} will work for
1452 all narrower integer modes, it is not necessary on any machine for
1453 @code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided
1454 you define patterns @samp{movhi}, etc., to take advantage of this.  This
1455 is useful because of the interaction between @code{HARD_REGNO_MODE_OK}
1456 and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes
1457 to be tieable.
1459 Many machines have special registers for floating point arithmetic.
1460 Often people assume that floating point machine modes are allowed only
1461 in floating point registers.  This is not true.  Any registers that
1462 can hold integers can safely @emph{hold} a floating point machine
1463 mode, whether or not floating arithmetic can be done on it in those
1464 registers.  Integer move instructions can be used to move the values.
1466 On some machines, though, the converse is true: fixed-point machine
1467 modes may not go in floating registers.  This is true if the floating
1468 registers normalize any value stored in them, because storing a
1469 non-floating value there would garble it.  In this case,
1470 @code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in
1471 floating registers.  But if the floating registers do not automatically
1472 normalize, if you can store any bit pattern in one and retrieve it
1473 unchanged without a trap, then any machine mode may go in a floating
1474 register, so you can define this macro to say so.
1476 The primary significance of special floating registers is rather that
1477 they are the registers acceptable in floating point arithmetic
1478 instructions.  However, this is of no concern to
1479 @code{HARD_REGNO_MODE_OK}.  You handle it by writing the proper
1480 constraints for those instructions.
1482 On some machines, the floating registers are especially slow to access,
1483 so that it is better to store a value in a stack frame than in such a
1484 register if floating point arithmetic is not being done.  As long as the
1485 floating registers are not in class @code{GENERAL_REGS}, they will not
1486 be used unless some pattern's constraint asks for one.
1488 @findex MODES_TIEABLE_P
1489 @item MODES_TIEABLE_P (@var{mode1}, @var{mode2})
1490 A C expression that is nonzero if a value of mode
1491 @var{mode1} is accessible in mode @var{mode2} without copying.
1493 If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and
1494 @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are always the same for
1495 any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1}, @var{mode2})}
1496 should be nonzero.  If they differ for any @var{r}, you should define
1497 this macro to return zero unless some other mechanism ensures the
1498 accessibility of the value in a narrower mode.
1500 You should define this macro to return nonzero in as many cases as
1501 possible since doing so will allow GNU CC to perform better register
1502 allocation.
1503 @end table
1505 @node Leaf Functions
1506 @subsection Handling Leaf Functions
1508 @cindex leaf functions
1509 @cindex functions, leaf
1510 On some machines, a leaf function (i.e., one which makes no calls) can run
1511 more efficiently if it does not make its own register window.  Often this
1512 means it is required to receive its arguments in the registers where they
1513 are passed by the caller, instead of the registers where they would
1514 normally arrive.
1516 The special treatment for leaf functions generally applies only when
1517 other conditions are met; for example, often they may use only those
1518 registers for its own variables and temporaries.  We use the term ``leaf
1519 function'' to mean a function that is suitable for this special
1520 handling, so that functions with no calls are not necessarily ``leaf
1521 functions''.
1523 GNU CC assigns register numbers before it knows whether the function is
1524 suitable for leaf function treatment.  So it needs to renumber the
1525 registers in order to output a leaf function.  The following macros
1526 accomplish this.
1528 @table @code
1529 @findex LEAF_REGISTERS
1530 @item LEAF_REGISTERS
1531 A C initializer for a vector, indexed by hard register number, which
1532 contains 1 for a register that is allowable in a candidate for leaf
1533 function treatment.
1535 If leaf function treatment involves renumbering the registers, then the
1536 registers marked here should be the ones before renumbering---those that
1537 GNU CC would ordinarily allocate.  The registers which will actually be
1538 used in the assembler code, after renumbering, should not be marked with 1
1539 in this vector.
1541 Define this macro only if the target machine offers a way to optimize
1542 the treatment of leaf functions.
1544 @findex LEAF_REG_REMAP
1545 @item LEAF_REG_REMAP (@var{regno})
1546 A C expression whose value is the register number to which @var{regno}
1547 should be renumbered, when a function is treated as a leaf function.
1549 If @var{regno} is a register number which should not appear in a leaf
1550 function before renumbering, then the expression should yield -1, which
1551 will cause the compiler to abort.
1553 Define this macro only if the target machine offers a way to optimize the
1554 treatment of leaf functions, and registers need to be renumbered to do
1555 this.
1556 @end table
1558 @findex leaf_function
1559 Normally, @code{FUNCTION_PROLOGUE} and @code{FUNCTION_EPILOGUE} must
1560 treat leaf functions specially.  It can test the C variable
1561 @code{leaf_function} which is nonzero for leaf functions.  (The variable
1562 @code{leaf_function} is defined only if @code{LEAF_REGISTERS} is
1563 defined.)
1564 @c changed this to fix overfull.  ALSO:  why the "it" at the beginning
1565 @c of the next paragraph?!  --mew 2feb93
1567 @node Stack Registers
1568 @subsection Registers That Form a Stack
1570 There are special features to handle computers where some of the
1571 ``registers'' form a stack, as in the 80387 coprocessor for the 80386.
1572 Stack registers are normally written by pushing onto the stack, and are
1573 numbered relative to the top of the stack.
1575 Currently, GNU CC can only handle one group of stack-like registers, and
1576 they must be consecutively numbered.
1578 @table @code
1579 @findex STACK_REGS
1580 @item STACK_REGS
1581 Define this if the machine has any stack-like registers.
1583 @findex FIRST_STACK_REG
1584 @item FIRST_STACK_REG
1585 The number of the first stack-like register.  This one is the top
1586 of the stack.
1588 @findex LAST_STACK_REG
1589 @item LAST_STACK_REG
1590 The number of the last stack-like register.  This one is the bottom of
1591 the stack.
1592 @end table
1594 @node Obsolete Register Macros
1595 @subsection Obsolete Macros for Controlling Register Usage
1597 These features do not work very well.  They exist because they used to
1598 be required to generate correct code for the 80387 coprocessor of the
1599 80386.  They are no longer used by that machine description and may be
1600 removed in a later version of the compiler.  Don't use them!
1602 @table @code
1603 @findex OVERLAPPING_REGNO_P
1604 @item OVERLAPPING_REGNO_P (@var{regno})
1605 If defined, this is a C expression whose value is nonzero if hard
1606 register number @var{regno} is an overlapping register.  This means a
1607 hard register which overlaps a hard register with a different number.
1608 (Such overlap is undesirable, but occasionally it allows a machine to
1609 be supported which otherwise could not be.)  This macro must return
1610 nonzero for @emph{all} the registers which overlap each other.  GNU CC
1611 can use an overlapping register only in certain limited ways.  It can
1612 be used for allocation within a basic block, and may be spilled for
1613 reloading; that is all.
1615 If this macro is not defined, it means that none of the hard registers
1616 overlap each other.  This is the usual situation.
1618 @findex INSN_CLOBBERS_REGNO_P
1619 @item INSN_CLOBBERS_REGNO_P (@var{insn}, @var{regno})
1620 If defined, this is a C expression whose value should be nonzero if
1621 the insn @var{insn} has the effect of mysteriously clobbering the
1622 contents of hard register number @var{regno}.  By ``mysterious'' we
1623 mean that the insn's RTL expression doesn't describe such an effect.
1625 If this macro is not defined, it means that no insn clobbers registers
1626 mysteriously.  This is the usual situation; all else being equal,
1627 it is best for the RTL expression to show all the activity.
1629 @cindex death notes
1630 @findex PRESERVE_DEATH_INFO_REGNO_P
1631 @item PRESERVE_DEATH_INFO_REGNO_P (@var{regno})
1632 If defined, this is a C expression whose value is nonzero if correct
1633 @code{REG_DEAD} notes are needed for hard register number @var{regno}
1634 after reload.
1636 You would arrange to preserve death info for a register when some of the
1637 code in the machine description which is executed to write the assembler
1638 code looks at the death notes.  This is necessary only when the actual
1639 hardware feature which GNU CC thinks of as a register is not actually a
1640 register of the usual sort.  (It might, for example, be a hardware
1641 stack.)
1643 It is also useful for peepholes and linker relaxation.
1645 If this macro is not defined, it means that no death notes need to be
1646 preserved, and some may even be incorrect.  This is the usual situation.
1647 @end table
1649 @node Register Classes
1650 @section Register Classes
1651 @cindex register class definitions
1652 @cindex class definitions, register
1654 On many machines, the numbered registers are not all equivalent.
1655 For example, certain registers may not be allowed for indexed addressing;
1656 certain registers may not be allowed in some instructions.  These machine
1657 restrictions are described to the compiler using @dfn{register classes}.
1659 You define a number of register classes, giving each one a name and saying
1660 which of the registers belong to it.  Then you can specify register classes
1661 that are allowed as operands to particular instruction patterns.
1663 @findex ALL_REGS
1664 @findex NO_REGS
1665 In general, each register will belong to several classes.  In fact, one
1666 class must be named @code{ALL_REGS} and contain all the registers.  Another
1667 class must be named @code{NO_REGS} and contain no registers.  Often the
1668 union of two classes will be another class; however, this is not required.
1670 @findex GENERAL_REGS
1671 One of the classes must be named @code{GENERAL_REGS}.  There is nothing
1672 terribly special about the name, but the operand constraint letters
1673 @samp{r} and @samp{g} specify this class.  If @code{GENERAL_REGS} is
1674 the same as @code{ALL_REGS}, just define it as a macro which expands
1675 to @code{ALL_REGS}.
1677 Order the classes so that if class @var{x} is contained in class @var{y}
1678 then @var{x} has a lower class number than @var{y}.
1680 The way classes other than @code{GENERAL_REGS} are specified in operand
1681 constraints is through machine-dependent operand constraint letters.
1682 You can define such letters to correspond to various classes, then use
1683 them in operand constraints.
1685 You should define a class for the union of two classes whenever some
1686 instruction allows both classes.  For example, if an instruction allows
1687 either a floating point (coprocessor) register or a general register for a
1688 certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS}
1689 which includes both of them.  Otherwise you will get suboptimal code.
1691 You must also specify certain redundant information about the register
1692 classes: for each class, which classes contain it and which ones are
1693 contained in it; for each pair of classes, the largest class contained
1694 in their union.
1696 When a value occupying several consecutive registers is expected in a
1697 certain class, all the registers used must belong to that class.
1698 Therefore, register classes cannot be used to enforce a requirement for
1699 a register pair to start with an even-numbered register.  The way to
1700 specify this requirement is with @code{HARD_REGNO_MODE_OK}.
1702 Register classes used for input-operands of bitwise-and or shift
1703 instructions have a special requirement: each such class must have, for
1704 each fixed-point machine mode, a subclass whose registers can transfer that
1705 mode to or from memory.  For example, on some machines, the operations for
1706 single-byte values (@code{QImode}) are limited to certain registers.  When
1707 this is so, each register class that is used in a bitwise-and or shift
1708 instruction must have a subclass consisting of registers from which
1709 single-byte values can be loaded or stored.  This is so that
1710 @code{PREFERRED_RELOAD_CLASS} can always have a possible value to return.
1712 @table @code
1713 @findex enum reg_class
1714 @item enum reg_class
1715 An enumeral type that must be defined with all the register class names
1716 as enumeral values.  @code{NO_REGS} must be first.  @code{ALL_REGS}
1717 must be the last register class, followed by one more enumeral value,
1718 @code{LIM_REG_CLASSES}, which is not a register class but rather
1719 tells how many classes there are.
1721 Each register class has a number, which is the value of casting
1722 the class name to type @code{int}.  The number serves as an index
1723 in many of the tables described below.
1725 @findex N_REG_CLASSES
1726 @item N_REG_CLASSES
1727 The number of distinct register classes, defined as follows:
1729 @example
1730 #define N_REG_CLASSES (int) LIM_REG_CLASSES
1731 @end example
1733 @findex REG_CLASS_NAMES
1734 @item REG_CLASS_NAMES
1735 An initializer containing the names of the register classes as C string
1736 constants.  These names are used in writing some of the debugging dumps.
1738 @findex REG_CLASS_CONTENTS
1739 @item REG_CLASS_CONTENTS
1740 An initializer containing the contents of the register classes, as integers
1741 which are bit masks.  The @var{n}th integer specifies the contents of class
1742 @var{n}.  The way the integer @var{mask} is interpreted is that
1743 register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1.
1745 When the machine has more than 32 registers, an integer does not suffice.
1746 Then the integers are replaced by sub-initializers, braced groupings containing
1747 several integers.  Each sub-initializer must be suitable as an initializer
1748 for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}.
1750 @findex REGNO_REG_CLASS
1751 @item REGNO_REG_CLASS (@var{regno})
1752 A C expression whose value is a register class containing hard register
1753 @var{regno}.  In general there is more than one such class; choose a class
1754 which is @dfn{minimal}, meaning that no smaller class also contains the
1755 register.
1757 @findex BASE_REG_CLASS
1758 @item BASE_REG_CLASS
1759 A macro whose definition is the name of the class to which a valid
1760 base register must belong.  A base register is one used in an address
1761 which is the register value plus a displacement.
1763 @findex INDEX_REG_CLASS
1764 @item INDEX_REG_CLASS
1765 A macro whose definition is the name of the class to which a valid
1766 index register must belong.  An index register is one used in an
1767 address where its value is either multiplied by a scale factor or
1768 added to another register (as well as added to a displacement).
1770 @findex REG_CLASS_FROM_LETTER
1771 @item REG_CLASS_FROM_LETTER (@var{char})
1772 A C expression which defines the machine-dependent operand constraint
1773 letters for register classes.  If @var{char} is such a letter, the
1774 value should be the register class corresponding to it.  Otherwise,
1775 the value should be @code{NO_REGS}.  The register letter @samp{r},
1776 corresponding to class @code{GENERAL_REGS}, will not be passed
1777 to this macro; you do not need to handle it.
1779 @findex REGNO_OK_FOR_BASE_P
1780 @item REGNO_OK_FOR_BASE_P (@var{num})
1781 A C expression which is nonzero if register number @var{num} is
1782 suitable for use as a base register in operand addresses.  It may be
1783 either a suitable hard register or a pseudo register that has been
1784 allocated such a hard register.
1786 @findex REGNO_MODE_OK_FOR_BASE_P
1787 @item REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
1788 A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
1789 that expression may examine the mode of the memory reference in
1790 @var{mode}.  You should define this macro if the mode of the memory
1791 reference affects whether a register may be used as a base register.  If
1792 you define this macro, the compiler will use it instead of
1793 @code{REGNO_OK_FOR_BASE_P}.
1795 @findex REGNO_OK_FOR_INDEX_P
1796 @item REGNO_OK_FOR_INDEX_P (@var{num})
1797 A C expression which is nonzero if register number @var{num} is
1798 suitable for use as an index register in operand addresses.  It may be
1799 either a suitable hard register or a pseudo register that has been
1800 allocated such a hard register.
1802 The difference between an index register and a base register is that
1803 the index register may be scaled.  If an address involves the sum of
1804 two registers, neither one of them scaled, then either one may be
1805 labeled the ``base'' and the other the ``index''; but whichever
1806 labeling is used must fit the machine's constraints of which registers
1807 may serve in each capacity.  The compiler will try both labelings,
1808 looking for one that is valid, and will reload one or both registers
1809 only if neither labeling works.
1811 @findex PREFERRED_RELOAD_CLASS
1812 @item PREFERRED_RELOAD_CLASS (@var{x}, @var{class})
1813 A C expression that places additional restrictions on the register class
1814 to use when it is necessary to copy value @var{x} into a register in class
1815 @var{class}.  The value is a register class; perhaps @var{class}, or perhaps
1816 another, smaller class.  On many machines, the following definition is
1817 safe:
1819 @example
1820 #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
1821 @end example
1823 Sometimes returning a more restrictive class makes better code.  For
1824 example, on the 68000, when @var{x} is an integer constant that is in range
1825 for a @samp{moveq} instruction, the value of this macro is always
1826 @code{DATA_REGS} as long as @var{class} includes the data registers.
1827 Requiring a data register guarantees that a @samp{moveq} will be used.
1829 If @var{x} is a @code{const_double}, by returning @code{NO_REGS}
1830 you can force @var{x} into a memory constant.  This is useful on
1831 certain machines where immediate floating values cannot be loaded into
1832 certain kinds of registers.
1834 @findex PREFERRED_OUTPUT_RELOAD_CLASS
1835 @item PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class})
1836 Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of
1837 input reloads.  If you don't define this macro, the default is to use
1838 @var{class}, unchanged.
1840 @findex LIMIT_RELOAD_CLASS
1841 @item LIMIT_RELOAD_CLASS (@var{mode}, @var{class})
1842 A C expression that places additional restrictions on the register class
1843 to use when it is necessary to be able to hold a value of mode
1844 @var{mode} in a reload register for which class @var{class} would
1845 ordinarily be used.
1847 Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when
1848 there are certain modes that simply can't go in certain reload classes.
1850 The value is a register class; perhaps @var{class}, or perhaps another,
1851 smaller class.
1853 Don't define this macro unless the target machine has limitations which
1854 require the macro to do something nontrivial.
1856 @findex SECONDARY_RELOAD_CLASS
1857 @findex SECONDARY_INPUT_RELOAD_CLASS
1858 @findex SECONDARY_OUTPUT_RELOAD_CLASS
1859 @item SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
1860 @itemx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
1861 @itemx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
1862 Many machines have some registers that cannot be copied directly to or
1863 from memory or even from other types of registers.  An example is the
1864 @samp{MQ} register, which on most machines, can only be copied to or
1865 from general registers, but not memory.  Some machines allow copying all
1866 registers to and from memory, but require a scratch register for stores
1867 to some memory locations (e.g., those with symbolic address on the RT,
1868 and those with certain symbolic address on the Sparc when compiling
1869 PIC).  In some cases, both an intermediate and a scratch register are
1870 required.
1872 You should define these macros to indicate to the reload phase that it may
1873 need to allocate at least one register for a reload in addition to the
1874 register to contain the data.  Specifically, if copying @var{x} to a
1875 register @var{class} in @var{mode} requires an intermediate register,
1876 you should define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the
1877 largest register class all of whose registers can be used as
1878 intermediate registers or scratch registers.
1880 If copying a register @var{class} in @var{mode} to @var{x} requires an
1881 intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS}
1882 should be defined to return the largest register class required.  If the
1883 requirements for input and output reloads are the same, the macro
1884 @code{SECONDARY_RELOAD_CLASS} should be used instead of defining both
1885 macros identically.
1887 The values returned by these macros are often @code{GENERAL_REGS}.
1888 Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x}
1889 can be directly copied to or from a register of @var{class} in
1890 @var{mode} without requiring a scratch register.  Do not define this
1891 macro if it would always return @code{NO_REGS}.
1893 If a scratch register is required (either with or without an
1894 intermediate register), you should define patterns for
1895 @samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required
1896 (@pxref{Standard Names}.  These patterns, which will normally be
1897 implemented with a @code{define_expand}, should be similar to the
1898 @samp{mov@var{m}} patterns, except that operand 2 is the scratch
1899 register.
1901 Define constraints for the reload register and scratch register that
1902 contain a single register class.  If the original reload register (whose
1903 class is @var{class}) can meet the constraint given in the pattern, the
1904 value returned by these macros is used for the class of the scratch
1905 register.  Otherwise, two additional reload registers are required.
1906 Their classes are obtained from the constraints in the insn pattern.
1908 @var{x} might be a pseudo-register or a @code{subreg} of a
1909 pseudo-register, which could either be in a hard register or in memory.
1910 Use @code{true_regnum} to find out; it will return -1 if the pseudo is
1911 in memory and the hard register number if it is in a register.
1913 These macros should not be used in the case where a particular class of
1914 registers can only be copied to memory and not to another class of
1915 registers.  In that case, secondary reload registers are not needed and
1916 would not be helpful.  Instead, a stack location must be used to perform
1917 the copy and the @code{mov@var{m}} pattern should use memory as a
1918 intermediate storage.  This case often occurs between floating-point and
1919 general registers.
1921 @findex SECONDARY_MEMORY_NEEDED
1922 @item SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m})
1923 Certain machines have the property that some registers cannot be copied
1924 to some other registers without using memory.  Define this macro on
1925 those machines to be a C expression that is non-zero if objects of mode
1926 @var{m} in registers of @var{class1} can only be copied to registers of
1927 class @var{class2} by storing a register of @var{class1} into memory
1928 and loading that memory location into a register of @var{class2}.
1930 Do not define this macro if its value would always be zero.
1932 @findex SECONDARY_MEMORY_NEEDED_RTX
1933 @item SECONDARY_MEMORY_NEEDED_RTX (@var{mode})
1934 Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler
1935 allocates a stack slot for a memory location needed for register copies.
1936 If this macro is defined, the compiler instead uses the memory location
1937 defined by this macro.
1939 Do not define this macro if you do not define
1940 @code{SECONDARY_MEMORY_NEEDED}.
1942 @findex SECONDARY_MEMORY_NEEDED_MODE
1943 @item SECONDARY_MEMORY_NEEDED_MODE (@var{mode})
1944 When the compiler needs a secondary memory location to copy between two
1945 registers of mode @var{mode}, it normally allocates sufficient memory to
1946 hold a quantity of @code{BITS_PER_WORD} bits and performs the store and
1947 load operations in a mode that many bits wide and whose class is the
1948 same as that of @var{mode}.
1950 This is right thing to do on most machines because it ensures that all
1951 bits of the register are copied and prevents accesses to the registers
1952 in a narrower mode, which some machines prohibit for floating-point
1953 registers.
1955 However, this default behavior is not correct on some machines, such as
1956 the DEC Alpha, that store short integers in floating-point registers
1957 differently than in integer registers.  On those machines, the default
1958 widening will not work correctly and you must define this macro to
1959 suppress that widening in some cases.  See the file @file{alpha.h} for
1960 details.
1962 Do not define this macro if you do not define
1963 @code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that
1964 is @code{BITS_PER_WORD} bits wide is correct for your machine.
1966 @findex SMALL_REGISTER_CLASSES
1967 @item SMALL_REGISTER_CLASSES
1968 Normally the compiler avoids choosing registers that have been
1969 explicitly mentioned in the rtl as spill registers (these registers are
1970 normally those used to pass parameters and return values).  However,
1971 some machines have so few registers of certain classes that there
1972 would not be enough registers to use as spill registers if this were
1973 done.
1975 Define @code{SMALL_REGISTER_CLASSES} to be an expression with a non-zero
1976 value on these machines.  When this macro has a non-zero value, the
1977 compiler allows registers explicitly used in the rtl to be used as spill
1978 registers but avoids extending the lifetime of these registers.
1980 It is always safe to define this macro with a non-zero value, but if you
1981 unnecessarily define it, you will reduce the amount of optimizations
1982 that can be performed in some cases.  If you do not define this macro
1983 with a non-zero value when it is required, the compiler will run out of
1984 spill registers and print a fatal error message.  For most machines, you
1985 should not define this macro at all.
1987 @findex CLASS_LIKELY_SPILLED_P
1988 @item CLASS_LIKELY_SPILLED_P (@var{class})
1989 A C expression whose value is nonzero if pseudos that have been assigned
1990 to registers of class @var{class} would likely be spilled because
1991 registers of @var{class} are needed for spill registers.
1993 The default value of this macro returns 1 if @var{class} has exactly one
1994 register and zero otherwise.  On most machines, this default should be
1995 used.  Only define this macro to some other expression if pseudo
1996 allocated by @file{local-alloc.c} end up in memory because their hard
1997 registers were needed for spill registers.  If this macro returns nonzero
1998 for those classes, those pseudos will only be allocated by
1999 @file{global.c}, which knows how to reallocate the pseudo to another
2000 register.  If there would not be another register available for
2001 reallocation, you should not change the definition of this macro since
2002 the only effect of such a definition would be to slow down register
2003 allocation.
2005 @findex CLASS_MAX_NREGS
2006 @item CLASS_MAX_NREGS (@var{class}, @var{mode})
2007 A C expression for the maximum number of consecutive registers
2008 of class @var{class} needed to hold a value of mode @var{mode}.
2010 This is closely related to the macro @code{HARD_REGNO_NREGS}.  In fact,
2011 the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})}
2012 should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno},
2013 @var{mode})} for all @var{regno} values in the class @var{class}.
2015 This macro helps control the handling of multiple-word values
2016 in the reload pass.
2018 @item CLASS_CANNOT_CHANGE_SIZE
2019 If defined, a C expression for a class that contains registers which the
2020 compiler must always access in a mode that is the same size as the mode
2021 in which it loaded the register.
2023 For the example, loading 32-bit integer or floating-point objects into
2024 floating-point registers on the Alpha extends them to 64-bits.
2025 Therefore loading a 64-bit object and then storing it as a 32-bit object
2026 does not store the low-order 32-bits, as would be the case for a normal
2027 register.  Therefore, @file{alpha.h} defines this macro as
2028 @code{FLOAT_REGS}.
2029 @end table
2031 Three other special macros describe which operands fit which constraint
2032 letters.
2034 @table @code
2035 @findex CONST_OK_FOR_LETTER_P
2036 @item CONST_OK_FOR_LETTER_P (@var{value}, @var{c})
2037 A C expression that defines the machine-dependent operand constraint
2038 letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify
2039 particular ranges of integer values.  If @var{c} is one of those
2040 letters, the expression should check that @var{value}, an integer, is in
2041 the appropriate range and return 1 if so, 0 otherwise.  If @var{c} is
2042 not one of those letters, the value should be 0 regardless of
2043 @var{value}.
2045 @findex CONST_DOUBLE_OK_FOR_LETTER_P
2046 @item CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c})
2047 A C expression that defines the machine-dependent operand constraint
2048 letters that specify particular ranges of @code{const_double} values
2049 (@samp{G} or @samp{H}).
2051 If @var{c} is one of those letters, the expression should check that
2052 @var{value}, an RTX of code @code{const_double}, is in the appropriate
2053 range and return 1 if so, 0 otherwise.  If @var{c} is not one of those
2054 letters, the value should be 0 regardless of @var{value}.
2056 @code{const_double} is used for all floating-point constants and for
2057 @code{DImode} fixed-point constants.  A given letter can accept either
2058 or both kinds of values.  It can use @code{GET_MODE} to distinguish
2059 between these kinds.
2061 @findex EXTRA_CONSTRAINT
2062 @item EXTRA_CONSTRAINT (@var{value}, @var{c})
2063 A C expression that defines the optional machine-dependent constraint
2064 letters (@samp{Q}, @samp{R}, @samp{S}, @samp{T}, @samp{U}) that can
2065 be used to segregate specific types of operands, usually memory
2066 references, for the target machine.  Normally this macro will not be
2067 defined.  If it is required for a particular target machine, it should
2068 return 1 if @var{value} corresponds to the operand type represented by
2069 the constraint letter @var{c}.  If @var{c} is not defined as an extra
2070 constraint, the value returned should be 0 regardless of @var{value}.
2072 For example, on the ROMP, load instructions cannot have their output in r0 if
2073 the memory reference contains a symbolic address.  Constraint letter
2074 @samp{Q} is defined as representing a memory address that does
2075 @emph{not} contain a symbolic address.  An alternative is specified with
2076 a @samp{Q} constraint on the input and @samp{r} on the output.  The next
2077 alternative specifies @samp{m} on the input and a register class that
2078 does not include r0 on the output.
2079 @end table
2081 @node Stack and Calling
2082 @section Stack Layout and Calling Conventions
2083 @cindex calling conventions
2085 @c prevent bad page break with this line
2086 This describes the stack layout and calling conventions.
2088 @menu
2089 * Frame Layout::
2090 * Stack Checking::
2091 * Frame Registers::
2092 * Elimination::
2093 * Stack Arguments::
2094 * Register Arguments::
2095 * Scalar Return::
2096 * Aggregate Return::
2097 * Caller Saves::
2098 * Function Entry::
2099 * Profiling::
2100 @end menu
2102 @node Frame Layout
2103 @subsection Basic Stack Layout
2104 @cindex stack frame layout
2105 @cindex frame layout
2107 @c prevent bad page break with this line
2108 Here is the basic stack layout.
2110 @table @code
2111 @findex STACK_GROWS_DOWNWARD
2112 @item STACK_GROWS_DOWNWARD
2113 Define this macro if pushing a word onto the stack moves the stack
2114 pointer to a smaller address.
2116 When we say, ``define this macro if @dots{},'' it means that the
2117 compiler checks this macro only with @code{#ifdef} so the precise
2118 definition used does not matter.
2120 @findex FRAME_GROWS_DOWNWARD
2121 @item FRAME_GROWS_DOWNWARD
2122 Define this macro if the addresses of local variable slots are at negative
2123 offsets from the frame pointer.
2125 @findex ARGS_GROW_DOWNWARD
2126 @item ARGS_GROW_DOWNWARD
2127 Define this macro if successive arguments to a function occupy decreasing
2128 addresses on the stack.
2130 @findex STARTING_FRAME_OFFSET
2131 @item STARTING_FRAME_OFFSET
2132 Offset from the frame pointer to the first local variable slot to be allocated.
2134 If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by
2135 subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}.
2136 Otherwise, it is found by adding the length of the first slot to the
2137 value @code{STARTING_FRAME_OFFSET}.
2138 @c i'm not sure if the above is still correct.. had to change it to get
2139 @c rid of an overfull.  --mew 2feb93
2141 @findex STACK_POINTER_OFFSET
2142 @item STACK_POINTER_OFFSET
2143 Offset from the stack pointer register to the first location at which
2144 outgoing arguments are placed.  If not specified, the default value of
2145 zero is used.  This is the proper value for most machines.
2147 If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2148 the first location at which outgoing arguments are placed.
2150 @findex FIRST_PARM_OFFSET
2151 @item FIRST_PARM_OFFSET (@var{fundecl})
2152 Offset from the argument pointer register to the first argument's
2153 address.  On some machines it may depend on the data type of the
2154 function.
2156 If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2157 the first argument's address.
2159 @findex STACK_DYNAMIC_OFFSET
2160 @item STACK_DYNAMIC_OFFSET (@var{fundecl})
2161 Offset from the stack pointer register to an item dynamically allocated
2162 on the stack, e.g., by @code{alloca}.
2164 The default value for this macro is @code{STACK_POINTER_OFFSET} plus the
2165 length of the outgoing arguments.  The default is correct for most
2166 machines.  See @file{function.c} for details.
2168 @findex DYNAMIC_CHAIN_ADDRESS
2169 @item DYNAMIC_CHAIN_ADDRESS (@var{frameaddr})
2170 A C expression whose value is RTL representing the address in a stack
2171 frame where the pointer to the caller's frame is stored.  Assume that
2172 @var{frameaddr} is an RTL expression for the address of the stack frame
2173 itself.
2175 If you don't define this macro, the default is to return the value
2176 of @var{frameaddr}---that is, the stack frame address is also the
2177 address of the stack word that points to the previous frame.
2179 @findex SETUP_FRAME_ADDRESSES
2180 @item SETUP_FRAME_ADDRESSES
2181 If defined, a C expression that produces the machine-specific code to
2182 setup the stack so that arbitrary frames can be accessed.  For example,
2183 on the Sparc, we must flush all of the register windows to the stack
2184 before we can access arbitrary stack frames.  You will seldom need to
2185 define this macro.
2187 @findex BUILTIN_SETJMP_FRAME_VALUE
2188 @item BUILTIN_SETJMP_FRAME_VALUE
2189 If defined, a C expression that contains an rtx that is used to store
2190 the address of the current frame into the built in @code{setjmp} buffer.
2191 The default value, @code{virtual_stack_vars_rtx}, is correct for most
2192 machines.  One reason you may need to define this macro is if
2193 @code{hard_frame_pointer_rtx} is the appropriate value on your machine.
2195 @findex RETURN_ADDR_RTX
2196 @item RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
2197 A C expression whose value is RTL representing the value of the return
2198 address for the frame @var{count} steps up from the current frame, after
2199 the prologue.  @var{frameaddr} is the frame pointer of the @var{count}
2200 frame, or the frame pointer of the @var{count} @minus{} 1 frame if
2201 @code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
2203 The value of the expression must always be the correct address when
2204 @var{count} is zero, but may be @code{NULL_RTX} if there is not way to
2205 determine the return address of other frames.
2207 @findex RETURN_ADDR_IN_PREVIOUS_FRAME
2208 @item RETURN_ADDR_IN_PREVIOUS_FRAME
2209 Define this if the return address of a particular stack frame is accessed
2210 from the frame pointer of the previous stack frame.
2212 @findex INCOMING_RETURN_ADDR_RTX
2213 @item INCOMING_RETURN_ADDR_RTX
2214 A C expression whose value is RTL representing the location of the
2215 incoming return address at the beginning of any function, before the
2216 prologue.  This RTL is either a @code{REG}, indicating that the return
2217 value is saved in @samp{REG}, or a @code{MEM} representing a location in
2218 the stack.
2220 You only need to define this macro if you want to support call frame
2221 debugging information like that provided by DWARF 2.
2223 @findex INCOMING_FRAME_SP_OFFSET
2224 @item INCOMING_FRAME_SP_OFFSET
2225 A C expression whose value is an integer giving the offset, in bytes,
2226 from the value of the stack pointer register to the top of the stack
2227 frame at the beginning of any function, before the prologue.  The top of
2228 the frame is defined to be the value of the stack pointer in the
2229 previous frame, just before the call instruction.
2231 You only need to define this macro if you want to support call frame
2232 debugging information like that provided by DWARF 2.
2233 @end table
2235 @node Stack Checking
2236 @subsection Specifying How Stack Checking is Done
2238 GNU CC will check that stack references are within the boundaries of
2239 the stack, if the @samp{-fstack-check} is specified, in one of three ways:
2241 @enumerate
2242 @item
2243 If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GNU CC
2244 will assume that you have arranged for stack checking to be done at
2245 appropriate places in the configuration files, e.g., in
2246 @code{FUNCTION_PROLOGUE}.  GNU CC will do not other special processing.
2248 @item
2249 If @code{STACK_CHECK_BUILTIN} is zero and you defined a named pattern
2250 called @code{check_stack} in your @file{md} file, GNU CC will call that
2251 pattern with one argument which is the address to compare the stack
2252 value against.  You must arrange for this pattern to report an error if
2253 the stack pointer is out of range.
2255 @item
2256 If neither of the above are true, GNU CC will generate code to periodically
2257 ``probe'' the stack pointer using the values of the macros defined below.
2258 @end enumerate
2260 Normally, you will use the default values of these macros, so GNU CC
2261 will use the third approach.
2263 @table @code
2264 @findex STACK_CHECK_BUILTIN
2265 @item STACK_CHECK_BUILTIN
2266 A nonzero value if stack checking is done by the configuration files in a
2267 machine-dependent manner.  You should define this macro if stack checking 
2268 is require by the ABI of your machine or if you would like to have to stack 
2269 checking in some more efficient way than GNU CC's portable approach.
2270 The default value of this macro is zero.
2272 @findex STACK_CHECK_PROBE_INTERVAL
2273 @item STACK_CHECK_PROBE_INTERVAL
2274 An integer representing the interval at which GNU CC must generate stack
2275 probe instructions.  You will normally define this macro to be no larger
2276 than the size of the ``guard pages'' at the end of a stack area.  The
2277 default value of 4096 is suitable for most systems.
2279 @findex STACK_CHECK_PROBE_LOAD
2280 @item STACK_CHECK_PROBE_LOAD
2281 A integer which is nonzero if GNU CC should perform the stack probe 
2282 as a load instruction and zero if GNU CC should use a store instruction.
2283 The default is zero, which is the most efficient choice on most systems.
2285 @findex STACK_CHECK_PROTECT
2286 @item STACK_CHECK_PROTECT
2287 The number of bytes of stack needed to recover from a stack overflow,
2288 for languages where such a recovery is supported.  The default value of
2289 75 words should be adequate for most machines.
2291 @findex STACK_CHECK_MAX_FRAME_SIZE
2292 @item STACK_CHECK_MAX_FRAME_SIZE
2293 The maximum size of a stack frame, in bytes.  GNU CC will generate probe
2294 instructions in non-leaf functions to ensure at least this many bytes of
2295 stack are available.  If a stack frame is larger than this size, stack
2296 checking will not be reliable and GNU CC will issue a warning.  The
2297 default is chosen so that GNU CC only generates one instruction on most
2298 systems.  You should normally not change the default value of this macro.
2300 @findex STACK_CHECK_FIXED_FRAME_SIZE
2301 @item STACK_CHECK_FIXED_FRAME_SIZE
2302 GNU CC uses this value to generate the above warning message.  It
2303 represents the amount of fixed frame used by a function, not including
2304 space for any callee-saved registers, temporaries and user variables.
2305 You need only specify an upper bound for this amount and will normally
2306 use the default of four words.
2308 @findex STACK_CHECK_MAX_VAR_SIZE
2309 @item STACK_CHECK_MAX_VAR_SIZE
2310 The maximum size, in bytes, of an object that GNU CC will place in the
2311 fixed area of the stack frame when the user specifies
2312 @samp{-fstack-check}.
2313 GNU CC computed the default from the values of the above macros and you will
2314 normally not need to override that default.
2315 @end table
2317 @need 2000
2318 @node Frame Registers
2319 @subsection Registers That Address the Stack Frame
2321 @c prevent bad page break with this line
2322 This discusses registers that address the stack frame.
2324 @table @code
2325 @findex STACK_POINTER_REGNUM
2326 @item STACK_POINTER_REGNUM
2327 The register number of the stack pointer register, which must also be a
2328 fixed register according to @code{FIXED_REGISTERS}.  On most machines,
2329 the hardware determines which register this is.
2331 @findex FRAME_POINTER_REGNUM
2332 @item FRAME_POINTER_REGNUM
2333 The register number of the frame pointer register, which is used to
2334 access automatic variables in the stack frame.  On some machines, the
2335 hardware determines which register this is.  On other machines, you can
2336 choose any register you wish for this purpose.
2338 @findex HARD_FRAME_POINTER_REGNUM
2339 @item HARD_FRAME_POINTER_REGNUM
2340 On some machines the offset between the frame pointer and starting
2341 offset of the automatic variables is not known until after register
2342 allocation has been done (for example, because the saved registers are
2343 between these two locations).  On those machines, define
2344 @code{FRAME_POINTER_REGNUM} the number of a special, fixed register to
2345 be used internally until the offset is known, and define
2346 @code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number
2347 used for the frame pointer.
2349 You should define this macro only in the very rare circumstances when it
2350 is not possible to calculate the offset between the frame pointer and
2351 the automatic variables until after register allocation has been
2352 completed.  When this macro is defined, you must also indicate in your
2353 definition of @code{ELIMINABLE_REGS} how to eliminate
2354 @code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM}
2355 or @code{STACK_POINTER_REGNUM}.
2357 Do not define this macro if it would be the same as
2358 @code{FRAME_POINTER_REGNUM}.
2360 @findex ARG_POINTER_REGNUM
2361 @item ARG_POINTER_REGNUM
2362 The register number of the arg pointer register, which is used to access
2363 the function's argument list.  On some machines, this is the same as the
2364 frame pointer register.  On some machines, the hardware determines which
2365 register this is.  On other machines, you can choose any register you
2366 wish for this purpose.  If this is not the same register as the frame
2367 pointer register, then you must mark it as a fixed register according to
2368 @code{FIXED_REGISTERS}, or arrange to be able to eliminate it
2369 (@pxref{Elimination}).
2371 @findex RETURN_ADDRESS_POINTER_REGNUM
2372 @item RETURN_ADDRESS_POINTER_REGNUM
2373 The register number of the return address pointer register, which is used to
2374 access the current function's return address from the stack.  On some
2375 machines, the return address is not at a fixed offset from the frame
2376 pointer or stack pointer or argument pointer.  This register can be defined
2377 to point to the return address on the stack, and then be converted by
2378 @code{ELIMINABLE_REGS} into either the frame pointer or stack pointer.
2380 Do not define this macro unless there is no other way to get the return
2381 address from the stack.
2383 @findex STATIC_CHAIN_REGNUM
2384 @findex STATIC_CHAIN_INCOMING_REGNUM
2385 @item STATIC_CHAIN_REGNUM
2386 @itemx STATIC_CHAIN_INCOMING_REGNUM
2387 Register numbers used for passing a function's static chain pointer.  If
2388 register windows are used, the register number as seen by the called
2389 function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register
2390 number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}.  If
2391 these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need
2392 not be defined.@refill
2394 The static chain register need not be a fixed register.
2396 If the static chain is passed in memory, these macros should not be
2397 defined; instead, the next two macros should be defined.
2399 @findex STATIC_CHAIN
2400 @findex STATIC_CHAIN_INCOMING
2401 @item STATIC_CHAIN
2402 @itemx STATIC_CHAIN_INCOMING
2403 If the static chain is passed in memory, these macros provide rtx giving
2404 @code{mem} expressions that denote where they are stored.
2405 @code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations
2406 as seen by the calling and called functions, respectively.  Often the former
2407 will be at an offset from the stack pointer and the latter at an offset from
2408 the frame pointer.@refill
2410 @findex stack_pointer_rtx
2411 @findex frame_pointer_rtx
2412 @findex arg_pointer_rtx
2413 The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and
2414 @code{arg_pointer_rtx} will have been initialized prior to the use of these
2415 macros and should be used to refer to those items.
2417 If the static chain is passed in a register, the two previous macros should
2418 be defined instead.
2419 @end table
2421 @node Elimination
2422 @subsection Eliminating Frame Pointer and Arg Pointer
2424 @c prevent bad page break with this line
2425 This is about eliminating the frame pointer and arg pointer.
2427 @table @code
2428 @findex FRAME_POINTER_REQUIRED
2429 @item FRAME_POINTER_REQUIRED
2430 A C expression which is nonzero if a function must have and use a frame
2431 pointer.  This expression is evaluated  in the reload pass.  If its value is
2432 nonzero the function will have a frame pointer.
2434 The expression can in principle examine the current function and decide
2435 according to the facts, but on most machines the constant 0 or the
2436 constant 1 suffices.  Use 0 when the machine allows code to be generated
2437 with no frame pointer, and doing so saves some time or space.  Use 1
2438 when there is no possible advantage to avoiding a frame pointer.
2440 In certain cases, the compiler does not know how to produce valid code
2441 without a frame pointer.  The compiler recognizes those cases and
2442 automatically gives the function a frame pointer regardless of what
2443 @code{FRAME_POINTER_REQUIRED} says.  You don't need to worry about
2444 them.@refill
2446 In a function that does not require a frame pointer, the frame pointer
2447 register can be allocated for ordinary usage, unless you mark it as a
2448 fixed register.  See @code{FIXED_REGISTERS} for more information.
2450 @findex INITIAL_FRAME_POINTER_OFFSET
2451 @findex get_frame_size
2452 @item INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
2453 A C statement to store in the variable @var{depth-var} the difference
2454 between the frame pointer and the stack pointer values immediately after
2455 the function prologue.  The value would be computed from information
2456 such as the result of @code{get_frame_size ()} and the tables of
2457 registers @code{regs_ever_live} and @code{call_used_regs}.
2459 If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
2460 need not be defined.  Otherwise, it must be defined even if
2461 @code{FRAME_POINTER_REQUIRED} is defined to always be true; in that
2462 case, you may set @var{depth-var} to anything.
2464 @findex ELIMINABLE_REGS
2465 @item ELIMINABLE_REGS
2466 If defined, this macro specifies a table of register pairs used to
2467 eliminate unneeded registers that point into the stack frame.  If it is not
2468 defined, the only elimination attempted by the compiler is to replace
2469 references to the frame pointer with references to the stack pointer.
2471 The definition of this macro is a list of structure initializations, each
2472 of which specifies an original and replacement register.
2474 On some machines, the position of the argument pointer is not known until
2475 the compilation is completed.  In such a case, a separate hard register
2476 must be used for the argument pointer.  This register can be eliminated by
2477 replacing it with either the frame pointer or the argument pointer,
2478 depending on whether or not the frame pointer has been eliminated.
2480 In this case, you might specify:
2481 @example
2482 #define ELIMINABLE_REGS  \
2483 @{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
2484  @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
2485  @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
2486 @end example
2488 Note that the elimination of the argument pointer with the stack pointer is
2489 specified first since that is the preferred elimination.
2491 @findex CAN_ELIMINATE
2492 @item CAN_ELIMINATE (@var{from-reg}, @var{to-reg})
2493 A C expression that returns non-zero if the compiler is allowed to try
2494 to replace register number @var{from-reg} with register number
2495 @var{to-reg}.  This macro need only be defined if @code{ELIMINABLE_REGS}
2496 is defined, and will usually be the constant 1, since most of the cases
2497 preventing register elimination are things that the compiler already
2498 knows about.
2500 @findex INITIAL_ELIMINATION_OFFSET
2501 @item INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
2502 This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}.  It
2503 specifies the initial difference between the specified pair of
2504 registers.  This macro must be defined if @code{ELIMINABLE_REGS} is
2505 defined.
2507 @findex LONGJMP_RESTORE_FROM_STACK
2508 @item LONGJMP_RESTORE_FROM_STACK
2509 Define this macro if the @code{longjmp} function restores registers from
2510 the stack frames, rather than from those saved specifically by
2511 @code{setjmp}.  Certain quantities must not be kept in registers across
2512 a call to @code{setjmp} on such machines.
2513 @end table
2515 @node Stack Arguments
2516 @subsection Passing Function Arguments on the Stack
2517 @cindex arguments on stack
2518 @cindex stack arguments
2520 The macros in this section control how arguments are passed
2521 on the stack.  See the following section for other macros that
2522 control passing certain arguments in registers.
2524 @table @code
2525 @findex PROMOTE_PROTOTYPES
2526 @item PROMOTE_PROTOTYPES
2527 Define this macro if an argument declared in a prototype as an
2528 integral type smaller than @code{int} should actually be passed as an
2529 @code{int}.  In addition to avoiding errors in certain cases of
2530 mismatch, it also makes for better code on certain machines.
2532 @findex PUSH_ROUNDING
2533 @item PUSH_ROUNDING (@var{npushed})
2534 A C expression that is the number of bytes actually pushed onto the
2535 stack when an instruction attempts to push @var{npushed} bytes.
2537 If the target machine does not have a push instruction, do not define
2538 this macro.  That directs GNU CC to use an alternate strategy: to
2539 allocate the entire argument block and then store the arguments into
2542 On some machines, the definition
2544 @example
2545 #define PUSH_ROUNDING(BYTES) (BYTES)
2546 @end example
2548 @noindent
2549 will suffice.  But on other machines, instructions that appear
2550 to push one byte actually push two bytes in an attempt to maintain
2551 alignment.  Then the definition should be
2553 @example
2554 #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
2555 @end example
2557 @findex ACCUMULATE_OUTGOING_ARGS
2558 @findex current_function_outgoing_args_size
2559 @item ACCUMULATE_OUTGOING_ARGS
2560 If defined, the maximum amount of space required for outgoing arguments
2561 will be computed and placed into the variable
2562 @code{current_function_outgoing_args_size}.  No space will be pushed
2563 onto the stack for each call; instead, the function prologue should
2564 increase the stack frame size by this amount.
2566 Defining both @code{PUSH_ROUNDING} and @code{ACCUMULATE_OUTGOING_ARGS}
2567 is not proper.
2569 @findex REG_PARM_STACK_SPACE
2570 @item REG_PARM_STACK_SPACE (@var{fndecl})
2571 Define this macro if functions should assume that stack space has been
2572 allocated for arguments even when their values are passed in
2573 registers.
2575 The value of this macro is the size, in bytes, of the area reserved for
2576 arguments passed in registers for the function represented by @var{fndecl},
2577 which can be zero if GNU CC is calling a library function.
2579 This space can be allocated by the caller, or be a part of the
2580 machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says
2581 which.
2582 @c above is overfull.  not sure what to do.  --mew 5feb93  did
2583 @c something, not sure if it looks good.  --mew 10feb93
2585 @findex MAYBE_REG_PARM_STACK_SPACE
2586 @findex FINAL_REG_PARM_STACK_SPACE
2587 @item MAYBE_REG_PARM_STACK_SPACE
2588 @itemx FINAL_REG_PARM_STACK_SPACE (@var{const_size}, @var{var_size})
2589 Define these macros in addition to the one above if functions might
2590 allocate stack space for arguments even when their values are passed
2591 in registers.  These should be used when the stack space allocated
2592 for arguments in registers is not a simple constant independent of the
2593 function declaration.
2595 The value of the first macro is the size, in bytes, of the area that
2596 we should initially assume would be reserved for arguments passed in registers.
2598 The value of the second macro is the actual size, in bytes, of the area
2599 that will be reserved for arguments passed in registers.  This takes two
2600 arguments: an integer representing the number of bytes of fixed sized
2601 arguments on the stack, and a tree representing the number of bytes of
2602 variable sized arguments on the stack.
2604 When these macros are defined, @code{REG_PARM_STACK_SPACE} will only be
2605 called for libcall functions, the current function, or for a function
2606 being called when it is known that such stack space must be allocated.
2607 In each case this value can be easily computed.
2609 When deciding whether a called function needs such stack space, and how
2610 much space to reserve, GNU CC uses these two macros instead of
2611 @code{REG_PARM_STACK_SPACE}.
2613 @findex OUTGOING_REG_PARM_STACK_SPACE
2614 @item OUTGOING_REG_PARM_STACK_SPACE
2615 Define this if it is the responsibility of the caller to allocate the area
2616 reserved for arguments passed in registers.
2618 If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls
2619 whether the space for these arguments counts in the value of
2620 @code{current_function_outgoing_args_size}.
2622 @findex STACK_PARMS_IN_REG_PARM_AREA
2623 @item STACK_PARMS_IN_REG_PARM_AREA
2624 Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the
2625 stack parameters don't skip the area specified by it.
2626 @c i changed this, makes more sens and it should have taken care of the
2627 @c overfull.. not as specific, tho.  --mew 5feb93
2629 Normally, when a parameter is not passed in registers, it is placed on the
2630 stack beyond the @code{REG_PARM_STACK_SPACE} area.  Defining this macro
2631 suppresses this behavior and causes the parameter to be passed on the
2632 stack in its natural location.
2634 @findex RETURN_POPS_ARGS
2635 @item RETURN_POPS_ARGS (@var{fundecl}, @var{funtype}, @var{stack-size})
2636 A C expression that should indicate the number of bytes of its own
2637 arguments that a function pops on returning, or 0 if the
2638 function pops no arguments and the caller must therefore pop them all
2639 after the function returns.
2641 @var{fundecl} is a C variable whose value is a tree node that describes
2642 the function in question.  Normally it is a node of type
2643 @code{FUNCTION_DECL} that describes the declaration of the function.
2644 From this you can obtain the DECL_MACHINE_ATTRIBUTES of the function.
2646 @var{funtype} is a C variable whose value is a tree node that
2647 describes the function in question.  Normally it is a node of type
2648 @code{FUNCTION_TYPE} that describes the data type of the function.
2649 From this it is possible to obtain the data types of the value and
2650 arguments (if known).
2652 When a call to a library function is being considered, @var{fundecl}
2653 will contain an identifier node for the library function.  Thus, if
2654 you need to distinguish among various library functions, you can do so
2655 by their names.  Note that ``library function'' in this context means
2656 a function used to perform arithmetic, whose name is known specially
2657 in the compiler and was not mentioned in the C code being compiled.
2659 @var{stack-size} is the number of bytes of arguments passed on the
2660 stack.  If a variable number of bytes is passed, it is zero, and
2661 argument popping will always be the responsibility of the calling function.
2663 On the Vax, all functions always pop their arguments, so the definition
2664 of this macro is @var{stack-size}.  On the 68000, using the standard
2665 calling convention, no functions pop their arguments, so the value of
2666 the macro is always 0 in this case.  But an alternative calling
2667 convention is available in which functions that take a fixed number of
2668 arguments pop them but other functions (such as @code{printf}) pop
2669 nothing (the caller pops all).  When this convention is in use,
2670 @var{funtype} is examined to determine whether a function takes a fixed
2671 number of arguments.
2672 @end table
2674 @node Register Arguments
2675 @subsection Passing Arguments in Registers
2676 @cindex arguments in registers
2677 @cindex registers arguments
2679 This section describes the macros which let you control how various
2680 types of arguments are passed in registers or how they are arranged in
2681 the stack.
2683 @table @code
2684 @findex FUNCTION_ARG
2685 @item FUNCTION_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
2686 A C expression that controls whether a function argument is passed
2687 in a register, and which register.
2689 The arguments are @var{cum}, which summarizes all the previous
2690 arguments; @var{mode}, the machine mode of the argument; @var{type},
2691 the data type of the argument as a tree node or 0 if that is not known
2692 (which happens for C support library functions); and @var{named},
2693 which is 1 for an ordinary argument and 0 for nameless arguments that
2694 correspond to @samp{@dots{}} in the called function's prototype.
2696 The value of the expression is usually either a @code{reg} RTX for the
2697 hard register in which to pass the argument, or zero to pass the
2698 argument on the stack.
2700 For machines like the Vax and 68000, where normally all arguments are
2701 pushed, zero suffices as a definition.
2703 The value of the expression can also be a @code{parallel} RTX.  This is
2704 used when an argument is passed in multiple locations.  The mode of the
2705 of the @code{parallel} should be the mode of the entire argument.  The
2706 @code{parallel} holds any number of @code{expr_list} pairs; each one
2707 describes where part of the argument is passed.  In each @code{expr_list},
2708 the first operand can be either a @code{reg} RTX for the hard register
2709 in which to pass this part of the argument, or zero to pass the argument
2710 on the stack.  If this operand is a @code{reg}, then the mode indicates
2711 how large this part of the argument is.  The second operand of the
2712 @code{expr_list} is a @code{const_int} which gives the offset in bytes
2713 into the entire argument where this part starts.
2715 @cindex @file{stdarg.h} and register arguments
2716 The usual way to make the ANSI library @file{stdarg.h} work on a machine
2717 where some arguments are usually passed in registers, is to cause
2718 nameless arguments to be passed on the stack instead.  This is done
2719 by making @code{FUNCTION_ARG} return 0 whenever @var{named} is 0.
2721 @cindex @code{MUST_PASS_IN_STACK}, and @code{FUNCTION_ARG}
2722 @cindex @code{REG_PARM_STACK_SPACE}, and @code{FUNCTION_ARG}
2723 You may use the macro @code{MUST_PASS_IN_STACK (@var{mode}, @var{type})}
2724 in the definition of this macro to determine if this argument is of a
2725 type that must be passed in the stack.  If @code{REG_PARM_STACK_SPACE}
2726 is not defined and @code{FUNCTION_ARG} returns non-zero for such an
2727 argument, the compiler will abort.  If @code{REG_PARM_STACK_SPACE} is
2728 defined, the argument will be computed in the stack and then loaded into
2729 a register.
2731 @findex FUNCTION_INCOMING_ARG
2732 @item FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
2733 Define this macro if the target machine has ``register windows'', so
2734 that the register in which a function sees an arguments is not
2735 necessarily the same as the one in which the caller passed the
2736 argument.
2738 For such machines, @code{FUNCTION_ARG} computes the register in which
2739 the caller passes the value, and @code{FUNCTION_INCOMING_ARG} should
2740 be defined in a similar fashion to tell the function being called
2741 where the arguments will arrive.
2743 If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG}
2744 serves both purposes.@refill
2746 @findex FUNCTION_ARG_PARTIAL_NREGS
2747 @item FUNCTION_ARG_PARTIAL_NREGS (@var{cum}, @var{mode}, @var{type}, @var{named})
2748 A C expression for the number of words, at the beginning of an
2749 argument, must be put in registers.  The value must be zero for
2750 arguments that are passed entirely in registers or that are entirely
2751 pushed on the stack.
2753 On some machines, certain arguments must be passed partially in
2754 registers and partially in memory.  On these machines, typically the
2755 first @var{n} words of arguments are passed in registers, and the rest
2756 on the stack.  If a multi-word argument (a @code{double} or a
2757 structure) crosses that boundary, its first few words must be passed
2758 in registers and the rest must be pushed.  This macro tells the
2759 compiler when this occurs, and how many of the words should go in
2760 registers.
2762 @code{FUNCTION_ARG} for these arguments should return the first
2763 register to be used by the caller for this argument; likewise
2764 @code{FUNCTION_INCOMING_ARG}, for the called function.
2766 @findex FUNCTION_ARG_PASS_BY_REFERENCE
2767 @item FUNCTION_ARG_PASS_BY_REFERENCE (@var{cum}, @var{mode}, @var{type}, @var{named})
2768 A C expression that indicates when an argument must be passed by reference.
2769 If nonzero for an argument, a copy of that argument is made in memory and a
2770 pointer to the argument is passed instead of the argument itself.
2771 The pointer is passed in whatever way is appropriate for passing a pointer
2772 to that type.
2774 On machines where @code{REG_PARM_STACK_SPACE} is not defined, a suitable
2775 definition of this macro might be
2776 @smallexample
2777 #define FUNCTION_ARG_PASS_BY_REFERENCE\
2778 (CUM, MODE, TYPE, NAMED)  \
2779   MUST_PASS_IN_STACK (MODE, TYPE)
2780 @end smallexample
2781 @c this is *still* too long.  --mew 5feb93
2783 @findex FUNCTION_ARG_CALLEE_COPIES
2784 @item FUNCTION_ARG_CALLEE_COPIES (@var{cum}, @var{mode}, @var{type}, @var{named})
2785 If defined, a C expression that indicates when it is the called function's
2786 responsibility to make a copy of arguments passed by invisible reference.
2787 Normally, the caller makes a copy and passes the address of the copy to the
2788 routine being called.  When FUNCTION_ARG_CALLEE_COPIES is defined and is
2789 nonzero, the caller does not make a copy.  Instead, it passes a pointer to the
2790 ``live'' value.  The called function must not modify this value.  If it can be
2791 determined that the value won't be modified, it need not make a copy;
2792 otherwise a copy must be made.
2794 @findex CUMULATIVE_ARGS
2795 @item CUMULATIVE_ARGS
2796 A C type for declaring a variable that is used as the first argument of
2797 @code{FUNCTION_ARG} and other related values.  For some target machines,
2798 the type @code{int} suffices and can hold the number of bytes of
2799 argument so far.
2801 There is no need to record in @code{CUMULATIVE_ARGS} anything about the
2802 arguments that have been passed on the stack.  The compiler has other
2803 variables to keep track of that.  For target machines on which all
2804 arguments are passed on the stack, there is no need to store anything in
2805 @code{CUMULATIVE_ARGS}; however, the data structure must exist and
2806 should not be empty, so use @code{int}.
2808 @findex INIT_CUMULATIVE_ARGS
2809 @item INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{indirect})
2810 A C statement (sans semicolon) for initializing the variable @var{cum}
2811 for the state at the beginning of the argument list.  The variable has
2812 type @code{CUMULATIVE_ARGS}.  The value of @var{fntype} is the tree node
2813 for the data type of the function which will receive the args, or 0
2814 if the args are to a compiler support library function.  The value of
2815 @var{indirect} is nonzero when processing an indirect call, for example
2816 a call through a function pointer.  The value of @var{indirect} is zero
2817 for a call to an explicitly named function, a library function call, or when
2818 @code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function
2819 being compiled.
2821 When processing a call to a compiler support library function,
2822 @var{libname} identifies which one.  It is a @code{symbol_ref} rtx which
2823 contains the name of the function, as a string.  @var{libname} is 0 when
2824 an ordinary C function call is being processed.  Thus, each time this
2825 macro is called, either @var{libname} or @var{fntype} is nonzero, but
2826 never both of them at once.
2828 @findex INIT_CUMULATIVE_INCOMING_ARGS
2829 @item INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
2830 Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of
2831 finding the arguments for the function being compiled.  If this macro is
2832 undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
2834 The value passed for @var{libname} is always 0, since library routines
2835 with special calling conventions are never compiled with GNU CC.  The
2836 argument @var{libname} exists for symmetry with
2837 @code{INIT_CUMULATIVE_ARGS}.
2838 @c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
2839 @c --mew 5feb93   i switched the order of the sentences.  --mew 10feb93
2841 @findex FUNCTION_ARG_ADVANCE
2842 @item FUNCTION_ARG_ADVANCE (@var{cum}, @var{mode}, @var{type}, @var{named})
2843 A C statement (sans semicolon) to update the summarizer variable
2844 @var{cum} to advance past an argument in the argument list.  The
2845 values @var{mode}, @var{type} and @var{named} describe that argument.
2846 Once this is done, the variable @var{cum} is suitable for analyzing
2847 the @emph{following} argument with @code{FUNCTION_ARG}, etc.@refill
2849 This macro need not do anything if the argument in question was passed
2850 on the stack.  The compiler knows how to track the amount of stack space
2851 used for arguments without any special help.
2853 @findex FUNCTION_ARG_PADDING
2854 @item FUNCTION_ARG_PADDING (@var{mode}, @var{type})
2855 If defined, a C expression which determines whether, and in which direction,
2856 to pad out an argument with extra space.  The value should be of type
2857 @code{enum direction}: either @code{upward} to pad above the argument,
2858 @code{downward} to pad below, or @code{none} to inhibit padding.
2860 The @emph{amount} of padding is always just enough to reach the next
2861 multiple of @code{FUNCTION_ARG_BOUNDARY}; this macro does not control
2864 This macro has a default definition which is right for most systems.
2865 For little-endian machines, the default is to pad upward.  For
2866 big-endian machines, the default is to pad downward for an argument of
2867 constant size shorter than an @code{int}, and upward otherwise.
2869 @findex FUNCTION_ARG_BOUNDARY
2870 @item FUNCTION_ARG_BOUNDARY (@var{mode}, @var{type})
2871 If defined, a C expression that gives the alignment boundary, in bits,
2872 of an argument with the specified mode and type.  If it is not defined,
2873 @code{PARM_BOUNDARY} is used for all arguments.
2875 @findex FUNCTION_ARG_REGNO_P
2876 @item FUNCTION_ARG_REGNO_P (@var{regno})
2877 A C expression that is nonzero if @var{regno} is the number of a hard
2878 register in which function arguments are sometimes passed.  This does
2879 @emph{not} include implicit arguments such as the static chain and
2880 the structure-value address.  On many machines, no registers can be
2881 used for this purpose since all function arguments are pushed on the
2882 stack.
2883 @end table
2885 @node Scalar Return
2886 @subsection How Scalar Function Values Are Returned
2887 @cindex return values in registers
2888 @cindex values, returned by functions
2889 @cindex scalars, returned as values
2891 This section discusses the macros that control returning scalars as
2892 values---values that can fit in registers.
2894 @table @code
2895 @findex TRADITIONAL_RETURN_FLOAT
2896 @item TRADITIONAL_RETURN_FLOAT
2897 Define this macro if @samp{-traditional} should not cause functions
2898 declared to return @code{float} to convert the value to @code{double}.
2900 @findex FUNCTION_VALUE
2901 @item FUNCTION_VALUE (@var{valtype}, @var{func})
2902 A C expression to create an RTX representing the place where a
2903 function returns a value of data type @var{valtype}.  @var{valtype} is
2904 a tree node representing a data type.  Write @code{TYPE_MODE
2905 (@var{valtype})} to get the machine mode used to represent that type.
2906 On many machines, only the mode is relevant.  (Actually, on most
2907 machines, scalar values are returned in the same place regardless of
2908 mode).@refill
2910 The value of the expression is usually a @code{reg} RTX for the hard
2911 register where the return value is stored.  The value can also be a
2912 @code{parallel} RTX, if the return value is in multiple places.  See
2913 @code{FUNCTION_ARG} for an explanation of the @code{parallel} form.
2915 If @code{PROMOTE_FUNCTION_RETURN} is defined, you must apply the same
2916 promotion rules specified in @code{PROMOTE_MODE} if @var{valtype} is a
2917 scalar type.
2919 If the precise function being called is known, @var{func} is a tree
2920 node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
2921 pointer.  This makes it possible to use a different value-returning
2922 convention for specific functions when all their calls are
2923 known.@refill
2925 @code{FUNCTION_VALUE} is not used for return vales with aggregate data
2926 types, because these are returned in another way.  See
2927 @code{STRUCT_VALUE_REGNUM} and related macros, below.
2929 @findex FUNCTION_OUTGOING_VALUE
2930 @item FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
2931 Define this macro if the target machine has ``register windows''
2932 so that the register in which a function returns its value is not
2933 the same as the one in which the caller sees the value.
2935 For such machines, @code{FUNCTION_VALUE} computes the register in which
2936 the caller will see the value.  @code{FUNCTION_OUTGOING_VALUE} should be
2937 defined in a similar fashion to tell the function where to put the
2938 value.@refill
2940 If @code{FUNCTION_OUTGOING_VALUE} is not defined,
2941 @code{FUNCTION_VALUE} serves both purposes.@refill
2943 @code{FUNCTION_OUTGOING_VALUE} is not used for return vales with
2944 aggregate data types, because these are returned in another way.  See
2945 @code{STRUCT_VALUE_REGNUM} and related macros, below.
2947 @findex LIBCALL_VALUE
2948 @item LIBCALL_VALUE (@var{mode})
2949 A C expression to create an RTX representing the place where a library
2950 function returns a value of mode @var{mode}.  If the precise function
2951 being called is known, @var{func} is a tree node
2952 (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
2953 pointer.  This makes it possible to use a different value-returning
2954 convention for specific functions when all their calls are
2955 known.@refill
2957 Note that ``library function'' in this context means a compiler
2958 support routine, used to perform arithmetic, whose name is known
2959 specially by the compiler and was not mentioned in the C code being
2960 compiled.
2962 The definition of @code{LIBRARY_VALUE} need not be concerned aggregate
2963 data types, because none of the library functions returns such types.
2965 @findex FUNCTION_VALUE_REGNO_P
2966 @item FUNCTION_VALUE_REGNO_P (@var{regno})
2967 A C expression that is nonzero if @var{regno} is the number of a hard
2968 register in which the values of called function may come back.
2970 A register whose use for returning values is limited to serving as the
2971 second of a pair (for a value of type @code{double}, say) need not be
2972 recognized by this macro.  So for most machines, this definition
2973 suffices:
2975 @example
2976 #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
2977 @end example
2979 If the machine has register windows, so that the caller and the called
2980 function use different registers for the return value, this macro
2981 should recognize only the caller's register numbers.
2983 @findex APPLY_RESULT_SIZE
2984 @item APPLY_RESULT_SIZE
2985 Define this macro if @samp{untyped_call} and @samp{untyped_return}
2986 need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for
2987 saving and restoring an arbitrary return value.
2988 @end table
2990 @node Aggregate Return
2991 @subsection How Large Values Are Returned
2992 @cindex aggregates as return values
2993 @cindex large return values
2994 @cindex returning aggregate values
2995 @cindex structure value address
2997 When a function value's mode is @code{BLKmode} (and in some other
2998 cases), the value is not returned according to @code{FUNCTION_VALUE}
2999 (@pxref{Scalar Return}).  Instead, the caller passes the address of a
3000 block of memory in which the value should be stored.  This address
3001 is called the @dfn{structure value address}.
3003 This section describes how to control returning structure values in
3004 memory.
3006 @table @code
3007 @findex RETURN_IN_MEMORY
3008 @item RETURN_IN_MEMORY (@var{type})
3009 A C expression which can inhibit the returning of certain function
3010 values in registers, based on the type of value.  A nonzero value says
3011 to return the function value in memory, just as large structures are
3012 always returned.  Here @var{type} will be a C expression of type
3013 @code{tree}, representing the data type of the value.
3015 Note that values of mode @code{BLKmode} must be explicitly handled
3016 by this macro.  Also, the option @samp{-fpcc-struct-return}
3017 takes effect regardless of this macro.  On most systems, it is
3018 possible to leave the macro undefined; this causes a default
3019 definition to be used, whose value is the constant 1 for @code{BLKmode}
3020 values, and 0 otherwise.
3022 Do not use this macro to indicate that structures and unions should always
3023 be returned in memory.  You should instead use @code{DEFAULT_PCC_STRUCT_RETURN}
3024 to indicate this.
3026 @findex DEFAULT_PCC_STRUCT_RETURN
3027 @item DEFAULT_PCC_STRUCT_RETURN
3028 Define this macro to be 1 if all structure and union return values must be
3029 in memory.  Since this results in slower code, this should be defined
3030 only if needed for compatibility with other compilers or with an ABI.
3031 If you define this macro to be 0, then the conventions used for structure
3032 and union return values are decided by the @code{RETURN_IN_MEMORY} macro.
3034 If not defined, this defaults to the value 1.
3036 @findex STRUCT_VALUE_REGNUM
3037 @item STRUCT_VALUE_REGNUM
3038 If the structure value address is passed in a register, then
3039 @code{STRUCT_VALUE_REGNUM} should be the number of that register.
3041 @findex STRUCT_VALUE
3042 @item STRUCT_VALUE
3043 If the structure value address is not passed in a register, define
3044 @code{STRUCT_VALUE} as an expression returning an RTX for the place
3045 where the address is passed.  If it returns 0, the address is passed as
3046 an ``invisible'' first argument.
3048 @findex STRUCT_VALUE_INCOMING_REGNUM
3049 @item STRUCT_VALUE_INCOMING_REGNUM
3050 On some architectures the place where the structure value address
3051 is found by the called function is not the same place that the
3052 caller put it.  This can be due to register windows, or it could
3053 be because the function prologue moves it to a different place.
3055 If the incoming location of the structure value address is in a
3056 register, define this macro as the register number.
3058 @findex STRUCT_VALUE_INCOMING
3059 @item STRUCT_VALUE_INCOMING
3060 If the incoming location is not a register, then you should define
3061 @code{STRUCT_VALUE_INCOMING} as an expression for an RTX for where the
3062 called function should find the value.  If it should find the value on
3063 the stack, define this to create a @code{mem} which refers to the frame
3064 pointer.  A definition of 0 means that the address is passed as an
3065 ``invisible'' first argument.
3067 @findex PCC_STATIC_STRUCT_RETURN
3068 @item PCC_STATIC_STRUCT_RETURN
3069 Define this macro if the usual system convention on the target machine
3070 for returning structures and unions is for the called function to return
3071 the address of a static variable containing the value.
3073 Do not define this if the usual system convention is for the caller to
3074 pass an address to the subroutine.
3076 This macro has effect in @samp{-fpcc-struct-return} mode, but it does
3077 nothing when you use @samp{-freg-struct-return} mode.
3078 @end table
3080 @node Caller Saves
3081 @subsection Caller-Saves Register Allocation
3083 If you enable it, GNU CC can save registers around function calls.  This
3084 makes it possible to use call-clobbered registers to hold variables that
3085 must live across calls.
3087 @table @code
3088 @findex DEFAULT_CALLER_SAVES
3089 @item DEFAULT_CALLER_SAVES
3090 Define this macro if function calls on the target machine do not preserve
3091 any registers; in other words, if @code{CALL_USED_REGISTERS} has 1
3092 for all registers.  When defined, this macro enables @samp{-fcaller-saves} 
3093 by default for all optimization levels.  It has no effect for optimization
3094 levels 2 and higher, where @samp{-fcaller-saves} is the default.
3096 @findex CALLER_SAVE_PROFITABLE
3097 @item CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls})
3098 A C expression to determine whether it is worthwhile to consider placing
3099 a pseudo-register in a call-clobbered hard register and saving and
3100 restoring it around each function call.  The expression should be 1 when
3101 this is worth doing, and 0 otherwise.
3103 If you don't define this macro, a default is used which is good on most
3104 machines: @code{4 * @var{calls} < @var{refs}}.
3105 @end table
3107 @node Function Entry
3108 @subsection Function Entry and Exit
3109 @cindex function entry and exit
3110 @cindex prologue
3111 @cindex epilogue
3113 This section describes the macros that output function entry
3114 (@dfn{prologue}) and exit (@dfn{epilogue}) code.
3116 @table @code
3117 @findex FUNCTION_PROLOGUE
3118 @item FUNCTION_PROLOGUE (@var{file}, @var{size})
3119 A C compound statement that outputs the assembler code for entry to a
3120 function.  The prologue is responsible for setting up the stack frame,
3121 initializing the frame pointer register, saving registers that must be
3122 saved, and allocating @var{size} additional bytes of storage for the
3123 local variables.  @var{size} is an integer.  @var{file} is a stdio
3124 stream to which the assembler code should be output.
3126 The label for the beginning of the function need not be output by this
3127 macro.  That has already been done when the macro is run.
3129 @findex regs_ever_live
3130 To determine which registers to save, the macro can refer to the array
3131 @code{regs_ever_live}: element @var{r} is nonzero if hard register
3132 @var{r} is used anywhere within the function.  This implies the function
3133 prologue should save register @var{r}, provided it is not one of the
3134 call-used registers.  (@code{FUNCTION_EPILOGUE} must likewise use
3135 @code{regs_ever_live}.)
3137 On machines that have ``register windows'', the function entry code does
3138 not save on the stack the registers that are in the windows, even if
3139 they are supposed to be preserved by function calls; instead it takes
3140 appropriate steps to ``push'' the register stack, if any non-call-used
3141 registers are used in the function.
3143 @findex frame_pointer_needed
3144 On machines where functions may or may not have frame-pointers, the
3145 function entry code must vary accordingly; it must set up the frame
3146 pointer if one is wanted, and not otherwise.  To determine whether a
3147 frame pointer is in wanted, the macro can refer to the variable
3148 @code{frame_pointer_needed}.  The variable's value will be 1 at run
3149 time in a function that needs a frame pointer.  @xref{Elimination}.
3151 The function entry code is responsible for allocating any stack space
3152 required for the function.  This stack space consists of the regions
3153 listed below.  In most cases, these regions are allocated in the
3154 order listed, with the last listed region closest to the top of the
3155 stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and
3156 the highest address if it is not defined).  You can use a different order
3157 for a machine if doing so is more convenient or required for
3158 compatibility reasons.  Except in cases where required by standard
3159 or by a debugger, there is no reason why the stack layout used by GCC
3160 need agree with that used by other compilers for a machine.
3162 @itemize @bullet
3163 @item
3164 @findex current_function_pretend_args_size
3165 A region of @code{current_function_pretend_args_size} bytes of
3166 uninitialized space just underneath the first argument arriving on the
3167 stack.  (This may not be at the very start of the allocated stack region
3168 if the calling sequence has pushed anything else since pushing the stack
3169 arguments.  But usually, on such machines, nothing else has been pushed
3170 yet, because the function prologue itself does all the pushing.)  This
3171 region is used on machines where an argument may be passed partly in
3172 registers and partly in memory, and, in some cases to support the
3173 features in @file{varargs.h} and @file{stdargs.h}.
3175 @item
3176 An area of memory used to save certain registers used by the function.
3177 The size of this area, which may also include space for such things as
3178 the return address and pointers to previous stack frames, is
3179 machine-specific and usually depends on which registers have been used
3180 in the function.  Machines with register windows often do not require
3181 a save area.
3183 @item
3184 A region of at least @var{size} bytes, possibly rounded up to an allocation
3185 boundary, to contain the local variables of the function.  On some machines,
3186 this region and the save area may occur in the opposite order, with the
3187 save area closer to the top of the stack.
3189 @item
3190 @cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
3191 Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
3192 @code{current_function_outgoing_args_size} bytes to be used for outgoing
3193 argument lists of the function.  @xref{Stack Arguments}.
3194 @end itemize
3196 Normally, it is necessary for the macros @code{FUNCTION_PROLOGUE} and
3197 @code{FUNCTION_EPILOGUE} to treat leaf functions specially.  The C
3198 variable @code{leaf_function} is nonzero for such a function.
3200 @findex EXIT_IGNORE_STACK
3201 @item EXIT_IGNORE_STACK
3202 Define this macro as a C expression that is nonzero if the return
3203 instruction or the function epilogue ignores the value of the stack
3204 pointer; in other words, if it is safe to delete an instruction to
3205 adjust the stack pointer before a return from the function.
3207 Note that this macro's value is relevant only for functions for which
3208 frame pointers are maintained.  It is never safe to delete a final
3209 stack adjustment in a function that has no frame pointer, and the
3210 compiler knows this regardless of @code{EXIT_IGNORE_STACK}.
3212 @findex EPILOGUE_USES
3213 @item EPILOGUE_USES (@var{regno})
3214 Define this macro as a C expression that is nonzero for registers are
3215 used by the epilogue or the @samp{return} pattern.  The stack and frame
3216 pointer registers are already be assumed to be used as needed.
3218 @findex FUNCTION_EPILOGUE
3219 @item FUNCTION_EPILOGUE (@var{file}, @var{size})
3220 A C compound statement that outputs the assembler code for exit from a
3221 function.  The epilogue is responsible for restoring the saved
3222 registers and stack pointer to their values when the function was
3223 called, and returning control to the caller.  This macro takes the
3224 same arguments as the macro @code{FUNCTION_PROLOGUE}, and the
3225 registers to restore are determined from @code{regs_ever_live} and
3226 @code{CALL_USED_REGISTERS} in the same way.
3228 On some machines, there is a single instruction that does all the work
3229 of returning from the function.  On these machines, give that
3230 instruction the name @samp{return} and do not define the macro
3231 @code{FUNCTION_EPILOGUE} at all.
3233 Do not define a pattern named @samp{return} if you want the
3234 @code{FUNCTION_EPILOGUE} to be used.  If you want the target switches
3235 to control whether return instructions or epilogues are used, define a
3236 @samp{return} pattern with a validity condition that tests the target
3237 switches appropriately.  If the @samp{return} pattern's validity
3238 condition is false, epilogues will be used.
3240 On machines where functions may or may not have frame-pointers, the
3241 function exit code must vary accordingly.  Sometimes the code for these
3242 two cases is completely different.  To determine whether a frame pointer
3243 is wanted, the macro can refer to the variable
3244 @code{frame_pointer_needed}.  The variable's value will be 1 when compiling
3245 a function that needs a frame pointer.
3247 Normally, @code{FUNCTION_PROLOGUE} and @code{FUNCTION_EPILOGUE} must
3248 treat leaf functions specially.  The C variable @code{leaf_function} is
3249 nonzero for such a function.  @xref{Leaf Functions}.
3251 On some machines, some functions pop their arguments on exit while
3252 others leave that for the caller to do.  For example, the 68020 when
3253 given @samp{-mrtd} pops arguments in functions that take a fixed
3254 number of arguments.
3256 @findex current_function_pops_args
3257 Your definition of the macro @code{RETURN_POPS_ARGS} decides which
3258 functions pop their own arguments.  @code{FUNCTION_EPILOGUE} needs to
3259 know what was decided.  The variable that is called
3260 @code{current_function_pops_args} is the number of bytes of its
3261 arguments that a function should pop.  @xref{Scalar Return}.
3262 @c what is the "its arguments" in the above sentence referring to, pray
3263 @c tell?  --mew 5feb93
3265 @findex DELAY_SLOTS_FOR_EPILOGUE
3266 @item DELAY_SLOTS_FOR_EPILOGUE
3267 Define this macro if the function epilogue contains delay slots to which
3268 instructions from the rest of the function can be ``moved''.  The
3269 definition should be a C expression whose value is an integer
3270 representing the number of delay slots there.
3272 @findex ELIGIBLE_FOR_EPILOGUE_DELAY
3273 @item ELIGIBLE_FOR_EPILOGUE_DELAY (@var{insn}, @var{n})
3274 A C expression that returns 1 if @var{insn} can be placed in delay
3275 slot number @var{n} of the epilogue.
3277 The argument @var{n} is an integer which identifies the delay slot now
3278 being considered (since different slots may have different rules of
3279 eligibility).  It is never negative and is always less than the number
3280 of epilogue delay slots (what @code{DELAY_SLOTS_FOR_EPILOGUE} returns).
3281 If you reject a particular insn for a given delay slot, in principle, it
3282 may be reconsidered for a subsequent delay slot.  Also, other insns may
3283 (at least in principle) be considered for the so far unfilled delay
3284 slot.
3286 @findex current_function_epilogue_delay_list
3287 @findex final_scan_insn
3288 The insns accepted to fill the epilogue delay slots are put in an RTL
3289 list made with @code{insn_list} objects, stored in the variable
3290 @code{current_function_epilogue_delay_list}.  The insn for the first
3291 delay slot comes first in the list.  Your definition of the macro
3292 @code{FUNCTION_EPILOGUE} should fill the delay slots by outputting the
3293 insns in this list, usually by calling @code{final_scan_insn}.
3295 You need not define this macro if you did not define
3296 @code{DELAY_SLOTS_FOR_EPILOGUE}.
3298 @findex ASM_OUTPUT_MI_THUNK
3299 @item ASM_OUTPUT_MI_THUNK (@var{file}, @var{thunk_fndecl}, @var{delta}, @var{function})
3300 A C compound statement that outputs the assembler code for a thunk
3301 function, used to implement C++ virtual function calls with multiple
3302 inheritance.  The thunk acts as a wrapper around a virtual function,
3303 adjusting the implicit object parameter before handing control off to
3304 the real function.
3306 First, emit code to add the integer @var{delta} to the location that
3307 contains the incoming first argument.  Assume that this argument
3308 contains a pointer, and is the one used to pass the @code{this} pointer
3309 in C++.  This is the incoming argument @emph{before} the function prologue,
3310 e.g. @samp{%o0} on a sparc.  The addition must preserve the values of
3311 all other incoming arguments.
3313 After the addition, emit code to jump to @var{function}, which is a
3314 @code{FUNCTION_DECL}.  This is a direct pure jump, not a call, and does
3315 not touch the return address.  Hence returning from @var{FUNCTION} will
3316 return to whoever called the current @samp{thunk}.
3318 The effect must be as if @var{function} had been called directly with
3319 the adjusted first argument.  This macro is responsible for emitting all
3320 of the code for a thunk function; @code{FUNCTION_PROLOGUE} and
3321 @code{FUNCTION_EPILOGUE} are not invoked.
3323 The @var{thunk_fndecl} is redundant.  (@var{delta} and @var{function}
3324 have already been extracted from it.)  It might possibly be useful on
3325 some targets, but probably not.
3327 If you do not define this macro, the target-independent code in the C++
3328 frontend will generate a less efficient heavyweight thunk that calls
3329 @var{function} instead of jumping to it.  The generic approach does
3330 not support varargs.
3331 @end table
3333 @node Profiling
3334 @subsection Generating Code for Profiling
3335 @cindex profiling, code generation
3337 These macros will help you generate code for profiling.
3339 @table @code
3340 @findex FUNCTION_PROFILER
3341 @item FUNCTION_PROFILER (@var{file}, @var{labelno})
3342 A C statement or compound statement to output to @var{file} some
3343 assembler code to call the profiling subroutine @code{mcount}.
3344 Before calling, the assembler code must load the address of a
3345 counter variable into a register where @code{mcount} expects to
3346 find the address.  The name of this variable is @samp{LP} followed
3347 by the number @var{labelno}, so you would generate the name using
3348 @samp{LP%d} in a @code{fprintf}.
3350 @findex mcount
3351 The details of how the address should be passed to @code{mcount} are
3352 determined by your operating system environment, not by GNU CC.  To
3353 figure them out, compile a small program for profiling using the
3354 system's installed C compiler and look at the assembler code that
3355 results.
3357 @findex PROFILE_BEFORE_PROLOGUE
3358 @item PROFILE_BEFORE_PROLOGUE
3359 Define this macro if the code for function profiling should come before
3360 the function prologue.  Normally, the profiling code comes after.
3362 @findex FUNCTION_BLOCK_PROFILER
3363 @vindex profile_block_flag
3364 @item FUNCTION_BLOCK_PROFILER (@var{file}, @var{labelno})
3365 A C statement or compound statement to output to @var{file} some
3366 assembler code to initialize basic-block profiling for the current
3367 object module.  The global compile flag @code{profile_block_flag}
3368 distinguishes two profile modes.
3370 @table @code
3371 @findex __bb_init_func
3372 @item profile_block_flag != 2
3373 Output code to call the subroutine @code{__bb_init_func} once per
3374 object module, passing it as its sole argument the address of a block
3375 allocated in the object module.
3377 The name of the block is a local symbol made with this statement:
3379 @smallexample
3380 ASM_GENERATE_INTERNAL_LABEL (@var{buffer}, "LPBX", 0);
3381 @end smallexample
3383 Of course, since you are writing the definition of
3384 @code{ASM_GENERATE_INTERNAL_LABEL} as well as that of this macro, you
3385 can take a short cut in the definition of this macro and use the name
3386 that you know will result.
3388 The first word of this block is a flag which will be nonzero if the
3389 object module has already been initialized.  So test this word first,
3390 and do not call @code{__bb_init_func} if the flag is
3391 nonzero.  BLOCK_OR_LABEL contains a unique number which may be used to
3392 generate a label as a branch destination when @code{__bb_init_func}
3393 will not be called.
3395 Described in assembler language, the code to be output looks like:
3397 @example
3398   cmp (LPBX0),0
3399   bne local_label
3400   parameter1 <- LPBX0
3401   call __bb_init_func
3402 local_label:
3403 @end example
3405 @findex __bb_init_trace_func
3406 @item profile_block_flag == 2
3407 Output code to call the subroutine @code{__bb_init_trace_func}
3408 and pass two parameters to it.  The first parameter is the same as
3409 for @code{__bb_init_func}.  The second parameter is the number of the
3410 first basic block of the function as given by BLOCK_OR_LABEL.  Note
3411 that @code{__bb_init_trace_func} has to be called, even if the object
3412 module has been initialized already.
3414 Described in assembler language, the code to be output looks like:
3415 @example
3416 parameter1 <- LPBX0
3417 parameter2 <- BLOCK_OR_LABEL
3418 call __bb_init_trace_func
3419 @end example
3420 @end table
3422 @findex BLOCK_PROFILER
3423 @vindex profile_block_flag
3424 @item BLOCK_PROFILER (@var{file}, @var{blockno})
3425 A C statement or compound statement to output to @var{file} some
3426 assembler code to increment the count associated with the basic
3427 block number @var{blockno}.  The global compile flag
3428 @code{profile_block_flag} distinguishes two profile modes.
3430 @table @code
3431 @item profile_block_flag != 2
3432 Output code to increment the counter directly.  Basic blocks are
3433 numbered separately from zero within each compilation.  The count
3434 associated with block number @var{blockno} is at index
3435 @var{blockno} in a vector of words; the name of this array is a local
3436 symbol made with this statement:
3438 @smallexample
3439 ASM_GENERATE_INTERNAL_LABEL (@var{buffer}, "LPBX", 2);
3440 @end smallexample
3442 @c This paragraph is the same as one a few paragraphs up.
3443 @c That is not an error.
3444 Of course, since you are writing the definition of
3445 @code{ASM_GENERATE_INTERNAL_LABEL} as well as that of this macro, you
3446 can take a short cut in the definition of this macro and use the name
3447 that you know will result.
3449 Described in assembler language, the code to be output looks like:
3451 @smallexample
3452 inc (LPBX2+4*BLOCKNO)
3453 @end smallexample
3455 @vindex __bb
3456 @findex __bb_trace_func
3457 @item profile_block_flag == 2
3458 Output code to initialize the global structure @code{__bb} and
3459 call the function @code{__bb_trace_func}, which will increment the
3460 counter.
3462 @code{__bb} consists of two words.  In the first word, the current
3463 basic block number, as given by BLOCKNO, has to be stored.  In
3464 the second word, the address of a block allocated in the object
3465 module has to be stored.  The address is given by the label created
3466 with this statement:
3468 @smallexample
3469 ASM_GENERATE_INTERNAL_LABEL (@var{buffer}, "LPBX", 0);
3470 @end smallexample
3472 Described in assembler language, the code to be output looks like:
3473 @example
3474 move BLOCKNO -> (__bb)
3475 move LPBX0 -> (__bb+4)
3476 call __bb_trace_func
3477 @end example
3478 @end table
3480 @findex FUNCTION_BLOCK_PROFILER_EXIT
3481 @findex __bb_trace_ret
3482 @vindex profile_block_flag
3483 @item FUNCTION_BLOCK_PROFILER_EXIT (@var{file})
3484 A C statement or compound statement to output to @var{file}
3485 assembler code to call function @code{__bb_trace_ret}.  The
3486 assembler code should only be output
3487 if the global compile flag @code{profile_block_flag} == 2.  This
3488 macro has to be used at every place where code for returning from
3489 a function is generated (e.g. @code{FUNCTION_EPILOGUE}).  Although
3490 you have to write the definition of @code{FUNCTION_EPILOGUE}
3491 as well, you have to define this macro to tell the compiler, that
3492 the proper call to @code{__bb_trace_ret} is produced.
3494 @findex MACHINE_STATE_SAVE
3495 @findex __bb_init_trace_func
3496 @findex __bb_trace_func
3497 @findex __bb_trace_ret
3498 @item MACHINE_STATE_SAVE (@var{id})
3499 A C statement or compound statement to save all registers, which may
3500 be clobbered by a function call, including condition codes.  The
3501 @code{asm} statement will be mostly likely needed to handle this
3502 task.  Local labels in the assembler code can be concatenated with the
3503 string @var{id}, to obtain a unique lable name.
3505 Registers or condition codes clobbered by @code{FUNCTION_PROLOGUE} or
3506 @code{FUNCTION_EPILOGUE} must be saved in the macros
3507 @code{FUNCTION_BLOCK_PROFILER}, @code{FUNCTION_BLOCK_PROFILER_EXIT} and
3508 @code{BLOCK_PROFILER} prior calling @code{__bb_init_trace_func},
3509 @code{__bb_trace_ret} and @code{__bb_trace_func} respectively.
3511 @findex MACHINE_STATE_RESTORE
3512 @findex __bb_init_trace_func
3513 @findex __bb_trace_func
3514 @findex __bb_trace_ret
3515 @item MACHINE_STATE_RESTORE (@var{id})
3516 A C statement or compound statement to restore all registers, including
3517 condition codes, saved by @code{MACHINE_STATE_SAVE}.
3519 Registers or condition codes clobbered by @code{FUNCTION_PROLOGUE} or
3520 @code{FUNCTION_EPILOGUE} must be restored in the macros
3521 @code{FUNCTION_BLOCK_PROFILER}, @code{FUNCTION_BLOCK_PROFILER_EXIT} and
3522 @code{BLOCK_PROFILER} after calling @code{__bb_init_trace_func},
3523 @code{__bb_trace_ret} and @code{__bb_trace_func} respectively.
3525 @findex BLOCK_PROFILER_CODE
3526 @item BLOCK_PROFILER_CODE
3527 A C function or functions which are needed in the library to
3528 support block profiling.
3529 @end table
3531 @node Varargs
3532 @section Implementing the Varargs Macros
3533 @cindex varargs implementation
3535 GNU CC comes with an implementation of @file{varargs.h} and
3536 @file{stdarg.h} that work without change on machines that pass arguments
3537 on the stack.  Other machines require their own implementations of
3538 varargs, and the two machine independent header files must have
3539 conditionals to include it.
3541 ANSI @file{stdarg.h} differs from traditional @file{varargs.h} mainly in
3542 the calling convention for @code{va_start}.  The traditional
3543 implementation takes just one argument, which is the variable in which
3544 to store the argument pointer.  The ANSI implementation of
3545 @code{va_start} takes an additional second argument.  The user is
3546 supposed to write the last named argument of the function here.
3548 However, @code{va_start} should not use this argument.  The way to find
3549 the end of the named arguments is with the built-in functions described
3550 below.
3552 @table @code
3553 @findex __builtin_saveregs
3554 @item __builtin_saveregs ()
3555 Use this built-in function to save the argument registers in memory so
3556 that the varargs mechanism can access them.  Both ANSI and traditional
3557 versions of @code{va_start} must use @code{__builtin_saveregs}, unless
3558 you use @code{SETUP_INCOMING_VARARGS} (see below) instead.
3560 On some machines, @code{__builtin_saveregs} is open-coded under the
3561 control of the macro @code{EXPAND_BUILTIN_SAVEREGS}.  On other machines,
3562 it calls a routine written in assembler language, found in
3563 @file{libgcc2.c}.
3565 Code generated for the call to @code{__builtin_saveregs} appears at the
3566 beginning of the function, as opposed to where the call to
3567 @code{__builtin_saveregs} is written, regardless of what the code is.
3568 This is because the registers must be saved before the function starts
3569 to use them for its own purposes.
3570 @c i rewrote the first sentence above to fix an overfull hbox. --mew
3571 @c 10feb93
3573 @findex __builtin_args_info
3574 @item __builtin_args_info (@var{category})
3575 Use this built-in function to find the first anonymous arguments in
3576 registers.
3578 In general, a machine may have several categories of registers used for
3579 arguments, each for a particular category of data types.  (For example,
3580 on some machines, floating-point registers are used for floating-point
3581 arguments while other arguments are passed in the general registers.)
3582 To make non-varargs functions use the proper calling convention, you
3583 have defined the @code{CUMULATIVE_ARGS} data type to record how many
3584 registers in each category have been used so far
3586 @code{__builtin_args_info} accesses the same data structure of type
3587 @code{CUMULATIVE_ARGS} after the ordinary argument layout is finished
3588 with it, with @var{category} specifying which word to access.  Thus, the
3589 value indicates the first unused register in a given category.
3591 Normally, you would use @code{__builtin_args_info} in the implementation
3592 of @code{va_start}, accessing each category just once and storing the
3593 value in the @code{va_list} object.  This is because @code{va_list} will
3594 have to update the values, and there is no way to alter the
3595 values accessed by @code{__builtin_args_info}.
3597 @findex __builtin_next_arg
3598 @item __builtin_next_arg (@var{lastarg})
3599 This is the equivalent of @code{__builtin_args_info}, for stack
3600 arguments.  It returns the address of the first anonymous stack
3601 argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it
3602 returns the address of the location above the first anonymous stack
3603 argument.  Use it in @code{va_start} to initialize the pointer for
3604 fetching arguments from the stack.  Also use it in @code{va_start} to
3605 verify that the second parameter @var{lastarg} is the last named argument
3606 of the current function.
3608 @findex __builtin_classify_type
3609 @item __builtin_classify_type (@var{object})
3610 Since each machine has its own conventions for which data types are
3611 passed in which kind of register, your implementation of @code{va_arg}
3612 has to embody these conventions.  The easiest way to categorize the
3613 specified data type is to use @code{__builtin_classify_type} together
3614 with @code{sizeof} and @code{__alignof__}.
3616 @code{__builtin_classify_type} ignores the value of @var{object},
3617 considering only its data type.  It returns an integer describing what
3618 kind of type that is---integer, floating, pointer, structure, and so on.
3620 The file @file{typeclass.h} defines an enumeration that you can use to
3621 interpret the values of @code{__builtin_classify_type}.
3622 @end table
3624 These machine description macros help implement varargs:
3626 @table @code
3627 @findex EXPAND_BUILTIN_SAVEREGS
3628 @item EXPAND_BUILTIN_SAVEREGS (@var{args})
3629 If defined, is a C expression that produces the machine-specific code
3630 for a call to @code{__builtin_saveregs}.  This code will be moved to the
3631 very beginning of the function, before any parameter access are made.
3632 The return value of this function should be an RTX that contains the
3633 value to use as the return of @code{__builtin_saveregs}.
3635 The argument @var{args} is a @code{tree_list} containing the arguments
3636 that were passed to @code{__builtin_saveregs}.
3638 If this macro is not defined, the compiler will output an ordinary
3639 call to the library function @samp{__builtin_saveregs}.
3641 @c !!! a bug in texinfo; how to make the entry on the @item line allow
3642 @c more than one line of text... help...  --mew 10feb93
3643 @findex SETUP_INCOMING_VARARGS
3644 @item SETUP_INCOMING_VARARGS (@var{args_so_far}, @var{mode}, @var{type},
3645 @var{pretend_args_size}, @var{second_time})
3646 This macro offers an alternative to using @code{__builtin_saveregs} and
3647 defining the macro @code{EXPAND_BUILTIN_SAVEREGS}.  Use it to store the
3648 anonymous register arguments into the stack so that all the arguments
3649 appear to have been passed consecutively on the stack.  Once this is
3650 done, you can use the standard implementation of varargs that works for
3651 machines that pass all their arguments on the stack.
3653 The argument @var{args_so_far} is the @code{CUMULATIVE_ARGS} data
3654 structure, containing the values that obtain after processing of the
3655 named arguments.  The arguments @var{mode} and @var{type} describe the
3656 last named argument---its machine mode and its data type as a tree node.
3658 The macro implementation should do two things: first, push onto the
3659 stack all the argument registers @emph{not} used for the named
3660 arguments, and second, store the size of the data thus pushed into the
3661 @code{int}-valued variable whose name is supplied as the argument
3662 @var{pretend_args_size}.  The value that you store here will serve as
3663 additional offset for setting up the stack frame.
3665 Because you must generate code to push the anonymous arguments at
3666 compile time without knowing their data types,
3667 @code{SETUP_INCOMING_VARARGS} is only useful on machines that have just
3668 a single category of argument register and use it uniformly for all data
3669 types.
3671 If the argument @var{second_time} is nonzero, it means that the
3672 arguments of the function are being analyzed for the second time.  This
3673 happens for an inline function, which is not actually compiled until the
3674 end of the source file.  The macro @code{SETUP_INCOMING_VARARGS} should
3675 not generate any instructions in this case.
3677 @findex STRICT_ARGUMENT_NAMING
3678 @item STRICT_ARGUMENT_NAMING
3679 Define this macro to be a nonzero value if the location where a function
3680 argument is passed depends on whether or not it is a named argument.
3682 This macro controls how the @var{named} argument to @code{FUNCTION_ARG}
3683 is set for varargs and stdarg functions.  If this macro returns a
3684 nonzero value, the @var{named} argument is always true for named
3685 arguments, and false for unnamed arguments.  If it returns a value of
3686 zero, but @code{SETUP_INCOMING_VARARGS} is defined, then all arguments
3687 are treated as named.  Otherwise, all named arguments except the last
3688 are treated as named.
3690 You need not define this macro if it always returns zero.
3691 @end table
3693 @node Trampolines
3694 @section Trampolines for Nested Functions
3695 @cindex trampolines for nested functions
3696 @cindex nested functions, trampolines for
3698 A @dfn{trampoline} is a small piece of code that is created at run time
3699 when the address of a nested function is taken.  It normally resides on
3700 the stack, in the stack frame of the containing function.  These macros
3701 tell GNU CC how to generate code to allocate and initialize a
3702 trampoline.
3704 The instructions in the trampoline must do two things: load a constant
3705 address into the static chain register, and jump to the real address of
3706 the nested function.  On CISC machines such as the m68k, this requires
3707 two instructions, a move immediate and a jump.  Then the two addresses
3708 exist in the trampoline as word-long immediate operands.  On RISC
3709 machines, it is often necessary to load each address into a register in
3710 two parts.  Then pieces of each address form separate immediate
3711 operands.
3713 The code generated to initialize the trampoline must store the variable
3714 parts---the static chain value and the function address---into the
3715 immediate operands of the instructions.  On a CISC machine, this is
3716 simply a matter of copying each address to a memory reference at the
3717 proper offset from the start of the trampoline.  On a RISC machine, it
3718 may be necessary to take out pieces of the address and store them
3719 separately.
3721 @table @code
3722 @findex TRAMPOLINE_TEMPLATE
3723 @item TRAMPOLINE_TEMPLATE (@var{file})
3724 A C statement to output, on the stream @var{file}, assembler code for a
3725 block of data that contains the constant parts of a trampoline.  This
3726 code should not include a label---the label is taken care of
3727 automatically.
3729 If you do not define this macro, it means no template is needed
3730 for the target.  Do not define this macro on systems where the block move
3731 code to copy the trampoline into place would be larger than the code
3732 to generate it on the spot.
3734 @findex TRAMPOLINE_SECTION
3735 @item TRAMPOLINE_SECTION
3736 The name of a subroutine to switch to the section in which the
3737 trampoline template is to be placed (@pxref{Sections}).  The default is
3738 a value of @samp{readonly_data_section}, which places the trampoline in
3739 the section containing read-only data.
3741 @findex TRAMPOLINE_SIZE
3742 @item TRAMPOLINE_SIZE
3743 A C expression for the size in bytes of the trampoline, as an integer.
3745 @findex TRAMPOLINE_ALIGNMENT
3746 @item TRAMPOLINE_ALIGNMENT
3747 Alignment required for trampolines, in bits.
3749 If you don't define this macro, the value of @code{BIGGEST_ALIGNMENT}
3750 is used for aligning trampolines.
3752 @findex INITIALIZE_TRAMPOLINE
3753 @item INITIALIZE_TRAMPOLINE (@var{addr}, @var{fnaddr}, @var{static_chain})
3754 A C statement to initialize the variable parts of a trampoline.
3755 @var{addr} is an RTX for the address of the trampoline; @var{fnaddr} is
3756 an RTX for the address of the nested function; @var{static_chain} is an
3757 RTX for the static chain value that should be passed to the function
3758 when it is called.
3760 @findex ALLOCATE_TRAMPOLINE
3761 @item ALLOCATE_TRAMPOLINE (@var{fp})
3762 A C expression to allocate run-time space for a trampoline.  The
3763 expression value should be an RTX representing a memory reference to the
3764 space for the trampoline.
3766 @cindex @code{FUNCTION_EPILOGUE} and trampolines
3767 @cindex @code{FUNCTION_PROLOGUE} and trampolines
3768 If this macro is not defined, by default the trampoline is allocated as
3769 a stack slot.  This default is right for most machines.  The exceptions
3770 are machines where it is impossible to execute instructions in the stack
3771 area.  On such machines, you may have to implement a separate stack,
3772 using this macro in conjunction with @code{FUNCTION_PROLOGUE} and
3773 @code{FUNCTION_EPILOGUE}.
3775 @var{fp} points to a data structure, a @code{struct function}, which
3776 describes the compilation status of the immediate containing function of
3777 the function which the trampoline is for.  Normally (when
3778 @code{ALLOCATE_TRAMPOLINE} is not defined), the stack slot for the
3779 trampoline is in the stack frame of this containing function.  Other
3780 allocation strategies probably must do something analogous with this
3781 information.
3782 @end table
3784 Implementing trampolines is difficult on many machines because they have
3785 separate instruction and data caches.  Writing into a stack location
3786 fails to clear the memory in the instruction cache, so when the program
3787 jumps to that location, it executes the old contents.
3789 Here are two possible solutions.  One is to clear the relevant parts of
3790 the instruction cache whenever a trampoline is set up.  The other is to
3791 make all trampolines identical, by having them jump to a standard
3792 subroutine.  The former technique makes trampoline execution faster; the
3793 latter makes initialization faster.
3795 To clear the instruction cache when a trampoline is initialized, define
3796 the following macros which describe the shape of the cache.
3798 @table @code
3799 @findex INSN_CACHE_SIZE
3800 @item INSN_CACHE_SIZE
3801 The total size in bytes of the cache.
3803 @findex INSN_CACHE_LINE_WIDTH
3804 @item INSN_CACHE_LINE_WIDTH
3805 The length in bytes of each cache line.  The cache is divided into cache
3806 lines which are disjoint slots, each holding a contiguous chunk of data
3807 fetched from memory.  Each time data is brought into the cache, an
3808 entire line is read at once.  The data loaded into a cache line is
3809 always aligned on a boundary equal to the line size.
3811 @findex INSN_CACHE_DEPTH
3812 @item INSN_CACHE_DEPTH
3813 The number of alternative cache lines that can hold any particular memory
3814 location.
3815 @end table
3817 Alternatively, if the machine has system calls or instructions to clear
3818 the instruction cache directly, you can define the following macro.
3820 @table @code
3821 @findex CLEAR_INSN_CACHE
3822 @item CLEAR_INSN_CACHE (@var{BEG}, @var{END})
3823 If defined, expands to a C expression clearing the @emph{instruction
3824 cache} in the specified interval.  If it is not defined, and the macro
3825 INSN_CACHE_SIZE is defined, some generic code is generated to clear the
3826 cache.  The definition of this macro would typically be a series of
3827 @code{asm} statements.  Both @var{BEG} and @var{END} are both pointer
3828 expressions.
3829 @end table
3831 To use a standard subroutine, define the following macro.  In addition,
3832 you must make sure that the instructions in a trampoline fill an entire
3833 cache line with identical instructions, or else ensure that the
3834 beginning of the trampoline code is always aligned at the same point in
3835 its cache line.  Look in @file{m68k.h} as a guide.
3837 @table @code
3838 @findex TRANSFER_FROM_TRAMPOLINE
3839 @item TRANSFER_FROM_TRAMPOLINE
3840 Define this macro if trampolines need a special subroutine to do their
3841 work.  The macro should expand to a series of @code{asm} statements
3842 which will be compiled with GNU CC.  They go in a library function named
3843 @code{__transfer_from_trampoline}.
3845 If you need to avoid executing the ordinary prologue code of a compiled
3846 C function when you jump to the subroutine, you can do so by placing a
3847 special label of your own in the assembler code.  Use one @code{asm}
3848 statement to generate an assembler label, and another to make the label
3849 global.  Then trampolines can use that label to jump directly to your
3850 special assembler code.
3851 @end table
3853 @node Library Calls
3854 @section Implicit Calls to Library Routines
3855 @cindex library subroutine names
3856 @cindex @file{libgcc.a}
3858 @c prevent bad page break with this line
3859 Here is an explanation of implicit calls to library routines.
3861 @table @code
3862 @findex MULSI3_LIBCALL
3863 @item MULSI3_LIBCALL
3864 A C string constant giving the name of the function to call for
3865 multiplication of one signed full-word by another.  If you do not
3866 define this macro, the default name is used, which is @code{__mulsi3},
3867 a function defined in @file{libgcc.a}.
3869 @findex DIVSI3_LIBCALL
3870 @item DIVSI3_LIBCALL
3871 A C string constant giving the name of the function to call for
3872 division of one signed full-word by another.  If you do not define
3873 this macro, the default name is used, which is @code{__divsi3}, a
3874 function defined in @file{libgcc.a}.
3876 @findex UDIVSI3_LIBCALL
3877 @item UDIVSI3_LIBCALL
3878 A C string constant giving the name of the function to call for
3879 division of one unsigned full-word by another.  If you do not define
3880 this macro, the default name is used, which is @code{__udivsi3}, a
3881 function defined in @file{libgcc.a}.
3883 @findex MODSI3_LIBCALL
3884 @item MODSI3_LIBCALL
3885 A C string constant giving the name of the function to call for the
3886 remainder in division of one signed full-word by another.  If you do
3887 not define this macro, the default name is used, which is
3888 @code{__modsi3}, a function defined in @file{libgcc.a}.
3890 @findex UMODSI3_LIBCALL
3891 @item UMODSI3_LIBCALL
3892 A C string constant giving the name of the function to call for the
3893 remainder in division of one unsigned full-word by another.  If you do
3894 not define this macro, the default name is used, which is
3895 @code{__umodsi3}, a function defined in @file{libgcc.a}.
3897 @findex MULDI3_LIBCALL
3898 @item MULDI3_LIBCALL
3899 A C string constant giving the name of the function to call for
3900 multiplication of one signed double-word by another.  If you do not
3901 define this macro, the default name is used, which is @code{__muldi3},
3902 a function defined in @file{libgcc.a}.
3904 @findex DIVDI3_LIBCALL
3905 @item DIVDI3_LIBCALL
3906 A C string constant giving the name of the function to call for
3907 division of one signed double-word by another.  If you do not define
3908 this macro, the default name is used, which is @code{__divdi3}, a
3909 function defined in @file{libgcc.a}.
3911 @findex UDIVDI3_LIBCALL
3912 @item UDIVDI3_LIBCALL
3913 A C string constant giving the name of the function to call for
3914 division of one unsigned full-word by another.  If you do not define
3915 this macro, the default name is used, which is @code{__udivdi3}, a
3916 function defined in @file{libgcc.a}.
3918 @findex MODDI3_LIBCALL
3919 @item MODDI3_LIBCALL
3920 A C string constant giving the name of the function to call for the
3921 remainder in division of one signed double-word by another.  If you do
3922 not define this macro, the default name is used, which is
3923 @code{__moddi3}, a function defined in @file{libgcc.a}.
3925 @findex UMODDI3_LIBCALL
3926 @item UMODDI3_LIBCALL
3927 A C string constant giving the name of the function to call for the
3928 remainder in division of one unsigned full-word by another.  If you do
3929 not define this macro, the default name is used, which is
3930 @code{__umoddi3}, a function defined in @file{libgcc.a}.
3932 @findex INIT_TARGET_OPTABS
3933 @item INIT_TARGET_OPTABS
3934 Define this macro as a C statement that declares additional library
3935 routines renames existing ones. @code{init_optabs} calls this macro after
3936 initializing all the normal library routines.
3938 @findex TARGET_EDOM
3939 @cindex @code{EDOM}, implicit usage
3940 @item TARGET_EDOM
3941 The value of @code{EDOM} on the target machine, as a C integer constant
3942 expression.  If you don't define this macro, GNU CC does not attempt to
3943 deposit the value of @code{EDOM} into @code{errno} directly.  Look in
3944 @file{/usr/include/errno.h} to find the value of @code{EDOM} on your
3945 system.
3947 If you do not define @code{TARGET_EDOM}, then compiled code reports
3948 domain errors by calling the library function and letting it report the
3949 error.  If mathematical functions on your system use @code{matherr} when
3950 there is an error, then you should leave @code{TARGET_EDOM} undefined so
3951 that @code{matherr} is used normally.
3953 @findex GEN_ERRNO_RTX
3954 @cindex @code{errno}, implicit usage
3955 @item GEN_ERRNO_RTX
3956 Define this macro as a C expression to create an rtl expression that
3957 refers to the global ``variable'' @code{errno}.  (On certain systems,
3958 @code{errno} may not actually be a variable.)  If you don't define this
3959 macro, a reasonable default is used.
3961 @findex TARGET_MEM_FUNCTIONS
3962 @cindex @code{bcopy}, implicit usage
3963 @cindex @code{memcpy}, implicit usage
3964 @cindex @code{bzero}, implicit usage
3965 @cindex @code{memset}, implicit usage
3966 @item TARGET_MEM_FUNCTIONS
3967 Define this macro if GNU CC should generate calls to the System V
3968 (and ANSI C) library functions @code{memcpy} and @code{memset}
3969 rather than the BSD functions @code{bcopy} and @code{bzero}.
3971 @findex LIBGCC_NEEDS_DOUBLE
3972 @item LIBGCC_NEEDS_DOUBLE
3973 Define this macro if only @code{float} arguments cannot be passed to
3974 library routines (so they must be converted to @code{double}).  This
3975 macro affects both how library calls are generated and how the library
3976 routines in @file{libgcc1.c} accept their arguments.  It is useful on
3977 machines where floating and fixed point arguments are passed
3978 differently, such as the i860.
3980 @findex FLOAT_ARG_TYPE
3981 @item FLOAT_ARG_TYPE
3982 Define this macro to override the type used by the library routines to
3983 pick up arguments of type @code{float}.  (By default, they use a union
3984 of @code{float} and @code{int}.)
3986 The obvious choice would be @code{float}---but that won't work with
3987 traditional C compilers that expect all arguments declared as @code{float}
3988 to arrive as @code{double}.  To avoid this conversion, the library routines
3989 ask for the value as some other type and then treat it as a @code{float}.
3991 On some systems, no other type will work for this.  For these systems,
3992 you must use @code{LIBGCC_NEEDS_DOUBLE} instead, to force conversion of
3993 the values @code{double} before they are passed.
3995 @findex FLOATIFY
3996 @item FLOATIFY (@var{passed-value})
3997 Define this macro to override the way library routines redesignate a
3998 @code{float} argument as a @code{float} instead of the type it was
3999 passed as.  The default is an expression which takes the @code{float}
4000 field of the union.
4002 @findex FLOAT_VALUE_TYPE
4003 @item FLOAT_VALUE_TYPE
4004 Define this macro to override the type used by the library routines to
4005 return values that ought to have type @code{float}.  (By default, they
4006 use @code{int}.)
4008 The obvious choice would be @code{float}---but that won't work with
4009 traditional C compilers gratuitously convert values declared as
4010 @code{float} into @code{double}.
4012 @findex INTIFY
4013 @item INTIFY (@var{float-value})
4014 Define this macro to override the way the value of a
4015 @code{float}-returning library routine should be packaged in order to
4016 return it.  These functions are actually declared to return type
4017 @code{FLOAT_VALUE_TYPE} (normally @code{int}).
4019 These values can't be returned as type @code{float} because traditional
4020 C compilers would gratuitously convert the value to a @code{double}.
4022 A local variable named @code{intify} is always available when the macro
4023 @code{INTIFY} is used.  It is a union of a @code{float} field named
4024 @code{f} and a field named @code{i} whose type is
4025 @code{FLOAT_VALUE_TYPE} or @code{int}.
4027 If you don't define this macro, the default definition works by copying
4028 the value through that union.
4030 @findex nongcc_SI_type
4031 @item nongcc_SI_type
4032 Define this macro as the name of the data type corresponding to
4033 @code{SImode} in the system's own C compiler.
4035 You need not define this macro if that type is @code{long int}, as it usually
4038 @findex nongcc_word_type
4039 @item nongcc_word_type
4040 Define this macro as the name of the data type corresponding to the
4041 word_mode in the system's own C compiler.
4043 You need not define this macro if that type is @code{long int}, as it usually
4046 @findex perform_@dots{}
4047 @item perform_@dots{}
4048 Define these macros to supply explicit C statements to carry out various
4049 arithmetic operations on types @code{float} and @code{double} in the
4050 library routines in @file{libgcc1.c}.  See that file for a full list
4051 of these macros and their arguments.
4053 On most machines, you don't need to define any of these macros, because
4054 the C compiler that comes with the system takes care of doing them.
4056 @findex NEXT_OBJC_RUNTIME
4057 @item NEXT_OBJC_RUNTIME
4058 Define this macro to generate code for Objective C message sending using
4059 the calling convention of the NeXT system.  This calling convention
4060 involves passing the object, the selector and the method arguments all
4061 at once to the method-lookup library function.
4063 The default calling convention passes just the object and the selector
4064 to the lookup function, which returns a pointer to the method.
4065 @end table
4067 @node Addressing Modes
4068 @section Addressing Modes
4069 @cindex addressing modes
4071 @c prevent bad page break with this line
4072 This is about addressing modes.
4074 @table @code
4075 @findex HAVE_POST_INCREMENT
4076 @item HAVE_POST_INCREMENT
4077 Define this macro if the machine supports post-increment addressing.
4079 @findex HAVE_PRE_INCREMENT
4080 @findex HAVE_POST_DECREMENT
4081 @findex HAVE_PRE_DECREMENT
4082 @item HAVE_PRE_INCREMENT
4083 @itemx HAVE_POST_DECREMENT
4084 @itemx HAVE_PRE_DECREMENT
4085 Similar for other kinds of addressing.
4087 @findex CONSTANT_ADDRESS_P
4088 @item CONSTANT_ADDRESS_P (@var{x})
4089 A C expression that is 1 if the RTX @var{x} is a constant which
4090 is a valid address.  On most machines, this can be defined as
4091 @code{CONSTANT_P (@var{x})}, but a few machines are more restrictive
4092 in which constant addresses are supported.
4094 @findex CONSTANT_P
4095 @code{CONSTANT_P} accepts integer-values expressions whose values are
4096 not explicitly known, such as @code{symbol_ref}, @code{label_ref}, and
4097 @code{high} expressions and @code{const} arithmetic expressions, in
4098 addition to @code{const_int} and @code{const_double} expressions.
4100 @findex MAX_REGS_PER_ADDRESS
4101 @item MAX_REGS_PER_ADDRESS
4102 A number, the maximum number of registers that can appear in a valid
4103 memory address.  Note that it is up to you to specify a value equal to
4104 the maximum number that @code{GO_IF_LEGITIMATE_ADDRESS} would ever
4105 accept.
4107 @findex GO_IF_LEGITIMATE_ADDRESS
4108 @item GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label})
4109 A C compound statement with a conditional @code{goto @var{label};}
4110 executed if @var{x} (an RTX) is a legitimate memory address on the
4111 target machine for a memory operand of mode @var{mode}.
4113 It usually pays to define several simpler macros to serve as
4114 subroutines for this one.  Otherwise it may be too complicated to
4115 understand.
4117 This macro must exist in two variants: a strict variant and a
4118 non-strict one.  The strict variant is used in the reload pass.  It
4119 must be defined so that any pseudo-register that has not been
4120 allocated a hard register is considered a memory reference.  In
4121 contexts where some kind of register is required, a pseudo-register
4122 with no hard register must be rejected.
4124 The non-strict variant is used in other passes.  It must be defined to
4125 accept all pseudo-registers in every context where some kind of
4126 register is required.
4128 @findex REG_OK_STRICT
4129 Compiler source files that want to use the strict variant of this
4130 macro define the macro @code{REG_OK_STRICT}.  You should use an
4131 @code{#ifdef REG_OK_STRICT} conditional to define the strict variant
4132 in that case and the non-strict variant otherwise.
4134 Subroutines to check for acceptable registers for various purposes (one
4135 for base registers, one for index registers, and so on) are typically
4136 among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}.
4137 Then only these subroutine macros need have two variants; the higher
4138 levels of macros may be the same whether strict or not.@refill
4140 Normally, constant addresses which are the sum of a @code{symbol_ref}
4141 and an integer are stored inside a @code{const} RTX to mark them as
4142 constant.  Therefore, there is no need to recognize such sums
4143 specifically as legitimate addresses.  Normally you would simply
4144 recognize any @code{const} as legitimate.
4146 Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant
4147 sums that are not marked with  @code{const}.  It assumes that a naked
4148 @code{plus} indicates indexing.  If so, then you @emph{must} reject such
4149 naked constant sums as illegitimate addresses, so that none of them will
4150 be given to @code{PRINT_OPERAND_ADDRESS}.
4152 @cindex @code{ENCODE_SECTION_INFO} and address validation
4153 On some machines, whether a symbolic address is legitimate depends on
4154 the section that the address refers to.  On these machines, define the
4155 macro @code{ENCODE_SECTION_INFO} to store the information into the
4156 @code{symbol_ref}, and then check for it here.  When you see a
4157 @code{const}, you will have to look inside it to find the
4158 @code{symbol_ref} in order to determine the section.  @xref{Assembler
4159 Format}.
4161 @findex saveable_obstack
4162 The best way to modify the name string is by adding text to the
4163 beginning, with suitable punctuation to prevent any ambiguity.  Allocate
4164 the new name in @code{saveable_obstack}.  You will have to modify
4165 @code{ASM_OUTPUT_LABELREF} to remove and decode the added text and
4166 output the name accordingly, and define @code{STRIP_NAME_ENCODING} to
4167 access the original name string.
4169 You can check the information stored here into the @code{symbol_ref} in
4170 the definitions of the macros @code{GO_IF_LEGITIMATE_ADDRESS} and
4171 @code{PRINT_OPERAND_ADDRESS}.
4173 @findex REG_OK_FOR_BASE_P
4174 @item REG_OK_FOR_BASE_P (@var{x})
4175 A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4176 RTX) is valid for use as a base register.  For hard registers, it
4177 should always accept those which the hardware permits and reject the
4178 others.  Whether the macro accepts or rejects pseudo registers must be
4179 controlled by @code{REG_OK_STRICT} as described above.  This usually
4180 requires two variant definitions, of which @code{REG_OK_STRICT}
4181 controls the one actually used.
4183 @findex REG_MODE_OK_FOR_BASE_P
4184 @item REG_MODE_OK_FOR_BASE_P (@var{x}, @var{mode})
4185 A C expression that is just like @code{REG_OK_FOR_BASE_P}, except that
4186 that expression may examine the mode of the memory reference in
4187 @var{mode}.  You should define this macro if the mode of the memory
4188 reference affects whether a register may be used as a base register.  If
4189 you define this macro, the compiler will use it instead of
4190 @code{REG_OK_FOR_BASE_P}.
4192 @findex REG_OK_FOR_INDEX_P
4193 @item REG_OK_FOR_INDEX_P (@var{x})
4194 A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4195 RTX) is valid for use as an index register.
4197 The difference between an index register and a base register is that
4198 the index register may be scaled.  If an address involves the sum of
4199 two registers, neither one of them scaled, then either one may be
4200 labeled the ``base'' and the other the ``index''; but whichever
4201 labeling is used must fit the machine's constraints of which registers
4202 may serve in each capacity.  The compiler will try both labelings,
4203 looking for one that is valid, and will reload one or both registers
4204 only if neither labeling works.
4206 @findex LEGITIMIZE_ADDRESS
4207 @item LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win})
4208 A C compound statement that attempts to replace @var{x} with a valid
4209 memory address for an operand of mode @var{mode}.  @var{win} will be a
4210 C statement label elsewhere in the code; the macro definition may use
4212 @example
4213 GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win});
4214 @end example
4216 @noindent
4217 to avoid further processing if the address has become legitimate.
4219 @findex break_out_memory_refs
4220 @var{x} will always be the result of a call to @code{break_out_memory_refs},
4221 and @var{oldx} will be the operand that was given to that function to produce
4222 @var{x}.
4224 The code generated by this macro should not alter the substructure of
4225 @var{x}.  If it transforms @var{x} into a more legitimate form, it
4226 should assign @var{x} (which will always be a C variable) a new value.
4228 It is not necessary for this macro to come up with a legitimate
4229 address.  The compiler has standard ways of doing so in all cases.  In
4230 fact, it is safe for this macro to do nothing.  But often a
4231 machine-dependent strategy can generate better code.
4233 @findex GO_IF_MODE_DEPENDENT_ADDRESS
4234 @item GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
4235 A C statement or compound statement with a conditional @code{goto
4236 @var{label};} executed if memory address @var{x} (an RTX) can have
4237 different meanings depending on the machine mode of the memory
4238 reference it is used for or if the address is valid for some modes
4239 but not others.
4241 Autoincrement and autodecrement addresses typically have mode-dependent
4242 effects because the amount of the increment or decrement is the size
4243 of the operand being addressed.  Some machines have other mode-dependent
4244 addresses.  Many RISC machines have no mode-dependent addresses.
4246 You may assume that @var{addr} is a valid address for the machine.
4248 @findex LEGITIMATE_CONSTANT_P
4249 @item LEGITIMATE_CONSTANT_P (@var{x})
4250 A C expression that is nonzero if @var{x} is a legitimate constant for
4251 an immediate operand on the target machine.  You can assume that
4252 @var{x} satisfies @code{CONSTANT_P}, so you need not check this.  In fact,
4253 @samp{1} is a suitable definition for this macro on machines where
4254 anything @code{CONSTANT_P} is valid.@refill
4255 @end table
4257 @node Condition Code
4258 @section Condition Code Status
4259 @cindex condition code status
4261 @c prevent bad page break with this line
4262 This describes the condition code status.
4264 @findex cc_status
4265 The file @file{conditions.h} defines a variable @code{cc_status} to
4266 describe how the condition code was computed (in case the interpretation of
4267 the condition code depends on the instruction that it was set by).  This
4268 variable contains the RTL expressions on which the condition code is
4269 currently based, and several standard flags.
4271 Sometimes additional machine-specific flags must be defined in the machine
4272 description header file.  It can also add additional machine-specific
4273 information by defining @code{CC_STATUS_MDEP}.
4275 @table @code
4276 @findex CC_STATUS_MDEP
4277 @item CC_STATUS_MDEP
4278 C code for a data type which is used for declaring the @code{mdep}
4279 component of @code{cc_status}.  It defaults to @code{int}.
4281 This macro is not used on machines that do not use @code{cc0}.
4283 @findex CC_STATUS_MDEP_INIT
4284 @item CC_STATUS_MDEP_INIT
4285 A C expression to initialize the @code{mdep} field to ``empty''.
4286 The default definition does nothing, since most machines don't use
4287 the field anyway.  If you want to use the field, you should probably
4288 define this macro to initialize it.
4290 This macro is not used on machines that do not use @code{cc0}.
4292 @findex NOTICE_UPDATE_CC
4293 @item NOTICE_UPDATE_CC (@var{exp}, @var{insn})
4294 A C compound statement to set the components of @code{cc_status}
4295 appropriately for an insn @var{insn} whose body is @var{exp}.  It is
4296 this macro's responsibility to recognize insns that set the condition
4297 code as a byproduct of other activity as well as those that explicitly
4298 set @code{(cc0)}.
4300 This macro is not used on machines that do not use @code{cc0}.
4302 If there are insns that do not set the condition code but do alter
4303 other machine registers, this macro must check to see whether they
4304 invalidate the expressions that the condition code is recorded as
4305 reflecting.  For example, on the 68000, insns that store in address
4306 registers do not set the condition code, which means that usually
4307 @code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such
4308 insns.  But suppose that the previous insn set the condition code
4309 based on location @samp{a4@@(102)} and the current insn stores a new
4310 value in @samp{a4}.  Although the condition code is not changed by
4311 this, it will no longer be true that it reflects the contents of
4312 @samp{a4@@(102)}.  Therefore, @code{NOTICE_UPDATE_CC} must alter
4313 @code{cc_status} in this case to say that nothing is known about the
4314 condition code value.
4316 The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal
4317 with the results of peephole optimization: insns whose patterns are
4318 @code{parallel} RTXs containing various @code{reg}, @code{mem} or
4319 constants which are just the operands.  The RTL structure of these
4320 insns is not sufficient to indicate what the insns actually do.  What
4321 @code{NOTICE_UPDATE_CC} should do when it sees one is just to run
4322 @code{CC_STATUS_INIT}.
4324 A possible definition of @code{NOTICE_UPDATE_CC} is to call a function
4325 that looks at an attribute (@pxref{Insn Attributes}) named, for example,
4326 @samp{cc}.  This avoids having detailed information about patterns in
4327 two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}.
4329 @findex EXTRA_CC_MODES
4330 @item EXTRA_CC_MODES
4331 A list of names to be used for additional modes for condition code
4332 values in registers (@pxref{Jump Patterns}).  These names are added
4333 to @code{enum machine_mode} and all have class @code{MODE_CC}.  By
4334 convention, they should start with @samp{CC} and end with @samp{mode}.
4336 You should only define this macro if your machine does not use @code{cc0}
4337 and only if additional modes are required.
4339 @findex EXTRA_CC_NAMES
4340 @item EXTRA_CC_NAMES
4341 A list of C strings giving the names for the modes listed in
4342 @code{EXTRA_CC_MODES}.  For example, the Sparc defines this macro and
4343 @code{EXTRA_CC_MODES} as
4345 @smallexample
4346 #define EXTRA_CC_MODES CC_NOOVmode, CCFPmode, CCFPEmode
4347 #define EXTRA_CC_NAMES "CC_NOOV", "CCFP", "CCFPE"
4348 @end smallexample
4350 This macro is not required if @code{EXTRA_CC_MODES} is not defined.
4352 @findex SELECT_CC_MODE
4353 @item SELECT_CC_MODE (@var{op}, @var{x}, @var{y})
4354 Returns a mode from class @code{MODE_CC} to be used when comparison
4355 operation code @var{op} is applied to rtx @var{x} and @var{y}.  For
4356 example, on the Sparc, @code{SELECT_CC_MODE} is defined as (see
4357 @pxref{Jump Patterns} for a description of the reason for this
4358 definition)
4360 @smallexample
4361 #define SELECT_CC_MODE(OP,X,Y) \
4362   (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT          \
4363    ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode)    \
4364    : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS    \
4365        || GET_CODE (X) == NEG) \
4366       ? CC_NOOVmode : CCmode))
4367 @end smallexample
4369 You need not define this macro if @code{EXTRA_CC_MODES} is not defined.
4371 @findex CANONICALIZE_COMPARISON
4372 @item CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1})
4373 One some machines not all possible comparisons are defined, but you can
4374 convert an invalid comparison into a valid one.  For example, the Alpha
4375 does not have a @code{GT} comparison, but you can use an @code{LT}
4376 comparison instead and swap the order of the operands.
4378 On such machines, define this macro to be a C statement to do any
4379 required conversions.  @var{code} is the initial comparison code
4380 and @var{op0} and @var{op1} are the left and right operands of the
4381 comparison, respectively.  You should modify @var{code}, @var{op0}, and
4382 @var{op1} as required.
4384 GNU CC will not assume that the comparison resulting from this macro is
4385 valid but will see if the resulting insn matches a pattern in the
4386 @file{md} file.
4388 You need not define this macro if it would never change the comparison
4389 code or operands.
4391 @findex REVERSIBLE_CC_MODE
4392 @item REVERSIBLE_CC_MODE (@var{mode})
4393 A C expression whose value is one if it is always safe to reverse a
4394 comparison whose mode is @var{mode}.  If @code{SELECT_CC_MODE}
4395 can ever return @var{mode} for a floating-point inequality comparison,
4396 then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero.
4398 You need not define this macro if it would always returns zero or if the
4399 floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}.
4400 For example, here is the definition used on the Sparc, where floating-point
4401 inequality comparisons are always given @code{CCFPEmode}:
4403 @smallexample
4404 #define REVERSIBLE_CC_MODE(MODE)  ((MODE) != CCFPEmode)
4405 @end smallexample
4407 @end table
4409 @node Costs
4410 @section Describing Relative Costs of Operations
4411 @cindex costs of instructions
4412 @cindex relative costs
4413 @cindex speed of instructions
4415 These macros let you describe the relative speed of various operations
4416 on the target machine.
4418 @table @code
4419 @findex CONST_COSTS
4420 @item CONST_COSTS (@var{x}, @var{code}, @var{outer_code})
4421 A part of a C @code{switch} statement that describes the relative costs
4422 of constant RTL expressions.  It must contain @code{case} labels for
4423 expression codes @code{const_int}, @code{const}, @code{symbol_ref},
4424 @code{label_ref} and @code{const_double}.  Each case must ultimately
4425 reach a @code{return} statement to return the relative cost of the use
4426 of that kind of constant value in an expression.  The cost may depend on
4427 the precise value of the constant, which is available for examination in
4428 @var{x}, and the rtx code of the expression in which it is contained,
4429 found in @var{outer_code}.
4431 @var{code} is the expression code---redundant, since it can be
4432 obtained with @code{GET_CODE (@var{x})}.
4434 @findex RTX_COSTS
4435 @findex COSTS_N_INSNS
4436 @item RTX_COSTS (@var{x}, @var{code}, @var{outer_code})
4437 Like @code{CONST_COSTS} but applies to nonconstant RTL expressions.
4438 This can be used, for example, to indicate how costly a multiply
4439 instruction is.  In writing this macro, you can use the construct
4440 @code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast
4441 instructions.  @var{outer_code} is the code of the expression in which
4442 @var{x} is contained.
4444 This macro is optional; do not define it if the default cost assumptions
4445 are adequate for the target machine.
4447 @findex ADDRESS_COST
4448 @item ADDRESS_COST (@var{address})
4449 An expression giving the cost of an addressing mode that contains
4450 @var{address}.  If not defined, the cost is computed from
4451 the @var{address} expression and the @code{CONST_COSTS} values.
4453 For most CISC machines, the default cost is a good approximation of the
4454 true cost of the addressing mode.  However, on RISC machines, all
4455 instructions normally have the same length and execution time.  Hence
4456 all addresses will have equal costs.
4458 In cases where more than one form of an address is known, the form with
4459 the lowest cost will be used.  If multiple forms have the same, lowest,
4460 cost, the one that is the most complex will be used.
4462 For example, suppose an address that is equal to the sum of a register
4463 and a constant is used twice in the same basic block.  When this macro
4464 is not defined, the address will be computed in a register and memory
4465 references will be indirect through that register.  On machines where
4466 the cost of the addressing mode containing the sum is no higher than
4467 that of a simple indirect reference, this will produce an additional
4468 instruction and possibly require an additional register.  Proper
4469 specification of this macro eliminates this overhead for such machines.
4471 Similar use of this macro is made in strength reduction of loops.
4473 @var{address} need not be valid as an address.  In such a case, the cost
4474 is not relevant and can be any value; invalid addresses need not be
4475 assigned a different cost.
4477 On machines where an address involving more than one register is as
4478 cheap as an address computation involving only one register, defining
4479 @code{ADDRESS_COST} to reflect this can cause two registers to be live
4480 over a region of code where only one would have been if
4481 @code{ADDRESS_COST} were not defined in that manner.  This effect should
4482 be considered in the definition of this macro.  Equivalent costs should
4483 probably only be given to addresses with different numbers of registers
4484 on machines with lots of registers.
4486 This macro will normally either not be defined or be defined as a
4487 constant.
4489 @findex REGISTER_MOVE_COST
4490 @item REGISTER_MOVE_COST (@var{from}, @var{to})
4491 A C expression for the cost of moving data from a register in class
4492 @var{from} to one in class @var{to}.  The classes are expressed using
4493 the enumeration values such as @code{GENERAL_REGS}.  A value of 2 is the
4494 default; other values are interpreted relative to that.
4496 It is not required that the cost always equal 2 when @var{from} is the
4497 same as @var{to}; on some machines it is expensive to move between
4498 registers if they are not general registers.
4500 If reload sees an insn consisting of a single @code{set} between two
4501 hard registers, and if @code{REGISTER_MOVE_COST} applied to their
4502 classes returns a value of 2, reload does not check to ensure that the
4503 constraints of the insn are met.  Setting a cost of other than 2 will
4504 allow reload to verify that the constraints are met.  You should do this
4505 if the @samp{mov@var{m}} pattern's constraints do not allow such copying.
4507 @findex MEMORY_MOVE_COST
4508 @item MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in})
4509 A C expression for the cost of moving data of mode @var{mode} between a
4510 register of class @var{class} and memory; @var{in} is zero if the value
4511 is to be written to memory, non-zero if it is to be read in.  This cost
4512 is relative to those in @code{REGISTER_MOVE_COST}.  If moving between
4513 registers and memory is more expensive than between two registers, you
4514 should define this macro to express the relative cost.
4516 If you do not define this macro, GNU CC uses a default cost of 4 plus
4517 the cost of copying copying via a secondary reload register, if one is
4518 needed.  If your machine requires a secondary reload register to copy
4519 between memory and a register of @var{class} but the reload mechanism is
4520 more complex than copying via an intermediate, define this macro to
4521 reflect the actual cost of the move.
4523 GNU CC defines the function @code{memory_move_secondary_cost} if
4524 secondary reloads are needed.  It computes the costs due to copying via
4525 a secondary register.  If your machine copies from memory using a
4526 secondary register in the conventional way but the default base value of
4527 4 is not correct for your machine, define this macro to add some other
4528 value to the result of that function.  The arguments to that function
4529 are the same as to this macro.
4531 @findex BRANCH_COST
4532 @item BRANCH_COST
4533 A C expression for the cost of a branch instruction.  A value of 1 is
4534 the default; other values are interpreted relative to that.
4535 @end table
4537 Here are additional macros which do not specify precise relative costs,
4538 but only that certain actions are more expensive than GNU CC would
4539 ordinarily expect.
4541 @table @code
4542 @findex SLOW_BYTE_ACCESS
4543 @item SLOW_BYTE_ACCESS
4544 Define this macro as a C expression which is nonzero if accessing less
4545 than a word of memory (i.e. a @code{char} or a @code{short}) is no
4546 faster than accessing a word of memory, i.e., if such access
4547 require more than one instruction or if there is no difference in cost
4548 between byte and (aligned) word loads.
4550 When this macro is not defined, the compiler will access a field by
4551 finding the smallest containing object; when it is defined, a fullword
4552 load will be used if alignment permits.  Unless bytes accesses are
4553 faster than word accesses, using word accesses is preferable since it
4554 may eliminate subsequent memory access if subsequent accesses occur to
4555 other fields in the same word of the structure, but to different bytes.
4557 @findex SLOW_ZERO_EXTEND
4558 @item SLOW_ZERO_EXTEND
4559 Define this macro if zero-extension (of a @code{char} or @code{short}
4560 to an @code{int}) can be done faster if the destination is a register
4561 that is known to be zero.
4563 If you define this macro, you must have instruction patterns that
4564 recognize RTL structures like this:
4566 @smallexample
4567 (set (strict_low_part (subreg:QI (reg:SI @dots{}) 0)) @dots{})
4568 @end smallexample
4570 @noindent
4571 and likewise for @code{HImode}.
4573 @findex SLOW_UNALIGNED_ACCESS
4574 @item SLOW_UNALIGNED_ACCESS
4575 Define this macro to be the value 1 if unaligned accesses have a cost
4576 many times greater than aligned accesses, for example if they are
4577 emulated in a trap handler.
4579 When this macro is non-zero, the compiler will act as if
4580 @code{STRICT_ALIGNMENT} were non-zero when generating code for block
4581 moves.  This can cause significantly more instructions to be produced.
4582 Therefore, do not set this macro non-zero if unaligned accesses only add a
4583 cycle or two to the time for a memory access.
4585 If the value of this macro is always zero, it need not be defined.
4587 @findex DONT_REDUCE_ADDR
4588 @item DONT_REDUCE_ADDR
4589 Define this macro to inhibit strength reduction of memory addresses.
4590 (On some machines, such strength reduction seems to do harm rather
4591 than good.)
4593 @findex MOVE_RATIO
4594 @item MOVE_RATIO
4595 The threshold of number of scalar memory-to-memory move insns, @emph{below}
4596 which a sequence of insns should be generated instead of a
4597 string move insn or a library call.  Increasing the value will always
4598 make code faster, but eventually incurs high cost in increased code size.
4600 Note that on machines where the corresponding move insn is a
4601 @code{define_expand} that emits a sequence of insns, this macro counts
4602 the number of such sequences.
4604 If you don't define this, a reasonable default is used.
4606 @findex NO_FUNCTION_CSE
4607 @item NO_FUNCTION_CSE
4608 Define this macro if it is as good or better to call a constant
4609 function address than to call an address kept in a register.
4611 @findex NO_RECURSIVE_FUNCTION_CSE
4612 @item NO_RECURSIVE_FUNCTION_CSE
4613 Define this macro if it is as good or better for a function to call
4614 itself with an explicit address than to call an address kept in a
4615 register.
4617 @findex ADJUST_COST
4618 @item ADJUST_COST (@var{insn}, @var{link}, @var{dep_insn}, @var{cost})
4619 A C statement (sans semicolon) to update the integer variable @var{cost}
4620 based on the relationship between @var{insn} that is dependent on
4621 @var{dep_insn} through the dependence @var{link}.  The default is to
4622 make no adjustment to @var{cost}.  This can be used for example to
4623 specify to the scheduler that an output- or anti-dependence does not
4624 incur the same cost as a data-dependence.
4626 @findex ADJUST_PRIORITY
4627 @item ADJUST_PRIORITY (@var{insn})
4628 A C statement (sans semicolon) to update the integer scheduling
4629 priority @code{INSN_PRIORITY(@var{insn})}.  Reduce the priority
4630 to execute the @var{insn} earlier, increase the priority to execute
4631 @var{insn} later.    Do not define this macro if you do not need to
4632 adjust the scheduling priorities of insns.
4633 @end table
4635 @node Sections
4636 @section Dividing the Output into Sections (Texts, Data, @dots{})
4637 @c the above section title is WAY too long.  maybe cut the part between
4638 @c the (...)?  --mew 10feb93
4640 An object file is divided into sections containing different types of
4641 data.  In the most common case, there are three sections: the @dfn{text
4642 section}, which holds instructions and read-only data; the @dfn{data
4643 section}, which holds initialized writable data; and the @dfn{bss
4644 section}, which holds uninitialized data.  Some systems have other kinds
4645 of sections.
4647 The compiler must tell the assembler when to switch sections.  These
4648 macros control what commands to output to tell the assembler this.  You
4649 can also define additional sections.
4651 @table @code
4652 @findex TEXT_SECTION_ASM_OP
4653 @item TEXT_SECTION_ASM_OP
4654 A C expression whose value is a string containing the assembler
4655 operation that should precede instructions and read-only data.  Normally
4656 @code{".text"} is right.
4658 @findex DATA_SECTION_ASM_OP
4659 @item DATA_SECTION_ASM_OP
4660 A C expression whose value is a string containing the assembler
4661 operation to identify the following data as writable initialized data.
4662 Normally @code{".data"} is right.
4664 @findex SHARED_SECTION_ASM_OP
4665 @item SHARED_SECTION_ASM_OP
4666 If defined, a C expression whose value is a string containing the
4667 assembler operation to identify the following data as shared data.  If
4668 not defined, @code{DATA_SECTION_ASM_OP} will be used.
4670 @findex BSS_SECTION_ASM_OP
4671 @item BSS_SECTION_ASM_OP
4672 If defined, a C expression whose value is a string containing the
4673 assembler operation to identify the following data as uninitialized global
4674 data.  If not defined, and neither @code{ASM_OUTPUT_BSS} nor
4675 @code{ASM_OUTPUT_ALIGNED_BSS} are defined, uninitialized global data will be
4676 output in the data section if @samp{-fno-common} is passed, otherwise
4677 @code{ASM_OUTPUT_COMMON} will be used.
4679 @findex SHARED_BSS_SECTION_ASM_OP
4680 @item SHARED_BSS_SECTION_ASM_OP
4681 If defined, a C expression whose value is a string containing the
4682 assembler operation to identify the following data as uninitialized global
4683 shared data.  If not defined, and @code{BSS_SECTION_ASM_OP} is, the latter
4684 will be used.
4686 @findex INIT_SECTION_ASM_OP
4687 @item INIT_SECTION_ASM_OP
4688 If defined, a C expression whose value is a string containing the
4689 assembler operation to identify the following data as initialization
4690 code.  If not defined, GNU CC will assume such a section does not
4691 exist.
4693 @findex EXTRA_SECTIONS
4694 @findex in_text
4695 @findex in_data
4696 @item EXTRA_SECTIONS
4697 A list of names for sections other than the standard two, which are
4698 @code{in_text} and @code{in_data}.  You need not define this macro
4699 on a system with no other sections (that GCC needs to use).
4701 @findex EXTRA_SECTION_FUNCTIONS
4702 @findex text_section
4703 @findex data_section
4704 @item EXTRA_SECTION_FUNCTIONS
4705 One or more functions to be defined in @file{varasm.c}.  These
4706 functions should do jobs analogous to those of @code{text_section} and
4707 @code{data_section}, for your additional sections.  Do not define this
4708 macro if you do not define @code{EXTRA_SECTIONS}.
4710 @findex READONLY_DATA_SECTION
4711 @item READONLY_DATA_SECTION
4712 On most machines, read-only variables, constants, and jump tables are
4713 placed in the text section.  If this is not the case on your machine,
4714 this macro should be defined to be the name of a function (either
4715 @code{data_section} or a function defined in @code{EXTRA_SECTIONS}) that
4716 switches to the section to be used for read-only items.
4718 If these items should be placed in the text section, this macro should
4719 not be defined.
4721 @findex SELECT_SECTION
4722 @item SELECT_SECTION (@var{exp}, @var{reloc})
4723 A C statement or statements to switch to the appropriate section for
4724 output of @var{exp}.  You can assume that @var{exp} is either a
4725 @code{VAR_DECL} node or a constant of some sort.  @var{reloc}
4726 indicates whether the initial value of @var{exp} requires link-time
4727 relocations.  Select the section by calling @code{text_section} or one
4728 of the alternatives for other sections.
4730 Do not define this macro if you put all read-only variables and
4731 constants in the read-only data section (usually the text section).
4733 @findex SELECT_RTX_SECTION
4734 @item SELECT_RTX_SECTION (@var{mode}, @var{rtx})
4735 A C statement or statements to switch to the appropriate section for
4736 output of @var{rtx} in mode @var{mode}.  You can assume that @var{rtx}
4737 is some kind of constant in RTL.  The argument @var{mode} is redundant
4738 except in the case of a @code{const_int} rtx.  Select the section by
4739 calling @code{text_section} or one of the alternatives for other
4740 sections.
4742 Do not define this macro if you put all constants in the read-only
4743 data section.
4745 @findex JUMP_TABLES_IN_TEXT_SECTION
4746 @item JUMP_TABLES_IN_TEXT_SECTION
4747 Define this macro if jump tables (for @code{tablejump} insns) should be
4748 output in the text section, along with the assembler instructions.
4749 Otherwise, the readonly data section is used.
4751 This macro is irrelevant if there is no separate readonly data section.
4753 @findex ENCODE_SECTION_INFO
4754 @item ENCODE_SECTION_INFO (@var{decl})
4755 Define this macro if references to a symbol must be treated differently
4756 depending on something about the variable or function named by the
4757 symbol (such as what section it is in).
4759 The macro definition, if any, is executed immediately after the rtl for
4760 @var{decl} has been created and stored in @code{DECL_RTL (@var{decl})}.
4761 The value of the rtl will be a @code{mem} whose address is a
4762 @code{symbol_ref}.
4764 @cindex @code{SYMBOL_REF_FLAG}, in @code{ENCODE_SECTION_INFO}
4765 The usual thing for this macro to do is to record a flag in the
4766 @code{symbol_ref} (such as @code{SYMBOL_REF_FLAG}) or to store a
4767 modified name string in the @code{symbol_ref} (if one bit is not enough
4768 information).
4770 @findex STRIP_NAME_ENCODING
4771 @item STRIP_NAME_ENCODING (@var{var}, @var{sym_name})
4772 Decode @var{sym_name} and store the real name part in @var{var}, sans
4773 the characters that encode section info.  Define this macro if
4774 @code{ENCODE_SECTION_INFO} alters the symbol's name string.
4776 @findex UNIQUE_SECTION_P
4777 @item UNIQUE_SECTION_P (@var{decl})
4778 A C expression which evaluates to true if @var{decl} should be placed
4779 into a unique section for some target-specific reason.  If you do not
4780 define this macro, the default is @samp{0}.  Note that the flag
4781 @samp{-ffunction-sections} will also cause functions to be placed into
4782 unique sections.
4784 @findex UNIQUE_SECTION
4785 @item UNIQUE_SECTION (@var{decl}, @var{reloc})
4786 A C statement to build up a unique section name, expressed as a
4787 STRING_CST node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
4788 @var{reloc} indicates whether the initial value of @var{exp} requires
4789 link-time relocations.  If you do not define this macro, GNU CC will use
4790 the symbol name prefixed by @samp{.} as the section name.
4791 @end table
4793 @node PIC
4794 @section Position Independent Code
4795 @cindex position independent code
4796 @cindex PIC
4798 This section describes macros that help implement generation of position
4799 independent code.  Simply defining these macros is not enough to
4800 generate valid PIC; you must also add support to the macros
4801 @code{GO_IF_LEGITIMATE_ADDRESS} and @code{PRINT_OPERAND_ADDRESS}, as
4802 well as @code{LEGITIMIZE_ADDRESS}.  You must modify the definition of
4803 @samp{movsi} to do something appropriate when the source operand
4804 contains a symbolic address.  You may also need to alter the handling of
4805 switch statements so that they use relative addresses.
4806 @c i rearranged the order of the macros above to try to force one of
4807 @c them to the next line, to eliminate an overfull hbox. --mew 10feb93
4809 @table @code
4810 @findex PIC_OFFSET_TABLE_REGNUM
4811 @item PIC_OFFSET_TABLE_REGNUM
4812 The register number of the register used to address a table of static
4813 data addresses in memory.  In some cases this register is defined by a
4814 processor's ``application binary interface'' (ABI).  When this macro
4815 is defined, RTL is generated for this register once, as with the stack
4816 pointer and frame pointer registers.  If this macro is not defined, it
4817 is up to the machine-dependent files to allocate such a register (if
4818 necessary).
4820 @findex PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
4821 @item PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
4822 Define this macro if the register defined by
4823 @code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls.  Do not define
4824 this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined.
4826 @findex FINALIZE_PIC
4827 @item FINALIZE_PIC
4828 By generating position-independent code, when two different programs (A
4829 and B) share a common library (libC.a), the text of the library can be
4830 shared whether or not the library is linked at the same address for both
4831 programs.  In some of these environments, position-independent code
4832 requires not only the use of different addressing modes, but also
4833 special code to enable the use of these addressing modes.
4835 The @code{FINALIZE_PIC} macro serves as a hook to emit these special
4836 codes once the function is being compiled into assembly code, but not
4837 before.  (It is not done before, because in the case of compiling an
4838 inline function, it would lead to multiple PIC prologues being
4839 included in functions which used inline functions and were compiled to
4840 assembly language.)
4842 @findex LEGITIMATE_PIC_OPERAND_P
4843 @item LEGITIMATE_PIC_OPERAND_P (@var{x})
4844 A C expression that is nonzero if @var{x} is a legitimate immediate
4845 operand on the target machine when generating position independent code.
4846 You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not
4847 check this.  You can also assume @var{flag_pic} is true, so you need not
4848 check it either.  You need not define this macro if all constants
4849 (including @code{SYMBOL_REF}) can be immediate operands when generating
4850 position independent code.
4851 @end table
4853 @node Assembler Format
4854 @section Defining the Output Assembler Language
4856 This section describes macros whose principal purpose is to describe how
4857 to write instructions in assembler language--rather than what the
4858 instructions do.
4860 @menu
4861 * File Framework::       Structural information for the assembler file.
4862 * Data Output::          Output of constants (numbers, strings, addresses).
4863 * Uninitialized Data::   Output of uninitialized variables.
4864 * Label Output::         Output and generation of labels.
4865 * Initialization::       General principles of initialization
4866                            and termination routines.
4867 * Macros for Initialization::
4868                          Specific macros that control the handling of
4869                            initialization and termination routines.
4870 * Instruction Output::   Output of actual instructions.
4871 * Dispatch Tables::      Output of jump tables.
4872 * Exception Region Output:: Output of exception region code.
4873 * Alignment Output::     Pseudo ops for alignment and skipping data.
4874 @end menu
4876 @node File Framework
4877 @subsection The Overall Framework of an Assembler File
4878 @cindex assembler format
4879 @cindex output of assembler code
4881 @c prevent bad page break with this line
4882 This describes the overall framework of an assembler file.
4884 @table @code
4885 @findex ASM_FILE_START
4886 @item ASM_FILE_START (@var{stream})
4887 A C expression which outputs to the stdio stream @var{stream}
4888 some appropriate text to go at the start of an assembler file.
4890 Normally this macro is defined to output a line containing
4891 @samp{#NO_APP}, which is a comment that has no effect on most
4892 assemblers but tells the GNU assembler that it can save time by not
4893 checking for certain assembler constructs.
4895 On systems that use SDB, it is necessary to output certain commands;
4896 see @file{attasm.h}.
4898 @findex ASM_FILE_END
4899 @item ASM_FILE_END (@var{stream})
4900 A C expression which outputs to the stdio stream @var{stream}
4901 some appropriate text to go at the end of an assembler file.
4903 If this macro is not defined, the default is to output nothing
4904 special at the end of the file.  Most systems don't require any
4905 definition.
4907 On systems that use SDB, it is necessary to output certain commands;
4908 see @file{attasm.h}.
4910 @findex ASM_IDENTIFY_GCC
4911 @item ASM_IDENTIFY_GCC (@var{file})
4912 A C statement to output assembler commands which will identify
4913 the object file as having been compiled with GNU CC (or another
4914 GNU compiler).
4916 If you don't define this macro, the string @samp{gcc_compiled.:}
4917 is output.  This string is calculated to define a symbol which,
4918 on BSD systems, will never be defined for any other reason.
4919 GDB checks for the presence of this symbol when reading the
4920 symbol table of an executable.
4922 On non-BSD systems, you must arrange communication with GDB in
4923 some other fashion.  If GDB is not used on your system, you can
4924 define this macro with an empty body.
4926 @findex ASM_COMMENT_START
4927 @item ASM_COMMENT_START
4928 A C string constant describing how to begin a comment in the target
4929 assembler language.  The compiler assumes that the comment will end at
4930 the end of the line.
4932 @findex ASM_APP_ON
4933 @item ASM_APP_ON
4934 A C string constant for text to be output before each @code{asm}
4935 statement or group of consecutive ones.  Normally this is
4936 @code{"#APP"}, which is a comment that has no effect on most
4937 assemblers but tells the GNU assembler that it must check the lines
4938 that follow for all valid assembler constructs.
4940 @findex ASM_APP_OFF
4941 @item ASM_APP_OFF
4942 A C string constant for text to be output after each @code{asm}
4943 statement or group of consecutive ones.  Normally this is
4944 @code{"#NO_APP"}, which tells the GNU assembler to resume making the
4945 time-saving assumptions that are valid for ordinary compiler output.
4947 @findex ASM_OUTPUT_SOURCE_FILENAME
4948 @item ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
4949 A C statement to output COFF information or DWARF debugging information
4950 which indicates that filename @var{name} is the current source file to
4951 the stdio stream @var{stream}.
4953 This macro need not be defined if the standard form of output
4954 for the file format in use is appropriate.
4956 @findex OUTPUT_QUOTED_STRING
4957 @item OUTPUT_QUOTED_STRING (@var{stream}, @var{name})
4958 A C statement to output the string @var{string} to the stdio stream
4959 @var{stream}.  If you do not call the function @code{output_quoted_string}
4960 in your config files, GNU CC will only call it to output filenames to
4961 the assembler source.  So you can use it to canonicalize the format
4962 of the filename using this macro.
4964 @findex ASM_OUTPUT_SOURCE_LINE
4965 @item ASM_OUTPUT_SOURCE_LINE (@var{stream}, @var{line})
4966 A C statement to output DBX or SDB debugging information before code
4967 for line number @var{line} of the current source file to the
4968 stdio stream @var{stream}.
4970 This macro need not be defined if the standard form of debugging
4971 information for the debugger in use is appropriate.
4973 @findex ASM_OUTPUT_IDENT
4974 @item ASM_OUTPUT_IDENT (@var{stream}, @var{string})
4975 A C statement to output something to the assembler file to handle a
4976 @samp{#ident} directive containing the text @var{string}.  If this
4977 macro is not defined, nothing is output for a @samp{#ident} directive.
4979 @findex ASM_OUTPUT_SECTION_NAME
4980 @item ASM_OUTPUT_SECTION_NAME (@var{stream}, @var{decl}, @var{name}, @var{reloc})
4981 A C statement to output something to the assembler file to switch to section
4982 @var{name} for object @var{decl} which is either a @code{FUNCTION_DECL}, a
4983 @code{VAR_DECL} or @code{NULL_TREE}.  @var{reloc}
4984 indicates whether the initial value of @var{exp} requires link-time
4985 relocations.  Some target formats do not support
4986 arbitrary sections.  Do not define this macro in such cases.
4988 At present this macro is only used to support section attributes.
4989 When this macro is undefined, section attributes are disabled.
4991 @findex OBJC_PROLOGUE
4992 @item OBJC_PROLOGUE
4993 A C statement to output any assembler statements which are required to
4994 precede any Objective C object definitions or message sending.  The
4995 statement is executed only when compiling an Objective C program.
4996 @end table
4998 @need 2000
4999 @node Data Output
5000 @subsection Output of Data
5002 @c prevent bad page break with this line
5003 This describes data output.
5005 @table @code
5006 @findex ASM_OUTPUT_LONG_DOUBLE
5007 @findex ASM_OUTPUT_DOUBLE
5008 @findex ASM_OUTPUT_FLOAT
5009 @item ASM_OUTPUT_LONG_DOUBLE (@var{stream}, @var{value})
5010 @itemx ASM_OUTPUT_DOUBLE (@var{stream}, @var{value})
5011 @itemx ASM_OUTPUT_FLOAT (@var{stream}, @var{value})
5012 @itemx ASM_OUTPUT_THREE_QUARTER_FLOAT (@var{stream}, @var{value})
5013 @itemx ASM_OUTPUT_SHORT_FLOAT (@var{stream}, @var{value})
5014 @itemx ASM_OUTPUT_BYTE_FLOAT (@var{stream}, @var{value})
5015 A C statement to output to the stdio stream @var{stream} an assembler
5016 instruction to assemble a floating-point constant of @code{TFmode},
5017 @code{DFmode}, @code{SFmode}, @code{TQFmode}, @code{HFmode}, or
5018 @code{QFmode}, respectively, whose value is @var{value}.  @var{value}
5019 will be a C expression of type @code{REAL_VALUE_TYPE}.  Macros such as
5020 @code{REAL_VALUE_TO_TARGET_DOUBLE} are useful for writing these
5021 definitions.
5023 @findex ASM_OUTPUT_QUADRUPLE_INT
5024 @findex ASM_OUTPUT_DOUBLE_INT
5025 @findex ASM_OUTPUT_INT
5026 @findex ASM_OUTPUT_SHORT
5027 @findex ASM_OUTPUT_CHAR
5028 @findex output_addr_const
5029 @item ASM_OUTPUT_QUADRUPLE_INT (@var{stream}, @var{exp})
5030 @itemx ASM_OUTPUT_DOUBLE_INT (@var{stream}, @var{exp})
5031 @itemx ASM_OUTPUT_INT (@var{stream}, @var{exp})
5032 @itemx ASM_OUTPUT_SHORT (@var{stream}, @var{exp})
5033 @itemx ASM_OUTPUT_CHAR (@var{stream}, @var{exp})
5034 A C statement to output to the stdio stream @var{stream} an assembler
5035 instruction to assemble an integer of 16, 8, 4, 2 or 1 bytes,
5036 respectively, whose value is @var{value}.  The argument @var{exp} will
5037 be an RTL expression which represents a constant value.  Use
5038 @samp{output_addr_const (@var{stream}, @var{exp})} to output this value
5039 as an assembler expression.@refill
5041 For sizes larger than @code{UNITS_PER_WORD}, if the action of a macro
5042 would be identical to repeatedly calling the macro corresponding to
5043 a size of @code{UNITS_PER_WORD}, once for each word, you need not define
5044 the macro.
5046 @findex ASM_OUTPUT_BYTE
5047 @item ASM_OUTPUT_BYTE (@var{stream}, @var{value})
5048 A C statement to output to the stdio stream @var{stream} an assembler
5049 instruction to assemble a single byte containing the number @var{value}.
5051 @findex ASM_BYTE_OP
5052 @item ASM_BYTE_OP
5053 A C string constant giving the pseudo-op to use for a sequence of
5054 single-byte constants.  If this macro is not defined, the default is
5055 @code{"byte"}.
5057 @findex ASM_OUTPUT_ASCII
5058 @item ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len})
5059 A C statement to output to the stdio stream @var{stream} an assembler
5060 instruction to assemble a string constant containing the @var{len}
5061 bytes at @var{ptr}.  @var{ptr} will be a C expression of type
5062 @code{char *} and @var{len} a C expression of type @code{int}.
5064 If the assembler has a @code{.ascii} pseudo-op as found in the
5065 Berkeley Unix assembler, do not define the macro
5066 @code{ASM_OUTPUT_ASCII}.
5068 @findex CONSTANT_POOL_BEFORE_FUNCTION
5069 @item CONSTANT_POOL_BEFORE_FUNCTION
5070 You may define this macro as a C expression.  You should define the
5071 expression to have a non-zero value if GNU CC should output the constant
5072 pool for a function before the code for the function, or a zero value if
5073 GNU CC should output the constant pool after the function.  If you do
5074 not define this macro, the usual case, GNU CC will output the constant
5075 pool before the function.
5077 @findex ASM_OUTPUT_POOL_PROLOGUE
5078 @item ASM_OUTPUT_POOL_PROLOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
5079 A C statement to output assembler commands to define the start of the
5080 constant pool for a function.  @var{funname} is a string giving
5081 the name of the function.  Should the return type of the function
5082 be required, it can be obtained via @var{fundecl}.  @var{size}
5083 is the size, in bytes, of the constant pool that will be written
5084 immediately after this call.
5086 If no constant-pool prefix is required, the usual case, this macro need
5087 not be defined.
5089 @findex ASM_OUTPUT_SPECIAL_POOL_ENTRY
5090 @item ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto})
5091 A C statement (with or without semicolon) to output a constant in the
5092 constant pool, if it needs special treatment.  (This macro need not do
5093 anything for RTL expressions that can be output normally.)
5095 The argument @var{file} is the standard I/O stream to output the
5096 assembler code on.  @var{x} is the RTL expression for the constant to
5097 output, and @var{mode} is the machine mode (in case @var{x} is a
5098 @samp{const_int}).  @var{align} is the required alignment for the value
5099 @var{x}; you should output an assembler directive to force this much
5100 alignment.
5102 The argument @var{labelno} is a number to use in an internal label for
5103 the address of this pool entry.  The definition of this macro is
5104 responsible for outputting the label definition at the proper place.
5105 Here is how to do this:
5107 @example
5108 ASM_OUTPUT_INTERNAL_LABEL (@var{file}, "LC", @var{labelno});
5109 @end example
5111 When you output a pool entry specially, you should end with a
5112 @code{goto} to the label @var{jumpto}.  This will prevent the same pool
5113 entry from being output a second time in the usual manner.
5115 You need not define this macro if it would do nothing.
5117 @findex CONSTANT_AFTER_FUNCTION_P
5118 @item CONSTANT_AFTER_FUNCTION_P (@var{exp})
5119 Define this macro as a C expression which is nonzero if the constant
5120 @var{exp}, of type @code{tree}, should be output after the code for a
5121 function.  The compiler will normally output all constants before the
5122 function; you need not define this macro if this is OK.
5124 @findex ASM_OUTPUT_POOL_EPILOGUE
5125 @item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
5126 A C statement to output assembler commands to at the end of the constant
5127 pool for a function.  @var{funname} is a string giving the name of the
5128 function.  Should the return type of the function be required, you can
5129 obtain it via @var{fundecl}.  @var{size} is the size, in bytes, of the
5130 constant pool that GNU CC wrote immediately before this call.
5132 If no constant-pool epilogue is required, the usual case, you need not
5133 define this macro.
5135 @findex IS_ASM_LOGICAL_LINE_SEPARATOR
5136 @item IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C})
5137 Define this macro as a C expression which is nonzero if @var{C} is
5138 used as a logical line separator by the assembler.
5140 If you do not define this macro, the default is that only
5141 the character @samp{;} is treated as a logical line separator.
5144 @findex ASM_OPEN_PAREN
5145 @findex ASM_CLOSE_PAREN
5146 @item ASM_OPEN_PAREN
5147 @itemx ASM_CLOSE_PAREN
5148 These macros are defined as C string constant, describing the syntax
5149 in the assembler for grouping arithmetic expressions.  The following
5150 definitions are correct for most assemblers:
5152 @example
5153 #define ASM_OPEN_PAREN "("
5154 #define ASM_CLOSE_PAREN ")"
5155 @end example
5156 @end table
5158   These macros are provided by @file{real.h} for writing the definitions
5159 of @code{ASM_OUTPUT_DOUBLE} and the like:
5161 @table @code
5162 @item REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l})
5163 @itemx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l})
5164 @itemx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l})
5165 @findex REAL_VALUE_TO_TARGET_SINGLE
5166 @findex REAL_VALUE_TO_TARGET_DOUBLE
5167 @findex REAL_VALUE_TO_TARGET_LONG_DOUBLE
5168 These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the target's
5169 floating point representation, and store its bit pattern in the array of
5170 @code{long int} whose address is @var{l}.  The number of elements in the
5171 output array is determined by the size of the desired target floating
5172 point data type: 32 bits of it go in each @code{long int} array
5173 element.  Each array element holds 32 bits of the result, even if
5174 @code{long int} is wider than 32 bits on the host machine.
5176 The array element values are designed so that you can print them out
5177 using @code{fprintf} in the order they should appear in the target
5178 machine's memory.
5180 @item REAL_VALUE_TO_DECIMAL (@var{x}, @var{format}, @var{string})
5181 @findex REAL_VALUE_TO_DECIMAL
5182 This macro converts @var{x}, of type @code{REAL_VALUE_TYPE}, to a
5183 decimal number and stores it as a string into @var{string}.
5184 You must pass, as @var{string}, the address of a long enough block
5185 of space to hold the result.
5187 The argument @var{format} is a @code{printf}-specification that serves
5188 as a suggestion for how to format the output string.
5189 @end table
5191 @node Uninitialized Data
5192 @subsection Output of Uninitialized Variables
5194 Each of the macros in this section is used to do the whole job of
5195 outputting a single uninitialized variable.
5197 @table @code
5198 @findex ASM_OUTPUT_COMMON
5199 @item ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
5200 A C statement (sans semicolon) to output to the stdio stream
5201 @var{stream} the assembler definition of a common-label named
5202 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
5203 is the size rounded up to whatever alignment the caller wants.
5205 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
5206 output the name itself; before and after that, output the additional
5207 assembler syntax for defining the name, and a newline.
5209 This macro controls how the assembler definitions of uninitialized
5210 common global variables are output.
5212 @findex ASM_OUTPUT_ALIGNED_COMMON
5213 @item ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment})
5214 Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a
5215 separate, explicit argument.  If you define this macro, it is used in
5216 place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in
5217 handling the required alignment of the variable.  The alignment is specified
5218 as the number of bits.
5220 @findex ASM_OUTPUT_ALIGNED_DECL_COMMON
5221 @item ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
5222 Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the
5223 variable to be output, if there is one, or @code{NULL_TREE} if there
5224 is not corresponding variable.  If you define this macro, GNU CC wil use it
5225 in place of both @code{ASM_OUTPUT_COMMON} and
5226 @code{ASM_OUTPUT_ALIGNED_COMMON}.  Define this macro when you need to see
5227 the variable's decl in order to chose what to output.
5229 @findex ASM_OUTPUT_SHARED_COMMON
5230 @item ASM_OUTPUT_SHARED_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
5231 If defined, it is similar to @code{ASM_OUTPUT_COMMON}, except that it
5232 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_COMMON}
5233 will be used.
5235 @findex ASM_OUTPUT_BSS
5236 @item ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
5237 A C statement (sans semicolon) to output to the stdio stream
5238 @var{stream} the assembler definition of uninitialized global @var{decl} named
5239 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
5240 is the size rounded up to whatever alignment the caller wants.
5242 Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
5243 defining this macro.  If unable, use the expression
5244 @code{assemble_name (@var{stream}, @var{name})} to output the name itself;
5245 before and after that, output the additional assembler syntax for defining
5246 the name, and a newline.
5248 This macro controls how the assembler definitions of uninitialized global
5249 variables are output.  This macro exists to properly support languages like
5250 @code{c++} which do not have @code{common} data.  However, this macro currently
5251 is not defined for all targets.  If this macro and
5252 @code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON}
5253 or @code{ASM_OUTPUT_ALIGNED_COMMON} or
5254 @code{ASM_OUTPUT_ALIGNED_DECL_COMMON} is used.
5256 @findex ASM_OUTPUT_ALIGNED_BSS
5257 @item ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
5258 Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
5259 separate, explicit argument.  If you define this macro, it is used in
5260 place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
5261 handling the required alignment of the variable.  The alignment is specified
5262 as the number of bits.
5264 Try to use function @code{asm_output_aligned_bss} defined in file
5265 @file{varasm.c} when defining this macro.
5267 @findex ASM_OUTPUT_SHARED_BSS
5268 @item ASM_OUTPUT_SHARED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
5269 If defined, it is similar to @code{ASM_OUTPUT_BSS}, except that it
5270 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_BSS}
5271 will be used.
5273 @findex ASM_OUTPUT_LOCAL
5274 @item ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
5275 A C statement (sans semicolon) to output to the stdio stream
5276 @var{stream} the assembler definition of a local-common-label named
5277 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
5278 is the size rounded up to whatever alignment the caller wants.
5280 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
5281 output the name itself; before and after that, output the additional
5282 assembler syntax for defining the name, and a newline.
5284 This macro controls how the assembler definitions of uninitialized
5285 static variables are output.
5287 @findex ASM_OUTPUT_ALIGNED_LOCAL
5288 @item ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment})
5289 Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a
5290 separate, explicit argument.  If you define this macro, it is used in
5291 place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in
5292 handling the required alignment of the variable.  The alignment is specified
5293 as the number of bits.
5295 @findex ASM_OUTPUT_ALIGNED_DECL_LOCAL
5296 @item ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
5297 Like @code{ASM_OUTPUT_ALIGNED_DECL} except that @var{decl} of the
5298 variable to be output, if there is one, or @code{NULL_TREE} if there
5299 is not corresponding variable.  If you define this macro, GNU CC wil use it
5300 in place of both @code{ASM_OUTPUT_DECL} and
5301 @code{ASM_OUTPUT_ALIGNED_DECL}.  Define this macro when you need to see
5302 the variable's decl in order to chose what to output.
5305 @findex ASM_OUTPUT_SHARED_LOCAL
5306 @item ASM_OUTPUT_SHARED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
5307 If defined, it is similar to @code{ASM_OUTPUT_LOCAL}, except that it
5308 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_LOCAL}
5309 will be used.
5310 @end table
5312 @node Label Output
5313 @subsection Output and Generation of Labels
5315 @c prevent bad page break with this line
5316 This is about outputting labels.
5318 @table @code
5319 @findex ASM_OUTPUT_LABEL
5320 @findex assemble_name
5321 @item ASM_OUTPUT_LABEL (@var{stream}, @var{name})
5322 A C statement (sans semicolon) to output to the stdio stream
5323 @var{stream} the assembler definition of a label named @var{name}.
5324 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
5325 output the name itself; before and after that, output the additional
5326 assembler syntax for defining the name, and a newline.
5328 @findex ASM_DECLARE_FUNCTION_NAME
5329 @item ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl})
5330 A C statement (sans semicolon) to output to the stdio stream
5331 @var{stream} any text necessary for declaring the name @var{name} of a
5332 function which is being defined.  This macro is responsible for
5333 outputting the label definition (perhaps using
5334 @code{ASM_OUTPUT_LABEL}).  The argument @var{decl} is the
5335 @code{FUNCTION_DECL} tree node representing the function.
5337 If this macro is not defined, then the function name is defined in the
5338 usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
5340 @findex ASM_DECLARE_FUNCTION_SIZE
5341 @item ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl})
5342 A C statement (sans semicolon) to output to the stdio stream
5343 @var{stream} any text necessary for declaring the size of a function
5344 which is being defined.  The argument @var{name} is the name of the
5345 function.  The argument @var{decl} is the @code{FUNCTION_DECL} tree node
5346 representing the function.
5348 If this macro is not defined, then the function size is not defined.
5350 @findex ASM_DECLARE_OBJECT_NAME
5351 @item ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl})
5352 A C statement (sans semicolon) to output to the stdio stream
5353 @var{stream} any text necessary for declaring the name @var{name} of an
5354 initialized variable which is being defined.  This macro must output the
5355 label definition (perhaps using @code{ASM_OUTPUT_LABEL}).  The argument
5356 @var{decl} is the @code{VAR_DECL} tree node representing the variable.
5358 If this macro is not defined, then the variable name is defined in the
5359 usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
5361 @findex  ASM_FINISH_DECLARE_OBJECT
5362 @item ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend})
5363 A C statement (sans semicolon) to finish up declaring a variable name
5364 once the compiler has processed its initializer fully and thus has had a
5365 chance to determine the size of an array when controlled by an
5366 initializer.  This is used on systems where it's necessary to declare
5367 something about the size of the object.
5369 If you don't define this macro, that is equivalent to defining it to do
5370 nothing.
5372 @findex ASM_GLOBALIZE_LABEL
5373 @item ASM_GLOBALIZE_LABEL (@var{stream}, @var{name})
5374 A C statement (sans semicolon) to output to the stdio stream
5375 @var{stream} some commands that will make the label @var{name} global;
5376 that is, available for reference from other files.  Use the expression
5377 @code{assemble_name (@var{stream}, @var{name})} to output the name
5378 itself; before and after that, output the additional assembler syntax
5379 for making that name global, and a newline.
5381 @findex ASM_WEAKEN_LABEL
5382 @item ASM_WEAKEN_LABEL
5383 A C statement (sans semicolon) to output to the stdio stream
5384 @var{stream} some commands that will make the label @var{name} weak;
5385 that is, available for reference from other files but only used if
5386 no other definition is available.  Use the expression
5387 @code{assemble_name (@var{stream}, @var{name})} to output the name
5388 itself; before and after that, output the additional assembler syntax
5389 for making that name weak, and a newline.
5391 If you don't define this macro, GNU CC will not support weak
5392 symbols and you should not define the @code{SUPPORTS_WEAK} macro.
5394 @findex SUPPORTS_WEAK
5395 @item SUPPORTS_WEAK
5396 A C expression which evaluates to true if the target supports weak symbols.
5398 If you don't define this macro, @file{defaults.h} provides a default
5399 definition.  If @code{ASM_WEAKEN_LABEL} is defined, the default
5400 definition is @samp{1}; otherwise, it is @samp{0}.  Define this macro if
5401 you want to control weak symbol support with a compiler flag such as
5402 @samp{-melf}.
5404 @findex MAKE_DECL_ONE_ONLY (@var{decl})
5405 @item MAKE_DECL_ONE_ONLY
5406 A C statement (sans semicolon) to mark @var{decl} to be emitted as a
5407 public symbol such that extra copies in multiple translation units will
5408 be discarded by the linker.  Define this macro if your object file
5409 format provides support for this concept, such as the @samp{COMDAT}
5410 section flags in the Microsoft Windows PE/COFF format, and this support
5411 requires changes to @var{decl}, such as putting it in a separate section.
5413 @findex SUPPORTS_ONE_ONLY
5414 @item SUPPORTS_ONE_ONLY
5415 A C expression which evaluates to true if the target supports one-only
5416 semantics.
5418 If you don't define this macro, @file{varasm.c} provides a default
5419 definition.  If @code{MAKE_DECL_ONE_ONLY} is defined, the default
5420 definition is @samp{1}; otherwise, it is @samp{0}.  Define this macro if
5421 you want to control one-only symbol support with a compiler flag, or if
5422 setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
5423 be emitted as one-only.
5425 @findex ASM_OUTPUT_EXTERNAL
5426 @item ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name})
5427 A C statement (sans semicolon) to output to the stdio stream
5428 @var{stream} any text necessary for declaring the name of an external
5429 symbol named @var{name} which is referenced in this compilation but
5430 not defined.  The value of @var{decl} is the tree node for the
5431 declaration.
5433 This macro need not be defined if it does not need to output anything.
5434 The GNU assembler and most Unix assemblers don't require anything.
5436 @findex ASM_OUTPUT_EXTERNAL_LIBCALL
5437 @item ASM_OUTPUT_EXTERNAL_LIBCALL (@var{stream}, @var{symref})
5438 A C statement (sans semicolon) to output on @var{stream} an assembler
5439 pseudo-op to declare a library function name external.  The name of the
5440 library function is given by @var{symref}, which has type @code{rtx} and
5441 is a @code{symbol_ref}.
5443 This macro need not be defined if it does not need to output anything.
5444 The GNU assembler and most Unix assemblers don't require anything.
5446 @findex ASM_OUTPUT_LABELREF
5447 @item ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
5448 A C statement (sans semicolon) to output to the stdio stream
5449 @var{stream} a reference in assembler syntax to a label named
5450 @var{name}.  This should add @samp{_} to the front of the name, if that
5451 is customary on your operating system, as it is in most Berkeley Unix
5452 systems.  This macro is used in @code{assemble_name}.
5454 @ignore @c Seems not to exist anymore.
5455 @findex ASM_OUTPUT_LABELREF_AS_INT
5456 @item ASM_OUTPUT_LABELREF_AS_INT (@var{file}, @var{label})
5457 Define this macro for systems that use the program @code{collect2}.
5458 The definition should be a C statement to output a word containing
5459 a reference to the label @var{label}.
5460 @end ignore
5462 @findex ASM_OUTPUT_INTERNAL_LABEL
5463 @item ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{prefix}, @var{num})
5464 A C statement to output to the stdio stream @var{stream} a label whose
5465 name is made from the string @var{prefix} and the number @var{num}.
5467 It is absolutely essential that these labels be distinct from the labels
5468 used for user-level functions and variables.  Otherwise, certain programs
5469 will have name conflicts with internal labels.
5471 It is desirable to exclude internal labels from the symbol table of the
5472 object file.  Most assemblers have a naming convention for labels that
5473 should be excluded; on many systems, the letter @samp{L} at the
5474 beginning of a label has this effect.  You should find out what
5475 convention your system uses, and follow it.
5477 The usual definition of this macro is as follows:
5479 @example
5480 fprintf (@var{stream}, "L%s%d:\n", @var{prefix}, @var{num})
5481 @end example
5483 @findex ASM_GENERATE_INTERNAL_LABEL
5484 @item ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num})
5485 A C statement to store into the string @var{string} a label whose name
5486 is made from the string @var{prefix} and the number @var{num}.
5488 This string, when output subsequently by @code{assemble_name}, should
5489 produce the output that @code{ASM_OUTPUT_INTERNAL_LABEL} would produce
5490 with the same @var{prefix} and @var{num}.
5492 If the string begins with @samp{*}, then @code{assemble_name} will
5493 output the rest of the string unchanged.  It is often convenient for
5494 @code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way.  If the
5495 string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets
5496 to output the string, and may change it.  (Of course,
5497 @code{ASM_OUTPUT_LABELREF} is also part of your machine description, so
5498 you should know what it does on your machine.)
5500 @findex ASM_FORMAT_PRIVATE_NAME
5501 @item ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number})
5502 A C expression to assign to @var{outvar} (which is a variable of type
5503 @code{char *}) a newly allocated string made from the string
5504 @var{name} and the number @var{number}, with some suitable punctuation
5505 added.  Use @code{alloca} to get space for the string.
5507 The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to
5508 produce an assembler label for an internal static variable whose name is
5509 @var{name}.  Therefore, the string must be such as to result in valid
5510 assembler code.  The argument @var{number} is different each time this
5511 macro is executed; it prevents conflicts between similarly-named
5512 internal static variables in different scopes.
5514 Ideally this string should not be a valid C identifier, to prevent any
5515 conflict with the user's own symbols.  Most assemblers allow periods
5516 or percent signs in assembler symbols; putting at least one of these
5517 between the name and the number will suffice.
5519 @findex ASM_OUTPUT_DEF
5520 @item ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value})
5521 A C statement to output to the stdio stream @var{stream} assembler code
5522 which defines (equates) the symbol @var{name} to have the value @var{value}.
5524 If SET_ASM_OP is defined, a default definition is provided which is
5525 correct for most systems.
5527 @findex ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL
5528 @item ASM_OUTPUT_DEFINE_LABEL_DIFFERENCE_SYMBOL (@var{stream}, @var{symbol}, @var{high}, @var{low})
5529 A C statement to output to the stdio stream @var{stream} assembler code
5530 which defines (equates) the symbol @var{symbol} to have a value equal to
5531 the difference of the two symbols @var{high} and @var{low}, i.e.
5532 @var{high} minus @var{low}.  GNU CC guarantees that the symbols @var{high}
5533 and @var{low} are already known by the assembler so that the difference
5534 resolves into a constant.
5536 If SET_ASM_OP is defined, a default definition is provided which is
5537 correct for most systems.
5539 @findex ASM_OUTPUT_WEAK_ALIAS
5540 @item ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value})
5541 A C statement to output to the stdio stream @var{stream} assembler code
5542 which defines (equates) the weak symbol @var{name} to have the value
5543 @var{value}.
5545 Define this macro if the target only supports weak aliases; define
5546 ASM_OUTPUT_DEF instead if possible.
5548 @findex OBJC_GEN_METHOD_LABEL
5549 @item OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name})
5550 Define this macro to override the default assembler names used for
5551 Objective C methods.
5553 The default name is a unique method number followed by the name of the
5554 class (e.g.@: @samp{_1_Foo}).  For methods in categories, the name of
5555 the category is also included in the assembler name (e.g.@:
5556 @samp{_1_Foo_Bar}).
5558 These names are safe on most systems, but make debugging difficult since
5559 the method's selector is not present in the name.  Therefore, particular
5560 systems define other ways of computing names.
5562 @var{buf} is an expression of type @code{char *} which gives you a
5563 buffer in which to store the name; its length is as long as
5564 @var{class_name}, @var{cat_name} and @var{sel_name} put together, plus
5565 50 characters extra.
5567 The argument @var{is_inst} specifies whether the method is an instance
5568 method or a class method; @var{class_name} is the name of the class;
5569 @var{cat_name} is the name of the category (or NULL if the method is not
5570 in a category); and @var{sel_name} is the name of the selector.
5572 On systems where the assembler can handle quoted names, you can use this
5573 macro to provide more human-readable names.
5574 @end table
5576 @node Initialization
5577 @subsection How Initialization Functions Are Handled
5578 @cindex initialization routines
5579 @cindex termination routines
5580 @cindex constructors, output of
5581 @cindex destructors, output of
5583 The compiled code for certain languages includes @dfn{constructors}
5584 (also called @dfn{initialization routines})---functions to initialize
5585 data in the program when the program is started.  These functions need
5586 to be called before the program is ``started''---that is to say, before
5587 @code{main} is called.
5589 Compiling some languages generates @dfn{destructors} (also called
5590 @dfn{termination routines}) that should be called when the program
5591 terminates.
5593 To make the initialization and termination functions work, the compiler
5594 must output something in the assembler code to cause those functions to
5595 be called at the appropriate time.  When you port the compiler to a new
5596 system, you need to specify how to do this.
5598 There are two major ways that GCC currently supports the execution of
5599 initialization and termination functions.  Each way has two variants.
5600 Much of the structure is common to all four variations.
5602 @findex __CTOR_LIST__
5603 @findex __DTOR_LIST__
5604 The linker must build two lists of these functions---a list of
5605 initialization functions, called @code{__CTOR_LIST__}, and a list of
5606 termination functions, called @code{__DTOR_LIST__}.
5608 Each list always begins with an ignored function pointer (which may hold
5609 0, @minus{}1, or a count of the function pointers after it, depending on
5610 the environment).  This is followed by a series of zero or more function
5611 pointers to constructors (or destructors), followed by a function
5612 pointer containing zero.
5614 Depending on the operating system and its executable file format, either
5615 @file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup
5616 time and exit time.  Constructors are called in reverse order of the
5617 list; destructors in forward order.
5619 The best way to handle static constructors works only for object file
5620 formats which provide arbitrarily-named sections.  A section is set
5621 aside for a list of constructors, and another for a list of destructors.
5622 Traditionally these are called @samp{.ctors} and @samp{.dtors}.  Each
5623 object file that defines an initialization function also puts a word in
5624 the constructor section to point to that function.  The linker
5625 accumulates all these words into one contiguous @samp{.ctors} section.
5626 Termination functions are handled similarly.
5628 To use this method, you need appropriate definitions of the macros
5629 @code{ASM_OUTPUT_CONSTRUCTOR} and @code{ASM_OUTPUT_DESTRUCTOR}.  Usually
5630 you can get them by including @file{svr4.h}.
5632 When arbitrary sections are available, there are two variants, depending
5633 upon how the code in @file{crtstuff.c} is called.  On systems that
5634 support an @dfn{init} section which is executed at program startup,
5635 parts of @file{crtstuff.c} are compiled into that section.  The
5636 program is linked by the @code{gcc} driver like this:
5638 @example
5639 ld -o @var{output_file} crtbegin.o @dots{} crtend.o -lgcc
5640 @end example
5642 The head of a function (@code{__do_global_ctors}) appears in the init
5643 section of @file{crtbegin.o}; the remainder of the function appears in
5644 the init section of @file{crtend.o}.  The linker will pull these two
5645 parts of the section together, making a whole function.  If any of the
5646 user's object files linked into the middle of it contribute code, then that
5647 code will be executed as part of the body of @code{__do_global_ctors}.
5649 To use this variant, you must define the @code{INIT_SECTION_ASM_OP}
5650 macro properly.
5652 If no init section is available, do not define
5653 @code{INIT_SECTION_ASM_OP}.  Then @code{__do_global_ctors} is built into
5654 the text section like all other functions, and resides in
5655 @file{libgcc.a}.  When GCC compiles any function called @code{main}, it
5656 inserts a procedure call to @code{__main} as the first executable code
5657 after the function prologue.  The @code{__main} function, also defined
5658 in @file{libgcc2.c}, simply calls @file{__do_global_ctors}.
5660 In file formats that don't support arbitrary sections, there are again
5661 two variants.  In the simplest variant, the GNU linker (GNU @code{ld})
5662 and an `a.out' format must be used.  In this case,
5663 @code{ASM_OUTPUT_CONSTRUCTOR} is defined to produce a @code{.stabs}
5664 entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__},
5665 and with the address of the void function containing the initialization
5666 code as its value.  The GNU linker recognizes this as a request to add
5667 the value to a ``set''; the values are accumulated, and are eventually
5668 placed in the executable as a vector in the format described above, with
5669 a leading (ignored) count and a trailing zero element.
5670 @code{ASM_OUTPUT_DESTRUCTOR} is handled similarly.  Since no init
5671 section is available, the absence of @code{INIT_SECTION_ASM_OP} causes
5672 the compilation of @code{main} to call @code{__main} as above, starting
5673 the initialization process.
5675 The last variant uses neither arbitrary sections nor the GNU linker.
5676 This is preferable when you want to do dynamic linking and when using
5677 file formats which the GNU linker does not support, such as `ECOFF'.  In
5678 this case, @code{ASM_OUTPUT_CONSTRUCTOR} does not produce an
5679 @code{N_SETT} symbol; initialization and termination functions are
5680 recognized simply by their names.  This requires an extra program in the
5681 linkage step, called @code{collect2}.  This program pretends to be the
5682 linker, for use with GNU CC; it does its job by running the ordinary
5683 linker, but also arranges to include the vectors of initialization and
5684 termination functions.  These functions are called via @code{__main} as
5685 described above.
5687 Choosing among these configuration options has been simplified by a set
5688 of operating-system-dependent files in the @file{config} subdirectory.
5689 These files define all of the relevant parameters.  Usually it is
5690 sufficient to include one into your specific machine-dependent
5691 configuration file.  These files are:
5693 @table @file
5694 @item aoutos.h
5695 For operating systems using the `a.out' format.
5697 @item next.h
5698 For operating systems using the `MachO' format.
5700 @item svr3.h
5701 For System V Release 3 and similar systems using `COFF' format.
5703 @item svr4.h
5704 For System V Release 4 and similar systems using `ELF' format.
5706 @item vms.h
5707 For the VMS operating system.
5708 @end table
5710 @ifinfo
5711 The following section describes the specific macros that control and
5712 customize the handling of initialization and termination functions.
5713 @end ifinfo
5715 @node Macros for Initialization
5716 @subsection Macros Controlling Initialization Routines
5718 Here are the macros that control how the compiler handles initialization
5719 and termination functions:
5721 @table @code
5722 @findex INIT_SECTION_ASM_OP
5723 @item INIT_SECTION_ASM_OP
5724 If defined, a C string constant for the assembler operation to identify
5725 the following data as initialization code.  If not defined, GNU CC will
5726 assume such a section does not exist.  When you are using special
5727 sections for initialization and termination functions, this macro also
5728 controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to run the
5729 initialization functions.
5731 @item HAS_INIT_SECTION
5732 @findex HAS_INIT_SECTION
5733 If defined, @code{main} will not call @code{__main} as described above.
5734 This macro should be defined for systems that control the contents of the
5735 init section on a symbol-by-symbol basis, such as OSF/1, and should not
5736 be defined explicitly for systems that support
5737 @code{INIT_SECTION_ASM_OP}.
5739 @item LD_INIT_SWITCH
5740 @findex LD_INIT_SWITCH
5741 If defined, a C string constant for a switch that tells the linker that
5742 the following symbol is an initialization routine.
5744 @item LD_FINI_SWITCH
5745 @findex LD_FINI_SWITCH
5746 If defined, a C string constant for a switch that tells the linker that
5747 the following symbol is a finalization routine.
5749 @item INVOKE__main
5750 @findex INVOKE__main
5751 If defined, @code{main} will call @code{__main} despite the presence of
5752 @code{INIT_SECTION_ASM_OP}.  This macro should be defined for systems
5753 where the init section is not actually run automatically, but is still
5754 useful for collecting the lists of constructors and destructors.
5756 @item ASM_OUTPUT_CONSTRUCTOR (@var{stream}, @var{name})
5757 @findex ASM_OUTPUT_CONSTRUCTOR
5758 Define this macro as a C statement to output on the stream @var{stream}
5759 the assembler code to arrange to call the function named @var{name} at
5760 initialization time.
5762 Assume that @var{name} is the name of a C function generated
5763 automatically by the compiler.  This function takes no arguments.  Use
5764 the function @code{assemble_name} to output the name @var{name}; this
5765 performs any system-specific syntactic transformations such as adding an
5766 underscore.
5768 If you don't define this macro, nothing special is output to arrange to
5769 call the function.  This is correct when the function will be called in
5770 some other manner---for example, by means of the @code{collect2} program,
5771 which looks through the symbol table to find these functions by their
5772 names.
5774 @item ASM_OUTPUT_DESTRUCTOR (@var{stream}, @var{name})
5775 @findex ASM_OUTPUT_DESTRUCTOR
5776 This is like @code{ASM_OUTPUT_CONSTRUCTOR} but used for termination
5777 functions rather than initialization functions.
5778 @end table
5780 If your system uses @code{collect2} as the means of processing
5781 constructors, then that program normally uses @code{nm} to scan an
5782 object file for constructor functions to be called.  On certain kinds of
5783 systems, you can define these macros to make @code{collect2} work faster
5784 (and, in some cases, make it work at all):
5786 @table @code
5787 @findex OBJECT_FORMAT_COFF
5788 @item OBJECT_FORMAT_COFF
5789 Define this macro if the system uses COFF (Common Object File Format)
5790 object files, so that @code{collect2} can assume this format and scan
5791 object files directly for dynamic constructor/destructor functions.
5793 @findex OBJECT_FORMAT_ROSE
5794 @item OBJECT_FORMAT_ROSE
5795 Define this macro if the system uses ROSE format object files, so that
5796 @code{collect2} can assume this format and scan object files directly
5797 for dynamic constructor/destructor functions.
5799 These macros are effective only in a native compiler; @code{collect2} as
5800 part of a cross compiler always uses @code{nm} for the target machine.
5802 @findex REAL_NM_FILE_NAME
5803 @item REAL_NM_FILE_NAME
5804 Define this macro as a C string constant containing the file name to use
5805 to execute @code{nm}.  The default is to search the path normally for
5806 @code{nm}.
5808 If your system supports shared libraries and has a program to list the
5809 dynamic dependencies of a given library or executable, you can define
5810 these macros to enable support for running initialization and
5811 termination functions in shared libraries:
5813 @findex LDD_SUFFIX
5814 @item LDD_SUFFIX
5815 Define this macro to a C string constant containing the name of the
5816 program which lists dynamic dependencies, like @code{"ldd"} under SunOS 4.
5818 @findex PARSE_LDD_OUTPUT
5819 @item PARSE_LDD_OUTPUT (@var{PTR})
5820 Define this macro to be C code that extracts filenames from the output
5821 of the program denoted by @code{LDD_SUFFIX}.  @var{PTR} is a variable
5822 of type @code{char *} that points to the beginning of a line of output
5823 from @code{LDD_SUFFIX}.  If the line lists a dynamic dependency, the
5824 code must advance @var{PTR} to the beginning of the filename on that
5825 line.  Otherwise, it must set @var{PTR} to @code{NULL}.
5827 @end table
5829 @node Instruction Output
5830 @subsection Output of Assembler Instructions
5832 @c prevent bad page break with this line
5833 This describes assembler instruction output.
5835 @table @code
5836 @findex REGISTER_NAMES
5837 @item REGISTER_NAMES
5838 A C initializer containing the assembler's names for the machine
5839 registers, each one as a C string constant.  This is what translates
5840 register numbers in the compiler into assembler language.
5842 @findex ADDITIONAL_REGISTER_NAMES
5843 @item ADDITIONAL_REGISTER_NAMES
5844 If defined, a C initializer for an array of structures containing a name
5845 and a register number.  This macro defines additional names for hard
5846 registers, thus allowing the @code{asm} option in declarations to refer
5847 to registers using alternate names.
5849 @findex ASM_OUTPUT_OPCODE
5850 @item ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
5851 Define this macro if you are using an unusual assembler that
5852 requires different names for the machine instructions.
5854 The definition is a C statement or statements which output an
5855 assembler instruction opcode to the stdio stream @var{stream}.  The
5856 macro-operand @var{ptr} is a variable of type @code{char *} which
5857 points to the opcode name in its ``internal'' form---the form that is
5858 written in the machine description.  The definition should output the
5859 opcode name to @var{stream}, performing any translation you desire, and
5860 increment the variable @var{ptr} to point at the end of the opcode
5861 so that it will not be output twice.
5863 In fact, your macro definition may process less than the entire opcode
5864 name, or more than the opcode name; but if you want to process text
5865 that includes @samp{%}-sequences to substitute operands, you must take
5866 care of the substitution yourself.  Just be sure to increment
5867 @var{ptr} over whatever text should not be output normally.
5869 @findex recog_operand
5870 If you need to look at the operand values, they can be found as the
5871 elements of @code{recog_operand}.
5873 If the macro definition does nothing, the instruction is output
5874 in the usual way.
5876 @findex FINAL_PRESCAN_INSN
5877 @item FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands})
5878 If defined, a C statement to be executed just prior to the output of
5879 assembler code for @var{insn}, to modify the extracted operands so
5880 they will be output differently.
5882 Here the argument @var{opvec} is the vector containing the operands
5883 extracted from @var{insn}, and @var{noperands} is the number of
5884 elements of the vector which contain meaningful data for this insn.
5885 The contents of this vector are what will be used to convert the insn
5886 template into assembler code, so you can change the assembler output
5887 by changing the contents of the vector.
5889 This macro is useful when various assembler syntaxes share a single
5890 file of instruction patterns; by defining this macro differently, you
5891 can cause a large class of instructions to be output differently (such
5892 as with rearranged operands).  Naturally, variations in assembler
5893 syntax affecting individual insn patterns ought to be handled by
5894 writing conditional output routines in those patterns.
5896 If this macro is not defined, it is equivalent to a null statement.
5898 @findex FINAL_PRESCAN_LABEL
5899 @item FINAL_PRESCAN_LABEL
5900 If defined, @code{FINAL_PRESCAN_INSN} will be called on each
5901 @code{CODE_LABEL}.  In that case, @var{opvec} will be a null pointer and
5902 @var{noperands} will be zero.
5904 @findex PRINT_OPERAND
5905 @item PRINT_OPERAND (@var{stream}, @var{x}, @var{code})
5906 A C compound statement to output to stdio stream @var{stream} the
5907 assembler syntax for an instruction operand @var{x}.  @var{x} is an
5908 RTL expression.
5910 @var{code} is a value that can be used to specify one of several ways
5911 of printing the operand.  It is used when identical operands must be
5912 printed differently depending on the context.  @var{code} comes from
5913 the @samp{%} specification that was used to request printing of the
5914 operand.  If the specification was just @samp{%@var{digit}} then
5915 @var{code} is 0; if the specification was @samp{%@var{ltr}
5916 @var{digit}} then @var{code} is the ASCII code for @var{ltr}.
5918 @findex reg_names
5919 If @var{x} is a register, this macro should print the register's name.
5920 The names can be found in an array @code{reg_names} whose type is
5921 @code{char *[]}.  @code{reg_names} is initialized from
5922 @code{REGISTER_NAMES}.
5924 When the machine description has a specification @samp{%@var{punct}}
5925 (a @samp{%} followed by a punctuation character), this macro is called
5926 with a null pointer for @var{x} and the punctuation character for
5927 @var{code}.
5929 @findex PRINT_OPERAND_PUNCT_VALID_P
5930 @item PRINT_OPERAND_PUNCT_VALID_P (@var{code})
5931 A C expression which evaluates to true if @var{code} is a valid
5932 punctuation character for use in the @code{PRINT_OPERAND} macro.  If
5933 @code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no
5934 punctuation characters (except for the standard one, @samp{%}) are used
5935 in this way.
5937 @findex PRINT_OPERAND_ADDRESS
5938 @item PRINT_OPERAND_ADDRESS (@var{stream}, @var{x})
5939 A C compound statement to output to stdio stream @var{stream} the
5940 assembler syntax for an instruction operand that is a memory reference
5941 whose address is @var{x}.  @var{x} is an RTL expression.
5943 @cindex @code{ENCODE_SECTION_INFO} usage
5944 On some machines, the syntax for a symbolic address depends on the
5945 section that the address refers to.  On these machines, define the macro
5946 @code{ENCODE_SECTION_INFO} to store the information into the
5947 @code{symbol_ref}, and then check for it here.  @xref{Assembler Format}.
5949 @findex DBR_OUTPUT_SEQEND
5950 @findex dbr_sequence_length
5951 @item DBR_OUTPUT_SEQEND(@var{file})
5952 A C statement, to be executed after all slot-filler instructions have
5953 been output.  If necessary, call @code{dbr_sequence_length} to
5954 determine the number of slots filled in a sequence (zero if not
5955 currently outputting a sequence), to decide how many no-ops to output,
5956 or whatever.
5958 Don't define this macro if it has nothing to do, but it is helpful in
5959 reading assembly output if the extent of the delay sequence is made
5960 explicit (e.g. with white space).
5962 @findex final_sequence
5963 Note that output routines for instructions with delay slots must be
5964 prepared to deal with not being output as part of a sequence (i.e.
5965 when the scheduling pass is not run, or when no slot fillers could be
5966 found.)  The variable @code{final_sequence} is null when not
5967 processing a sequence, otherwise it contains the @code{sequence} rtx
5968 being output.
5970 @findex REGISTER_PREFIX
5971 @findex LOCAL_LABEL_PREFIX
5972 @findex USER_LABEL_PREFIX
5973 @findex IMMEDIATE_PREFIX
5974 @findex asm_fprintf
5975 @item REGISTER_PREFIX
5976 @itemx LOCAL_LABEL_PREFIX
5977 @itemx USER_LABEL_PREFIX
5978 @itemx IMMEDIATE_PREFIX
5979 If defined, C string expressions to be used for the @samp{%R}, @samp{%L},
5980 @samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see
5981 @file{final.c}).  These are useful when a single @file{md} file must
5982 support multiple assembler formats.  In that case, the various @file{tm.h}
5983 files can define these macros differently.
5985 @findex ASSEMBLER_DIALECT
5986 @item ASSEMBLER_DIALECT
5987 If your target supports multiple dialects of assembler language (such as
5988 different opcodes), define this macro as a C expression that gives the
5989 numeric index of the assembler language dialect to use, with zero as the
5990 first variant.
5992 If this macro is defined, you may use constructs of the form
5993 @samp{@{option0|option1|option2@dots{}@}} in the output
5994 templates of patterns (@pxref{Output Template}) or in the first argument
5995 of @code{asm_fprintf}.  This construct outputs @samp{option0},
5996 @samp{option1} or @samp{option2}, etc., if the value of
5997 @code{ASSEMBLER_DIALECT} is zero, one or two, etc.  Any special
5998 characters within these strings retain their usual meaning.
6000 If you do not define this macro, the characters @samp{@{}, @samp{|} and
6001 @samp{@}} do not have any special meaning when used in templates or
6002 operands to @code{asm_fprintf}.
6004 Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX},
6005 @code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express
6006 the variations in assembler language syntax with that mechanism.  Define
6007 @code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax
6008 if the syntax variant are larger and involve such things as different
6009 opcodes or operand order.
6011 @findex ASM_OUTPUT_REG_PUSH
6012 @item ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno})
6013 A C expression to output to @var{stream} some assembler code
6014 which will push hard register number @var{regno} onto the stack.
6015 The code need not be optimal, since this macro is used only when
6016 profiling.
6018 @findex ASM_OUTPUT_REG_POP
6019 @item ASM_OUTPUT_REG_POP (@var{stream}, @var{regno})
6020 A C expression to output to @var{stream} some assembler code
6021 which will pop hard register number @var{regno} off of the stack.
6022 The code need not be optimal, since this macro is used only when
6023 profiling.
6024 @end table
6026 @node Dispatch Tables
6027 @subsection Output of Dispatch Tables
6029 @c prevent bad page break with this line
6030 This concerns dispatch tables.
6032 @table @code
6033 @cindex dispatch table
6034 @findex ASM_OUTPUT_ADDR_DIFF_ELT
6035 @item ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{value}, @var{rel})
6036 A C statement to output to the stdio stream @var{stream} an assembler
6037 pseudo-instruction to generate a difference between two labels.
6038 @var{value} and @var{rel} are the numbers of two internal labels.  The
6039 definitions of these labels are output using
6040 @code{ASM_OUTPUT_INTERNAL_LABEL}, and they must be printed in the same
6041 way here.  For example,
6043 @example
6044 fprintf (@var{stream}, "\t.word L%d-L%d\n",
6045          @var{value}, @var{rel})
6046 @end example
6048 You must provide this macro on machines where the addresses in a
6049 dispatch table are relative to the table's own address.  If defined, GNU
6050 CC will also use this macro on all machines when producing PIC.
6052 @findex ASM_OUTPUT_ADDR_VEC_ELT
6053 @item ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value})
6054 This macro should be provided on machines where the addresses
6055 in a dispatch table are absolute.
6057 The definition should be a C statement to output to the stdio stream
6058 @var{stream} an assembler pseudo-instruction to generate a reference to
6059 a label.  @var{value} is the number of an internal label whose
6060 definition is output using @code{ASM_OUTPUT_INTERNAL_LABEL}.
6061 For example,
6063 @example
6064 fprintf (@var{stream}, "\t.word L%d\n", @var{value})
6065 @end example
6067 @findex ASM_OUTPUT_CASE_LABEL
6068 @item ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
6069 Define this if the label before a jump-table needs to be output
6070 specially.  The first three arguments are the same as for
6071 @code{ASM_OUTPUT_INTERNAL_LABEL}; the fourth argument is the
6072 jump-table which follows (a @code{jump_insn} containing an
6073 @code{addr_vec} or @code{addr_diff_vec}).
6075 This feature is used on system V to output a @code{swbeg} statement
6076 for the table.
6078 If this macro is not defined, these labels are output with
6079 @code{ASM_OUTPUT_INTERNAL_LABEL}.
6081 @findex ASM_OUTPUT_CASE_END
6082 @item ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table})
6083 Define this if something special must be output at the end of a
6084 jump-table.  The definition should be a C statement to be executed
6085 after the assembler code for the table is written.  It should write
6086 the appropriate code to stdio stream @var{stream}.  The argument
6087 @var{table} is the jump-table insn, and @var{num} is the label-number
6088 of the preceding label.
6090 If this macro is not defined, nothing special is output at the end of
6091 the jump-table.
6092 @end table
6094 @node Exception Region Output 
6095 @subsection Assembler Commands for Exception Regions
6097 @c prevent bad page break with this line
6099 This describes commands marking the start and the end of an exception
6100 region.
6102 @table @code
6103 @findex ASM_OUTPUT_EH_REGION_BEG
6104 @item ASM_OUTPUT_EH_REGION_BEG ()
6105 A C expression to output text to mark the start of an exception region.
6107 This macro need not be defined on most platforms.
6109 @findex ASM_OUTPUT_EH_REGION_END
6110 @item ASM_OUTPUT_EH_REGION_END ()
6111 A C expression to output text to mark the end of an exception region.
6113 This macro need not be defined on most platforms.
6115 @findex EXCEPTION_SECTION
6116 @item EXCEPTION_SECTION ()
6117 A C expression to switch to the section in which the main
6118 exception table is to be placed (@pxref{Sections}).  The default is a
6119 section named @code{.gcc_except_table} on machines that support named
6120 sections via @code{ASM_OUTPUT_SECTION_NAME}, otherwise if @samp{-fpic}
6121 or @samp{-fPIC} is in effect, the @code{data_section}, otherwise the
6122 @code{readonly_data_section}.
6124 @findex EH_FRAME_SECTION_ASM_OP
6125 @item EH_FRAME_SECTION_ASM_OP
6126 If defined, a C string constant for the assembler operation to switch to
6127 the section for exception handling frame unwind information.  If not
6128 defined, GNU CC will provide a default definition if the target supports
6129 named sections.  @file{crtstuff.c} uses this macro to switch to the
6130 appropriate section.
6132 You should define this symbol if your target supports DWARF 2 frame
6133 unwind information and the default definition does not work.
6135 @findex OMIT_EH_TABLE
6136 @item OMIT_EH_TABLE ()
6137 A C expression that is nonzero if the normal exception table output
6138 should be omitted.
6140 This macro need not be defined on most platforms.
6142 @findex EH_TABLE_LOOKUP
6143 @item EH_TABLE_LOOKUP ()
6144 Alternate runtime support for looking up an exception at runtime and
6145 finding the associated handler, if the default method won't work.
6147 This macro need not be defined on most platforms.
6149 @findex DOESNT_NEED_UNWINDER
6150 @item DOESNT_NEED_UNWINDER
6151 A C expression that decides whether or not the current function needs to
6152 have a function unwinder generated for it.  See the file @code{except.c}
6153 for details on when to define this, and how.
6155 @findex MASK_RETURN_ADDR
6156 @item MASK_RETURN_ADDR
6157 An rtx used to mask the return address found via RETURN_ADDR_RTX, so
6158 that it does not contain any extraneous set bits in it.
6160 @findex DWARF2_UNWIND_INFO
6161 @item DWARF2_UNWIND_INFO
6162 Define this macro to 0 if your target supports DWARF 2 frame unwind
6163 information, but it does not yet work with exception handling.
6164 Otherwise, if your target supports this information (if it defines
6165 @samp{INCOMING_RETURN_ADDR_RTX} and either @samp{UNALIGNED_INT_ASM_OP}
6166 or @samp{OBJECT_FORMAT_ELF}), GCC will provide a default definition of
6169 If this macro is defined to 1, the DWARF 2 unwinder will be the default
6170 exception handling mechanism; otherwise, setjmp/longjmp will be used by
6171 default.
6173 If this macro is defined to anything, the DWARF 2 unwinder will be used
6174 instead of inline unwinders and __unwind_function in the non-setjmp case.
6176 @end table
6178 @node Alignment Output
6179 @subsection Assembler Commands for Alignment
6181 @c prevent bad page break with this line
6182 This describes commands for alignment.
6184 @table @code
6185 @findex ASM_OUTPUT_ALIGN_CODE
6186 @item ASM_OUTPUT_ALIGN_CODE (@var{file})
6187 A C expression to output text to align the location counter in the way
6188 that is desirable at a point in the code that is reached only by
6189 jumping.
6191 This macro need not be defined if you don't want any special alignment
6192 to be done at such a time.  Most machine descriptions do not currently
6193 define the macro.
6195 @findex ASM_OUTPUT_LOOP_ALIGN
6196 @item ASM_OUTPUT_LOOP_ALIGN (@var{file})
6197 A C expression to output text to align the location counter in the way
6198 that is desirable at the beginning of a loop.
6200 This macro need not be defined if you don't want any special alignment
6201 to be done at such a time.  Most machine descriptions do not currently
6202 define the macro.
6204 @findex ASM_OUTPUT_SKIP
6205 @item ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
6206 A C statement to output to the stdio stream @var{stream} an assembler
6207 instruction to advance the location counter by @var{nbytes} bytes.
6208 Those bytes should be zero when loaded.  @var{nbytes} will be a C
6209 expression of type @code{int}.
6211 @findex ASM_NO_SKIP_IN_TEXT
6212 @item ASM_NO_SKIP_IN_TEXT
6213 Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the
6214 text section because it fails put zeros in the bytes that are skipped.
6215 This is true on many Unix systems, where the pseudo--op to skip bytes
6216 produces no-op instructions rather than zeros when used in the text
6217 section.
6219 @findex ASM_OUTPUT_ALIGN
6220 @item ASM_OUTPUT_ALIGN (@var{stream}, @var{power})
6221 A C statement to output to the stdio stream @var{stream} an assembler
6222 command to advance the location counter to a multiple of 2 to the
6223 @var{power} bytes.  @var{power} will be a C expression of type @code{int}.
6224 @end table
6226 @need 3000
6227 @node Debugging Info
6228 @section Controlling Debugging Information Format
6230 @c prevent bad page break with this line
6231 This describes how to specify debugging information.
6233 @menu
6234 * All Debuggers::      Macros that affect all debugging formats uniformly.
6235 * DBX Options::        Macros enabling specific options in DBX format.
6236 * DBX Hooks::          Hook macros for varying DBX format.
6237 * File Names and DBX:: Macros controlling output of file names in DBX format.
6238 * SDB and DWARF::      Macros for SDB (COFF) and DWARF formats.
6239 @end menu
6241 @node All Debuggers
6242 @subsection Macros Affecting All Debugging Formats
6244 @c prevent bad page break with this line
6245 These macros affect all debugging formats.
6247 @table @code
6248 @findex DBX_REGISTER_NUMBER
6249 @item DBX_REGISTER_NUMBER (@var{regno})
6250 A C expression that returns the DBX register number for the compiler
6251 register number @var{regno}.  In simple cases, the value of this
6252 expression may be @var{regno} itself.  But sometimes there are some
6253 registers that the compiler knows about and DBX does not, or vice
6254 versa.  In such cases, some register may need to have one number in
6255 the compiler and another for DBX.
6257 If two registers have consecutive numbers inside GNU CC, and they can be
6258 used as a pair to hold a multiword value, then they @emph{must} have
6259 consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}.
6260 Otherwise, debuggers will be unable to access such a pair, because they
6261 expect register pairs to be consecutive in their own numbering scheme.
6263 If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that
6264 does not preserve register pairs, then what you must do instead is
6265 redefine the actual register numbering scheme.
6267 @findex DEBUGGER_AUTO_OFFSET
6268 @item DEBUGGER_AUTO_OFFSET (@var{x})
6269 A C expression that returns the integer offset value for an automatic
6270 variable having address @var{x} (an RTL expression).  The default
6271 computation assumes that @var{x} is based on the frame-pointer and
6272 gives the offset from the frame-pointer.  This is required for targets
6273 that produce debugging output for DBX or COFF-style debugging output
6274 for SDB and allow the frame-pointer to be eliminated when the
6275 @samp{-g} options is used.
6277 @findex DEBUGGER_ARG_OFFSET
6278 @item DEBUGGER_ARG_OFFSET (@var{offset}, @var{x})
6279 A C expression that returns the integer offset value for an argument
6280 having address @var{x} (an RTL expression).  The nominal offset is
6281 @var{offset}.
6283 @findex PREFERRED_DEBUGGING_TYPE
6284 @item PREFERRED_DEBUGGING_TYPE
6285 A C expression that returns the type of debugging output GNU CC should
6286 produce when the user specifies just @samp{-g}.  Define
6287 this if you have arranged for GNU CC to support more than one format of
6288 debugging output.  Currently, the allowable values are @code{DBX_DEBUG},
6289 @code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG}, and
6290 @code{XCOFF_DEBUG}.
6292 When the user specifies @samp{-ggdb}, GNU CC normally also uses the
6293 value of this macro to select the debugging output format, but with two
6294 exceptions.  If @code{DWARF2_DEBUGGING_INFO} is defined and
6295 @code{LINKER_DOES_NOT_WORK_WITH_DWARF2} is not defined, GNU CC uses the
6296 value @code{DWARF2_DEBUG}.  Otherwise, if @code{DBX_DEBUGGING_INFO} is
6297 defined, GNU CC uses @code{DBX_DEBUG}.
6299 The value of this macro only affects the default debugging output; the
6300 user can always get a specific type of output by using @samp{-gstabs},
6301 @samp{-gcoff}, @samp{-gdwarf-1}, @samp{-gdwarf-2}, or @samp{-gxcoff}.
6302 @end table
6304 @node DBX Options
6305 @subsection Specific Options for DBX Output
6307 @c prevent bad page break with this line
6308 These are specific options for DBX output.
6310 @table @code
6311 @findex DBX_DEBUGGING_INFO
6312 @item DBX_DEBUGGING_INFO
6313 Define this macro if GNU CC should produce debugging output for DBX
6314 in response to the @samp{-g} option.
6316 @findex XCOFF_DEBUGGING_INFO
6317 @item XCOFF_DEBUGGING_INFO
6318 Define this macro if GNU CC should produce XCOFF format debugging output
6319 in response to the @samp{-g} option.  This is a variant of DBX format.
6321 @findex DEFAULT_GDB_EXTENSIONS
6322 @item DEFAULT_GDB_EXTENSIONS
6323 Define this macro to control whether GNU CC should by default generate
6324 GDB's extended version of DBX debugging information (assuming DBX-format
6325 debugging information is enabled at all).  If you don't define the
6326 macro, the default is 1: always generate the extended information
6327 if there is any occasion to.
6329 @findex DEBUG_SYMS_TEXT
6330 @item DEBUG_SYMS_TEXT
6331 Define this macro if all @code{.stabs} commands should be output while
6332 in the text section.
6334 @findex ASM_STABS_OP
6335 @item ASM_STABS_OP
6336 A C string constant naming the assembler pseudo op to use instead of
6337 @code{.stabs} to define an ordinary debugging symbol.  If you don't
6338 define this macro, @code{.stabs} is used.  This macro applies only to
6339 DBX debugging information format.
6341 @findex ASM_STABD_OP
6342 @item ASM_STABD_OP
6343 A C string constant naming the assembler pseudo op to use instead of
6344 @code{.stabd} to define a debugging symbol whose value is the current
6345 location.  If you don't define this macro, @code{.stabd} is used.
6346 This macro applies only to DBX debugging information format.
6348 @findex ASM_STABN_OP
6349 @item ASM_STABN_OP
6350 A C string constant naming the assembler pseudo op to use instead of
6351 @code{.stabn} to define a debugging symbol with no name.  If you don't
6352 define this macro, @code{.stabn} is used.  This macro applies only to
6353 DBX debugging information format.
6355 @findex DBX_NO_XREFS
6356 @item DBX_NO_XREFS
6357 Define this macro if DBX on your system does not support the construct
6358 @samp{xs@var{tagname}}.  On some systems, this construct is used to
6359 describe a forward reference to a structure named @var{tagname}.
6360 On other systems, this construct is not supported at all.
6362 @findex DBX_CONTIN_LENGTH
6363 @item DBX_CONTIN_LENGTH
6364 A symbol name in DBX-format debugging information is normally
6365 continued (split into two separate @code{.stabs} directives) when it
6366 exceeds a certain length (by default, 80 characters).  On some
6367 operating systems, DBX requires this splitting; on others, splitting
6368 must not be done.  You can inhibit splitting by defining this macro
6369 with the value zero.  You can override the default splitting-length by
6370 defining this macro as an expression for the length you desire.
6372 @findex DBX_CONTIN_CHAR
6373 @item DBX_CONTIN_CHAR
6374 Normally continuation is indicated by adding a @samp{\} character to
6375 the end of a @code{.stabs} string when a continuation follows.  To use
6376 a different character instead, define this macro as a character
6377 constant for the character you want to use.  Do not define this macro
6378 if backslash is correct for your system.
6380 @findex DBX_STATIC_STAB_DATA_SECTION
6381 @item DBX_STATIC_STAB_DATA_SECTION
6382 Define this macro if it is necessary to go to the data section before
6383 outputting the @samp{.stabs} pseudo-op for a non-global static
6384 variable.
6386 @findex DBX_TYPE_DECL_STABS_CODE
6387 @item DBX_TYPE_DECL_STABS_CODE
6388 The value to use in the ``code'' field of the @code{.stabs} directive
6389 for a typedef.  The default is @code{N_LSYM}.
6391 @findex DBX_STATIC_CONST_VAR_CODE
6392 @item DBX_STATIC_CONST_VAR_CODE
6393 The value to use in the ``code'' field of the @code{.stabs} directive
6394 for a static variable located in the text section.  DBX format does not
6395 provide any ``right'' way to do this.  The default is @code{N_FUN}.
6397 @findex DBX_REGPARM_STABS_CODE
6398 @item DBX_REGPARM_STABS_CODE
6399 The value to use in the ``code'' field of the @code{.stabs} directive
6400 for a parameter passed in registers.  DBX format does not provide any
6401 ``right'' way to do this.  The default is @code{N_RSYM}.
6403 @findex DBX_REGPARM_STABS_LETTER
6404 @item DBX_REGPARM_STABS_LETTER
6405 The letter to use in DBX symbol data to identify a symbol as a parameter
6406 passed in registers.  DBX format does not customarily provide any way to
6407 do this.  The default is @code{'P'}.
6409 @findex DBX_MEMPARM_STABS_LETTER
6410 @item DBX_MEMPARM_STABS_LETTER
6411 The letter to use in DBX symbol data to identify a symbol as a stack
6412 parameter.  The default is @code{'p'}.
6414 @findex DBX_FUNCTION_FIRST
6415 @item DBX_FUNCTION_FIRST
6416 Define this macro if the DBX information for a function and its
6417 arguments should precede the assembler code for the function.  Normally,
6418 in DBX format, the debugging information entirely follows the assembler
6419 code.
6421 @findex DBX_LBRAC_FIRST
6422 @item DBX_LBRAC_FIRST
6423 Define this macro if the @code{N_LBRAC} symbol for a block should
6424 precede the debugging information for variables and functions defined in
6425 that block.  Normally, in DBX format, the @code{N_LBRAC} symbol comes
6426 first.
6428 @findex DBX_BLOCKS_FUNCTION_RELATIVE
6429 @item DBX_BLOCKS_FUNCTION_RELATIVE
6430 Define this macro if the value of a symbol describing the scope of a
6431 block (@code{N_LBRAC} or @code{N_RBRAC}) should be relative to the start
6432 of the enclosing function.  Normally, GNU C uses an absolute address.
6434 @findex DBX_USE_BINCL
6435 @item DBX_USE_BINCL
6436 Define this macro if GNU C should generate @code{N_BINCL} and
6437 @code{N_EINCL} stabs for included header files, as on Sun systems.  This
6438 macro also directs GNU C to output a type number as a pair of a file
6439 number and a type number within the file.  Normally, GNU C does not
6440 generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single
6441 number for a type number.
6442 @end table
6444 @node DBX Hooks
6445 @subsection Open-Ended Hooks for DBX Format
6447 @c prevent bad page break with this line
6448 These are hooks for DBX format.
6450 @table @code
6451 @findex DBX_OUTPUT_LBRAC
6452 @item DBX_OUTPUT_LBRAC (@var{stream}, @var{name})
6453 Define this macro to say how to output to @var{stream} the debugging
6454 information for the start of a scope level for variable names.  The
6455 argument @var{name} is the name of an assembler symbol (for use with
6456 @code{assemble_name}) whose value is the address where the scope begins.
6458 @findex DBX_OUTPUT_RBRAC
6459 @item DBX_OUTPUT_RBRAC (@var{stream}, @var{name})
6460 Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level.
6462 @findex DBX_OUTPUT_ENUM
6463 @item DBX_OUTPUT_ENUM (@var{stream}, @var{type})
6464 Define this macro if the target machine requires special handling to
6465 output an enumeration type.  The definition should be a C statement
6466 (sans semicolon) to output the appropriate information to @var{stream}
6467 for the type @var{type}.
6469 @findex DBX_OUTPUT_FUNCTION_END
6470 @item DBX_OUTPUT_FUNCTION_END (@var{stream}, @var{function})
6471 Define this macro if the target machine requires special output at the
6472 end of the debugging information for a function.  The definition should
6473 be a C statement (sans semicolon) to output the appropriate information
6474 to @var{stream}.  @var{function} is the @code{FUNCTION_DECL} node for
6475 the function.
6477 @findex DBX_OUTPUT_STANDARD_TYPES
6478 @item DBX_OUTPUT_STANDARD_TYPES (@var{syms})
6479 Define this macro if you need to control the order of output of the
6480 standard data types at the beginning of compilation.  The argument
6481 @var{syms} is a @code{tree} which is a chain of all the predefined
6482 global symbols, including names of data types.
6484 Normally, DBX output starts with definitions of the types for integers
6485 and characters, followed by all the other predefined types of the
6486 particular language in no particular order.
6488 On some machines, it is necessary to output different particular types
6489 first.  To do this, define @code{DBX_OUTPUT_STANDARD_TYPES} to output
6490 those symbols in the necessary order.  Any predefined types that you
6491 don't explicitly output will be output afterward in no particular order.
6493 Be careful not to define this macro so that it works only for C.  There
6494 are no global variables to access most of the built-in types, because
6495 another language may have another set of types.  The way to output a
6496 particular type is to look through @var{syms} to see if you can find it.
6497 Here is an example:
6499 @smallexample
6501   tree decl;
6502   for (decl = syms; decl; decl = TREE_CHAIN (decl))
6503     if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
6504                  "long int"))
6505       dbxout_symbol (decl);
6506   @dots{}
6508 @end smallexample
6510 @noindent
6511 This does nothing if the expected type does not exist.
6513 See the function @code{init_decl_processing} in @file{c-decl.c} to find
6514 the names to use for all the built-in C types.
6516 Here is another way of finding a particular type:
6518 @c this is still overfull.  --mew 10feb93
6519 @smallexample
6521   tree decl;
6522   for (decl = syms; decl; decl = TREE_CHAIN (decl))
6523     if (TREE_CODE (decl) == TYPE_DECL
6524         && (TREE_CODE (TREE_TYPE (decl))
6525             == INTEGER_CST)
6526         && TYPE_PRECISION (TREE_TYPE (decl)) == 16
6527         && TYPE_UNSIGNED (TREE_TYPE (decl)))
6528 @group
6529       /* @r{This must be @code{unsigned short}.}  */
6530       dbxout_symbol (decl);
6531   @dots{}
6533 @end group
6534 @end smallexample
6536 @findex NO_DBX_FUNCTION_END
6537 @item NO_DBX_FUNCTION_END
6538 Some stabs encapsulation formats (in particular ECOFF), cannot handle the
6539 @code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extention construct.
6540 On those machines, define this macro to turn this feature off without
6541 disturbing the rest of the gdb extensions.
6543 @end table
6545 @node File Names and DBX
6546 @subsection File Names in DBX Format
6548 @c prevent bad page break with this line
6549 This describes file names in DBX format.
6551 @table @code
6552 @findex DBX_WORKING_DIRECTORY
6553 @item DBX_WORKING_DIRECTORY
6554 Define this if DBX wants to have the current directory recorded in each
6555 object file.
6557 Note that the working directory is always recorded if GDB extensions are
6558 enabled.
6560 @findex DBX_OUTPUT_MAIN_SOURCE_FILENAME
6561 @item DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
6562 A C statement to output DBX debugging information to the stdio stream
6563 @var{stream} which indicates that file @var{name} is the main source
6564 file---the file specified as the input file for compilation.
6565 This macro is called only once, at the beginning of compilation.
6567 This macro need not be defined if the standard form of output
6568 for DBX debugging information is appropriate.
6570 @findex DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
6571 @item DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (@var{stream}, @var{name})
6572 A C statement to output DBX debugging information to the stdio stream
6573 @var{stream} which indicates that the current directory during
6574 compilation is named @var{name}.
6576 This macro need not be defined if the standard form of output
6577 for DBX debugging information is appropriate.
6579 @findex DBX_OUTPUT_MAIN_SOURCE_FILE_END
6580 @item DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
6581 A C statement to output DBX debugging information at the end of
6582 compilation of the main source file @var{name}.
6584 If you don't define this macro, nothing special is output at the end
6585 of compilation, which is correct for most machines.
6587 @findex DBX_OUTPUT_SOURCE_FILENAME
6588 @item DBX_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
6589 A C statement to output DBX debugging information to the stdio stream
6590 @var{stream} which indicates that file @var{name} is the current source
6591 file.  This output is generated each time input shifts to a different
6592 source file as a result of @samp{#include}, the end of an included file,
6593 or a @samp{#line} command.
6595 This macro need not be defined if the standard form of output
6596 for DBX debugging information is appropriate.
6597 @end table
6599 @need 2000
6600 @node SDB and DWARF
6601 @subsection Macros for SDB and DWARF Output
6603 @c prevent bad page break with this line
6604 Here are macros for SDB and DWARF output.
6606 @table @code
6607 @findex SDB_DEBUGGING_INFO
6608 @item SDB_DEBUGGING_INFO
6609 Define this macro if GNU CC should produce COFF-style debugging output
6610 for SDB in response to the @samp{-g} option.
6612 @findex DWARF_DEBUGGING_INFO
6613 @item DWARF_DEBUGGING_INFO
6614 Define this macro if GNU CC should produce dwarf format debugging output
6615 in response to the @samp{-g} option.
6617 @findex DWARF2_DEBUGGING_INFO
6618 @item DWARF2_DEBUGGING_INFO
6619 Define this macro if GNU CC should produce dwarf version 2 format
6620 debugging output in response to the @samp{-g} option.
6622 To support optional call frame debugging information, you must also
6623 define @code{INCOMING_RETURN_ADDR_RTX} and either set
6624 @code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
6625 prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
6626 as appropriate from @code{FUNCTION_PROLOGUE} if you don't.
6628 @findex DWARF2_FRAME_INFO
6629 @item DWARF2_FRAME_INFO
6630 Define this macro to a nonzero value if GNU CC should always output
6631 Dwarf 2 frame information.  If @code{DWARF2_UNWIND_INFO}
6632 (@pxref{Exception Region Output} is nonzero, GNU CC will output this
6633 information not matter how you define @code{DWARF2_FRAME_INFO}.
6635 @findex LINKER_DOES_NOT_WORK_WITH_DWARF2
6636 @item LINKER_DOES_NOT_WORK_WITH_DWARF2
6637 Define this macro if the linker does not work with Dwarf version 2.
6638 Normally, if the user specifies only @samp{-ggdb} GNU CC will use Dwarf
6639 version 2 if available; this macro disables this.  See the description
6640 of the @code{PREFERRED_DEBUGGING_TYPE} macro for more details.
6642 @findex PUT_SDB_@dots{}
6643 @item PUT_SDB_@dots{}
6644 Define these macros to override the assembler syntax for the special
6645 SDB assembler directives.  See @file{sdbout.c} for a list of these
6646 macros and their arguments.  If the standard syntax is used, you need
6647 not define them yourself.
6649 @findex SDB_DELIM
6650 @item SDB_DELIM
6651 Some assemblers do not support a semicolon as a delimiter, even between
6652 SDB assembler directives.  In that case, define this macro to be the
6653 delimiter to use (usually @samp{\n}).  It is not necessary to define
6654 a new set of @code{PUT_SDB_@var{op}} macros if this is the only change
6655 required.
6657 @findex SDB_GENERATE_FAKE
6658 @item SDB_GENERATE_FAKE
6659 Define this macro to override the usual method of constructing a dummy
6660 name for anonymous structure and union types.  See @file{sdbout.c} for
6661 more information.
6663 @findex SDB_ALLOW_UNKNOWN_REFERENCES
6664 @item SDB_ALLOW_UNKNOWN_REFERENCES
6665 Define this macro to allow references to unknown structure,
6666 union, or enumeration tags to be emitted.  Standard COFF does not
6667 allow handling of unknown references, MIPS ECOFF has support for
6670 @findex SDB_ALLOW_FORWARD_REFERENCES
6671 @item SDB_ALLOW_FORWARD_REFERENCES
6672 Define this macro to allow references to structure, union, or
6673 enumeration tags that have not yet been seen to be handled.  Some
6674 assemblers choke if forward tags are used, while some require it.
6675 @end table
6677 @node Cross-compilation
6678 @section Cross Compilation and Floating Point
6679 @cindex cross compilation and floating point
6680 @cindex floating point and cross compilation
6682 While all modern machines use 2's complement representation for integers,
6683 there are a variety of representations for floating point numbers.  This
6684 means that in a cross-compiler the representation of floating point numbers
6685 in the compiled program may be different from that used in the machine
6686 doing the compilation.
6688 @findex atof
6689 Because different representation systems may offer different amounts of
6690 range and precision, the cross compiler cannot safely use the host
6691 machine's floating point arithmetic.  Therefore, floating point constants
6692 must be represented in the target machine's format.  This means that the
6693 cross compiler cannot use @code{atof} to parse a floating point constant;
6694 it must have its own special routine to use instead.  Also, constant
6695 folding must emulate the target machine's arithmetic (or must not be done
6696 at all).
6698 The macros in the following table should be defined only if you are cross
6699 compiling between different floating point formats.
6701 Otherwise, don't define them.  Then default definitions will be set up which
6702 use @code{double} as the data type, @code{==} to test for equality, etc.
6704 You don't need to worry about how many times you use an operand of any
6705 of these macros.  The compiler never uses operands which have side effects.
6707 @table @code
6708 @findex REAL_VALUE_TYPE
6709 @item REAL_VALUE_TYPE
6710 A macro for the C data type to be used to hold a floating point value
6711 in the target machine's format.  Typically this would be a
6712 @code{struct} containing an array of @code{int}.
6714 @findex REAL_VALUES_EQUAL
6715 @item REAL_VALUES_EQUAL (@var{x}, @var{y})
6716 A macro for a C expression which compares for equality the two values,
6717 @var{x} and @var{y}, both of type @code{REAL_VALUE_TYPE}.
6719 @findex REAL_VALUES_LESS
6720 @item REAL_VALUES_LESS (@var{x}, @var{y})
6721 A macro for a C expression which tests whether @var{x} is less than
6722 @var{y}, both values being of type @code{REAL_VALUE_TYPE} and
6723 interpreted as floating point numbers in the target machine's
6724 representation.
6726 @findex REAL_VALUE_LDEXP
6727 @findex ldexp
6728 @item REAL_VALUE_LDEXP (@var{x}, @var{scale})
6729 A macro for a C expression which performs the standard library
6730 function @code{ldexp}, but using the target machine's floating point
6731 representation.  Both @var{x} and the value of the expression have
6732 type @code{REAL_VALUE_TYPE}.  The second argument, @var{scale}, is an
6733 integer.
6735 @findex REAL_VALUE_FIX
6736 @item REAL_VALUE_FIX (@var{x})
6737 A macro whose definition is a C expression to convert the target-machine
6738 floating point value @var{x} to a signed integer.  @var{x} has type
6739 @code{REAL_VALUE_TYPE}.
6741 @findex REAL_VALUE_UNSIGNED_FIX
6742 @item REAL_VALUE_UNSIGNED_FIX (@var{x})
6743 A macro whose definition is a C expression to convert the target-machine
6744 floating point value @var{x} to an unsigned integer.  @var{x} has type
6745 @code{REAL_VALUE_TYPE}.
6747 @findex REAL_VALUE_RNDZINT
6748 @item REAL_VALUE_RNDZINT (@var{x})
6749 A macro whose definition is a C expression to round the target-machine
6750 floating point value @var{x} towards zero to an integer value (but still
6751 as a floating point number).  @var{x} has type @code{REAL_VALUE_TYPE},
6752 and so does the value.
6754 @findex REAL_VALUE_UNSIGNED_RNDZINT
6755 @item REAL_VALUE_UNSIGNED_RNDZINT (@var{x})
6756 A macro whose definition is a C expression to round the target-machine
6757 floating point value @var{x} towards zero to an unsigned integer value
6758 (but still represented as a floating point number).  @var{x} has type
6759 @code{REAL_VALUE_TYPE}, and so does the value.
6761 @findex REAL_VALUE_ATOF
6762 @item REAL_VALUE_ATOF (@var{string}, @var{mode})
6763 A macro for a C expression which converts @var{string}, an expression of
6764 type @code{char *}, into a floating point number in the target machine's
6765 representation for mode @var{mode}.  The value has type
6766 @code{REAL_VALUE_TYPE}.
6768 @findex REAL_INFINITY
6769 @item REAL_INFINITY
6770 Define this macro if infinity is a possible floating point value, and
6771 therefore division by 0 is legitimate.
6773 @findex REAL_VALUE_ISINF
6774 @findex isinf
6775 @item REAL_VALUE_ISINF (@var{x})
6776 A macro for a C expression which determines whether @var{x}, a floating
6777 point value, is infinity.  The value has type @code{int}.
6778 By default, this is defined to call @code{isinf}.
6780 @findex REAL_VALUE_ISNAN
6781 @findex isnan
6782 @item REAL_VALUE_ISNAN (@var{x})
6783 A macro for a C expression which determines whether @var{x}, a floating
6784 point value, is a ``nan'' (not-a-number).  The value has type
6785 @code{int}.  By default, this is defined to call @code{isnan}.
6786 @end table
6788 @cindex constant folding and floating point
6789 Define the following additional macros if you want to make floating
6790 point constant folding work while cross compiling.  If you don't
6791 define them, cross compilation is still possible, but constant folding
6792 will not happen for floating point values.
6794 @table @code
6795 @findex REAL_ARITHMETIC
6796 @item REAL_ARITHMETIC (@var{output}, @var{code}, @var{x}, @var{y})
6797 A macro for a C statement which calculates an arithmetic operation of
6798 the two floating point values @var{x} and @var{y}, both of type
6799 @code{REAL_VALUE_TYPE} in the target machine's representation, to
6800 produce a result of the same type and representation which is stored
6801 in @var{output} (which will be a variable).
6803 The operation to be performed is specified by @var{code}, a tree code
6804 which will always be one of the following: @code{PLUS_EXPR},
6805 @code{MINUS_EXPR}, @code{MULT_EXPR}, @code{RDIV_EXPR},
6806 @code{MAX_EXPR}, @code{MIN_EXPR}.@refill
6808 @cindex overflow while constant folding
6809 The expansion of this macro is responsible for checking for overflow.
6810 If overflow happens, the macro expansion should execute the statement
6811 @code{return 0;}, which indicates the inability to perform the
6812 arithmetic operation requested.
6814 @findex REAL_VALUE_NEGATE
6815 @item REAL_VALUE_NEGATE (@var{x})
6816 A macro for a C expression which returns the negative of the floating
6817 point value @var{x}.  Both @var{x} and the value of the expression
6818 have type @code{REAL_VALUE_TYPE} and are in the target machine's
6819 floating point representation.
6821 There is no way for this macro to report overflow, since overflow
6822 can't happen in the negation operation.
6824 @findex REAL_VALUE_TRUNCATE
6825 @item REAL_VALUE_TRUNCATE (@var{mode}, @var{x})
6826 A macro for a C expression which converts the floating point value
6827 @var{x} to mode @var{mode}.
6829 Both @var{x} and the value of the expression are in the target machine's
6830 floating point representation and have type @code{REAL_VALUE_TYPE}.
6831 However, the value should have an appropriate bit pattern to be output
6832 properly as a floating constant whose precision accords with mode
6833 @var{mode}.
6835 There is no way for this macro to report overflow.
6837 @findex REAL_VALUE_TO_INT
6838 @item REAL_VALUE_TO_INT (@var{low}, @var{high}, @var{x})
6839 A macro for a C expression which converts a floating point value
6840 @var{x} into a double-precision integer which is then stored into
6841 @var{low} and @var{high}, two variables of type @var{int}.
6843 @item REAL_VALUE_FROM_INT (@var{x}, @var{low}, @var{high}, @var{mode})
6844 @findex REAL_VALUE_FROM_INT
6845 A macro for a C expression which converts a double-precision integer
6846 found in @var{low} and @var{high}, two variables of type @var{int},
6847 into a floating point value which is then stored into @var{x}.
6848 The value is in the target machine's representation for mode @var{mode}
6849 and has the type @code{REAL_VALUE_TYPE}.
6850 @end table
6852 @node Misc
6853 @section Miscellaneous Parameters
6854 @cindex parameters, miscellaneous
6856 @c prevent bad page break with this line
6857 Here are several miscellaneous parameters.
6859 @table @code
6860 @item PREDICATE_CODES
6861 @findex PREDICATE_CODES
6862 Define this if you have defined special-purpose predicates in the file
6863 @file{@var{machine}.c}.  This macro is called within an initializer of an
6864 array of structures.  The first field in the structure is the name of a
6865 predicate and the second field is an array of rtl codes.  For each
6866 predicate, list all rtl codes that can be in expressions matched by the
6867 predicate.  The list should have a trailing comma.  Here is an example
6868 of two entries in the list for a typical RISC machine:
6870 @smallexample
6871 #define PREDICATE_CODES \
6872   @{"gen_reg_rtx_operand", @{SUBREG, REG@}@},  \
6873   @{"reg_or_short_cint_operand", @{SUBREG, REG, CONST_INT@}@},
6874 @end smallexample
6876 Defining this macro does not affect the generated code (however,
6877 incorrect definitions that omit an rtl code that may be matched by the
6878 predicate can cause the compiler to malfunction).  Instead, it allows
6879 the table built by @file{genrecog} to be more compact and efficient,
6880 thus speeding up the compiler.  The most important predicates to include
6881 in the list specified by this macro are those used in the most insn
6882 patterns.
6884 @findex CASE_VECTOR_MODE
6885 @item CASE_VECTOR_MODE
6886 An alias for a machine mode name.  This is the machine mode that
6887 elements of a jump-table should have.
6889 @findex CASE_VECTOR_PC_RELATIVE
6890 @item CASE_VECTOR_PC_RELATIVE
6891 Define this macro if jump-tables should contain relative addresses.
6893 @findex CASE_DROPS_THROUGH
6894 @item CASE_DROPS_THROUGH
6895 Define this if control falls through a @code{case} insn when the index
6896 value is out of range.  This means the specified default-label is
6897 actually ignored by the @code{case} insn proper.
6899 @findex CASE_VALUES_THRESHOLD
6900 @item CASE_VALUES_THRESHOLD
6901 Define this to be the smallest number of different values for which it
6902 is best to use a jump-table instead of a tree of conditional branches.
6903 The default is four for machines with a @code{casesi} instruction and
6904 five otherwise.  This is best for most machines.
6906 @findex WORD_REGISTER_OPERATIONS
6907 @item WORD_REGISTER_OPERATIONS
6908 Define this macro if operations between registers with integral mode
6909 smaller than a word are always performed on the entire register.
6910 Most RISC machines have this property and most CISC machines do not.
6912 @findex LOAD_EXTEND_OP
6913 @item LOAD_EXTEND_OP (@var{mode})
6914 Define this macro to be a C expression indicating when insns that read
6915 memory in @var{mode}, an integral mode narrower than a word, set the
6916 bits outside of @var{mode} to be either the sign-extension or the
6917 zero-extension of the data read.  Return @code{SIGN_EXTEND} for values
6918 of @var{mode} for which the
6919 insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
6920 @code{NIL} for other modes.
6922 This macro is not called with @var{mode} non-integral or with a width
6923 greater than or equal to @code{BITS_PER_WORD}, so you may return any
6924 value in this case.  Do not define this macro if it would always return
6925 @code{NIL}.  On machines where this macro is defined, you will normally
6926 define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
6928 @findex SHORT_IMMEDIATES_SIGN_EXTEND
6929 @item SHORT_IMMEDIATES_SIGN_EXTEND
6930 Define this macro if loading short immediate values into registers sign
6931 extends.
6933 @findex IMPLICIT_FIX_EXPR
6934 @item IMPLICIT_FIX_EXPR
6935 An alias for a tree code that should be used by default for conversion
6936 of floating point values to fixed point.  Normally,
6937 @code{FIX_ROUND_EXPR} is used.@refill
6939 @findex FIXUNS_TRUNC_LIKE_FIX_TRUNC
6940 @item FIXUNS_TRUNC_LIKE_FIX_TRUNC
6941 Define this macro if the same instructions that convert a floating
6942 point number to a signed fixed point number also convert validly to an
6943 unsigned one.
6945 @findex EASY_DIV_EXPR
6946 @item EASY_DIV_EXPR
6947 An alias for a tree code that is the easiest kind of division to
6948 compile code for in the general case.  It may be
6949 @code{TRUNC_DIV_EXPR}, @code{FLOOR_DIV_EXPR}, @code{CEIL_DIV_EXPR} or
6950 @code{ROUND_DIV_EXPR}.  These four division operators differ in how
6951 they round the result to an integer.  @code{EASY_DIV_EXPR} is used
6952 when it is permissible to use any of those kinds of division and the
6953 choice should be made on the basis of efficiency.@refill
6955 @findex MOVE_MAX
6956 @item MOVE_MAX
6957 The maximum number of bytes that a single instruction can move quickly
6958 between memory and registers or between two memory locations.
6960 @findex MAX_MOVE_MAX
6961 @item MAX_MOVE_MAX
6962 The maximum number of bytes that a single instruction can move quickly
6963 between memory and registers or between two memory locations.  If this
6964 is undefined, the default is @code{MOVE_MAX}.  Otherwise, it is the
6965 constant value that is the largest value that @code{MOVE_MAX} can have
6966 at run-time.
6968 @findex SHIFT_COUNT_TRUNCATED
6969 @item SHIFT_COUNT_TRUNCATED
6970 A C expression that is nonzero if on this machine the number of bits
6971 actually used for the count of a shift operation is equal to the number
6972 of bits needed to represent the size of the object being shifted.  When
6973 this macro is non-zero, the compiler will assume that it is safe to omit
6974 a sign-extend, zero-extend, and certain bitwise `and' instructions that
6975 truncates the count of a shift operation.  On machines that have
6976 instructions that act on bitfields at variable positions, which may
6977 include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED}
6978 also enables deletion of truncations of the values that serve as
6979 arguments to bitfield instructions.
6981 If both types of instructions truncate the count (for shifts) and
6982 position (for bitfield operations), or if no variable-position bitfield
6983 instructions exist, you should define this macro.
6985 However, on some machines, such as the 80386 and the 680x0, truncation
6986 only applies to shift operations and not the (real or pretended)
6987 bitfield operations.  Define @code{SHIFT_COUNT_TRUNCATED} to be zero on
6988 such machines.  Instead, add patterns to the @file{md} file that include
6989 the implied truncation of the shift instructions.
6991 You need not define this macro if it would always have the value of zero.
6993 @findex TRULY_NOOP_TRUNCATION
6994 @item TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec})
6995 A C expression which is nonzero if on this machine it is safe to
6996 ``convert'' an integer of @var{inprec} bits to one of @var{outprec}
6997 bits (where @var{outprec} is smaller than @var{inprec}) by merely
6998 operating on it as if it had only @var{outprec} bits.
7000 On many machines, this expression can be 1.
7002 @c rearranged this, removed the phrase "it is reported that".  this was
7003 @c to fix an overfull hbox.  --mew 10feb93
7004 When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for
7005 modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result.
7006 If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in
7007 such cases may improve things.
7009 @findex STORE_FLAG_VALUE
7010 @item STORE_FLAG_VALUE
7011 A C expression describing the value returned by a comparison operator
7012 with an integral mode and stored by a store-flag instruction
7013 (@samp{s@var{cond}}) when the condition is true.  This description must
7014 apply to @emph{all} the @samp{s@var{cond}} patterns and all the
7015 comparison operators whose results have a @code{MODE_INT} mode.
7017 A value of 1 or -1 means that the instruction implementing the
7018 comparison operator returns exactly 1 or -1 when the comparison is true
7019 and 0 when the comparison is false.  Otherwise, the value indicates
7020 which bits of the result are guaranteed to be 1 when the comparison is
7021 true.  This value is interpreted in the mode of the comparison
7022 operation, which is given by the mode of the first operand in the
7023 @samp{s@var{cond}} pattern.  Either the low bit or the sign bit of
7024 @code{STORE_FLAG_VALUE} be on.  Presently, only those bits are used by
7025 the compiler.
7027 If @code{STORE_FLAG_VALUE} is neither 1 or -1, the compiler will
7028 generate code that depends only on the specified bits.  It can also
7029 replace comparison operators with equivalent operations if they cause
7030 the required bits to be set, even if the remaining bits are undefined.
7031 For example, on a machine whose comparison operators return an
7032 @code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as
7033 @samp{0x80000000}, saying that just the sign bit is relevant, the
7034 expression
7036 @smallexample
7037 (ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0))
7038 @end smallexample
7040 @noindent
7041 can be converted to
7043 @smallexample
7044 (ashift:SI @var{x} (const_int @var{n}))
7045 @end smallexample
7047 @noindent
7048 where @var{n} is the appropriate shift count to move the bit being
7049 tested into the sign bit.
7051 There is no way to describe a machine that always sets the low-order bit
7052 for a true value, but does not guarantee the value of any other bits,
7053 but we do not know of any machine that has such an instruction.  If you
7054 are trying to port GNU CC to such a machine, include an instruction to
7055 perform a logical-and of the result with 1 in the pattern for the
7056 comparison operators and let us know
7057 @ifset USING
7058 (@pxref{Bug Reporting,,How to Report Bugs}).
7059 @end ifset
7060 @ifclear USING
7061 (@pxref{Bug Reporting,,How to Report Bugs,gcc.info,Using GCC}).
7062 @end ifclear
7064 Often, a machine will have multiple instructions that obtain a value
7065 from a comparison (or the condition codes).  Here are rules to guide the
7066 choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions
7067 to be used:
7069 @itemize @bullet
7070 @item
7071 Use the shortest sequence that yields a valid definition for
7072 @code{STORE_FLAG_VALUE}.  It is more efficient for the compiler to
7073 ``normalize'' the value (convert it to, e.g., 1 or 0) than for the
7074 comparison operators to do so because there may be opportunities to
7075 combine the normalization with other operations.
7077 @item
7078 For equal-length sequences, use a value of 1 or -1, with -1 being
7079 slightly preferred on machines with expensive jumps and 1 preferred on
7080 other machines.
7082 @item
7083 As a second choice, choose a value of @samp{0x80000001} if instructions
7084 exist that set both the sign and low-order bits but do not define the
7085 others.
7087 @item
7088 Otherwise, use a value of @samp{0x80000000}.
7089 @end itemize
7091 Many machines can produce both the value chosen for
7092 @code{STORE_FLAG_VALUE} and its negation in the same number of
7093 instructions.  On those machines, you should also define a pattern for
7094 those cases, e.g., one matching
7096 @smallexample
7097 (set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C})))
7098 @end smallexample
7100 Some machines can also perform @code{and} or @code{plus} operations on
7101 condition code values with less instructions than the corresponding
7102 @samp{s@var{cond}} insn followed by @code{and} or @code{plus}.  On those
7103 machines, define the appropriate patterns.  Use the names @code{incscc}
7104 and @code{decscc}, respectively, for the patterns which perform
7105 @code{plus} or @code{minus} operations on condition code values.  See
7106 @file{rs6000.md} for some examples.  The GNU Superoptizer can be used to
7107 find such instruction sequences on other machines.
7109 You need not define @code{STORE_FLAG_VALUE} if the machine has no store-flag
7110 instructions.
7112 @findex FLOAT_STORE_FLAG_VALUE
7113 @item FLOAT_STORE_FLAG_VALUE
7114 A C expression that gives a non-zero floating point value that is
7115 returned when comparison operators with floating-point results are true.
7116 Define this macro on machine that have comparison operations that return
7117 floating-point values.  If there are no such operations, do not define
7118 this macro.
7120 @findex Pmode
7121 @item Pmode
7122 An alias for the machine mode for pointers.  On most machines, define
7123 this to be the integer mode corresponding to the width of a hardware
7124 pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines.
7125 On some machines you must define this to be one of the partial integer
7126 modes, such as @code{PSImode}.
7128 The width of @code{Pmode} must be at least as large as the value of
7129 @code{POINTER_SIZE}.  If it is not equal, you must define the macro
7130 @code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended
7131 to @code{Pmode}.
7133 @findex FUNCTION_MODE
7134 @item FUNCTION_MODE
7135 An alias for the machine mode used for memory references to functions
7136 being called, in @code{call} RTL expressions.  On most machines this
7137 should be @code{QImode}.
7139 @findex INTEGRATE_THRESHOLD
7140 @item INTEGRATE_THRESHOLD (@var{decl})
7141 A C expression for the maximum number of instructions above which the
7142 function @var{decl} should not be inlined.  @var{decl} is a
7143 @code{FUNCTION_DECL} node.
7145 The default definition of this macro is 64 plus 8 times the number of
7146 arguments that the function accepts.  Some people think a larger
7147 threshold should be used on RISC machines.
7149 @findex SCCS_DIRECTIVE
7150 @item SCCS_DIRECTIVE
7151 Define this if the preprocessor should ignore @code{#sccs} directives
7152 and print no error message.
7154 @findex NO_IMPLICIT_EXTERN_C
7155 @item NO_IMPLICIT_EXTERN_C
7156 Define this macro if the system header files support C++ as well as C.
7157 This macro inhibits the usual method of using system header files in
7158 C++, which is to pretend that the file's contents are enclosed in
7159 @samp{extern "C" @{@dots{}@}}.
7161 @findex HANDLE_PRAGMA
7162 @findex #pragma
7163 @findex pragma
7164 @item HANDLE_PRAGMA (@var{stream}, @var{node})
7165 Define this macro if you want to implement any pragmas.  If defined, it
7166 is a C expression whose value is 1 if the pragma was handled by the function.
7167 The argument @var{stream} is the stdio input stream from which the source text
7168 can be read.  @var{node} is the tree node for the identifier after the
7169 @code{#pragma}.
7171 It is generally a bad idea to implement new uses of @code{#pragma}.  The
7172 only reason to define this macro is for compatibility with other
7173 compilers that do support @code{#pragma} for the sake of any user
7174 programs which already use it.
7176 @findex VALID_MACHINE_DECL_ATTRIBUTE
7177 @item VALID_MACHINE_DECL_ATTRIBUTE (@var{decl}, @var{attributes}, @var{identifier}, @var{args})
7178 If defined, a C expression whose value is nonzero if @var{identifier} with
7179 arguments @var{args} is a valid machine specific attribute for @var{decl}.
7180 The attributes in @var{attributes} have previously been assigned to @var{decl}.
7182 @findex VALID_MACHINE_TYPE_ATTRIBUTE
7183 @item VALID_MACHINE_TYPE_ATTRIBUTE (@var{type}, @var{attributes}, @var{identifier}, @var{args})
7184 If defined, a C expression whose value is nonzero if @var{identifier} with
7185 arguments @var{args} is a valid machine specific attribute for @var{type}.
7186 The attributes in @var{attributes} have previously been assigned to @var{type}.
7188 @findex COMP_TYPE_ATTRIBUTES
7189 @item COMP_TYPE_ATTRIBUTES (@var{type1}, @var{type2})
7190 If defined, a C expression whose value is zero if the attributes on
7191 @var{type1} and @var{type2} are incompatible, one if they are compatible,
7192 and two if they are nearly compatible (which causes a warning to be
7193 generated).
7195 @findex SET_DEFAULT_TYPE_ATTRIBUTES
7196 @item SET_DEFAULT_TYPE_ATTRIBUTES (@var{type})
7197 If defined, a C statement that assigns default attributes to
7198 newly defined @var{type}.
7200 @findex SET_DEFAULT_DECL_ATTRIBUTES
7201 @item SET_DEFAULT_DECL_ATTRIBUTES (@var{decl}, @var{attributes})
7202 If defined, a C statement that assigns default attributes to
7203 newly defined @var{decl}.
7205 @findex DOLLARS_IN_IDENTIFIERS
7206 @item DOLLARS_IN_IDENTIFIERS
7207 Define this macro to control use of the character @samp{$} in identifier
7208 names.  0 means @samp{$} is not allowed by default; 1 means it is allowed.
7209 1 is the default; there is no need to define this macro in that case.
7210 This macro controls the compiler proper; it does not affect the preprocessor.
7212 @findex NO_DOLLAR_IN_LABEL
7213 @item NO_DOLLAR_IN_LABEL
7214 Define this macro if the assembler does not accept the character
7215 @samp{$} in label names.  By default constructors and destructors in
7216 G++ have @samp{$} in the identifiers.  If this macro is defined,
7217 @samp{.} is used instead.
7219 @findex NO_DOT_IN_LABEL
7220 @item NO_DOT_IN_LABEL
7221 Define this macro if the assembler does not accept the character
7222 @samp{.} in label names.  By default constructors and destructors in G++
7223 have names that use @samp{.}.  If this macro is defined, these names
7224 are rewritten to avoid @samp{.}.
7226 @findex DEFAULT_MAIN_RETURN
7227 @item DEFAULT_MAIN_RETURN
7228 Define this macro if the target system expects every program's @code{main}
7229 function to return a standard ``success'' value by default (if no other
7230 value is explicitly returned).
7232 The definition should be a C statement (sans semicolon) to generate the
7233 appropriate rtl instructions.  It is used only when compiling the end of
7234 @code{main}.
7236 @item HAVE_ATEXIT
7237 @findex HAVE_ATEXIT
7238 Define this if the target system supports the function
7239 @code{atexit} from the ANSI C standard.  If this is not defined,
7240 and @code{INIT_SECTION_ASM_OP} is not defined, a default
7241 @code{exit} function will be provided to support C++.
7243 @item EXIT_BODY
7244 @findex EXIT_BODY
7245 Define this if your @code{exit} function needs to do something
7246 besides calling an external function @code{_cleanup} before
7247 terminating with @code{_exit}.  The @code{EXIT_BODY} macro is
7248 only needed if neither @code{HAVE_ATEXIT} nor
7249 @code{INIT_SECTION_ASM_OP} are defined.
7251 @findex INSN_SETS_ARE_DELAYED
7252 @item INSN_SETS_ARE_DELAYED (@var{insn})
7253 Define this macro as a C expression that is nonzero if it is safe for the
7254 delay slot scheduler to place instructions in the delay slot of @var{insn},
7255 even if they appear to use a resource set or clobbered in @var{insn}.
7256 @var{insn} is always a @code{jump_insn} or an @code{insn}; GNU CC knows that
7257 every @code{call_insn} has this behavior.  On machines where some @code{insn}
7258 or @code{jump_insn} is really a function call and hence has this behavior,
7259 you should define this macro.
7261 You need not define this macro if it would always return zero.
7263 @findex INSN_REFERENCES_ARE_DELAYED
7264 @item INSN_REFERENCES_ARE_DELAYED (@var{insn})
7265 Define this macro as a C expression that is nonzero if it is safe for the
7266 delay slot scheduler to place instructions in the delay slot of @var{insn},
7267 even if they appear to set or clobber a resource referenced in @var{insn}.
7268 @var{insn} is always a @code{jump_insn} or an @code{insn}.  On machines where
7269 some @code{insn} or @code{jump_insn} is really a function call and its operands
7270 are registers whose use is actually in the subroutine it calls, you should
7271 define this macro.  Doing so allows the delay slot scheduler to move
7272 instructions which copy arguments into the argument registers into the delay
7273 slot of @var{insn}.
7275 You need not define this macro if it would always return zero.
7277 @findex MACHINE_DEPENDENT_REORG
7278 @item MACHINE_DEPENDENT_REORG (@var{insn})
7279 In rare cases, correct code generation requires extra machine
7280 dependent processing between the second jump optimization pass and
7281 delayed branch scheduling.  On those machines, define this macro as a C
7282 statement to act on the code starting at @var{insn}.
7284 @findex MULTIPLE_SYMBOL_SPACES
7285 @item MULTIPLE_SYMBOL_SPACES
7286 Define this macro if in some cases global symbols from one translation
7287 unit may not be bound to undefined symbols in another translation unit
7288 without user intervention.  For instance, under Microsoft Windows
7289 symbols must be explicitly imported from shared libraries (DLLs).
7291 @findex GIV_SORT_CRITERION
7292 @item GIV_SORT_CRITERION (@var{giv1}, @var{giv2})
7293 In some cases, the strength reduction optimization pass can produce better
7294 code if this is defined.  This macro controls the order that induction
7295 variables are combined.  This macro is particularly useful if the target has
7296 limited addressing modes.  For instance, the SH target has only positive
7297 offsets in addresses.  Thus sorting to put the smallest address first
7298 allows the most combinations to be found.
7300 @end table