* except.c (expand_start_all_catch): One more do_pending_stack_adjust.
[official-gcc.git] / gcc / tm.texi
blob345dbeb45029c88587fac19e8f41a845433d41e9
1 @c Copyright (C) 1988,89,92,93,94,96,1997 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 MULTILIB_DEFAULTS
272 @item MULTILIB_DEFAULTS
273 Define this macro as a C expression for the initializer of an array of
274 string to tell the driver program which options are defaults for this
275 target and thus do not need to be handled specially when using
276 @code{MULTILIB_OPTIONS}.
278 Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in
279 the target makefile fragment or if none of the options listed in
280 @code{MULTILIB_OPTIONS} are set by default.
281 @xref{Target Fragment}.
283 @findex RELATIVE_PREFIX_NOT_LINKDIR
284 @item RELATIVE_PREFIX_NOT_LINKDIR
285 Define this macro to tell @code{gcc} that it should only translate
286 a @samp{-B} prefix into a @samp{-L} linker option if the prefix
287 indicates an absolute file name.
289 @findex STANDARD_EXEC_PREFIX
290 @item STANDARD_EXEC_PREFIX
291 Define this macro as a C string constant if you wish to override the
292 standard choice of @file{/usr/local/lib/gcc-lib/} as the default prefix to
293 try when searching for the executable files of the compiler.
295 @findex MD_EXEC_PREFIX
296 @item MD_EXEC_PREFIX
297 If defined, this macro is an additional prefix to try after
298 @code{STANDARD_EXEC_PREFIX}.  @code{MD_EXEC_PREFIX} is not searched
299 when the @samp{-b} option is used, or the compiler is built as a cross
300 compiler.
302 @findex STANDARD_STARTFILE_PREFIX
303 @item STANDARD_STARTFILE_PREFIX
304 Define this macro as a C string constant if you wish to override the
305 standard choice of @file{/usr/local/lib/} as the default prefix to
306 try when searching for startup files such as @file{crt0.o}.
308 @findex MD_STARTFILE_PREFIX
309 @item MD_STARTFILE_PREFIX
310 If defined, this macro supplies an additional prefix to try after the
311 standard prefixes.  @code{MD_EXEC_PREFIX} is not searched when the
312 @samp{-b} option is used, or when the compiler is built as a cross
313 compiler.
315 @findex MD_STARTFILE_PREFIX_1
316 @item MD_STARTFILE_PREFIX_1
317 If defined, this macro supplies yet another prefix to try after the
318 standard prefixes.  It is not searched when the @samp{-b} option is
319 used, or when the compiler is built as a cross compiler.
321 @findex INIT_ENVIRONMENT
322 @item INIT_ENVIRONMENT
323 Define this macro as a C string constant if you with to set environment
324 variables for programs called by the driver, such as the assembler and
325 loader.  The driver passes the value of this macro to @code{putenv} to
326 initialize the necessary environment variables.
328 @findex LOCAL_INCLUDE_DIR
329 @item LOCAL_INCLUDE_DIR
330 Define this macro as a C string constant if you wish to override the
331 standard choice of @file{/usr/local/include} as the default prefix to
332 try when searching for local header files.  @code{LOCAL_INCLUDE_DIR}
333 comes before @code{SYSTEM_INCLUDE_DIR} in the search order.
335 Cross compilers do not use this macro and do not search either
336 @file{/usr/local/include} or its replacement.
338 @findex SYSTEM_INCLUDE_DIR
339 @item SYSTEM_INCLUDE_DIR
340 Define this macro as a C string constant if you wish to specify a
341 system-specific directory to search for header files before the standard
342 directory.  @code{SYSTEM_INCLUDE_DIR} comes before
343 @code{STANDARD_INCLUDE_DIR} in the search order.
345 Cross compilers do not use this macro and do not search the directory
346 specified.
348 @findex STANDARD_INCLUDE_DIR
349 @item STANDARD_INCLUDE_DIR
350 Define this macro as a C string constant if you wish to override the
351 standard choice of @file{/usr/include} as the default prefix to
352 try when searching for header files.
354 Cross compilers do not use this macro and do not search either
355 @file{/usr/include} or its replacement.
357 @findex INCLUDE_DEFAULTS
358 @item INCLUDE_DEFAULTS
359 Define this macro if you wish to override the entire default search path
360 for include files.  The default search path includes
361 @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR},
362 @code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
363 @code{STANDARD_INCLUDE_DIR}.  In addition, @code{GPLUSPLUS_INCLUDE_DIR}
364 and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
365 and specify private search areas for GCC.  The directory
366 @code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
368 The definition should be an initializer for an array of structures.
369 Each array element should have two elements: the directory name (a
370 string constant) and a flag for C++-only directories.  Mark the end of
371 the array with a null element.  For example, here is the definition used
372 for VMS:
374 @example
375 #define INCLUDE_DEFAULTS \
376 @{                                       \
377   @{ "GNU_GXX_INCLUDE:", 1@},             \
378   @{ "GNU_CC_INCLUDE:", 0@},              \
379   @{ "SYS$SYSROOT:[SYSLIB.]", 0@},        \
380   @{ ".", 0@},                            \
381   @{ 0, 0@}                               \
383 @end example
384 @end table
386 Here is the order of prefixes tried for exec files:
388 @enumerate
389 @item
390 Any prefixes specified by the user with @samp{-B}.
392 @item
393 The environment variable @code{GCC_EXEC_PREFIX}, if any.
395 @item
396 The directories specified by the environment variable @code{COMPILER_PATH}.
398 @item
399 The macro @code{STANDARD_EXEC_PREFIX}.
401 @item
402 @file{/usr/lib/gcc/}.
404 @item
405 The macro @code{MD_EXEC_PREFIX}, if any.
406 @end enumerate
408 Here is the order of prefixes tried for startfiles:
410 @enumerate
411 @item
412 Any prefixes specified by the user with @samp{-B}.
414 @item
415 The environment variable @code{GCC_EXEC_PREFIX}, if any.
417 @item
418 The directories specified by the environment variable @code{LIBRARY_PATH}
419 (native only, cross compilers do not use this).
421 @item
422 The macro @code{STANDARD_EXEC_PREFIX}.
424 @item
425 @file{/usr/lib/gcc/}.
427 @item
428 The macro @code{MD_EXEC_PREFIX}, if any.
430 @item
431 The macro @code{MD_STARTFILE_PREFIX}, if any.
433 @item
434 The macro @code{STANDARD_STARTFILE_PREFIX}.
436 @item
437 @file{/lib/}.
439 @item
440 @file{/usr/lib/}.
441 @end enumerate
443 @node Run-time Target
444 @section Run-time Target Specification
445 @cindex run-time target specification
446 @cindex predefined macros
447 @cindex target specifications
449 @c prevent bad page break with this line
450 Here are run-time target specifications.
452 @table @code
453 @findex CPP_PREDEFINES
454 @item CPP_PREDEFINES
455 Define this to be a string constant containing @samp{-D} options to
456 define the predefined macros that identify this machine and system.
457 These macros will be predefined unless the @samp{-ansi} option is
458 specified.
460 In addition, a parallel set of macros are predefined, whose names are
461 made by appending @samp{__} at the beginning and at the end.  These
462 @samp{__} macros are permitted by the ANSI standard, so they are
463 predefined regardless of whether @samp{-ansi} is specified.
465 For example, on the Sun, one can use the following value:
467 @smallexample
468 "-Dmc68000 -Dsun -Dunix"
469 @end smallexample
471 The result is to define the macros @code{__mc68000__}, @code{__sun__}
472 and @code{__unix__} unconditionally, and the macros @code{mc68000},
473 @code{sun} and @code{unix} provided @samp{-ansi} is not specified.
475 @findex extern int target_flags
476 @item extern int target_flags;
477 This declaration should be present.
479 @cindex optional hardware or system features
480 @cindex features, optional, in system conventions
481 @item TARGET_@dots{}
482 This series of macros is to allow compiler command arguments to
483 enable or disable the use of optional features of the target machine.
484 For example, one machine description serves both the 68000 and
485 the 68020; a command argument tells the compiler whether it should
486 use 68020-only instructions or not.  This command argument works
487 by means of a macro @code{TARGET_68020} that tests a bit in
488 @code{target_flags}.
490 Define a macro @code{TARGET_@var{featurename}} for each such option.
491 Its definition should test a bit in @code{target_flags}; for example:
493 @smallexample
494 #define TARGET_68020 (target_flags & 1)
495 @end smallexample
497 One place where these macros are used is in the condition-expressions
498 of instruction patterns.  Note how @code{TARGET_68020} appears
499 frequently in the 68000 machine description file, @file{m68k.md}.
500 Another place they are used is in the definitions of the other
501 macros in the @file{@var{machine}.h} file.
503 @findex TARGET_SWITCHES
504 @item TARGET_SWITCHES
505 This macro defines names of command options to set and clear
506 bits in @code{target_flags}.  Its definition is an initializer
507 with a subgrouping for each command option.
509 Each subgrouping contains a string constant, that defines the option
510 name, and a number, which contains the bits to set in
511 @code{target_flags}.  A negative number says to clear bits instead;
512 the negative of the number is which bits to clear.  The actual option
513 name is made by appending @samp{-m} to the specified name.
515 One of the subgroupings should have a null string.  The number in
516 this grouping is the default value for @code{target_flags}.  Any
517 target options act starting with that value.
519 Here is an example which defines @samp{-m68000} and @samp{-m68020}
520 with opposite meanings, and picks the latter as the default:
522 @smallexample
523 #define TARGET_SWITCHES \
524   @{ @{ "68020", 1@},      \
525     @{ "68000", -1@},     \
526     @{ "", 1@}@}
527 @end smallexample
529 @findex TARGET_OPTIONS
530 @item TARGET_OPTIONS
531 This macro is similar to @code{TARGET_SWITCHES} but defines names of command
532 options that have values.  Its definition is an initializer with a
533 subgrouping for each command option.
535 Each subgrouping contains a string constant, that defines the fixed part
536 of the option name, and the address of a variable.  The variable, type
537 @code{char *}, is set to the variable part of the given option if the fixed
538 part matches.  The actual option name is made by appending @samp{-m} to the
539 specified name.
541 Here is an example which defines @samp{-mshort-data-@var{number}}.  If the
542 given option is @samp{-mshort-data-512}, the variable @code{m88k_short_data}
543 will be set to the string @code{"512"}.
545 @smallexample
546 extern char *m88k_short_data;
547 #define TARGET_OPTIONS \
548  @{ @{ "short-data-", &m88k_short_data @} @}
549 @end smallexample
551 @findex TARGET_VERSION
552 @item TARGET_VERSION
553 This macro is a C statement to print on @code{stderr} a string
554 describing the particular machine description choice.  Every machine
555 description should define @code{TARGET_VERSION}.  For example:
557 @smallexample
558 #ifdef MOTOROLA
559 #define TARGET_VERSION \
560   fprintf (stderr, " (68k, Motorola syntax)");
561 #else
562 #define TARGET_VERSION \
563   fprintf (stderr, " (68k, MIT syntax)");
564 #endif
565 @end smallexample
567 @findex OVERRIDE_OPTIONS
568 @item OVERRIDE_OPTIONS
569 Sometimes certain combinations of command options do not make sense on
570 a particular target machine.  You can define a macro
571 @code{OVERRIDE_OPTIONS} to take account of this.  This macro, if
572 defined, is executed once just after all the command options have been
573 parsed.
575 Don't use this macro to turn on various extra optimizations for
576 @samp{-O}.  That is what @code{OPTIMIZATION_OPTIONS} is for.
578 @findex OPTIMIZATION_OPTIONS
579 @item OPTIMIZATION_OPTIONS (@var{level})
580 Some machines may desire to change what optimizations are performed for
581 various optimization levels.   This macro, if defined, is executed once
582 just after the optimization level is determined and before the remainder
583 of the command options have been parsed.  Values set in this macro are
584 used as the default values for the other command line options.
586 @var{level} is the optimization level specified; 2 if @samp{-O2} is
587 specified, 1 if @samp{-O} is specified, and 0 if neither is specified.
589 You should not use this macro to change options that are not
590 machine-specific.  These should uniformly selected by the same
591 optimization level on all supported machines.  Use this macro to enable
592 machine-specific optimizations.
594 @strong{Do not examine @code{write_symbols} in
595 this macro!} The debugging options are not supposed to alter the
596 generated code.
598 @findex CAN_DEBUG_WITHOUT_FP
599 @item CAN_DEBUG_WITHOUT_FP
600 Define this macro if debugging can be performed even without a frame
601 pointer.  If this macro is defined, GNU CC will turn on the
602 @samp{-fomit-frame-pointer} option whenever @samp{-O} is specified.
603 @end table
605 @node Storage Layout
606 @section Storage Layout
607 @cindex storage layout
609 Note that the definitions of the macros in this table which are sizes or
610 alignments measured in bits do not need to be constant.  They can be C
611 expressions that refer to static variables, such as the @code{target_flags}.
612 @xref{Run-time Target}.
614 @table @code
615 @findex BITS_BIG_ENDIAN
616 @item BITS_BIG_ENDIAN
617 Define this macro to have the value 1 if the most significant bit in a
618 byte has the lowest number; otherwise define it to have the value zero.
619 This means that bit-field instructions count from the most significant
620 bit.  If the machine has no bit-field instructions, then this must still
621 be defined, but it doesn't matter which value it is defined to.  This
622 macro need not be a constant.
624 This macro does not affect the way structure fields are packed into
625 bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}.
627 @findex BYTES_BIG_ENDIAN
628 @item BYTES_BIG_ENDIAN
629 Define this macro to have the value 1 if the most significant byte in a
630 word has the lowest number.  This macro need not be a constant.
632 @findex WORDS_BIG_ENDIAN
633 @item WORDS_BIG_ENDIAN
634 Define this macro to have the value 1 if, in a multiword object, the
635 most significant word has the lowest number.  This applies to both
636 memory locations and registers; GNU CC fundamentally assumes that the
637 order of words in memory is the same as the order in registers.  This
638 macro need not be a constant.
640 @findex LIBGCC2_WORDS_BIG_ENDIAN
641 @item LIBGCC2_WORDS_BIG_ENDIAN
642 Define this macro if WORDS_BIG_ENDIAN is not constant.  This must be a
643 constant value with the same meaning as WORDS_BIG_ENDIAN, which will be
644 used only when compiling libgcc2.c.  Typically the value will be set
645 based on preprocessor defines.
647 @findex FLOAT_WORDS_BIG_ENDIAN
648 @item FLOAT_WORDS_BIG_ENDIAN
649 Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
650 @code{TFmode} floating point numbers are stored in memory with the word
651 containing the sign bit at the lowest address; otherwise define it to
652 have the value 0.  This macro need not be a constant.
654 You need not define this macro if the ordering is the same as for
655 multi-word integers.
657 @findex BITS_PER_UNIT
658 @item BITS_PER_UNIT
659 Define this macro to be the number of bits in an addressable storage
660 unit (byte); normally 8.
662 @findex BITS_PER_WORD
663 @item BITS_PER_WORD
664 Number of bits in a word; normally 32.
666 @findex MAX_BITS_PER_WORD
667 @item MAX_BITS_PER_WORD
668 Maximum number of bits in a word.  If this is undefined, the default is
669 @code{BITS_PER_WORD}.  Otherwise, it is the constant value that is the
670 largest value that @code{BITS_PER_WORD} can have at run-time.
672 @findex UNITS_PER_WORD
673 @item UNITS_PER_WORD
674 Number of storage units in a word; normally 4.
676 @findex MIN_UNITS_PER_WORD
677 @item MIN_UNITS_PER_WORD
678 Minimum number of units in a word.  If this is undefined, the default is
679 @code{UNITS_PER_WORD}.  Otherwise, it is the constant value that is the
680 smallest value that @code{UNITS_PER_WORD} can have at run-time.
682 @findex POINTER_SIZE
683 @item POINTER_SIZE
684 Width of a pointer, in bits.  You must specify a value no wider than the
685 width of @code{Pmode}.  If it is not equal to the width of @code{Pmode},
686 you must define @code{POINTERS_EXTEND_UNSIGNED}.
688 @findex POINTERS_EXTEND_UNSIGNED
689 @item POINTERS_EXTEND_UNSIGNED
690 A C expression whose value is nonzero if pointers that need to be
691 extended from being @code{POINTER_SIZE} bits wide to @code{Pmode}
692 are sign-extended and zero if they are zero-extended.
694 You need not define this macro if the @code{POINTER_SIZE} is equal
695 to the width of @code{Pmode}.
697 @findex PROMOTE_MODE
698 @item PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type})
699 A macro to update @var{m} and @var{unsignedp} when an object whose type
700 is @var{type} and which has the specified mode and signedness is to be
701 stored in a register.  This macro is only called when @var{type} is a
702 scalar type.
704 On most RISC machines, which only have operations that operate on a full
705 register, define this macro to set @var{m} to @code{word_mode} if
706 @var{m} is an integer mode narrower than @code{BITS_PER_WORD}.  In most
707 cases, only integer modes should be widened because wider-precision
708 floating-point operations are usually more expensive than their narrower
709 counterparts.
711 For most machines, the macro definition does not change @var{unsignedp}.
712 However, some machines, have instructions that preferentially handle
713 either signed or unsigned quantities of certain modes.  For example, on
714 the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
715 sign-extend the result to 64 bits.  On such machines, set
716 @var{unsignedp} according to which kind of extension is more efficient.
718 Do not define this macro if it would never modify @var{m}.
720 @findex PROMOTE_FUNCTION_ARGS
721 @item PROMOTE_FUNCTION_ARGS
722 Define this macro if the promotion described by @code{PROMOTE_MODE}
723 should also be done for outgoing function arguments.
725 @findex PROMOTE_FUNCTION_RETURN
726 @item PROMOTE_FUNCTION_RETURN
727 Define this macro if the promotion described by @code{PROMOTE_MODE}
728 should also be done for the return value of functions.
730 If this macro is defined, @code{FUNCTION_VALUE} must perform the same
731 promotions done by @code{PROMOTE_MODE}.
733 @findex PROMOTE_FOR_CALL_ONLY
734 @item PROMOTE_FOR_CALL_ONLY
735 Define this macro if the promotion described by @code{PROMOTE_MODE}
736 should @emph{only} be performed for outgoing function arguments or
737 function return values, as specified by @code{PROMOTE_FUNCTION_ARGS}
738 and @code{PROMOTE_FUNCTION_RETURN}, respectively.
740 @findex PARM_BOUNDARY
741 @item PARM_BOUNDARY
742 Normal alignment required for function parameters on the stack, in
743 bits.  All stack parameters receive at least this much alignment
744 regardless of data type.  On most machines, this is the same as the
745 size of an integer.
747 @findex STACK_BOUNDARY
748 @item STACK_BOUNDARY
749 Define this macro if you wish to preserve a certain alignment for
750 the stack pointer.  The definition is a C expression
751 for the desired alignment (measured in bits).
753 @cindex @code{PUSH_ROUNDING}, interaction with @code{STACK_BOUNDARY}
754 If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned
755 to the specified boundary.  If @code{PUSH_ROUNDING} is defined and specifies a
756 less strict alignment than @code{STACK_BOUNDARY}, the stack may be
757 momentarily unaligned while pushing arguments.
759 @findex FUNCTION_BOUNDARY
760 @item FUNCTION_BOUNDARY
761 Alignment required for a function entry point, in bits.
763 @findex BIGGEST_ALIGNMENT
764 @item BIGGEST_ALIGNMENT
765 Biggest alignment that any data type can require on this machine, in bits.
767 @findex MINIMUM_ATOMIC_ALIGNMENT
768 @item MINIMUM_ATOMIC_ALIGNMENT
769 If defined, the smallest alignment, in bits, that can be given to an
770 object that can be referenced in one operation, without disturbing any
771 nearby object.  Normally, this is @code{BITS_PER_UNIT}, but may be larger
772 on machines that don't have byte or half-word store operations.
774 @findex BIGGEST_FIELD_ALIGNMENT
775 @item BIGGEST_FIELD_ALIGNMENT
776 Biggest alignment that any structure field can require on this machine,
777 in bits.  If defined, this overrides @code{BIGGEST_ALIGNMENT} for
778 structure fields only.
780 @findex ADJUST_FIELD_ALIGN
781 @item ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
782 An expression for the alignment of a structure field @var{field} if the
783 alignment computed in the usual way is @var{computed}.  GNU CC uses
784 this value instead of the value in @code{BIGGEST_ALIGNMENT} or
785 @code{BIGGEST_FIELD_ALIGNMENT}, if defined, for structure fields only.
787 @findex MAX_OFILE_ALIGNMENT
788 @item MAX_OFILE_ALIGNMENT
789 Biggest alignment supported by the object file format of this machine.
790 Use this macro to limit the alignment which can be specified using the
791 @code{__attribute__ ((aligned (@var{n})))} construct.  If not defined,
792 the default value is @code{BIGGEST_ALIGNMENT}.
794 @findex DATA_ALIGNMENT
795 @item DATA_ALIGNMENT (@var{type}, @var{basic-align})
796 If defined, a C expression to compute the alignment for a static
797 variable.  @var{type} is the data type, and @var{basic-align} is the
798 alignment that the object would ordinarily have.  The value of this
799 macro is used instead of that alignment to align the object.
801 If this macro is not defined, then @var{basic-align} is used.
803 @findex strcpy
804 One use of this macro is to increase alignment of medium-size data to
805 make it all fit in fewer cache lines.  Another is to cause character
806 arrays to be word-aligned so that @code{strcpy} calls that copy
807 constants to character arrays can be done inline.
809 @findex CONSTANT_ALIGNMENT
810 @item CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
811 If defined, a C expression to compute the alignment given to a constant
812 that is being placed in memory.  @var{constant} is the constant and
813 @var{basic-align} is the alignment that the object would ordinarily
814 have.  The value of this macro is used instead of that alignment to
815 align the object.
817 If this macro is not defined, then @var{basic-align} is used.
819 The typical use of this macro is to increase alignment for string
820 constants to be word aligned so that @code{strcpy} calls that copy
821 constants can be done inline.
823 @findex EMPTY_FIELD_BOUNDARY
824 @item EMPTY_FIELD_BOUNDARY
825 Alignment in bits to be given to a structure bit field that follows an
826 empty field such as @code{int : 0;}.
828 Note that @code{PCC_BITFIELD_TYPE_MATTERS} also affects the alignment
829 that results from an empty field.
831 @findex STRUCTURE_SIZE_BOUNDARY
832 @item STRUCTURE_SIZE_BOUNDARY
833 Number of bits which any structure or union's size must be a multiple of.
834 Each structure or union's size is rounded up to a multiple of this.
836 If you do not define this macro, the default is the same as
837 @code{BITS_PER_UNIT}.
839 @findex STRICT_ALIGNMENT
840 @item STRICT_ALIGNMENT
841 Define this macro to be the value 1 if instructions will fail to work
842 if given data not on the nominal alignment.  If instructions will merely
843 go slower in that case, define this macro as 0.
845 @findex PCC_BITFIELD_TYPE_MATTERS
846 @item PCC_BITFIELD_TYPE_MATTERS
847 Define this if you wish to imitate the way many other C compilers handle
848 alignment of bitfields and the structures that contain them.
850 The behavior is that the type written for a bitfield (@code{int},
851 @code{short}, or other integer type) imposes an alignment for the
852 entire structure, as if the structure really did contain an ordinary
853 field of that type.  In addition, the bitfield is placed within the
854 structure so that it would fit within such a field, not crossing a
855 boundary for it.
857 Thus, on most machines, a bitfield whose type is written as @code{int}
858 would not cross a four-byte boundary, and would force four-byte
859 alignment for the whole structure.  (The alignment used may not be four
860 bytes; it is controlled by the other alignment parameters.)
862 If the macro is defined, its definition should be a C expression;
863 a nonzero value for the expression enables this behavior.
865 Note that if this macro is not defined, or its value is zero, some
866 bitfields may cross more than one alignment boundary.  The compiler can
867 support such references if there are @samp{insv}, @samp{extv}, and
868 @samp{extzv} insns that can directly reference memory.
870 The other known way of making bitfields work is to define
871 @code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}.
872 Then every structure can be accessed with fullwords.
874 Unless the machine has bitfield instructions or you define
875 @code{STRUCTURE_SIZE_BOUNDARY} that way, you must define
876 @code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value.
878 If your aim is to make GNU CC use the same conventions for laying out
879 bitfields as are used by another compiler, here is how to investigate
880 what the other compiler does.  Compile and run this program:
882 @example
883 struct foo1
885   char x;
886   char :0;
887   char y;
890 struct foo2
892   char x;
893   int :0;
894   char y;
897 main ()
899   printf ("Size of foo1 is %d\n",
900           sizeof (struct foo1));
901   printf ("Size of foo2 is %d\n",
902           sizeof (struct foo2));
903   exit (0);
905 @end example
907 If this prints 2 and 5, then the compiler's behavior is what you would
908 get from @code{PCC_BITFIELD_TYPE_MATTERS}.
910 @findex BITFIELD_NBYTES_LIMITED
911 @item BITFIELD_NBYTES_LIMITED
912 Like PCC_BITFIELD_TYPE_MATTERS except that its effect is limited to
913 aligning a bitfield within the structure.
915 @findex ROUND_TYPE_SIZE
916 @item ROUND_TYPE_SIZE (@var{struct}, @var{size}, @var{align})
917 Define this macro as an expression for the overall size of a structure
918 (given by @var{struct} as a tree node) when the size computed from the
919 fields is @var{size} and the alignment is @var{align}.
921 The default is to round @var{size} up to a multiple of @var{align}.
923 @findex ROUND_TYPE_ALIGN
924 @item ROUND_TYPE_ALIGN (@var{struct}, @var{computed}, @var{specified})
925 Define this macro as an expression for the alignment of a structure
926 (given by @var{struct} as a tree node) if the alignment computed in the
927 usual way is @var{computed} and the alignment explicitly specified was
928 @var{specified}.
930 The default is to use @var{specified} if it is larger; otherwise, use
931 the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT}
933 @findex MAX_FIXED_MODE_SIZE
934 @item MAX_FIXED_MODE_SIZE
935 An integer expression for the size in bits of the largest integer
936 machine mode that should actually be used.  All integer machine modes of
937 this size or smaller can be used for structures and unions with the
938 appropriate sizes.  If this macro is undefined, @code{GET_MODE_BITSIZE
939 (DImode)} is assumed.
941 @findex CHECK_FLOAT_VALUE
942 @item CHECK_FLOAT_VALUE (@var{mode}, @var{value}, @var{overflow})
943 A C statement to validate the value @var{value} (of type
944 @code{double}) for mode @var{mode}.  This means that you check whether
945 @var{value} fits within the possible range of values for mode
946 @var{mode} on this target machine.  The mode @var{mode} is always
947 a mode of class @code{MODE_FLOAT}.  @var{overflow} is nonzero if
948 the value is already known to be out of range.
950 If @var{value} is not valid or if @var{overflow} is nonzero, you should
951 set @var{overflow} to 1 and then assign some valid value to @var{value}.
952 Allowing an invalid value to go through the compiler can produce
953 incorrect assembler code which may even cause Unix assemblers to crash.
955 This macro need not be defined if there is no work for it to do.
957 @findex TARGET_FLOAT_FORMAT
958 @item TARGET_FLOAT_FORMAT
959 A code distinguishing the floating point format of the target machine.
960 There are three defined values:
962 @table @code
963 @findex IEEE_FLOAT_FORMAT
964 @item IEEE_FLOAT_FORMAT
965 This code indicates IEEE floating point.  It is the default; there is no
966 need to define this macro when the format is IEEE.
968 @findex VAX_FLOAT_FORMAT
969 @item VAX_FLOAT_FORMAT
970 This code indicates the peculiar format used on the Vax.
972 @findex UNKNOWN_FLOAT_FORMAT
973 @item UNKNOWN_FLOAT_FORMAT
974 This code indicates any other format.
975 @end table
977 The value of this macro is compared with @code{HOST_FLOAT_FORMAT}
978 (@pxref{Config}) to determine whether the target machine has the same
979 format as the host machine.  If any other formats are actually in use on
980 supported machines, new codes should be defined for them.
982 The ordering of the component words of floating point values stored in
983 memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN} for the target
984 machine and @code{HOST_FLOAT_WORDS_BIG_ENDIAN} for the host.
985 @end table
987 @node Type Layout
988 @section Layout of Source Language Data Types
990 These macros define the sizes and other characteristics of the standard
991 basic data types used in programs being compiled.  Unlike the macros in
992 the previous section, these apply to specific features of C and related
993 languages, rather than to fundamental aspects of storage layout.
995 @table @code
996 @findex INT_TYPE_SIZE
997 @item INT_TYPE_SIZE
998 A C expression for the size in bits of the type @code{int} on the
999 target machine.  If you don't define this, the default is one word.
1001 @findex MAX_INT_TYPE_SIZE
1002 @item MAX_INT_TYPE_SIZE
1003 Maximum number for the size in bits of the type @code{int} on the target
1004 machine.  If this is undefined, the default is @code{INT_TYPE_SIZE}.
1005 Otherwise, it is the constant value that is the largest value that
1006 @code{INT_TYPE_SIZE} can have at run-time.  This is used in @code{cpp}.
1008 @findex SHORT_TYPE_SIZE
1009 @item SHORT_TYPE_SIZE
1010 A C expression for the size in bits of the type @code{short} on the
1011 target machine.  If you don't define this, the default is half a word.
1012 (If this would be less than one storage unit, it is rounded up to one
1013 unit.)
1015 @findex LONG_TYPE_SIZE
1016 @item LONG_TYPE_SIZE
1017 A C expression for the size in bits of the type @code{long} on the
1018 target machine.  If you don't define this, the default is one word.
1020 @findex MAX_LONG_TYPE_SIZE
1021 @item MAX_LONG_TYPE_SIZE
1022 Maximum number for the size in bits of the type @code{long} on the
1023 target machine.  If this is undefined, the default is
1024 @code{LONG_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1025 largest value that @code{LONG_TYPE_SIZE} can have at run-time.  This is
1026 used in @code{cpp}.
1028 @findex LONG_LONG_TYPE_SIZE
1029 @item LONG_LONG_TYPE_SIZE
1030 A C expression for the size in bits of the type @code{long long} on the
1031 target machine.  If you don't define this, the default is two
1032 words.  If you want to support GNU Ada on your machine, the value of
1033 macro must be at least 64.
1035 @findex CHAR_TYPE_SIZE
1036 @item CHAR_TYPE_SIZE
1037 A C expression for the size in bits of the type @code{char} on the
1038 target machine.  If you don't define this, the default is one quarter
1039 of a word.  (If this would be less than one storage unit, it is rounded up
1040 to one unit.)
1042 @findex MAX_CHAR_TYPE_SIZE
1043 @item MAX_CHAR_TYPE_SIZE
1044 Maximum number for the size in bits of the type @code{char} on the
1045 target machine.  If this is undefined, the default is
1046 @code{CHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1047 largest value that @code{CHAR_TYPE_SIZE} can have at run-time.  This is
1048 used in @code{cpp}.
1050 @findex FLOAT_TYPE_SIZE
1051 @item FLOAT_TYPE_SIZE
1052 A C expression for the size in bits of the type @code{float} on the
1053 target machine.  If you don't define this, the default is one word.
1055 @findex DOUBLE_TYPE_SIZE
1056 @item DOUBLE_TYPE_SIZE
1057 A C expression for the size in bits of the type @code{double} on the
1058 target machine.  If you don't define this, the default is two
1059 words.
1061 @findex LONG_DOUBLE_TYPE_SIZE
1062 @item LONG_DOUBLE_TYPE_SIZE
1063 A C expression for the size in bits of the type @code{long double} on
1064 the target machine.  If you don't define this, the default is two
1065 words.
1067 @findex DEFAULT_SIGNED_CHAR
1068 @item DEFAULT_SIGNED_CHAR
1069 An expression whose value is 1 or 0, according to whether the type
1070 @code{char} should be signed or unsigned by default.  The user can
1071 always override this default with the options @samp{-fsigned-char}
1072 and @samp{-funsigned-char}.
1074 @findex DEFAULT_SHORT_ENUMS
1075 @item DEFAULT_SHORT_ENUMS
1076 A C expression to determine whether to give an @code{enum} type
1077 only as many bytes as it takes to represent the range of possible values
1078 of that type.  A nonzero value means to do that; a zero value means all
1079 @code{enum} types should be allocated like @code{int}.
1081 If you don't define the macro, the default is 0.
1083 @findex SIZE_TYPE
1084 @item SIZE_TYPE
1085 A C expression for a string describing the name of the data type to use
1086 for size values.  The typedef name @code{size_t} is defined using the
1087 contents of the string.
1089 The string can contain more than one keyword.  If so, separate them with
1090 spaces, and write first any length keyword, then @code{unsigned} if
1091 appropriate, and finally @code{int}.  The string must exactly match one
1092 of the data type names defined in the function
1093 @code{init_decl_processing} in the file @file{c-decl.c}.  You may not
1094 omit @code{int} or change the order---that would cause the compiler to
1095 crash on startup.
1097 If you don't define this macro, the default is @code{"long unsigned
1098 int"}.
1100 @findex PTRDIFF_TYPE
1101 @item PTRDIFF_TYPE
1102 A C expression for a string describing the name of the data type to use
1103 for the result of subtracting two pointers.  The typedef name
1104 @code{ptrdiff_t} is defined using the contents of the string.  See
1105 @code{SIZE_TYPE} above for more information.
1107 If you don't define this macro, the default is @code{"long int"}.
1109 @findex WCHAR_TYPE
1110 @item WCHAR_TYPE
1111 A C expression for a string describing the name of the data type to use
1112 for wide characters.  The typedef name @code{wchar_t} is defined using
1113 the contents of the string.  See @code{SIZE_TYPE} above for more
1114 information.
1116 If you don't define this macro, the default is @code{"int"}.
1118 @findex WCHAR_TYPE_SIZE
1119 @item WCHAR_TYPE_SIZE
1120 A C expression for the size in bits of the data type for wide
1121 characters.  This is used in @code{cpp}, which cannot make use of
1122 @code{WCHAR_TYPE}.
1124 @findex MAX_WCHAR_TYPE_SIZE
1125 @item MAX_WCHAR_TYPE_SIZE
1126 Maximum number for the size in bits of the data type for wide
1127 characters.  If this is undefined, the default is
1128 @code{WCHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1129 largest value that @code{WCHAR_TYPE_SIZE} can have at run-time.  This is
1130 used in @code{cpp}.
1132 @findex OBJC_INT_SELECTORS
1133 @item OBJC_INT_SELECTORS
1134 Define this macro if the type of Objective C selectors should be
1135 @code{int}.
1137 If this macro is not defined, then selectors should have the type
1138 @code{struct objc_selector *}.
1140 @findex OBJC_SELECTORS_WITHOUT_LABELS
1141 @item OBJC_SELECTORS_WITHOUT_LABELS
1142 Define this macro if the compiler can group all the selectors together
1143 into a vector and use just one label at the beginning of the vector.
1144 Otherwise, the compiler must give each selector its own assembler
1145 label.
1147 On certain machines, it is important to have a separate label for each
1148 selector because this enables the linker to eliminate duplicate selectors.
1150 @findex TARGET_BELL
1151 @item TARGET_BELL
1152 A C constant expression for the integer value for escape sequence
1153 @samp{\a}.
1155 @findex TARGET_TAB
1156 @findex TARGET_BS
1157 @findex TARGET_NEWLINE
1158 @item TARGET_BS
1159 @itemx TARGET_TAB
1160 @itemx TARGET_NEWLINE
1161 C constant expressions for the integer values for escape sequences
1162 @samp{\b}, @samp{\t} and @samp{\n}.
1164 @findex TARGET_VT
1165 @findex TARGET_FF
1166 @findex TARGET_CR
1167 @item TARGET_VT
1168 @itemx TARGET_FF
1169 @itemx TARGET_CR
1170 C constant expressions for the integer values for escape sequences
1171 @samp{\v}, @samp{\f} and @samp{\r}.
1172 @end table
1174 @node Registers
1175 @section Register Usage
1176 @cindex register usage
1178 This section explains how to describe what registers the target machine
1179 has, and how (in general) they can be used.
1181 The description of which registers a specific instruction can use is
1182 done with register classes; see @ref{Register Classes}.  For information
1183 on using registers to access a stack frame, see @ref{Frame Registers}.
1184 For passing values in registers, see @ref{Register Arguments}.
1185 For returning values in registers, see @ref{Scalar Return}.
1187 @menu
1188 * Register Basics::             Number and kinds of registers.
1189 * Allocation Order::            Order in which registers are allocated.
1190 * Values in Registers::         What kinds of values each reg can hold.
1191 * Leaf Functions::              Renumbering registers for leaf functions.
1192 * Stack Registers::             Handling a register stack such as 80387.
1193 * Obsolete Register Macros::    Macros formerly used for the 80387.
1194 @end menu
1196 @node Register Basics
1197 @subsection Basic Characteristics of Registers
1199 @c prevent bad page break with this line
1200 Registers have various characteristics.
1202 @table @code
1203 @findex FIRST_PSEUDO_REGISTER
1204 @item FIRST_PSEUDO_REGISTER
1205 Number of hardware registers known to the compiler.  They receive
1206 numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
1207 pseudo register's number really is assigned the number
1208 @code{FIRST_PSEUDO_REGISTER}.
1210 @item FIXED_REGISTERS
1211 @findex FIXED_REGISTERS
1212 @cindex fixed register
1213 An initializer that says which registers are used for fixed purposes
1214 all throughout the compiled code and are therefore not available for
1215 general allocation.  These would include the stack pointer, the frame
1216 pointer (except on machines where that can be used as a general
1217 register when no frame pointer is needed), the program counter on
1218 machines where that is considered one of the addressable registers,
1219 and any other numbered register with a standard use.
1221 This information is expressed as a sequence of numbers, separated by
1222 commas and surrounded by braces.  The @var{n}th number is 1 if
1223 register @var{n} is fixed, 0 otherwise.
1225 The table initialized from this macro, and the table initialized by
1226 the following one, may be overridden at run time either automatically,
1227 by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
1228 the user with the command options @samp{-ffixed-@var{reg}},
1229 @samp{-fcall-used-@var{reg}} and @samp{-fcall-saved-@var{reg}}.
1231 @findex CALL_USED_REGISTERS
1232 @item CALL_USED_REGISTERS
1233 @cindex call-used register
1234 @cindex call-clobbered register
1235 @cindex call-saved register
1236 Like @code{FIXED_REGISTERS} but has 1 for each register that is
1237 clobbered (in general) by function calls as well as for fixed
1238 registers.  This macro therefore identifies the registers that are not
1239 available for general allocation of values that must live across
1240 function calls.
1242 If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler
1243 automatically saves it on function entry and restores it on function
1244 exit, if the register is used within the function.
1246 @findex CONDITIONAL_REGISTER_USAGE
1247 @findex fixed_regs
1248 @findex call_used_regs
1249 @item CONDITIONAL_REGISTER_USAGE
1250 Zero or more C statements that may conditionally modify two variables
1251 @code{fixed_regs} and @code{call_used_regs} (both of type @code{char
1252 []}) after they have been initialized from the two preceding macros.
1254 This is necessary in case the fixed or call-clobbered registers depend
1255 on target flags.
1257 You need not define this macro if it has no work to do.
1259 @cindex disabling certain registers
1260 @cindex controlling register usage
1261 If the usage of an entire class of registers depends on the target
1262 flags, you may indicate this to GCC by using this macro to modify
1263 @code{fixed_regs} and @code{call_used_regs} to 1 for each of the
1264 registers in the classes which should not be used by GCC.  Also define
1265 the macro @code{REG_CLASS_FROM_LETTER} to return @code{NO_REGS} if it
1266 is called with a letter for a class that shouldn't be used.
1268 (However, if this class is not included in @code{GENERAL_REGS} and all
1269 of the insn patterns whose constraints permit this class are
1270 controlled by target switches, then GCC will automatically avoid using
1271 these registers when the target switches are opposed to them.)
1273 @findex NON_SAVING_SETJMP
1274 @item NON_SAVING_SETJMP
1275 If this macro is defined and has a nonzero value, it means that
1276 @code{setjmp} and related functions fail to save the registers, or that
1277 @code{longjmp} fails to restore them.  To compensate, the compiler
1278 avoids putting variables in registers in functions that use
1279 @code{setjmp}.
1281 @findex INCOMING_REGNO
1282 @item INCOMING_REGNO (@var{out})
1283 Define this macro if the target machine has register windows.  This C
1284 expression returns the register number as seen by the called function
1285 corresponding to the register number @var{out} as seen by the calling
1286 function.  Return @var{out} if register number @var{out} is not an
1287 outbound register.
1289 @findex OUTGOING_REGNO
1290 @item OUTGOING_REGNO (@var{in})
1291 Define this macro if the target machine has register windows.  This C
1292 expression returns the register number as seen by the calling function
1293 corresponding to the register number @var{in} as seen by the called
1294 function.  Return @var{in} if register number @var{in} is not an inbound
1295 register.
1297 @ignore
1298 @findex PC_REGNUM
1299 @item PC_REGNUM
1300 If the program counter has a register number, define this as that
1301 register number.  Otherwise, do not define it.
1302 @end ignore
1303 @end table
1305 @node Allocation Order
1306 @subsection Order of Allocation of Registers
1307 @cindex order of register allocation
1308 @cindex register allocation order
1310 @c prevent bad page break with this line
1311 Registers are allocated in order.
1313 @table @code
1314 @findex REG_ALLOC_ORDER
1315 @item REG_ALLOC_ORDER
1316 If defined, an initializer for a vector of integers, containing the
1317 numbers of hard registers in the order in which GNU CC should prefer
1318 to use them (from most preferred to least).
1320 If this macro is not defined, registers are used lowest numbered first
1321 (all else being equal).
1323 One use of this macro is on machines where the highest numbered
1324 registers must always be saved and the save-multiple-registers
1325 instruction supports only sequences of consecutive registers.  On such
1326 machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists
1327 the highest numbered allocatable register first.
1329 @findex ORDER_REGS_FOR_LOCAL_ALLOC
1330 @item ORDER_REGS_FOR_LOCAL_ALLOC
1331 A C statement (sans semicolon) to choose the order in which to allocate
1332 hard registers for pseudo-registers local to a basic block.
1334 Store the desired register order in the array @code{reg_alloc_order}.
1335 Element 0 should be the register to allocate first; element 1, the next
1336 register; and so on.
1338 The macro body should not assume anything about the contents of
1339 @code{reg_alloc_order} before execution of the macro.
1341 On most machines, it is not necessary to define this macro.
1342 @end table
1344 @node Values in Registers
1345 @subsection How Values Fit in Registers
1347 This section discusses the macros that describe which kinds of values
1348 (specifically, which machine modes) each register can hold, and how many
1349 consecutive registers are needed for a given mode.
1351 @table @code
1352 @findex HARD_REGNO_NREGS
1353 @item HARD_REGNO_NREGS (@var{regno}, @var{mode})
1354 A C expression for the number of consecutive hard registers, starting
1355 at register number @var{regno}, required to hold a value of mode
1356 @var{mode}.
1358 On a machine where all registers are exactly one word, a suitable
1359 definition of this macro is
1361 @smallexample
1362 #define HARD_REGNO_NREGS(REGNO, MODE)            \
1363    ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
1364     / UNITS_PER_WORD))
1365 @end smallexample
1367 @findex HARD_REGNO_MODE_OK
1368 @item HARD_REGNO_MODE_OK (@var{regno}, @var{mode})
1369 A C expression that is nonzero if it is permissible to store a value
1370 of mode @var{mode} in hard register number @var{regno} (or in several
1371 registers starting with that one).  For a machine where all registers
1372 are equivalent, a suitable definition is
1374 @smallexample
1375 #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
1376 @end smallexample
1378 It is not necessary for this macro to check for the numbers of fixed
1379 registers, because the allocation mechanism considers them to be always
1380 occupied.
1382 @cindex register pairs
1383 On some machines, double-precision values must be kept in even/odd
1384 register pairs.  The way to implement that is to define this macro
1385 to reject odd register numbers for such modes.
1387 @ignore
1388 @c I think this is not true now
1389 GNU CC assumes that it can always move values between registers and
1390 (suitably addressed) memory locations.  If it is impossible to move a
1391 value of a certain mode between memory and certain registers, then
1392 @code{HARD_REGNO_MODE_OK} must not allow this mode in those registers.
1393 @end ignore
1395 The minimum requirement for a mode to be OK in a register is that the
1396 @samp{mov@var{mode}} instruction pattern support moves between the
1397 register and any other hard register for which the mode is OK; and that
1398 moving a value into the register and back out not alter it.
1400 Since the same instruction used to move @code{SImode} will work for all
1401 narrower integer modes, it is not necessary on any machine for
1402 @code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided
1403 you define patterns @samp{movhi}, etc., to take advantage of this.  This
1404 is useful because of the interaction between @code{HARD_REGNO_MODE_OK}
1405 and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes
1406 to be tieable.
1408 Many machines have special registers for floating point arithmetic.
1409 Often people assume that floating point machine modes are allowed only
1410 in floating point registers.  This is not true.  Any registers that
1411 can hold integers can safely @emph{hold} a floating point machine
1412 mode, whether or not floating arithmetic can be done on it in those
1413 registers.  Integer move instructions can be used to move the values.
1415 On some machines, though, the converse is true: fixed-point machine
1416 modes may not go in floating registers.  This is true if the floating
1417 registers normalize any value stored in them, because storing a
1418 non-floating value there would garble it.  In this case,
1419 @code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in
1420 floating registers.  But if the floating registers do not automatically
1421 normalize, if you can store any bit pattern in one and retrieve it
1422 unchanged without a trap, then any machine mode may go in a floating
1423 register, so you can define this macro to say so.
1425 The primary significance of special floating registers is rather that
1426 they are the registers acceptable in floating point arithmetic
1427 instructions.  However, this is of no concern to
1428 @code{HARD_REGNO_MODE_OK}.  You handle it by writing the proper
1429 constraints for those instructions.
1431 On some machines, the floating registers are especially slow to access,
1432 so that it is better to store a value in a stack frame than in such a
1433 register if floating point arithmetic is not being done.  As long as the
1434 floating registers are not in class @code{GENERAL_REGS}, they will not
1435 be used unless some pattern's constraint asks for one.
1437 @findex MODES_TIEABLE_P
1438 @item MODES_TIEABLE_P (@var{mode1}, @var{mode2})
1439 A C expression that is nonzero if it is desirable to choose register
1440 allocation so as to avoid move instructions between a value of mode
1441 @var{mode1} and a value of mode @var{mode2}.
1443 If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and
1444 @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are ever different
1445 for any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1},
1446 @var{mode2})} must be zero.
1447 @end table
1449 @node Leaf Functions
1450 @subsection Handling Leaf Functions
1452 @cindex leaf functions
1453 @cindex functions, leaf
1454 On some machines, a leaf function (i.e., one which makes no calls) can run
1455 more efficiently if it does not make its own register window.  Often this
1456 means it is required to receive its arguments in the registers where they
1457 are passed by the caller, instead of the registers where they would
1458 normally arrive.
1460 The special treatment for leaf functions generally applies only when
1461 other conditions are met; for example, often they may use only those
1462 registers for its own variables and temporaries.  We use the term ``leaf
1463 function'' to mean a function that is suitable for this special
1464 handling, so that functions with no calls are not necessarily ``leaf
1465 functions''.
1467 GNU CC assigns register numbers before it knows whether the function is
1468 suitable for leaf function treatment.  So it needs to renumber the
1469 registers in order to output a leaf function.  The following macros
1470 accomplish this.
1472 @table @code
1473 @findex LEAF_REGISTERS
1474 @item LEAF_REGISTERS
1475 A C initializer for a vector, indexed by hard register number, which
1476 contains 1 for a register that is allowable in a candidate for leaf
1477 function treatment.
1479 If leaf function treatment involves renumbering the registers, then the
1480 registers marked here should be the ones before renumbering---those that
1481 GNU CC would ordinarily allocate.  The registers which will actually be
1482 used in the assembler code, after renumbering, should not be marked with 1
1483 in this vector.
1485 Define this macro only if the target machine offers a way to optimize
1486 the treatment of leaf functions.
1488 @findex LEAF_REG_REMAP
1489 @item LEAF_REG_REMAP (@var{regno})
1490 A C expression whose value is the register number to which @var{regno}
1491 should be renumbered, when a function is treated as a leaf function.
1493 If @var{regno} is a register number which should not appear in a leaf
1494 function before renumbering, then the expression should yield -1, which
1495 will cause the compiler to abort.
1497 Define this macro only if the target machine offers a way to optimize the
1498 treatment of leaf functions, and registers need to be renumbered to do
1499 this.
1500 @end table
1502 @findex leaf_function
1503 Normally, @code{FUNCTION_PROLOGUE} and @code{FUNCTION_EPILOGUE} must
1504 treat leaf functions specially.  It can test the C variable
1505 @code{leaf_function} which is nonzero for leaf functions.  (The variable
1506 @code{leaf_function} is defined only if @code{LEAF_REGISTERS} is
1507 defined.)
1508 @c changed this to fix overfull.  ALSO:  why the "it" at the beginning
1509 @c of the next paragraph?!  --mew 2feb93
1511 @node Stack Registers
1512 @subsection Registers That Form a Stack
1514 There are special features to handle computers where some of the
1515 ``registers'' form a stack, as in the 80387 coprocessor for the 80386.
1516 Stack registers are normally written by pushing onto the stack, and are
1517 numbered relative to the top of the stack.
1519 Currently, GNU CC can only handle one group of stack-like registers, and
1520 they must be consecutively numbered.
1522 @table @code
1523 @findex STACK_REGS
1524 @item STACK_REGS
1525 Define this if the machine has any stack-like registers.
1527 @findex FIRST_STACK_REG
1528 @item FIRST_STACK_REG
1529 The number of the first stack-like register.  This one is the top
1530 of the stack.
1532 @findex LAST_STACK_REG
1533 @item LAST_STACK_REG
1534 The number of the last stack-like register.  This one is the bottom of
1535 the stack.
1536 @end table
1538 @node Obsolete Register Macros
1539 @subsection Obsolete Macros for Controlling Register Usage
1541 These features do not work very well.  They exist because they used to
1542 be required to generate correct code for the 80387 coprocessor of the
1543 80386.  They are no longer used by that machine description and may be
1544 removed in a later version of the compiler.  Don't use them!
1546 @table @code
1547 @findex OVERLAPPING_REGNO_P
1548 @item OVERLAPPING_REGNO_P (@var{regno})
1549 If defined, this is a C expression whose value is nonzero if hard
1550 register number @var{regno} is an overlapping register.  This means a
1551 hard register which overlaps a hard register with a different number.
1552 (Such overlap is undesirable, but occasionally it allows a machine to
1553 be supported which otherwise could not be.)  This macro must return
1554 nonzero for @emph{all} the registers which overlap each other.  GNU CC
1555 can use an overlapping register only in certain limited ways.  It can
1556 be used for allocation within a basic block, and may be spilled for
1557 reloading; that is all.
1559 If this macro is not defined, it means that none of the hard registers
1560 overlap each other.  This is the usual situation.
1562 @findex INSN_CLOBBERS_REGNO_P
1563 @item INSN_CLOBBERS_REGNO_P (@var{insn}, @var{regno})
1564 If defined, this is a C expression whose value should be nonzero if
1565 the insn @var{insn} has the effect of mysteriously clobbering the
1566 contents of hard register number @var{regno}.  By ``mysterious'' we
1567 mean that the insn's RTL expression doesn't describe such an effect.
1569 If this macro is not defined, it means that no insn clobbers registers
1570 mysteriously.  This is the usual situation; all else being equal,
1571 it is best for the RTL expression to show all the activity.
1573 @cindex death notes
1574 @findex PRESERVE_DEATH_INFO_REGNO_P
1575 @item PRESERVE_DEATH_INFO_REGNO_P (@var{regno})
1576 If defined, this is a C expression whose value is nonzero if correct
1577 @code{REG_DEAD} notes are needed for hard register number @var{regno}
1578 after reload.
1580 You would arrange to preserve death info for a register when some of the
1581 code in the machine description which is executed to write the assembler
1582 code looks at the death notes.  This is necessary only when the actual
1583 hardware feature which GNU CC thinks of as a register is not actually a
1584 register of the usual sort.  (It might, for example, be a hardware
1585 stack.)
1587 It is also useful for peepholes and linker relaxation.
1589 If this macro is not defined, it means that no death notes need to be
1590 preserved, and some may even be incorrect.  This is the usual situation.
1591 @end table
1593 @node Register Classes
1594 @section Register Classes
1595 @cindex register class definitions
1596 @cindex class definitions, register
1598 On many machines, the numbered registers are not all equivalent.
1599 For example, certain registers may not be allowed for indexed addressing;
1600 certain registers may not be allowed in some instructions.  These machine
1601 restrictions are described to the compiler using @dfn{register classes}.
1603 You define a number of register classes, giving each one a name and saying
1604 which of the registers belong to it.  Then you can specify register classes
1605 that are allowed as operands to particular instruction patterns.
1607 @findex ALL_REGS
1608 @findex NO_REGS
1609 In general, each register will belong to several classes.  In fact, one
1610 class must be named @code{ALL_REGS} and contain all the registers.  Another
1611 class must be named @code{NO_REGS} and contain no registers.  Often the
1612 union of two classes will be another class; however, this is not required.
1614 @findex GENERAL_REGS
1615 One of the classes must be named @code{GENERAL_REGS}.  There is nothing
1616 terribly special about the name, but the operand constraint letters
1617 @samp{r} and @samp{g} specify this class.  If @code{GENERAL_REGS} is
1618 the same as @code{ALL_REGS}, just define it as a macro which expands
1619 to @code{ALL_REGS}.
1621 Order the classes so that if class @var{x} is contained in class @var{y}
1622 then @var{x} has a lower class number than @var{y}.
1624 The way classes other than @code{GENERAL_REGS} are specified in operand
1625 constraints is through machine-dependent operand constraint letters.
1626 You can define such letters to correspond to various classes, then use
1627 them in operand constraints.
1629 You should define a class for the union of two classes whenever some
1630 instruction allows both classes.  For example, if an instruction allows
1631 either a floating point (coprocessor) register or a general register for a
1632 certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS}
1633 which includes both of them.  Otherwise you will get suboptimal code.
1635 You must also specify certain redundant information about the register
1636 classes: for each class, which classes contain it and which ones are
1637 contained in it; for each pair of classes, the largest class contained
1638 in their union.
1640 When a value occupying several consecutive registers is expected in a
1641 certain class, all the registers used must belong to that class.
1642 Therefore, register classes cannot be used to enforce a requirement for
1643 a register pair to start with an even-numbered register.  The way to
1644 specify this requirement is with @code{HARD_REGNO_MODE_OK}.
1646 Register classes used for input-operands of bitwise-and or shift
1647 instructions have a special requirement: each such class must have, for
1648 each fixed-point machine mode, a subclass whose registers can transfer that
1649 mode to or from memory.  For example, on some machines, the operations for
1650 single-byte values (@code{QImode}) are limited to certain registers.  When
1651 this is so, each register class that is used in a bitwise-and or shift
1652 instruction must have a subclass consisting of registers from which
1653 single-byte values can be loaded or stored.  This is so that
1654 @code{PREFERRED_RELOAD_CLASS} can always have a possible value to return.
1656 @table @code
1657 @findex enum reg_class
1658 @item enum reg_class
1659 An enumeral type that must be defined with all the register class names
1660 as enumeral values.  @code{NO_REGS} must be first.  @code{ALL_REGS}
1661 must be the last register class, followed by one more enumeral value,
1662 @code{LIM_REG_CLASSES}, which is not a register class but rather
1663 tells how many classes there are.
1665 Each register class has a number, which is the value of casting
1666 the class name to type @code{int}.  The number serves as an index
1667 in many of the tables described below.
1669 @findex N_REG_CLASSES
1670 @item N_REG_CLASSES
1671 The number of distinct register classes, defined as follows:
1673 @example
1674 #define N_REG_CLASSES (int) LIM_REG_CLASSES
1675 @end example
1677 @findex REG_CLASS_NAMES
1678 @item REG_CLASS_NAMES
1679 An initializer containing the names of the register classes as C string
1680 constants.  These names are used in writing some of the debugging dumps.
1682 @findex REG_CLASS_CONTENTS
1683 @item REG_CLASS_CONTENTS
1684 An initializer containing the contents of the register classes, as integers
1685 which are bit masks.  The @var{n}th integer specifies the contents of class
1686 @var{n}.  The way the integer @var{mask} is interpreted is that
1687 register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1.
1689 When the machine has more than 32 registers, an integer does not suffice.
1690 Then the integers are replaced by sub-initializers, braced groupings containing
1691 several integers.  Each sub-initializer must be suitable as an initializer
1692 for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}.
1694 @findex REGNO_REG_CLASS
1695 @item REGNO_REG_CLASS (@var{regno})
1696 A C expression whose value is a register class containing hard register
1697 @var{regno}.  In general there is more than one such class; choose a class
1698 which is @dfn{minimal}, meaning that no smaller class also contains the
1699 register.
1701 @findex BASE_REG_CLASS
1702 @item BASE_REG_CLASS
1703 A macro whose definition is the name of the class to which a valid
1704 base register must belong.  A base register is one used in an address
1705 which is the register value plus a displacement.
1707 @findex INDEX_REG_CLASS
1708 @item INDEX_REG_CLASS
1709 A macro whose definition is the name of the class to which a valid
1710 index register must belong.  An index register is one used in an
1711 address where its value is either multiplied by a scale factor or
1712 added to another register (as well as added to a displacement).
1714 @findex REG_CLASS_FROM_LETTER
1715 @item REG_CLASS_FROM_LETTER (@var{char})
1716 A C expression which defines the machine-dependent operand constraint
1717 letters for register classes.  If @var{char} is such a letter, the
1718 value should be the register class corresponding to it.  Otherwise,
1719 the value should be @code{NO_REGS}.  The register letter @samp{r},
1720 corresponding to class @code{GENERAL_REGS}, will not be passed
1721 to this macro; you do not need to handle it.
1723 @findex REGNO_OK_FOR_BASE_P
1724 @item REGNO_OK_FOR_BASE_P (@var{num})
1725 A C expression which is nonzero if register number @var{num} is
1726 suitable for use as a base register in operand addresses.  It may be
1727 either a suitable hard register or a pseudo register that has been
1728 allocated such a hard register.
1730 @findex REGNO_MODE_OK_FOR_BASE_P
1731 @item REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
1732 A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
1733 that expression may examine the mode of the memory reference in
1734 @var{mode}.  You should define this macro if the mode of the memory
1735 reference affects whether a register may be used as a base register.  If
1736 you define this macro, the compiler will use it instead of
1737 @code{REGNO_OK_FOR_BASE_P}.
1739 @findex REGNO_OK_FOR_INDEX_P
1740 @item REGNO_OK_FOR_INDEX_P (@var{num})
1741 A C expression which is nonzero if register number @var{num} is
1742 suitable for use as an index register in operand addresses.  It may be
1743 either a suitable hard register or a pseudo register that has been
1744 allocated such a hard register.
1746 The difference between an index register and a base register is that
1747 the index register may be scaled.  If an address involves the sum of
1748 two registers, neither one of them scaled, then either one may be
1749 labeled the ``base'' and the other the ``index''; but whichever
1750 labeling is used must fit the machine's constraints of which registers
1751 may serve in each capacity.  The compiler will try both labelings,
1752 looking for one that is valid, and will reload one or both registers
1753 only if neither labeling works.
1755 @findex PREFERRED_RELOAD_CLASS
1756 @item PREFERRED_RELOAD_CLASS (@var{x}, @var{class})
1757 A C expression that places additional restrictions on the register class
1758 to use when it is necessary to copy value @var{x} into a register in class
1759 @var{class}.  The value is a register class; perhaps @var{class}, or perhaps
1760 another, smaller class.  On many machines, the following definition is
1761 safe:
1763 @example
1764 #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
1765 @end example
1767 Sometimes returning a more restrictive class makes better code.  For
1768 example, on the 68000, when @var{x} is an integer constant that is in range
1769 for a @samp{moveq} instruction, the value of this macro is always
1770 @code{DATA_REGS} as long as @var{class} includes the data registers.
1771 Requiring a data register guarantees that a @samp{moveq} will be used.
1773 If @var{x} is a @code{const_double}, by returning @code{NO_REGS}
1774 you can force @var{x} into a memory constant.  This is useful on
1775 certain machines where immediate floating values cannot be loaded into
1776 certain kinds of registers.
1778 @findex PREFERRED_OUTPUT_RELOAD_CLASS
1779 @item PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class})
1780 Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of
1781 input reloads.  If you don't define this macro, the default is to use
1782 @var{class}, unchanged.
1784 @findex LIMIT_RELOAD_CLASS
1785 @item LIMIT_RELOAD_CLASS (@var{mode}, @var{class})
1786 A C expression that places additional restrictions on the register class
1787 to use when it is necessary to be able to hold a value of mode
1788 @var{mode} in a reload register for which class @var{class} would
1789 ordinarily be used.
1791 Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when
1792 there are certain modes that simply can't go in certain reload classes.
1794 The value is a register class; perhaps @var{class}, or perhaps another,
1795 smaller class.
1797 Don't define this macro unless the target machine has limitations which
1798 require the macro to do something nontrivial.
1800 @findex SECONDARY_RELOAD_CLASS
1801 @findex SECONDARY_INPUT_RELOAD_CLASS
1802 @findex SECONDARY_OUTPUT_RELOAD_CLASS
1803 @item SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
1804 @itemx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
1805 @itemx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
1806 Many machines have some registers that cannot be copied directly to or
1807 from memory or even from other types of registers.  An example is the
1808 @samp{MQ} register, which on most machines, can only be copied to or
1809 from general registers, but not memory.  Some machines allow copying all
1810 registers to and from memory, but require a scratch register for stores
1811 to some memory locations (e.g., those with symbolic address on the RT,
1812 and those with certain symbolic address on the Sparc when compiling
1813 PIC).  In some cases, both an intermediate and a scratch register are
1814 required.
1816 You should define these macros to indicate to the reload phase that it may
1817 need to allocate at least one register for a reload in addition to the
1818 register to contain the data.  Specifically, if copying @var{x} to a
1819 register @var{class} in @var{mode} requires an intermediate register,
1820 you should define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the
1821 largest register class all of whose registers can be used as
1822 intermediate registers or scratch registers.
1824 If copying a register @var{class} in @var{mode} to @var{x} requires an
1825 intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS}
1826 should be defined to return the largest register class required.  If the
1827 requirements for input and output reloads are the same, the macro
1828 @code{SECONDARY_RELOAD_CLASS} should be used instead of defining both
1829 macros identically.
1831 The values returned by these macros are often @code{GENERAL_REGS}.
1832 Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x}
1833 can be directly copied to or from a register of @var{class} in
1834 @var{mode} without requiring a scratch register.  Do not define this
1835 macro if it would always return @code{NO_REGS}.
1837 If a scratch register is required (either with or without an
1838 intermediate register), you should define patterns for
1839 @samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required
1840 (@pxref{Standard Names}.  These patterns, which will normally be
1841 implemented with a @code{define_expand}, should be similar to the
1842 @samp{mov@var{m}} patterns, except that operand 2 is the scratch
1843 register.
1845 Define constraints for the reload register and scratch register that
1846 contain a single register class.  If the original reload register (whose
1847 class is @var{class}) can meet the constraint given in the pattern, the
1848 value returned by these macros is used for the class of the scratch
1849 register.  Otherwise, two additional reload registers are required.
1850 Their classes are obtained from the constraints in the insn pattern.
1852 @var{x} might be a pseudo-register or a @code{subreg} of a
1853 pseudo-register, which could either be in a hard register or in memory.
1854 Use @code{true_regnum} to find out; it will return -1 if the pseudo is
1855 in memory and the hard register number if it is in a register.
1857 These macros should not be used in the case where a particular class of
1858 registers can only be copied to memory and not to another class of
1859 registers.  In that case, secondary reload registers are not needed and
1860 would not be helpful.  Instead, a stack location must be used to perform
1861 the copy and the @code{mov@var{m}} pattern should use memory as a
1862 intermediate storage.  This case often occurs between floating-point and
1863 general registers.
1865 @findex SECONDARY_MEMORY_NEEDED
1866 @item SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m})
1867 Certain machines have the property that some registers cannot be copied
1868 to some other registers without using memory.  Define this macro on
1869 those machines to be a C expression that is non-zero if objects of mode
1870 @var{m} in registers of @var{class1} can only be copied to registers of
1871 class @var{class2} by storing a register of @var{class1} into memory
1872 and loading that memory location into a register of @var{class2}.
1874 Do not define this macro if its value would always be zero.
1876 @findex SECONDARY_MEMORY_NEEDED_RTX
1877 @item SECONDARY_MEMORY_NEEDED_RTX (@var{mode})
1878 Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler
1879 allocates a stack slot for a memory location needed for register copies.
1880 If this macro is defined, the compiler instead uses the memory location
1881 defined by this macro.
1883 Do not define this macro if you do not define
1884 @code{SECONDARY_MEMORY_NEEDED}.
1886 @findex SECONDARY_MEMORY_NEEDED_MODE
1887 @item SECONDARY_MEMORY_NEEDED_MODE (@var{mode})
1888 When the compiler needs a secondary memory location to copy between two
1889 registers of mode @var{mode}, it normally allocates sufficient memory to
1890 hold a quantity of @code{BITS_PER_WORD} bits and performs the store and
1891 load operations in a mode that many bits wide and whose class is the
1892 same as that of @var{mode}.
1894 This is right thing to do on most machines because it ensures that all
1895 bits of the register are copied and prevents accesses to the registers
1896 in a narrower mode, which some machines prohibit for floating-point
1897 registers.
1899 However, this default behavior is not correct on some machines, such as
1900 the DEC Alpha, that store short integers in floating-point registers
1901 differently than in integer registers.  On those machines, the default
1902 widening will not work correctly and you must define this macro to
1903 suppress that widening in some cases.  See the file @file{alpha.h} for
1904 details.
1906 Do not define this macro if you do not define
1907 @code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that
1908 is @code{BITS_PER_WORD} bits wide is correct for your machine.
1910 @findex SMALL_REGISTER_CLASSES
1911 @item SMALL_REGISTER_CLASSES
1912 Normally the compiler avoids choosing registers that have been
1913 explicitly mentioned in the rtl as spill registers (these registers are
1914 normally those used to pass parameters and return values).  However,
1915 some machines have so few registers of certain classes that there
1916 would not be enough registers to use as spill registers if this were
1917 done.
1919 Define @code{SMALL_REGISTER_CLASSES} to be an expression with a non-zero
1920 value on these machines.  When this macro has a non-zero value, the
1921 compiler allows registers explicitly used in the rtl to be used as spill
1922 registers but avoids extending the lifetime of these registers.
1924 It is always safe to define this macro with a non-zero value, but if you
1925 unnecessarily define it, you will reduce the amount of optimizations
1926 that can be performed in some cases.  If you do not define this macro
1927 with a non-zero value when it is required, the compiler will run out of
1928 spill registers and print a fatal error message.  For most machines, you
1929 should not define this macro at all.
1931 @findex CLASS_LIKELY_SPILLED_P
1932 @item CLASS_LIKELY_SPILLED_P (@var{class})
1933 A C expression whose value is nonzero if pseudos that have been assigned
1934 to registers of class @var{class} would likely be spilled because
1935 registers of @var{class} are needed for spill registers.
1937 The default value of this macro returns 1 if @var{class} has exactly one
1938 register and zero otherwise.  On most machines, this default should be
1939 used.  Only define this macro to some other expression if pseudo
1940 allocated by @file{local-alloc.c} end up in memory because their hard
1941 registers were needed for spill registers.  If this macro returns nonzero
1942 for those classes, those pseudos will only be allocated by
1943 @file{global.c}, which knows how to reallocate the pseudo to another
1944 register.  If there would not be another register available for
1945 reallocation, you should not change the definition of this macro since
1946 the only effect of such a definition would be to slow down register
1947 allocation.
1949 @findex CLASS_MAX_NREGS
1950 @item CLASS_MAX_NREGS (@var{class}, @var{mode})
1951 A C expression for the maximum number of consecutive registers
1952 of class @var{class} needed to hold a value of mode @var{mode}.
1954 This is closely related to the macro @code{HARD_REGNO_NREGS}.  In fact,
1955 the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})}
1956 should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno},
1957 @var{mode})} for all @var{regno} values in the class @var{class}.
1959 This macro helps control the handling of multiple-word values
1960 in the reload pass.
1962 @item CLASS_CANNOT_CHANGE_SIZE
1963 If defined, a C expression for a class that contains registers which the
1964 compiler must always access in a mode that is the same size as the mode
1965 in which it loaded the register.
1967 For the example, loading 32-bit integer or floating-point objects into
1968 floating-point registers on the Alpha extends them to 64-bits.
1969 Therefore loading a 64-bit object and then storing it as a 32-bit object
1970 does not store the low-order 32-bits, as would be the case for a normal
1971 register.  Therefore, @file{alpha.h} defines this macro as
1972 @code{FLOAT_REGS}.
1973 @end table
1975 Three other special macros describe which operands fit which constraint
1976 letters.
1978 @table @code
1979 @findex CONST_OK_FOR_LETTER_P
1980 @item CONST_OK_FOR_LETTER_P (@var{value}, @var{c})
1981 A C expression that defines the machine-dependent operand constraint
1982 letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify
1983 particular ranges of integer values.  If @var{c} is one of those
1984 letters, the expression should check that @var{value}, an integer, is in
1985 the appropriate range and return 1 if so, 0 otherwise.  If @var{c} is
1986 not one of those letters, the value should be 0 regardless of
1987 @var{value}.
1989 @findex CONST_DOUBLE_OK_FOR_LETTER_P
1990 @item CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c})
1991 A C expression that defines the machine-dependent operand constraint
1992 letters that specify particular ranges of @code{const_double} values
1993 (@samp{G} or @samp{H}).
1995 If @var{c} is one of those letters, the expression should check that
1996 @var{value}, an RTX of code @code{const_double}, is in the appropriate
1997 range and return 1 if so, 0 otherwise.  If @var{c} is not one of those
1998 letters, the value should be 0 regardless of @var{value}.
2000 @code{const_double} is used for all floating-point constants and for
2001 @code{DImode} fixed-point constants.  A given letter can accept either
2002 or both kinds of values.  It can use @code{GET_MODE} to distinguish
2003 between these kinds.
2005 @findex EXTRA_CONSTRAINT
2006 @item EXTRA_CONSTRAINT (@var{value}, @var{c})
2007 A C expression that defines the optional machine-dependent constraint
2008 letters (@item @samp{Q}, @samp{R}, @samp{S}, @samp{T}, @samp{U}) that can
2009 be used to segregate specific types of operands, usually memory
2010 references, for the target machine.  Normally this macro will not be
2011 defined.  If it is required for a particular target machine, it should
2012 return 1 if @var{value} corresponds to the operand type represented by
2013 the constraint letter @var{c}.  If @var{c} is not defined as an extra
2014 constraint, the value returned should be 0 regardless of @var{value}.
2016 For example, on the ROMP, load instructions cannot have their output in r0 if
2017 the memory reference contains a symbolic address.  Constraint letter
2018 @samp{Q} is defined as representing a memory address that does
2019 @emph{not} contain a symbolic address.  An alternative is specified with
2020 a @samp{Q} constraint on the input and @samp{r} on the output.  The next
2021 alternative specifies @samp{m} on the input and a register class that
2022 does not include r0 on the output.
2023 @end table
2025 @node Stack and Calling
2026 @section Stack Layout and Calling Conventions
2027 @cindex calling conventions
2029 @c prevent bad page break with this line
2030 This describes the stack layout and calling conventions.
2032 @menu
2033 * Frame Layout::
2034 * Stack Checking::
2035 * Frame Registers::
2036 * Elimination::
2037 * Stack Arguments::
2038 * Register Arguments::
2039 * Scalar Return::
2040 * Aggregate Return::
2041 * Caller Saves::
2042 * Function Entry::
2043 * Profiling::
2044 @end menu
2046 @node Frame Layout
2047 @subsection Basic Stack Layout
2048 @cindex stack frame layout
2049 @cindex frame layout
2051 @c prevent bad page break with this line
2052 Here is the basic stack layout.
2054 @table @code
2055 @findex STACK_GROWS_DOWNWARD
2056 @item STACK_GROWS_DOWNWARD
2057 Define this macro if pushing a word onto the stack moves the stack
2058 pointer to a smaller address.
2060 When we say, ``define this macro if @dots{},'' it means that the
2061 compiler checks this macro only with @code{#ifdef} so the precise
2062 definition used does not matter.
2064 @findex FRAME_GROWS_DOWNWARD
2065 @item FRAME_GROWS_DOWNWARD
2066 Define this macro if the addresses of local variable slots are at negative
2067 offsets from the frame pointer.
2069 @findex ARGS_GROW_DOWNWARD
2070 @item ARGS_GROW_DOWNWARD
2071 Define this macro if successive arguments to a function occupy decreasing
2072 addresses on the stack.
2074 @findex STARTING_FRAME_OFFSET
2075 @item STARTING_FRAME_OFFSET
2076 Offset from the frame pointer to the first local variable slot to be allocated.
2078 If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by
2079 subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}.
2080 Otherwise, it is found by adding the length of the first slot to the
2081 value @code{STARTING_FRAME_OFFSET}.
2082 @c i'm not sure if the above is still correct.. had to change it to get
2083 @c rid of an overfull.  --mew 2feb93
2085 @findex STACK_POINTER_OFFSET
2086 @item STACK_POINTER_OFFSET
2087 Offset from the stack pointer register to the first location at which
2088 outgoing arguments are placed.  If not specified, the default value of
2089 zero is used.  This is the proper value for most machines.
2091 If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2092 the first location at which outgoing arguments are placed.
2094 @findex FIRST_PARM_OFFSET
2095 @item FIRST_PARM_OFFSET (@var{fundecl})
2096 Offset from the argument pointer register to the first argument's
2097 address.  On some machines it may depend on the data type of the
2098 function.
2100 If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2101 the first argument's address.
2103 @findex STACK_DYNAMIC_OFFSET
2104 @item STACK_DYNAMIC_OFFSET (@var{fundecl})
2105 Offset from the stack pointer register to an item dynamically allocated
2106 on the stack, e.g., by @code{alloca}.
2108 The default value for this macro is @code{STACK_POINTER_OFFSET} plus the
2109 length of the outgoing arguments.  The default is correct for most
2110 machines.  See @file{function.c} for details.
2112 @findex DYNAMIC_CHAIN_ADDRESS
2113 @item DYNAMIC_CHAIN_ADDRESS (@var{frameaddr})
2114 A C expression whose value is RTL representing the address in a stack
2115 frame where the pointer to the caller's frame is stored.  Assume that
2116 @var{frameaddr} is an RTL expression for the address of the stack frame
2117 itself.
2119 If you don't define this macro, the default is to return the value
2120 of @var{frameaddr}---that is, the stack frame address is also the
2121 address of the stack word that points to the previous frame.
2123 @findex SETUP_FRAME_ADDRESSES
2124 @item SETUP_FRAME_ADDRESSES ()
2125 If defined, a C expression that produces the machine-specific code to
2126 setup the stack so that arbitrary frames can be accessed.  For example,
2127 on the Sparc, we must flush all of the register windows to the stack
2128 before we can access arbitrary stack frames.
2129 This macro will seldom need to be defined.
2131 @findex RETURN_ADDR_RTX
2132 @item RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
2133 A C expression whose value is RTL representing the value of the return
2134 address for the frame @var{count} steps up from the current frame, after
2135 the prologue.  @var{frameaddr} is the frame pointer of the @var{count}
2136 frame, or the frame pointer of the @var{count} @minus{} 1 frame if
2137 @code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
2139 @findex RETURN_ADDR_IN_PREVIOUS_FRAME
2140 @item RETURN_ADDR_IN_PREVIOUS_FRAME
2141 Define this if the return address of a particular stack frame is accessed
2142 from the frame pointer of the previous stack frame.
2144 @findex INCOMING_RETURN_ADDR_RTX
2145 @item INCOMING_RETURN_ADDR_RTX
2146 A C expression whose value is RTL representing the location of the
2147 incoming return address at the beginning of any function, before the
2148 prologue.  This RTL is either a @code{REG}, indicating that the return
2149 value is saved in @samp{REG}, or a @code{MEM} representing a location in
2150 the stack.
2152 You only need to define this macro if you want to support call frame
2153 debugging information like that provided by DWARF 2.
2155 @findex INCOMING_FRAME_SP_OFFSET
2156 @item INCOMING_FRAME_SP_OFFSET
2157 A C expression whose value is an integer giving the offset, in bytes,
2158 from the value of the stack pointer register to the top of the stack
2159 frame at the beginning of any function, before the prologue.  The top of
2160 the frame is defined to be the value of the stack pointer in the
2161 previous frame, just before the call instruction.
2163 You only need to define this macro if you want to support call frame
2164 debugging information like that provided by DWARF 2.
2165 @end table
2167 @node Stack Checking
2168 @subsection Specifying How Stack Checking is Done
2170 GNU CC will check that stack references are within the boundaries of
2171 the stack, if the @samp{-fstack-check} is specified, in one of three ways:
2173 @enumerate
2174 @item
2175 If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GNU CC
2176 will assume that you have arranged for stack checking to be done at
2177 appropriate places in the configuration files, e.g., in
2178 @code{FUNCTION_PROLOGUE}.  GNU CC will do not other special processing.
2180 @item
2181 If @code{STACK_CHECK_BUILTIN} is zero and you defined a named pattern
2182 called @code{check_stack} in your @file{md} file, GNU CC will call that
2183 pattern with one argument which is the address to compare the stack
2184 value against.  You must arrange for this pattern to report an error if
2185 the stack pointer is out of range.
2187 @item
2188 If neither of the above are true, GNU CC will generate code to periodically
2189 ``probe'' the stack pointer using the values of the macros defined below.
2190 @end enumerate
2192 Normally, you will use the default values of these macros, so GNU CC
2193 will use the third approach.
2195 @table @code
2196 @findex STACK_CHECK_BUILTIN
2197 @item STACK_CHECK_BUILTIN
2198 A nonzero value if stack checking is done by the configuration files in a
2199 machine-dependent manner.  You should define this macro if stack checking 
2200 is require by the ABI of your machine or if you would like to have to stack 
2201 checking in some more efficient way than GNU CC's portable approach.
2202 The default value of this macro is zero.
2204 @findex STACK_CHECK_PROBE_INTERVAL
2205 @item STACK_CHECK_PROBE_INTERVAL
2206 An integer representing the interval at which GNU CC must generate stack
2207 probe instructions.  You will normally define this macro to be no larger
2208 than the size of the ``guard pages'' at the end of a stack area.  The
2209 default value of 4096 is suitable for most systems.
2211 @findex STACK_CHECK_PROBE_LOAD
2212 @item STACK_CHECK_PROBE_LOAD
2213 A integer which is nonzero if GNU CC should perform the stack probe 
2214 as a load instruction and zero if GNU CC should use a store instruction.
2215 The default is zero, which is the most efficient choice on most systems.
2217 @findex STACK_CHECK_PROTECT
2218 @item STACK_CHECK_PROTECT
2219 The number of bytes of stack needed to recover from a stack overflow,
2220 for languages where such a recovery is supported.  The default value of
2221 75 words should be adequate for most machines.
2223 @findex STACK_CHECK_MAX_FRAME_SIZE
2224 @item STACK_CHECK_MAX_FRAME_SIZE
2225 The maximum size of a stack frame, in bytes.  GNU CC will generate probe
2226 instructions in non-leaf functions to ensure at least this many bytes of
2227 stack are available.  If a stack frame is larger than this size, stack
2228 checking will not be reliable and GNU CC will issue a warning.  The
2229 default is chosen so that GNU CC only generates one instruction on most
2230 systems.  You should normally not change the default value of this macro.
2232 @findex STACK_CHECK_FIXED_FRAME_SIZE
2233 @item STACK_CHECK_FIXED_FRAME_SIZE
2234 GNU CC uses this value to generate the above warning message.  It
2235 represents the amount of fixed frame used by a function, not including
2236 space for any callee-saved registers, temporaries and user variables.
2237 You need only specify an upper bound for this amount and will normally
2238 use the default of four words.
2240 @findex STACK_CHECK_MAX_VAR_SIZE
2241 @item STACK_CHECK_MAX_VAR_SIZE
2242 The maximum size, in bytes, of an object that GNU CC will place in the
2243 fixed area of the stack frame when the user specifies
2244 @samp{-fstack-check}.
2245 GNU CC computed the default from the values of the above macros and you will
2246 normally not need to override that default.
2247 @end table
2249 @need 2000
2250 @node Frame Registers
2251 @subsection Registers That Address the Stack Frame
2253 @c prevent bad page break with this line
2254 This discusses registers that address the stack frame.
2256 @table @code
2257 @findex STACK_POINTER_REGNUM
2258 @item STACK_POINTER_REGNUM
2259 The register number of the stack pointer register, which must also be a
2260 fixed register according to @code{FIXED_REGISTERS}.  On most machines,
2261 the hardware determines which register this is.
2263 @findex FRAME_POINTER_REGNUM
2264 @item FRAME_POINTER_REGNUM
2265 The register number of the frame pointer register, which is used to
2266 access automatic variables in the stack frame.  On some machines, the
2267 hardware determines which register this is.  On other machines, you can
2268 choose any register you wish for this purpose.
2270 @findex HARD_FRAME_POINTER_REGNUM
2271 @item HARD_FRAME_POINTER_REGNUM
2272 On some machines the offset between the frame pointer and starting
2273 offset of the automatic variables is not known until after register
2274 allocation has been done (for example, because the saved registers are
2275 between these two locations).  On those machines, define
2276 @code{FRAME_POINTER_REGNUM} the number of a special, fixed register to
2277 be used internally until the offset is known, and define
2278 @code{HARD_FRAME_POINTER_REGNUM} to be actual the hard register number
2279 used for the frame pointer.
2281 You should define this macro only in the very rare circumstances when it
2282 is not possible to calculate the offset between the frame pointer and
2283 the automatic variables until after register allocation has been
2284 completed.  When this macro is defined, you must also indicate in your
2285 definition of @code{ELIMINABLE_REGS} how to eliminate
2286 @code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM}
2287 or @code{STACK_POINTER_REGNUM}.
2289 Do not define this macro if it would be the same as
2290 @code{FRAME_POINTER_REGNUM}.
2292 @findex ARG_POINTER_REGNUM
2293 @item ARG_POINTER_REGNUM
2294 The register number of the arg pointer register, which is used to access
2295 the function's argument list.  On some machines, this is the same as the
2296 frame pointer register.  On some machines, the hardware determines which
2297 register this is.  On other machines, you can choose any register you
2298 wish for this purpose.  If this is not the same register as the frame
2299 pointer register, then you must mark it as a fixed register according to
2300 @code{FIXED_REGISTERS}, or arrange to be able to eliminate it
2301 (@pxref{Elimination}).
2303 @findex RETURN_ADDRESS_POINTER_REGNUM
2304 @item RETURN_ADDRESS_POINTER_REGNUM
2305 The register number of the return address pointer register, which is used to
2306 access the current function's return address from the stack.  On some
2307 machines, the return address is not at a fixed offset from the frame
2308 pointer or stack pointer or argument pointer.  This register can be defined
2309 to point to the return address on the stack, and then be converted by
2310 @code{ELIMINABLE_REGS} into either the frame pointer or stack pointer.
2312 Do not define this macro unless there is no other way to get the return
2313 address from the stack.
2315 @findex STATIC_CHAIN_REGNUM
2316 @findex STATIC_CHAIN_INCOMING_REGNUM
2317 @item STATIC_CHAIN_REGNUM
2318 @itemx STATIC_CHAIN_INCOMING_REGNUM
2319 Register numbers used for passing a function's static chain pointer.  If
2320 register windows are used, the register number as seen by the called
2321 function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register
2322 number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}.  If
2323 these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need
2324 not be defined.@refill
2326 The static chain register need not be a fixed register.
2328 If the static chain is passed in memory, these macros should not be
2329 defined; instead, the next two macros should be defined.
2331 @findex STATIC_CHAIN
2332 @findex STATIC_CHAIN_INCOMING
2333 @item STATIC_CHAIN
2334 @itemx STATIC_CHAIN_INCOMING
2335 If the static chain is passed in memory, these macros provide rtx giving
2336 @code{mem} expressions that denote where they are stored.
2337 @code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations
2338 as seen by the calling and called functions, respectively.  Often the former
2339 will be at an offset from the stack pointer and the latter at an offset from
2340 the frame pointer.@refill
2342 @findex stack_pointer_rtx
2343 @findex frame_pointer_rtx
2344 @findex arg_pointer_rtx
2345 The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and
2346 @code{arg_pointer_rtx} will have been initialized prior to the use of these
2347 macros and should be used to refer to those items.
2349 If the static chain is passed in a register, the two previous macros should
2350 be defined instead.
2351 @end table
2353 @node Elimination
2354 @subsection Eliminating Frame Pointer and Arg Pointer
2356 @c prevent bad page break with this line
2357 This is about eliminating the frame pointer and arg pointer.
2359 @table @code
2360 @findex FRAME_POINTER_REQUIRED
2361 @item FRAME_POINTER_REQUIRED
2362 A C expression which is nonzero if a function must have and use a frame
2363 pointer.  This expression is evaluated  in the reload pass.  If its value is
2364 nonzero the function will have a frame pointer.
2366 The expression can in principle examine the current function and decide
2367 according to the facts, but on most machines the constant 0 or the
2368 constant 1 suffices.  Use 0 when the machine allows code to be generated
2369 with no frame pointer, and doing so saves some time or space.  Use 1
2370 when there is no possible advantage to avoiding a frame pointer.
2372 In certain cases, the compiler does not know how to produce valid code
2373 without a frame pointer.  The compiler recognizes those cases and
2374 automatically gives the function a frame pointer regardless of what
2375 @code{FRAME_POINTER_REQUIRED} says.  You don't need to worry about
2376 them.@refill
2378 In a function that does not require a frame pointer, the frame pointer
2379 register can be allocated for ordinary usage, unless you mark it as a
2380 fixed register.  See @code{FIXED_REGISTERS} for more information.
2382 @findex INITIAL_FRAME_POINTER_OFFSET
2383 @findex get_frame_size
2384 @item INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
2385 A C statement to store in the variable @var{depth-var} the difference
2386 between the frame pointer and the stack pointer values immediately after
2387 the function prologue.  The value would be computed from information
2388 such as the result of @code{get_frame_size ()} and the tables of
2389 registers @code{regs_ever_live} and @code{call_used_regs}.
2391 If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
2392 need not be defined.  Otherwise, it must be defined even if
2393 @code{FRAME_POINTER_REQUIRED} is defined to always be true; in that
2394 case, you may set @var{depth-var} to anything.
2396 @findex ELIMINABLE_REGS
2397 @item ELIMINABLE_REGS
2398 If defined, this macro specifies a table of register pairs used to
2399 eliminate unneeded registers that point into the stack frame.  If it is not
2400 defined, the only elimination attempted by the compiler is to replace
2401 references to the frame pointer with references to the stack pointer.
2403 The definition of this macro is a list of structure initializations, each
2404 of which specifies an original and replacement register.
2406 On some machines, the position of the argument pointer is not known until
2407 the compilation is completed.  In such a case, a separate hard register
2408 must be used for the argument pointer.  This register can be eliminated by
2409 replacing it with either the frame pointer or the argument pointer,
2410 depending on whether or not the frame pointer has been eliminated.
2412 In this case, you might specify:
2413 @example
2414 #define ELIMINABLE_REGS  \
2415 @{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
2416  @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
2417  @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
2418 @end example
2420 Note that the elimination of the argument pointer with the stack pointer is
2421 specified first since that is the preferred elimination.
2423 @findex CAN_ELIMINATE
2424 @item CAN_ELIMINATE (@var{from-reg}, @var{to-reg})
2425 A C expression that returns non-zero if the compiler is allowed to try
2426 to replace register number @var{from-reg} with register number
2427 @var{to-reg}.  This macro need only be defined if @code{ELIMINABLE_REGS}
2428 is defined, and will usually be the constant 1, since most of the cases
2429 preventing register elimination are things that the compiler already
2430 knows about.
2432 @findex INITIAL_ELIMINATION_OFFSET
2433 @item INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
2434 This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}.  It
2435 specifies the initial difference between the specified pair of
2436 registers.  This macro must be defined if @code{ELIMINABLE_REGS} is
2437 defined.
2439 @findex LONGJMP_RESTORE_FROM_STACK
2440 @item LONGJMP_RESTORE_FROM_STACK
2441 Define this macro if the @code{longjmp} function restores registers from
2442 the stack frames, rather than from those saved specifically by
2443 @code{setjmp}.  Certain quantities must not be kept in registers across
2444 a call to @code{setjmp} on such machines.
2445 @end table
2447 @node Stack Arguments
2448 @subsection Passing Function Arguments on the Stack
2449 @cindex arguments on stack
2450 @cindex stack arguments
2452 The macros in this section control how arguments are passed
2453 on the stack.  See the following section for other macros that
2454 control passing certain arguments in registers.
2456 @table @code
2457 @findex PROMOTE_PROTOTYPES
2458 @item PROMOTE_PROTOTYPES
2459 Define this macro if an argument declared in a prototype as an
2460 integral type smaller than @code{int} should actually be passed as an
2461 @code{int}.  In addition to avoiding errors in certain cases of
2462 mismatch, it also makes for better code on certain machines.
2464 @findex PUSH_ROUNDING
2465 @item PUSH_ROUNDING (@var{npushed})
2466 A C expression that is the number of bytes actually pushed onto the
2467 stack when an instruction attempts to push @var{npushed} bytes.
2469 If the target machine does not have a push instruction, do not define
2470 this macro.  That directs GNU CC to use an alternate strategy: to
2471 allocate the entire argument block and then store the arguments into
2474 On some machines, the definition
2476 @example
2477 #define PUSH_ROUNDING(BYTES) (BYTES)
2478 @end example
2480 @noindent
2481 will suffice.  But on other machines, instructions that appear
2482 to push one byte actually push two bytes in an attempt to maintain
2483 alignment.  Then the definition should be
2485 @example
2486 #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
2487 @end example
2489 @findex ACCUMULATE_OUTGOING_ARGS
2490 @findex current_function_outgoing_args_size
2491 @item ACCUMULATE_OUTGOING_ARGS
2492 If defined, the maximum amount of space required for outgoing arguments
2493 will be computed and placed into the variable
2494 @code{current_function_outgoing_args_size}.  No space will be pushed
2495 onto the stack for each call; instead, the function prologue should
2496 increase the stack frame size by this amount.
2498 Defining both @code{PUSH_ROUNDING} and @code{ACCUMULATE_OUTGOING_ARGS}
2499 is not proper.
2501 @findex REG_PARM_STACK_SPACE
2502 @item REG_PARM_STACK_SPACE (@var{fndecl})
2503 Define this macro if functions should assume that stack space has been
2504 allocated for arguments even when their values are passed in
2505 registers.
2507 The value of this macro is the size, in bytes, of the area reserved for
2508 arguments passed in registers for the function represented by @var{fndecl}.
2510 This space can be allocated by the caller, or be a part of the
2511 machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says
2512 which.
2513 @c above is overfull.  not sure what to do.  --mew 5feb93  did
2514 @c something, not sure if it looks good.  --mew 10feb93
2516 @findex MAYBE_REG_PARM_STACK_SPACE
2517 @findex FINAL_REG_PARM_STACK_SPACE
2518 @item MAYBE_REG_PARM_STACK_SPACE
2519 @itemx FINAL_REG_PARM_STACK_SPACE (@var{const_size}, @var{var_size})
2520 Define these macros in addition to the one above if functions might
2521 allocate stack space for arguments even when their values are passed
2522 in registers.  These should be used when the stack space allocated
2523 for arguments in registers is not a simple constant independent of the
2524 function declaration.
2526 The value of the first macro is the size, in bytes, of the area that
2527 we should initially assume would be reserved for arguments passed in registers.
2529 The value of the second macro is the actual size, in bytes, of the area
2530 that will be reserved for arguments passed in registers.  This takes two
2531 arguments: an integer representing the number of bytes of fixed sized
2532 arguments on the stack, and a tree representing the number of bytes of
2533 variable sized arguments on the stack.
2535 When these macros are defined, @code{REG_PARM_STACK_SPACE} will only be
2536 called for libcall functions, the current function, or for a function
2537 being called when it is known that such stack space must be allocated.
2538 In each case this value can be easily computed.
2540 When deciding whether a called function needs such stack space, and how
2541 much space to reserve, GNU CC uses these two macros instead of
2542 @code{REG_PARM_STACK_SPACE}.
2544 @findex OUTGOING_REG_PARM_STACK_SPACE
2545 @item OUTGOING_REG_PARM_STACK_SPACE
2546 Define this if it is the responsibility of the caller to allocate the area
2547 reserved for arguments passed in registers.
2549 If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls
2550 whether the space for these arguments counts in the value of
2551 @code{current_function_outgoing_args_size}.
2553 @findex STACK_PARMS_IN_REG_PARM_AREA
2554 @item STACK_PARMS_IN_REG_PARM_AREA
2555 Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the
2556 stack parameters don't skip the area specified by it.
2557 @c i changed this, makes more sens and it should have taken care of the
2558 @c overfull.. not as specific, tho.  --mew 5feb93
2560 Normally, when a parameter is not passed in registers, it is placed on the
2561 stack beyond the @code{REG_PARM_STACK_SPACE} area.  Defining this macro
2562 suppresses this behavior and causes the parameter to be passed on the
2563 stack in its natural location.
2565 @findex RETURN_POPS_ARGS
2566 @item RETURN_POPS_ARGS (@var{fundecl}, @var{funtype}, @var{stack-size})
2567 A C expression that should indicate the number of bytes of its own
2568 arguments that a function pops on returning, or 0 if the
2569 function pops no arguments and the caller must therefore pop them all
2570 after the function returns.
2572 @var{fundecl} is a C variable whose value is a tree node that describes
2573 the function in question.  Normally it is a node of type
2574 @code{FUNCTION_DECL} that describes the declaration of the function.
2575 From this you can obtain the DECL_MACHINE_ATTRIBUTES of the function.
2577 @var{funtype} is a C variable whose value is a tree node that
2578 describes the function in question.  Normally it is a node of type
2579 @code{FUNCTION_TYPE} that describes the data type of the function.
2580 From this it is possible to obtain the data types of the value and
2581 arguments (if known).
2583 When a call to a library function is being considered, @var{fundecl}
2584 will contain an identifier node for the library function.  Thus, if
2585 you need to distinguish among various library functions, you can do so
2586 by their names.  Note that ``library function'' in this context means
2587 a function used to perform arithmetic, whose name is known specially
2588 in the compiler and was not mentioned in the C code being compiled.
2590 @var{stack-size} is the number of bytes of arguments passed on the
2591 stack.  If a variable number of bytes is passed, it is zero, and
2592 argument popping will always be the responsibility of the calling function.
2594 On the Vax, all functions always pop their arguments, so the definition
2595 of this macro is @var{stack-size}.  On the 68000, using the standard
2596 calling convention, no functions pop their arguments, so the value of
2597 the macro is always 0 in this case.  But an alternative calling
2598 convention is available in which functions that take a fixed number of
2599 arguments pop them but other functions (such as @code{printf}) pop
2600 nothing (the caller pops all).  When this convention is in use,
2601 @var{funtype} is examined to determine whether a function takes a fixed
2602 number of arguments.
2603 @end table
2605 @node Register Arguments
2606 @subsection Passing Arguments in Registers
2607 @cindex arguments in registers
2608 @cindex registers arguments
2610 This section describes the macros which let you control how various
2611 types of arguments are passed in registers or how they are arranged in
2612 the stack.
2614 @table @code
2615 @findex FUNCTION_ARG
2616 @item FUNCTION_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
2617 A C expression that controls whether a function argument is passed
2618 in a register, and which register.
2620 The arguments are @var{cum}, which summarizes all the previous
2621 arguments; @var{mode}, the machine mode of the argument; @var{type},
2622 the data type of the argument as a tree node or 0 if that is not known
2623 (which happens for C support library functions); and @var{named},
2624 which is 1 for an ordinary argument and 0 for nameless arguments that
2625 correspond to @samp{@dots{}} in the called function's prototype.
2627 The value of the expression is usually either a @code{reg} RTX for the
2628 hard register in which to pass the argument, or zero to pass the
2629 argument on the stack.
2631 For machines like the Vax and 68000, where normally all arguments are
2632 pushed, zero suffices as a definition.
2634 The value of the expression can also be a @code{parallel} RTX.  This is
2635 used when an argument is passed in multiple locations.  The mode of the
2636 of the @code{parallel} should be the mode of the entire argument.  The
2637 @code{parallel} holds any number of @code{expr_list} pairs; each one
2638 describes where part of the argument is passed.  In each @code{expr_list},
2639 the first operand can be either a @code{reg} RTX for the hard register
2640 in which to pass this part of the argument, or zero to pass the argument
2641 on the stack.  If this operand is a @code{reg}, then the mode indicates
2642 how large this part of the argument is.  The second operand of the
2643 @code{expr_list} is a @code{const_int} which gives the offset in bytes
2644 into the entire argument where this part starts.
2646 @cindex @file{stdarg.h} and register arguments
2647 The usual way to make the ANSI library @file{stdarg.h} work on a machine
2648 where some arguments are usually passed in registers, is to cause
2649 nameless arguments to be passed on the stack instead.  This is done
2650 by making @code{FUNCTION_ARG} return 0 whenever @var{named} is 0.
2652 @cindex @code{MUST_PASS_IN_STACK}, and @code{FUNCTION_ARG}
2653 @cindex @code{REG_PARM_STACK_SPACE}, and @code{FUNCTION_ARG}
2654 You may use the macro @code{MUST_PASS_IN_STACK (@var{mode}, @var{type})}
2655 in the definition of this macro to determine if this argument is of a
2656 type that must be passed in the stack.  If @code{REG_PARM_STACK_SPACE}
2657 is not defined and @code{FUNCTION_ARG} returns non-zero for such an
2658 argument, the compiler will abort.  If @code{REG_PARM_STACK_SPACE} is
2659 defined, the argument will be computed in the stack and then loaded into
2660 a register.
2662 @findex FUNCTION_INCOMING_ARG
2663 @item FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
2664 Define this macro if the target machine has ``register windows'', so
2665 that the register in which a function sees an arguments is not
2666 necessarily the same as the one in which the caller passed the
2667 argument.
2669 For such machines, @code{FUNCTION_ARG} computes the register in which
2670 the caller passes the value, and @code{FUNCTION_INCOMING_ARG} should
2671 be defined in a similar fashion to tell the function being called
2672 where the arguments will arrive.
2674 If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG}
2675 serves both purposes.@refill
2677 @findex FUNCTION_ARG_PARTIAL_NREGS
2678 @item FUNCTION_ARG_PARTIAL_NREGS (@var{cum}, @var{mode}, @var{type}, @var{named})
2679 A C expression for the number of words, at the beginning of an
2680 argument, must be put in registers.  The value must be zero for
2681 arguments that are passed entirely in registers or that are entirely
2682 pushed on the stack.
2684 On some machines, certain arguments must be passed partially in
2685 registers and partially in memory.  On these machines, typically the
2686 first @var{n} words of arguments are passed in registers, and the rest
2687 on the stack.  If a multi-word argument (a @code{double} or a
2688 structure) crosses that boundary, its first few words must be passed
2689 in registers and the rest must be pushed.  This macro tells the
2690 compiler when this occurs, and how many of the words should go in
2691 registers.
2693 @code{FUNCTION_ARG} for these arguments should return the first
2694 register to be used by the caller for this argument; likewise
2695 @code{FUNCTION_INCOMING_ARG}, for the called function.
2697 @findex FUNCTION_ARG_PASS_BY_REFERENCE
2698 @item FUNCTION_ARG_PASS_BY_REFERENCE (@var{cum}, @var{mode}, @var{type}, @var{named})
2699 A C expression that indicates when an argument must be passed by reference.
2700 If nonzero for an argument, a copy of that argument is made in memory and a
2701 pointer to the argument is passed instead of the argument itself.
2702 The pointer is passed in whatever way is appropriate for passing a pointer
2703 to that type.
2705 On machines where @code{REG_PARM_STACK_SPACE} is not defined, a suitable
2706 definition of this macro might be
2707 @smallexample
2708 #define FUNCTION_ARG_PASS_BY_REFERENCE\
2709 (CUM, MODE, TYPE, NAMED)  \
2710   MUST_PASS_IN_STACK (MODE, TYPE)
2711 @end smallexample
2712 @c this is *still* too long.  --mew 5feb93
2714 @findex FUNCTION_ARG_CALLEE_COPIES
2715 @item FUNCTION_ARG_CALLEE_COPIES (@var{cum}, @var{mode}, @var{type}, @var{named})
2716 If defined, a C expression that indicates when it is the called function's
2717 responsibility to make a copy of arguments passed by invisible reference.
2718 Normally, the caller makes a copy and passes the address of the copy to the
2719 routine being called.  When FUNCTION_ARG_CALLEE_COPIES is defined and is
2720 nonzero, the caller does not make a copy.  Instead, it passes a pointer to the
2721 ``live'' value.  The called function must not modify this value.  If it can be
2722 determined that the value won't be modified, it need not make a copy;
2723 otherwise a copy must be made.
2725 @findex CUMULATIVE_ARGS
2726 @item CUMULATIVE_ARGS
2727 A C type for declaring a variable that is used as the first argument of
2728 @code{FUNCTION_ARG} and other related values.  For some target machines,
2729 the type @code{int} suffices and can hold the number of bytes of
2730 argument so far.
2732 There is no need to record in @code{CUMULATIVE_ARGS} anything about the
2733 arguments that have been passed on the stack.  The compiler has other
2734 variables to keep track of that.  For target machines on which all
2735 arguments are passed on the stack, there is no need to store anything in
2736 @code{CUMULATIVE_ARGS}; however, the data structure must exist and
2737 should not be empty, so use @code{int}.
2739 @findex INIT_CUMULATIVE_ARGS
2740 @item INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{indirect})
2741 A C statement (sans semicolon) for initializing the variable @var{cum}
2742 for the state at the beginning of the argument list.  The variable has
2743 type @code{CUMULATIVE_ARGS}.  The value of @var{fntype} is the tree node
2744 for the data type of the function which will receive the args, or 0
2745 if the args are to a compiler support library function.  The value of
2746 @var{indirect} is nonzero when processing an indirect call, for example
2747 a call through a function pointer.  The value of @var{indirect} is zero
2748 for a call to an explicitly named function, a library function call, or when
2749 @code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function
2750 being compiled.
2752 When processing a call to a compiler support library function,
2753 @var{libname} identifies which one.  It is a @code{symbol_ref} rtx which
2754 contains the name of the function, as a string.  @var{libname} is 0 when
2755 an ordinary C function call is being processed.  Thus, each time this
2756 macro is called, either @var{libname} or @var{fntype} is nonzero, but
2757 never both of them at once.
2759 @findex INIT_CUMULATIVE_INCOMING_ARGS
2760 @item INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
2761 Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of
2762 finding the arguments for the function being compiled.  If this macro is
2763 undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
2765 The value passed for @var{libname} is always 0, since library routines
2766 with special calling conventions are never compiled with GNU CC.  The
2767 argument @var{libname} exists for symmetry with
2768 @code{INIT_CUMULATIVE_ARGS}.
2769 @c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
2770 @c --mew 5feb93   i switched the order of the sentences.  --mew 10feb93
2772 @findex FUNCTION_ARG_ADVANCE
2773 @item FUNCTION_ARG_ADVANCE (@var{cum}, @var{mode}, @var{type}, @var{named})
2774 A C statement (sans semicolon) to update the summarizer variable
2775 @var{cum} to advance past an argument in the argument list.  The
2776 values @var{mode}, @var{type} and @var{named} describe that argument.
2777 Once this is done, the variable @var{cum} is suitable for analyzing
2778 the @emph{following} argument with @code{FUNCTION_ARG}, etc.@refill
2780 This macro need not do anything if the argument in question was passed
2781 on the stack.  The compiler knows how to track the amount of stack space
2782 used for arguments without any special help.
2784 @findex FUNCTION_ARG_PADDING
2785 @item FUNCTION_ARG_PADDING (@var{mode}, @var{type})
2786 If defined, a C expression which determines whether, and in which direction,
2787 to pad out an argument with extra space.  The value should be of type
2788 @code{enum direction}: either @code{upward} to pad above the argument,
2789 @code{downward} to pad below, or @code{none} to inhibit padding.
2791 The @emph{amount} of padding is always just enough to reach the next
2792 multiple of @code{FUNCTION_ARG_BOUNDARY}; this macro does not control
2795 This macro has a default definition which is right for most systems.
2796 For little-endian machines, the default is to pad upward.  For
2797 big-endian machines, the default is to pad downward for an argument of
2798 constant size shorter than an @code{int}, and upward otherwise.
2800 @findex FUNCTION_ARG_BOUNDARY
2801 @item FUNCTION_ARG_BOUNDARY (@var{mode}, @var{type})
2802 If defined, a C expression that gives the alignment boundary, in bits,
2803 of an argument with the specified mode and type.  If it is not defined,
2804 @code{PARM_BOUNDARY} is used for all arguments.
2806 @findex FUNCTION_ARG_REGNO_P
2807 @item FUNCTION_ARG_REGNO_P (@var{regno})
2808 A C expression that is nonzero if @var{regno} is the number of a hard
2809 register in which function arguments are sometimes passed.  This does
2810 @emph{not} include implicit arguments such as the static chain and
2811 the structure-value address.  On many machines, no registers can be
2812 used for this purpose since all function arguments are pushed on the
2813 stack.
2814 @end table
2816 @node Scalar Return
2817 @subsection How Scalar Function Values Are Returned
2818 @cindex return values in registers
2819 @cindex values, returned by functions
2820 @cindex scalars, returned as values
2822 This section discusses the macros that control returning scalars as
2823 values---values that can fit in registers.
2825 @table @code
2826 @findex TRADITIONAL_RETURN_FLOAT
2827 @item TRADITIONAL_RETURN_FLOAT
2828 Define this macro if @samp{-traditional} should not cause functions
2829 declared to return @code{float} to convert the value to @code{double}.
2831 @findex FUNCTION_VALUE
2832 @item FUNCTION_VALUE (@var{valtype}, @var{func})
2833 A C expression to create an RTX representing the place where a
2834 function returns a value of data type @var{valtype}.  @var{valtype} is
2835 a tree node representing a data type.  Write @code{TYPE_MODE
2836 (@var{valtype})} to get the machine mode used to represent that type.
2837 On many machines, only the mode is relevant.  (Actually, on most
2838 machines, scalar values are returned in the same place regardless of
2839 mode).@refill
2841 The value of the expression is usually a @code{reg} RTX for the hard
2842 register where the return value is stored.  The value can also be a
2843 @code{parallel} RTX, if the return value is in multiple places.  See
2844 @code{FUNCTION_ARG} for an explanation of the @code{parallel} form.
2846 If @code{PROMOTE_FUNCTION_RETURN} is defined, you must apply the same
2847 promotion rules specified in @code{PROMOTE_MODE} if @var{valtype} is a
2848 scalar type.
2850 If the precise function being called is known, @var{func} is a tree
2851 node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
2852 pointer.  This makes it possible to use a different value-returning
2853 convention for specific functions when all their calls are
2854 known.@refill
2856 @code{FUNCTION_VALUE} is not used for return vales with aggregate data
2857 types, because these are returned in another way.  See
2858 @code{STRUCT_VALUE_REGNUM} and related macros, below.
2860 @findex FUNCTION_OUTGOING_VALUE
2861 @item FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
2862 Define this macro if the target machine has ``register windows''
2863 so that the register in which a function returns its value is not
2864 the same as the one in which the caller sees the value.
2866 For such machines, @code{FUNCTION_VALUE} computes the register in which
2867 the caller will see the value.  @code{FUNCTION_OUTGOING_VALUE} should be
2868 defined in a similar fashion to tell the function where to put the
2869 value.@refill
2871 If @code{FUNCTION_OUTGOING_VALUE} is not defined,
2872 @code{FUNCTION_VALUE} serves both purposes.@refill
2874 @code{FUNCTION_OUTGOING_VALUE} is not used for return vales with
2875 aggregate data types, because these are returned in another way.  See
2876 @code{STRUCT_VALUE_REGNUM} and related macros, below.
2878 @findex LIBCALL_VALUE
2879 @item LIBCALL_VALUE (@var{mode})
2880 A C expression to create an RTX representing the place where a library
2881 function returns a value of mode @var{mode}.  If the precise function
2882 being called is known, @var{func} is a tree node
2883 (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
2884 pointer.  This makes it possible to use a different value-returning
2885 convention for specific functions when all their calls are
2886 known.@refill
2888 Note that ``library function'' in this context means a compiler
2889 support routine, used to perform arithmetic, whose name is known
2890 specially by the compiler and was not mentioned in the C code being
2891 compiled.
2893 The definition of @code{LIBRARY_VALUE} need not be concerned aggregate
2894 data types, because none of the library functions returns such types.
2896 @findex FUNCTION_VALUE_REGNO_P
2897 @item FUNCTION_VALUE_REGNO_P (@var{regno})
2898 A C expression that is nonzero if @var{regno} is the number of a hard
2899 register in which the values of called function may come back.
2901 A register whose use for returning values is limited to serving as the
2902 second of a pair (for a value of type @code{double}, say) need not be
2903 recognized by this macro.  So for most machines, this definition
2904 suffices:
2906 @example
2907 #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
2908 @end example
2910 If the machine has register windows, so that the caller and the called
2911 function use different registers for the return value, this macro
2912 should recognize only the caller's register numbers.
2914 @findex APPLY_RESULT_SIZE
2915 @item APPLY_RESULT_SIZE
2916 Define this macro if @samp{untyped_call} and @samp{untyped_return}
2917 need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for
2918 saving and restoring an arbitrary return value.
2919 @end table
2921 @node Aggregate Return
2922 @subsection How Large Values Are Returned
2923 @cindex aggregates as return values
2924 @cindex large return values
2925 @cindex returning aggregate values
2926 @cindex structure value address
2928 When a function value's mode is @code{BLKmode} (and in some other
2929 cases), the value is not returned according to @code{FUNCTION_VALUE}
2930 (@pxref{Scalar Return}).  Instead, the caller passes the address of a
2931 block of memory in which the value should be stored.  This address
2932 is called the @dfn{structure value address}.
2934 This section describes how to control returning structure values in
2935 memory.
2937 @table @code
2938 @findex RETURN_IN_MEMORY
2939 @item RETURN_IN_MEMORY (@var{type})
2940 A C expression which can inhibit the returning of certain function
2941 values in registers, based on the type of value.  A nonzero value says
2942 to return the function value in memory, just as large structures are
2943 always returned.  Here @var{type} will be a C expression of type
2944 @code{tree}, representing the data type of the value.
2946 Note that values of mode @code{BLKmode} must be explicitly handled
2947 by this macro.  Also, the option @samp{-fpcc-struct-return}
2948 takes effect regardless of this macro.  On most systems, it is
2949 possible to leave the macro undefined; this causes a default
2950 definition to be used, whose value is the constant 1 for @code{BLKmode}
2951 values, and 0 otherwise.
2953 Do not use this macro to indicate that structures and unions should always
2954 be returned in memory.  You should instead use @code{DEFAULT_PCC_STRUCT_RETURN}
2955 to indicate this.
2957 @findex DEFAULT_PCC_STRUCT_RETURN
2958 @item DEFAULT_PCC_STRUCT_RETURN
2959 Define this macro to be 1 if all structure and union return values must be
2960 in memory.  Since this results in slower code, this should be defined
2961 only if needed for compatibility with other compilers or with an ABI.
2962 If you define this macro to be 0, then the conventions used for structure
2963 and union return values are decided by the @code{RETURN_IN_MEMORY} macro.
2965 If not defined, this defaults to the value 1.
2967 @findex STRUCT_VALUE_REGNUM
2968 @item STRUCT_VALUE_REGNUM
2969 If the structure value address is passed in a register, then
2970 @code{STRUCT_VALUE_REGNUM} should be the number of that register.
2972 @findex STRUCT_VALUE
2973 @item STRUCT_VALUE
2974 If the structure value address is not passed in a register, define
2975 @code{STRUCT_VALUE} as an expression returning an RTX for the place
2976 where the address is passed.  If it returns 0, the address is passed as
2977 an ``invisible'' first argument.
2979 @findex STRUCT_VALUE_INCOMING_REGNUM
2980 @item STRUCT_VALUE_INCOMING_REGNUM
2981 On some architectures the place where the structure value address
2982 is found by the called function is not the same place that the
2983 caller put it.  This can be due to register windows, or it could
2984 be because the function prologue moves it to a different place.
2986 If the incoming location of the structure value address is in a
2987 register, define this macro as the register number.
2989 @findex STRUCT_VALUE_INCOMING
2990 @item STRUCT_VALUE_INCOMING
2991 If the incoming location is not a register, then you should define
2992 @code{STRUCT_VALUE_INCOMING} as an expression for an RTX for where the
2993 called function should find the value.  If it should find the value on
2994 the stack, define this to create a @code{mem} which refers to the frame
2995 pointer.  A definition of 0 means that the address is passed as an
2996 ``invisible'' first argument.
2998 @findex PCC_STATIC_STRUCT_RETURN
2999 @item PCC_STATIC_STRUCT_RETURN
3000 Define this macro if the usual system convention on the target machine
3001 for returning structures and unions is for the called function to return
3002 the address of a static variable containing the value.
3004 Do not define this if the usual system convention is for the caller to
3005 pass an address to the subroutine.
3007 This macro has effect in @samp{-fpcc-struct-return} mode, but it does
3008 nothing when you use @samp{-freg-struct-return} mode.
3009 @end table
3011 @node Caller Saves
3012 @subsection Caller-Saves Register Allocation
3014 If you enable it, GNU CC can save registers around function calls.  This
3015 makes it possible to use call-clobbered registers to hold variables that
3016 must live across calls.
3018 @table @code
3019 @findex DEFAULT_CALLER_SAVES
3020 @item DEFAULT_CALLER_SAVES
3021 Define this macro if function calls on the target machine do not preserve
3022 any registers; in other words, if @code{CALL_USED_REGISTERS} has 1
3023 for all registers.  This macro enables @samp{-fcaller-saves} by default.
3024 Eventually that option will be enabled by default on all machines and both
3025 the option and this macro will be eliminated.
3027 @findex CALLER_SAVE_PROFITABLE
3028 @item CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls})
3029 A C expression to determine whether it is worthwhile to consider placing
3030 a pseudo-register in a call-clobbered hard register and saving and
3031 restoring it around each function call.  The expression should be 1 when
3032 this is worth doing, and 0 otherwise.
3034 If you don't define this macro, a default is used which is good on most
3035 machines: @code{4 * @var{calls} < @var{refs}}.
3036 @end table
3038 @node Function Entry
3039 @subsection Function Entry and Exit
3040 @cindex function entry and exit
3041 @cindex prologue
3042 @cindex epilogue
3044 This section describes the macros that output function entry
3045 (@dfn{prologue}) and exit (@dfn{epilogue}) code.
3047 @table @code
3048 @findex FUNCTION_PROLOGUE
3049 @item FUNCTION_PROLOGUE (@var{file}, @var{size})
3050 A C compound statement that outputs the assembler code for entry to a
3051 function.  The prologue is responsible for setting up the stack frame,
3052 initializing the frame pointer register, saving registers that must be
3053 saved, and allocating @var{size} additional bytes of storage for the
3054 local variables.  @var{size} is an integer.  @var{file} is a stdio
3055 stream to which the assembler code should be output.
3057 The label for the beginning of the function need not be output by this
3058 macro.  That has already been done when the macro is run.
3060 @findex regs_ever_live
3061 To determine which registers to save, the macro can refer to the array
3062 @code{regs_ever_live}: element @var{r} is nonzero if hard register
3063 @var{r} is used anywhere within the function.  This implies the function
3064 prologue should save register @var{r}, provided it is not one of the
3065 call-used registers.  (@code{FUNCTION_EPILOGUE} must likewise use
3066 @code{regs_ever_live}.)
3068 On machines that have ``register windows'', the function entry code does
3069 not save on the stack the registers that are in the windows, even if
3070 they are supposed to be preserved by function calls; instead it takes
3071 appropriate steps to ``push'' the register stack, if any non-call-used
3072 registers are used in the function.
3074 @findex frame_pointer_needed
3075 On machines where functions may or may not have frame-pointers, the
3076 function entry code must vary accordingly; it must set up the frame
3077 pointer if one is wanted, and not otherwise.  To determine whether a
3078 frame pointer is in wanted, the macro can refer to the variable
3079 @code{frame_pointer_needed}.  The variable's value will be 1 at run
3080 time in a function that needs a frame pointer.  @xref{Elimination}.
3082 The function entry code is responsible for allocating any stack space
3083 required for the function.  This stack space consists of the regions
3084 listed below.  In most cases, these regions are allocated in the
3085 order listed, with the last listed region closest to the top of the
3086 stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and
3087 the highest address if it is not defined).  You can use a different order
3088 for a machine if doing so is more convenient or required for
3089 compatibility reasons.  Except in cases where required by standard
3090 or by a debugger, there is no reason why the stack layout used by GCC
3091 need agree with that used by other compilers for a machine.
3093 @itemize @bullet
3094 @item
3095 @findex current_function_pretend_args_size
3096 A region of @code{current_function_pretend_args_size} bytes of
3097 uninitialized space just underneath the first argument arriving on the
3098 stack.  (This may not be at the very start of the allocated stack region
3099 if the calling sequence has pushed anything else since pushing the stack
3100 arguments.  But usually, on such machines, nothing else has been pushed
3101 yet, because the function prologue itself does all the pushing.)  This
3102 region is used on machines where an argument may be passed partly in
3103 registers and partly in memory, and, in some cases to support the
3104 features in @file{varargs.h} and @file{stdargs.h}.
3106 @item
3107 An area of memory used to save certain registers used by the function.
3108 The size of this area, which may also include space for such things as
3109 the return address and pointers to previous stack frames, is
3110 machine-specific and usually depends on which registers have been used
3111 in the function.  Machines with register windows often do not require
3112 a save area.
3114 @item
3115 A region of at least @var{size} bytes, possibly rounded up to an allocation
3116 boundary, to contain the local variables of the function.  On some machines,
3117 this region and the save area may occur in the opposite order, with the
3118 save area closer to the top of the stack.
3120 @item
3121 @cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
3122 Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
3123 @code{current_function_outgoing_args_size} bytes to be used for outgoing
3124 argument lists of the function.  @xref{Stack Arguments}.
3125 @end itemize
3127 Normally, it is necessary for the macros @code{FUNCTION_PROLOGUE} and
3128 @code{FUNCTION_EPILOGUE} to treat leaf functions specially.  The C
3129 variable @code{leaf_function} is nonzero for such a function.
3131 @findex EXIT_IGNORE_STACK
3132 @item EXIT_IGNORE_STACK
3133 Define this macro as a C expression that is nonzero if the return
3134 instruction or the function epilogue ignores the value of the stack
3135 pointer; in other words, if it is safe to delete an instruction to
3136 adjust the stack pointer before a return from the function.
3138 Note that this macro's value is relevant only for functions for which
3139 frame pointers are maintained.  It is never safe to delete a final
3140 stack adjustment in a function that has no frame pointer, and the
3141 compiler knows this regardless of @code{EXIT_IGNORE_STACK}.
3143 @findex EPILOGUE_USES
3144 @item EPILOGUE_USES (@var{regno})
3145 Define this macro as a C expression that is nonzero for registers are
3146 used by the epilogue or the @samp{return} pattern.  The stack and frame
3147 pointer registers are already be assumed to be used as needed.
3149 @findex FUNCTION_EPILOGUE
3150 @item FUNCTION_EPILOGUE (@var{file}, @var{size})
3151 A C compound statement that outputs the assembler code for exit from a
3152 function.  The epilogue is responsible for restoring the saved
3153 registers and stack pointer to their values when the function was
3154 called, and returning control to the caller.  This macro takes the
3155 same arguments as the macro @code{FUNCTION_PROLOGUE}, and the
3156 registers to restore are determined from @code{regs_ever_live} and
3157 @code{CALL_USED_REGISTERS} in the same way.
3159 On some machines, there is a single instruction that does all the work
3160 of returning from the function.  On these machines, give that
3161 instruction the name @samp{return} and do not define the macro
3162 @code{FUNCTION_EPILOGUE} at all.
3164 Do not define a pattern named @samp{return} if you want the
3165 @code{FUNCTION_EPILOGUE} to be used.  If you want the target switches
3166 to control whether return instructions or epilogues are used, define a
3167 @samp{return} pattern with a validity condition that tests the target
3168 switches appropriately.  If the @samp{return} pattern's validity
3169 condition is false, epilogues will be used.
3171 On machines where functions may or may not have frame-pointers, the
3172 function exit code must vary accordingly.  Sometimes the code for these
3173 two cases is completely different.  To determine whether a frame pointer
3174 is wanted, the macro can refer to the variable
3175 @code{frame_pointer_needed}.  The variable's value will be 1 when compiling
3176 a function that needs a frame pointer.
3178 Normally, @code{FUNCTION_PROLOGUE} and @code{FUNCTION_EPILOGUE} must
3179 treat leaf functions specially.  The C variable @code{leaf_function} is
3180 nonzero for such a function.  @xref{Leaf Functions}.
3182 On some machines, some functions pop their arguments on exit while
3183 others leave that for the caller to do.  For example, the 68020 when
3184 given @samp{-mrtd} pops arguments in functions that take a fixed
3185 number of arguments.
3187 @findex current_function_pops_args
3188 Your definition of the macro @code{RETURN_POPS_ARGS} decides which
3189 functions pop their own arguments.  @code{FUNCTION_EPILOGUE} needs to
3190 know what was decided.  The variable that is called
3191 @code{current_function_pops_args} is the number of bytes of its
3192 arguments that a function should pop.  @xref{Scalar Return}.
3193 @c what is the "its arguments" in the above sentence referring to, pray
3194 @c tell?  --mew 5feb93
3196 @findex DELAY_SLOTS_FOR_EPILOGUE
3197 @item DELAY_SLOTS_FOR_EPILOGUE
3198 Define this macro if the function epilogue contains delay slots to which
3199 instructions from the rest of the function can be ``moved''.  The
3200 definition should be a C expression whose value is an integer
3201 representing the number of delay slots there.
3203 @findex ELIGIBLE_FOR_EPILOGUE_DELAY
3204 @item ELIGIBLE_FOR_EPILOGUE_DELAY (@var{insn}, @var{n})
3205 A C expression that returns 1 if @var{insn} can be placed in delay
3206 slot number @var{n} of the epilogue.
3208 The argument @var{n} is an integer which identifies the delay slot now
3209 being considered (since different slots may have different rules of
3210 eligibility).  It is never negative and is always less than the number
3211 of epilogue delay slots (what @code{DELAY_SLOTS_FOR_EPILOGUE} returns).
3212 If you reject a particular insn for a given delay slot, in principle, it
3213 may be reconsidered for a subsequent delay slot.  Also, other insns may
3214 (at least in principle) be considered for the so far unfilled delay
3215 slot.
3217 @findex current_function_epilogue_delay_list
3218 @findex final_scan_insn
3219 The insns accepted to fill the epilogue delay slots are put in an RTL
3220 list made with @code{insn_list} objects, stored in the variable
3221 @code{current_function_epilogue_delay_list}.  The insn for the first
3222 delay slot comes first in the list.  Your definition of the macro
3223 @code{FUNCTION_EPILOGUE} should fill the delay slots by outputting the
3224 insns in this list, usually by calling @code{final_scan_insn}.
3226 You need not define this macro if you did not define
3227 @code{DELAY_SLOTS_FOR_EPILOGUE}.
3229 @findex ASM_OUTPUT_MI_THUNK
3230 @item ASM_OUTPUT_MI_THUNK (@var{file}, @var{thunk_fndecl}, @var{delta}, @var{function})
3231 A C compound statement that outputs the assembler code for a thunk
3232 function, used to implement C++ virtual function calls with multiple
3233 inheritance.  The thunk acts as a wrapper around a virtual function,
3234 adjusting the implicit object parameter before handing control off to
3235 the real function.
3237 First, emit code to add the integer @var{delta} to the location that
3238 contains the incoming first argument.  Assume that this argument
3239 contains a pointer, and is the one used to pass the @code{this} pointer
3240 in C++.  This is the incoming argument @emph{before} the function prologue,
3241 e.g. @samp{%o0} on a sparc.  The addition must preserve the values of
3242 all other incoming arguments.
3244 After the addition, emit code to jump to @var{function}, which is a
3245 @code{FUNCTION_DECL}.  This is a direct pure jump, not a call, and does
3246 not touch the return address.  Hence returning from @var{FUNCTION} will
3247 return to whoever called the current @samp{thunk}.
3249 The effect must be as if @var{function} had been called directly with
3250 the adjusted first argument.  This macro is responsible for emitting all
3251 of the code for a thunk function; @code{FUNCTION_PROLOGUE} and
3252 @code{FUNCTION_EPILOGUE} are not invoked.
3254 The @var{thunk_fndecl} is redundant.  (@var{delta} and @var{function}
3255 have already been extracted from it.)  It might possibly be useful on
3256 some targets, but probably not.
3258 If you do not define this macro, the target-independent code in the C++
3259 frontend will generate a less efficient heavyweight thunk that calls
3260 @var{function} instead of jumping to it.  The generic approach does
3261 not support varargs.
3262 @end table
3264 @node Profiling
3265 @subsection Generating Code for Profiling
3266 @cindex profiling, code generation
3268 These macros will help you generate code for profiling.
3270 @table @code
3271 @findex FUNCTION_PROFILER
3272 @item FUNCTION_PROFILER (@var{file}, @var{labelno})
3273 A C statement or compound statement to output to @var{file} some
3274 assembler code to call the profiling subroutine @code{mcount}.
3275 Before calling, the assembler code must load the address of a
3276 counter variable into a register where @code{mcount} expects to
3277 find the address.  The name of this variable is @samp{LP} followed
3278 by the number @var{labelno}, so you would generate the name using
3279 @samp{LP%d} in a @code{fprintf}.
3281 @findex mcount
3282 The details of how the address should be passed to @code{mcount} are
3283 determined by your operating system environment, not by GNU CC.  To
3284 figure them out, compile a small program for profiling using the
3285 system's installed C compiler and look at the assembler code that
3286 results.
3288 @findex PROFILE_BEFORE_PROLOGUE
3289 @item PROFILE_BEFORE_PROLOGUE
3290 Define this macro if the code for function profiling should come before
3291 the function prologue.  Normally, the profiling code comes after.
3293 @findex FUNCTION_BLOCK_PROFILER
3294 @vindex profile_block_flag
3295 @item FUNCTION_BLOCK_PROFILER (@var{file}, @var{labelno})
3296 A C statement or compound statement to output to @var{file} some
3297 assembler code to initialize basic-block profiling for the current
3298 object module.  The global compile flag @code{profile_block_flag}
3299 distingishes two profile modes.
3301 @table @code
3302 @findex __bb_init_func
3303 @item profile_block_flag != 2
3304 Output code to call the subroutine @code{__bb_init_func} once per
3305 object module, passing it as its sole argument the address of a block
3306 allocated in the object module.
3308 The name of the block is a local symbol made with this statement:
3310 @smallexample
3311 ASM_GENERATE_INTERNAL_LABEL (@var{buffer}, "LPBX", 0);
3312 @end smallexample
3314 Of course, since you are writing the definition of
3315 @code{ASM_GENERATE_INTERNAL_LABEL} as well as that of this macro, you
3316 can take a short cut in the definition of this macro and use the name
3317 that you know will result.
3319 The first word of this block is a flag which will be nonzero if the
3320 object module has already been initialized.  So test this word first,
3321 and do not call @code{__bb_init_func} if the flag is
3322 nonzero.  BLOCK_OR_LABEL contains a unique number which may be used to
3323 generate a label as a branch destination when @code{__bb_init_func}
3324 will not be called.
3326 Described in assembler language, the code to be output looks like:
3328 @example
3329   cmp (LPBX0),0
3330   bne local_label
3331   parameter1 <- LPBX0
3332   call __bb_init_func
3333 local_label:
3334 @end example
3336 @findex __bb_init_trace_func
3337 @item profile_block_flag == 2
3338 Output code to call the subroutine @code{__bb_init_trace_func}
3339 and pass two parameters to it.  The first parameter is the same as
3340 for @code{__bb_init_func}.  The second parameter is the number of the
3341 first basic block of the function as given by BLOCK_OR_LABEL.  Note
3342 that @code{__bb_init_trace_func} has to be called, even if the object
3343 module has been initialized already.
3345 Described in assembler language, the code to be output looks like:
3346 @example
3347 parameter1 <- LPBX0
3348 parameter2 <- BLOCK_OR_LABEL
3349 call __bb_init_trace_func
3350 @end example
3351 @end table
3353 @findex BLOCK_PROFILER
3354 @vindex profile_block_flag
3355 @item BLOCK_PROFILER (@var{file}, @var{blockno})
3356 A C statement or compound statement to output to @var{file} some
3357 assembler code to increment the count associated with the basic
3358 block number @var{blockno}.  The global compile flag
3359 @code{profile_block_flag} distingishes two profile modes.
3361 @table @code
3362 @item profile_block_flag != 2
3363 Output code to increment the counter directly.  Basic blocks are
3364 numbered separately from zero within each compilation.  The count
3365 associated with block number @var{blockno} is at index
3366 @var{blockno} in a vector of words; the name of this array is a local
3367 symbol made with this statement:
3369 @smallexample
3370 ASM_GENERATE_INTERNAL_LABEL (@var{buffer}, "LPBX", 2);
3371 @end smallexample
3373 @c This paragraph is the same as one a few paragraphs up.
3374 @c That is not an error.
3375 Of course, since you are writing the definition of
3376 @code{ASM_GENERATE_INTERNAL_LABEL} as well as that of this macro, you
3377 can take a short cut in the definition of this macro and use the name
3378 that you know will result.
3380 Described in assembler language, the code to be output looks like:
3382 @smallexample
3383 inc (LPBX2+4*BLOCKNO)
3384 @end smallexample
3386 @vindex __bb
3387 @findex __bb_trace_func
3388 @item profile_block_flag == 2
3389 Output code to initialize the global structure @code{__bb} and
3390 call the function @code{__bb_trace_func}, which will increment the
3391 counter.
3393 @code{__bb} consists of two words.  In the first word, the current
3394 basic block number, as given by BLOCKNO, has to be stored.  In
3395 the second word, the address of a block allocated in the object
3396 module has to be stored.  The address is given by the label created
3397 with this statement:
3399 @smallexample
3400 ASM_GENERATE_INTERNAL_LABEL (@var{buffer}, "LPBX", 0);
3401 @end smallexample
3403 Described in assembler language, the code to be output looks like:
3404 @example
3405 move BLOCKNO -> (__bb)
3406 move LPBX0 -> (__bb+4)
3407 call __bb_trace_func
3408 @end example
3409 @end table
3411 @findex FUNCTION_BLOCK_PROFILER_EXIT
3412 @findex __bb_trace_ret
3413 @vindex profile_block_flag
3414 @item FUNCTION_BLOCK_PROFILER_EXIT (@var{file})
3415 A C statement or compound statement to output to @var{file}
3416 assembler code to call function @code{__bb_trace_ret}.  The
3417 assembler code should only be output
3418 if the global compile flag @code{profile_block_flag} == 2.  This
3419 macro has to be used at every place where code for returning from
3420 a function is generated (e.g. @code{FUNCTION_EPILOGUE}).  Although
3421 you have to write the definition of @code{FUNCTION_EPILOGUE}
3422 as well, you have to define this macro to tell the compiler, that
3423 the proper call to @code{__bb_trace_ret} is produced.
3425 @findex MACHINE_STATE_SAVE
3426 @findex __bb_init_trace_func
3427 @findex __bb_trace_func
3428 @findex __bb_trace_ret
3429 @item MACHINE_STATE_SAVE (@var{id})
3430 A C statement or compound statement to save all registers, which may
3431 be clobbered by a function call, including condition codes.  The
3432 @code{asm} statement will be mostly likely needed to handle this
3433 task.  Local labels in the assembler code can be concatenated with the
3434 string @var{id}, to obtain a unique lable name.
3436 Registers or condition codes clobbered by @code{FUNCTION_PROLOGUE} or
3437 @code{FUNCTION_EPILOGUE} must be saved in the macros
3438 @code{FUNCTION_BLOCK_PROFILER}, @code{FUNCTION_BLOCK_PROFILER_EXIT} and
3439 @code{BLOCK_PROFILER} prior calling @code{__bb_init_trace_func},
3440 @code{__bb_trace_ret} and @code{__bb_trace_func} respectively.
3442 @findex MACHINE_STATE_RESTORE
3443 @findex __bb_init_trace_func
3444 @findex __bb_trace_func
3445 @findex __bb_trace_ret
3446 @item MACHINE_STATE_RESTORE (@var{id})
3447 A C statement or compound statement to restore all registers, including
3448 condition codes, saved by @code{MACHINE_STATE_SAVE}.
3450 Registers or condition codes clobbered by @code{FUNCTION_PROLOGUE} or
3451 @code{FUNCTION_EPILOGUE} must be restored in the macros
3452 @code{FUNCTION_BLOCK_PROFILER}, @code{FUNCTION_BLOCK_PROFILER_EXIT} and
3453 @code{BLOCK_PROFILER} after calling @code{__bb_init_trace_func},
3454 @code{__bb_trace_ret} and @code{__bb_trace_func} respectively.
3456 @findex BLOCK_PROFILER_CODE
3457 @item BLOCK_PROFILER_CODE
3458 A C function or functions which are needed in the library to
3459 support block profiling.
3460 @end table
3462 @node Varargs
3463 @section Implementing the Varargs Macros
3464 @cindex varargs implementation
3466 GNU CC comes with an implementation of @file{varargs.h} and
3467 @file{stdarg.h} that work without change on machines that pass arguments
3468 on the stack.  Other machines require their own implementations of
3469 varargs, and the two machine independent header files must have
3470 conditionals to include it.
3472 ANSI @file{stdarg.h} differs from traditional @file{varargs.h} mainly in
3473 the calling convention for @code{va_start}.  The traditional
3474 implementation takes just one argument, which is the variable in which
3475 to store the argument pointer.  The ANSI implementation of
3476 @code{va_start} takes an additional second argument.  The user is
3477 supposed to write the last named argument of the function here.
3479 However, @code{va_start} should not use this argument.  The way to find
3480 the end of the named arguments is with the built-in functions described
3481 below.
3483 @table @code
3484 @findex __builtin_saveregs
3485 @item __builtin_saveregs ()
3486 Use this built-in function to save the argument registers in memory so
3487 that the varargs mechanism can access them.  Both ANSI and traditional
3488 versions of @code{va_start} must use @code{__builtin_saveregs}, unless
3489 you use @code{SETUP_INCOMING_VARARGS} (see below) instead.
3491 On some machines, @code{__builtin_saveregs} is open-coded under the
3492 control of the macro @code{EXPAND_BUILTIN_SAVEREGS}.  On other machines,
3493 it calls a routine written in assembler language, found in
3494 @file{libgcc2.c}.
3496 Code generated for the call to @code{__builtin_saveregs} appears at the
3497 beginning of the function, as opposed to where the call to
3498 @code{__builtin_saveregs} is written, regardless of what the code is.
3499 This is because the registers must be saved before the function starts
3500 to use them for its own purposes.
3501 @c i rewrote the first sentence above to fix an overfull hbox. --mew
3502 @c 10feb93
3504 @findex __builtin_args_info
3505 @item __builtin_args_info (@var{category})
3506 Use this built-in function to find the first anonymous arguments in
3507 registers.
3509 In general, a machine may have several categories of registers used for
3510 arguments, each for a particular category of data types.  (For example,
3511 on some machines, floating-point registers are used for floating-point
3512 arguments while other arguments are passed in the general registers.)
3513 To make non-varargs functions use the proper calling convention, you
3514 have defined the @code{CUMULATIVE_ARGS} data type to record how many
3515 registers in each category have been used so far
3517 @code{__builtin_args_info} accesses the same data structure of type
3518 @code{CUMULATIVE_ARGS} after the ordinary argument layout is finished
3519 with it, with @var{category} specifying which word to access.  Thus, the
3520 value indicates the first unused register in a given category.
3522 Normally, you would use @code{__builtin_args_info} in the implementation
3523 of @code{va_start}, accessing each category just once and storing the
3524 value in the @code{va_list} object.  This is because @code{va_list} will
3525 have to update the values, and there is no way to alter the
3526 values accessed by @code{__builtin_args_info}.
3528 @findex __builtin_next_arg
3529 @item __builtin_next_arg (@var{lastarg})
3530 This is the equivalent of @code{__builtin_args_info}, for stack
3531 arguments.  It returns the address of the first anonymous stack
3532 argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it
3533 returns the address of the location above the first anonymous stack
3534 argument.  Use it in @code{va_start} to initialize the pointer for
3535 fetching arguments from the stack.  Also use it in @code{va_start} to
3536 verify that the second parameter @var{lastarg} is the last named argument
3537 of the current function.
3539 @findex __builtin_classify_type
3540 @item __builtin_classify_type (@var{object})
3541 Since each machine has its own conventions for which data types are
3542 passed in which kind of register, your implementation of @code{va_arg}
3543 has to embody these conventions.  The easiest way to categorize the
3544 specified data type is to use @code{__builtin_classify_type} together
3545 with @code{sizeof} and @code{__alignof__}.
3547 @code{__builtin_classify_type} ignores the value of @var{object},
3548 considering only its data type.  It returns an integer describing what
3549 kind of type that is---integer, floating, pointer, structure, and so on.
3551 The file @file{typeclass.h} defines an enumeration that you can use to
3552 interpret the values of @code{__builtin_classify_type}.
3553 @end table
3555 These machine description macros help implement varargs:
3557 @table @code
3558 @findex EXPAND_BUILTIN_SAVEREGS
3559 @item EXPAND_BUILTIN_SAVEREGS (@var{args})
3560 If defined, is a C expression that produces the machine-specific code
3561 for a call to @code{__builtin_saveregs}.  This code will be moved to the
3562 very beginning of the function, before any parameter access are made.
3563 The return value of this function should be an RTX that contains the
3564 value to use as the return of @code{__builtin_saveregs}.
3566 The argument @var{args} is a @code{tree_list} containing the arguments
3567 that were passed to @code{__builtin_saveregs}.
3569 If this macro is not defined, the compiler will output an ordinary
3570 call to the library function @samp{__builtin_saveregs}.
3572 @c !!! a bug in texinfo; how to make the entry on the @item line allow
3573 @c more than one line of text... help...  --mew 10feb93
3574 @findex SETUP_INCOMING_VARARGS
3575 @item SETUP_INCOMING_VARARGS (@var{args_so_far}, @var{mode}, @var{type},
3576 @var{pretend_args_size}, @var{second_time})
3577 This macro offers an alternative to using @code{__builtin_saveregs} and
3578 defining the macro @code{EXPAND_BUILTIN_SAVEREGS}.  Use it to store the
3579 anonymous register arguments into the stack so that all the arguments
3580 appear to have been passed consecutively on the stack.  Once this is
3581 done, you can use the standard implementation of varargs that works for
3582 machines that pass all their arguments on the stack.
3584 The argument @var{args_so_far} is the @code{CUMULATIVE_ARGS} data
3585 structure, containing the values that obtain after processing of the
3586 named arguments.  The arguments @var{mode} and @var{type} describe the
3587 last named argument---its machine mode and its data type as a tree node.
3589 The macro implementation should do two things: first, push onto the
3590 stack all the argument registers @emph{not} used for the named
3591 arguments, and second, store the size of the data thus pushed into the
3592 @code{int}-valued variable whose name is supplied as the argument
3593 @var{pretend_args_size}.  The value that you store here will serve as
3594 additional offset for setting up the stack frame.
3596 Because you must generate code to push the anonymous arguments at
3597 compile time without knowing their data types,
3598 @code{SETUP_INCOMING_VARARGS} is only useful on machines that have just
3599 a single category of argument register and use it uniformly for all data
3600 types.
3602 If the argument @var{second_time} is nonzero, it means that the
3603 arguments of the function are being analyzed for the second time.  This
3604 happens for an inline function, which is not actually compiled until the
3605 end of the source file.  The macro @code{SETUP_INCOMING_VARARGS} should
3606 not generate any instructions in this case.
3608 @findex STRICT_ARGUMENT_NAMING
3609 @item STRICT_ARGUMENT_NAMING
3610 Define this macro if the location where a function argument is passed
3611 depends on whether or not it is a named argument.
3613 This macro controls how the @var{named} argument to @code{FUNCTION_ARG}
3614 is set for varargs and stdarg functions.  With this macro defined,
3615 the @var{named} argument is always true for named arguments, and false for
3616 unnamed arguments.  If this is not defined, but @code{SETUP_INCOMING_VARARGS}
3617 is defined, then all arguments are treated as named.  Otherwise, all named
3618 arguments except the last are treated as named.
3619 @end table
3621 @node Trampolines
3622 @section Trampolines for Nested Functions
3623 @cindex trampolines for nested functions
3624 @cindex nested functions, trampolines for
3626 A @dfn{trampoline} is a small piece of code that is created at run time
3627 when the address of a nested function is taken.  It normally resides on
3628 the stack, in the stack frame of the containing function.  These macros
3629 tell GNU CC how to generate code to allocate and initialize a
3630 trampoline.
3632 The instructions in the trampoline must do two things: load a constant
3633 address into the static chain register, and jump to the real address of
3634 the nested function.  On CISC machines such as the m68k, this requires
3635 two instructions, a move immediate and a jump.  Then the two addresses
3636 exist in the trampoline as word-long immediate operands.  On RISC
3637 machines, it is often necessary to load each address into a register in
3638 two parts.  Then pieces of each address form separate immediate
3639 operands.
3641 The code generated to initialize the trampoline must store the variable
3642 parts---the static chain value and the function address---into the
3643 immediate operands of the instructions.  On a CISC machine, this is
3644 simply a matter of copying each address to a memory reference at the
3645 proper offset from the start of the trampoline.  On a RISC machine, it
3646 may be necessary to take out pieces of the address and store them
3647 separately.
3649 @table @code
3650 @findex TRAMPOLINE_TEMPLATE
3651 @item TRAMPOLINE_TEMPLATE (@var{file})
3652 A C statement to output, on the stream @var{file}, assembler code for a
3653 block of data that contains the constant parts of a trampoline.  This
3654 code should not include a label---the label is taken care of
3655 automatically.
3657 If you do not define this macro, it means no template is needed
3658 for the target.  Do not define this macro on systems where the block move
3659 code to copy the trampoline into place would be larger than the code
3660 to generate it on the spot.
3662 @findex TRAMPOLINE_SECTION
3663 @item TRAMPOLINE_SECTION
3664 The name of a subroutine to switch to the section in which the
3665 trampoline template is to be placed (@pxref{Sections}).  The default is
3666 a value of @samp{readonly_data_section}, which places the trampoline in
3667 the section containing read-only data.
3669 @findex TRAMPOLINE_SIZE
3670 @item TRAMPOLINE_SIZE
3671 A C expression for the size in bytes of the trampoline, as an integer.
3673 @findex TRAMPOLINE_ALIGNMENT
3674 @item TRAMPOLINE_ALIGNMENT
3675 Alignment required for trampolines, in bits.
3677 If you don't define this macro, the value of @code{BIGGEST_ALIGNMENT}
3678 is used for aligning trampolines.
3680 @findex INITIALIZE_TRAMPOLINE
3681 @item INITIALIZE_TRAMPOLINE (@var{addr}, @var{fnaddr}, @var{static_chain})
3682 A C statement to initialize the variable parts of a trampoline.
3683 @var{addr} is an RTX for the address of the trampoline; @var{fnaddr} is
3684 an RTX for the address of the nested function; @var{static_chain} is an
3685 RTX for the static chain value that should be passed to the function
3686 when it is called.
3688 @findex ALLOCATE_TRAMPOLINE
3689 @item ALLOCATE_TRAMPOLINE (@var{fp})
3690 A C expression to allocate run-time space for a trampoline.  The
3691 expression value should be an RTX representing a memory reference to the
3692 space for the trampoline.
3694 @cindex @code{FUNCTION_EPILOGUE} and trampolines
3695 @cindex @code{FUNCTION_PROLOGUE} and trampolines
3696 If this macro is not defined, by default the trampoline is allocated as
3697 a stack slot.  This default is right for most machines.  The exceptions
3698 are machines where it is impossible to execute instructions in the stack
3699 area.  On such machines, you may have to implement a separate stack,
3700 using this macro in conjunction with @code{FUNCTION_PROLOGUE} and
3701 @code{FUNCTION_EPILOGUE}.
3703 @var{fp} points to a data structure, a @code{struct function}, which
3704 describes the compilation status of the immediate containing function of
3705 the function which the trampoline is for.  Normally (when
3706 @code{ALLOCATE_TRAMPOLINE} is not defined), the stack slot for the
3707 trampoline is in the stack frame of this containing function.  Other
3708 allocation strategies probably must do something analogous with this
3709 information.
3710 @end table
3712 Implementing trampolines is difficult on many machines because they have
3713 separate instruction and data caches.  Writing into a stack location
3714 fails to clear the memory in the instruction cache, so when the program
3715 jumps to that location, it executes the old contents.
3717 Here are two possible solutions.  One is to clear the relevant parts of
3718 the instruction cache whenever a trampoline is set up.  The other is to
3719 make all trampolines identical, by having them jump to a standard
3720 subroutine.  The former technique makes trampoline execution faster; the
3721 latter makes initialization faster.
3723 To clear the instruction cache when a trampoline is initialized, define
3724 the following macros which describe the shape of the cache.
3726 @table @code
3727 @findex INSN_CACHE_SIZE
3728 @item INSN_CACHE_SIZE
3729 The total size in bytes of the cache.
3731 @findex INSN_CACHE_LINE_WIDTH
3732 @item INSN_CACHE_LINE_WIDTH
3733 The length in bytes of each cache line.  The cache is divided into cache
3734 lines which are disjoint slots, each holding a contiguous chunk of data
3735 fetched from memory.  Each time data is brought into the cache, an
3736 entire line is read at once.  The data loaded into a cache line is
3737 always aligned on a boundary equal to the line size.
3739 @findex INSN_CACHE_DEPTH
3740 @item INSN_CACHE_DEPTH
3741 The number of alternative cache lines that can hold any particular memory
3742 location.
3743 @end table
3745 Alternatively, if the machine has system calls or instructions to clear
3746 the instruction cache directly, you can define the following macro.
3748 @table @code
3749 @findex CLEAR_INSN_CACHE
3750 @item CLEAR_INSN_CACHE (@var{BEG}, @var{END})
3751 If defined, expands to a C expression clearing the @emph{instruction
3752 cache} in the specified interval.  If it is not defined, and the macro
3753 INSN_CACHE_SIZE is defined, some generic code is generated to clear the
3754 cache.  The definition of this macro would typically be a series of
3755 @code{asm} statements.  Both @var{BEG} and @var{END} are both pointer
3756 expressions.
3757 @end table
3759 To use a standard subroutine, define the following macro.  In addition,
3760 you must make sure that the instructions in a trampoline fill an entire
3761 cache line with identical instructions, or else ensure that the
3762 beginning of the trampoline code is always aligned at the same point in
3763 its cache line.  Look in @file{m68k.h} as a guide.
3765 @table @code
3766 @findex TRANSFER_FROM_TRAMPOLINE
3767 @item TRANSFER_FROM_TRAMPOLINE
3768 Define this macro if trampolines need a special subroutine to do their
3769 work.  The macro should expand to a series of @code{asm} statements
3770 which will be compiled with GNU CC.  They go in a library function named
3771 @code{__transfer_from_trampoline}.
3773 If you need to avoid executing the ordinary prologue code of a compiled
3774 C function when you jump to the subroutine, you can do so by placing a
3775 special label of your own in the assembler code.  Use one @code{asm}
3776 statement to generate an assembler label, and another to make the label
3777 global.  Then trampolines can use that label to jump directly to your
3778 special assembler code.
3779 @end table
3781 @node Library Calls
3782 @section Implicit Calls to Library Routines
3783 @cindex library subroutine names
3784 @cindex @file{libgcc.a}
3786 @c prevent bad page break with this line
3787 Here is an explanation of implicit calls to library routines.
3789 @table @code
3790 @findex MULSI3_LIBCALL
3791 @item MULSI3_LIBCALL
3792 A C string constant giving the name of the function to call for
3793 multiplication of one signed full-word by another.  If you do not
3794 define this macro, the default name is used, which is @code{__mulsi3},
3795 a function defined in @file{libgcc.a}.
3797 @findex DIVSI3_LIBCALL
3798 @item DIVSI3_LIBCALL
3799 A C string constant giving the name of the function to call for
3800 division of one signed full-word by another.  If you do not define
3801 this macro, the default name is used, which is @code{__divsi3}, a
3802 function defined in @file{libgcc.a}.
3804 @findex UDIVSI3_LIBCALL
3805 @item UDIVSI3_LIBCALL
3806 A C string constant giving the name of the function to call for
3807 division of one unsigned full-word by another.  If you do not define
3808 this macro, the default name is used, which is @code{__udivsi3}, a
3809 function defined in @file{libgcc.a}.
3811 @findex MODSI3_LIBCALL
3812 @item MODSI3_LIBCALL
3813 A C string constant giving the name of the function to call for the
3814 remainder in division of one signed full-word by another.  If you do
3815 not define this macro, the default name is used, which is
3816 @code{__modsi3}, a function defined in @file{libgcc.a}.
3818 @findex UMODSI3_LIBCALL
3819 @item UMODSI3_LIBCALL
3820 A C string constant giving the name of the function to call for the
3821 remainder in division of one unsigned full-word by another.  If you do
3822 not define this macro, the default name is used, which is
3823 @code{__umodsi3}, a function defined in @file{libgcc.a}.
3825 @findex MULDI3_LIBCALL
3826 @item MULDI3_LIBCALL
3827 A C string constant giving the name of the function to call for
3828 multiplication of one signed double-word by another.  If you do not
3829 define this macro, the default name is used, which is @code{__muldi3},
3830 a function defined in @file{libgcc.a}.
3832 @findex DIVDI3_LIBCALL
3833 @item DIVDI3_LIBCALL
3834 A C string constant giving the name of the function to call for
3835 division of one signed double-word by another.  If you do not define
3836 this macro, the default name is used, which is @code{__divdi3}, a
3837 function defined in @file{libgcc.a}.
3839 @findex UDIVDI3_LIBCALL
3840 @item UDIVDI3_LIBCALL
3841 A C string constant giving the name of the function to call for
3842 division of one unsigned full-word by another.  If you do not define
3843 this macro, the default name is used, which is @code{__udivdi3}, a
3844 function defined in @file{libgcc.a}.
3846 @findex MODDI3_LIBCALL
3847 @item MODDI3_LIBCALL
3848 A C string constant giving the name of the function to call for the
3849 remainder in division of one signed double-word by another.  If you do
3850 not define this macro, the default name is used, which is
3851 @code{__moddi3}, a function defined in @file{libgcc.a}.
3853 @findex UMODDI3_LIBCALL
3854 @item UMODDI3_LIBCALL
3855 A C string constant giving the name of the function to call for the
3856 remainder in division of one unsigned full-word by another.  If you do
3857 not define this macro, the default name is used, which is
3858 @code{__umoddi3}, a function defined in @file{libgcc.a}.
3860 @findex INIT_TARGET_OPTABS
3861 @item INIT_TARGET_OPTABS
3862 Define this macro as a C statement that declares additional library
3863 routines renames existing ones. @code{init_optabs} calls this macro after
3864 initializing all the normal library routines.
3866 @findex TARGET_EDOM
3867 @cindex @code{EDOM}, implicit usage
3868 @item TARGET_EDOM
3869 The value of @code{EDOM} on the target machine, as a C integer constant
3870 expression.  If you don't define this macro, GNU CC does not attempt to
3871 deposit the value of @code{EDOM} into @code{errno} directly.  Look in
3872 @file{/usr/include/errno.h} to find the value of @code{EDOM} on your
3873 system.
3875 If you do not define @code{TARGET_EDOM}, then compiled code reports
3876 domain errors by calling the library function and letting it report the
3877 error.  If mathematical functions on your system use @code{matherr} when
3878 there is an error, then you should leave @code{TARGET_EDOM} undefined so
3879 that @code{matherr} is used normally.
3881 @findex GEN_ERRNO_RTX
3882 @cindex @code{errno}, implicit usage
3883 @item GEN_ERRNO_RTX
3884 Define this macro as a C expression to create an rtl expression that
3885 refers to the global ``variable'' @code{errno}.  (On certain systems,
3886 @code{errno} may not actually be a variable.)  If you don't define this
3887 macro, a reasonable default is used.
3889 @findex TARGET_MEM_FUNCTIONS
3890 @cindex @code{bcopy}, implicit usage
3891 @cindex @code{memcpy}, implicit usage
3892 @cindex @code{bzero}, implicit usage
3893 @cindex @code{memset}, implicit usage
3894 @item TARGET_MEM_FUNCTIONS
3895 Define this macro if GNU CC should generate calls to the System V
3896 (and ANSI C) library functions @code{memcpy} and @code{memset}
3897 rather than the BSD functions @code{bcopy} and @code{bzero}.
3899 @findex LIBGCC_NEEDS_DOUBLE
3900 @item LIBGCC_NEEDS_DOUBLE
3901 Define this macro if only @code{float} arguments cannot be passed to
3902 library routines (so they must be converted to @code{double}).  This
3903 macro affects both how library calls are generated and how the library
3904 routines in @file{libgcc1.c} accept their arguments.  It is useful on
3905 machines where floating and fixed point arguments are passed
3906 differently, such as the i860.
3908 @findex FLOAT_ARG_TYPE
3909 @item FLOAT_ARG_TYPE
3910 Define this macro to override the type used by the library routines to
3911 pick up arguments of type @code{float}.  (By default, they use a union
3912 of @code{float} and @code{int}.)
3914 The obvious choice would be @code{float}---but that won't work with
3915 traditional C compilers that expect all arguments declared as @code{float}
3916 to arrive as @code{double}.  To avoid this conversion, the library routines
3917 ask for the value as some other type and then treat it as a @code{float}.
3919 On some systems, no other type will work for this.  For these systems,
3920 you must use @code{LIBGCC_NEEDS_DOUBLE} instead, to force conversion of
3921 the values @code{double} before they are passed.
3923 @findex FLOATIFY
3924 @item FLOATIFY (@var{passed-value})
3925 Define this macro to override the way library routines redesignate a
3926 @code{float} argument as a @code{float} instead of the type it was
3927 passed as.  The default is an expression which takes the @code{float}
3928 field of the union.
3930 @findex FLOAT_VALUE_TYPE
3931 @item FLOAT_VALUE_TYPE
3932 Define this macro to override the type used by the library routines to
3933 return values that ought to have type @code{float}.  (By default, they
3934 use @code{int}.)
3936 The obvious choice would be @code{float}---but that won't work with
3937 traditional C compilers gratuitously convert values declared as
3938 @code{float} into @code{double}.
3940 @findex INTIFY
3941 @item INTIFY (@var{float-value})
3942 Define this macro to override the way the value of a
3943 @code{float}-returning library routine should be packaged in order to
3944 return it.  These functions are actually declared to return type
3945 @code{FLOAT_VALUE_TYPE} (normally @code{int}).
3947 These values can't be returned as type @code{float} because traditional
3948 C compilers would gratuitously convert the value to a @code{double}.
3950 A local variable named @code{intify} is always available when the macro
3951 @code{INTIFY} is used.  It is a union of a @code{float} field named
3952 @code{f} and a field named @code{i} whose type is
3953 @code{FLOAT_VALUE_TYPE} or @code{int}.
3955 If you don't define this macro, the default definition works by copying
3956 the value through that union.
3958 @findex nongcc_SI_type
3959 @item nongcc_SI_type
3960 Define this macro as the name of the data type corresponding to
3961 @code{SImode} in the system's own C compiler.
3963 You need not define this macro if that type is @code{long int}, as it usually
3966 @findex nongcc_word_type
3967 @item nongcc_word_type
3968 Define this macro as the name of the data type corresponding to the
3969 word_mode in the system's own C compiler.
3971 You need not define this macro if that type is @code{long int}, as it usually
3974 @findex perform_@dots{}
3975 @item perform_@dots{}
3976 Define these macros to supply explicit C statements to carry out various
3977 arithmetic operations on types @code{float} and @code{double} in the
3978 library routines in @file{libgcc1.c}.  See that file for a full list
3979 of these macros and their arguments.
3981 On most machines, you don't need to define any of these macros, because
3982 the C compiler that comes with the system takes care of doing them.
3984 @findex NEXT_OBJC_RUNTIME
3985 @item NEXT_OBJC_RUNTIME
3986 Define this macro to generate code for Objective C message sending using
3987 the calling convention of the NeXT system.  This calling convention
3988 involves passing the object, the selector and the method arguments all
3989 at once to the method-lookup library function.
3991 The default calling convention passes just the object and the selector
3992 to the lookup function, which returns a pointer to the method.
3993 @end table
3995 @node Addressing Modes
3996 @section Addressing Modes
3997 @cindex addressing modes
3999 @c prevent bad page break with this line
4000 This is about addressing modes.
4002 @table @code
4003 @findex HAVE_POST_INCREMENT
4004 @item HAVE_POST_INCREMENT
4005 Define this macro if the machine supports post-increment addressing.
4007 @findex HAVE_PRE_INCREMENT
4008 @findex HAVE_POST_DECREMENT
4009 @findex HAVE_PRE_DECREMENT
4010 @item HAVE_PRE_INCREMENT
4011 @itemx HAVE_POST_DECREMENT
4012 @itemx HAVE_PRE_DECREMENT
4013 Similar for other kinds of addressing.
4015 @findex CONSTANT_ADDRESS_P
4016 @item CONSTANT_ADDRESS_P (@var{x})
4017 A C expression that is 1 if the RTX @var{x} is a constant which
4018 is a valid address.  On most machines, this can be defined as
4019 @code{CONSTANT_P (@var{x})}, but a few machines are more restrictive
4020 in which constant addresses are supported.
4022 @findex CONSTANT_P
4023 @code{CONSTANT_P} accepts integer-values expressions whose values are
4024 not explicitly known, such as @code{symbol_ref}, @code{label_ref}, and
4025 @code{high} expressions and @code{const} arithmetic expressions, in
4026 addition to @code{const_int} and @code{const_double} expressions.
4028 @findex MAX_REGS_PER_ADDRESS
4029 @item MAX_REGS_PER_ADDRESS
4030 A number, the maximum number of registers that can appear in a valid
4031 memory address.  Note that it is up to you to specify a value equal to
4032 the maximum number that @code{GO_IF_LEGITIMATE_ADDRESS} would ever
4033 accept.
4035 @findex GO_IF_LEGITIMATE_ADDRESS
4036 @item GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label})
4037 A C compound statement with a conditional @code{goto @var{label};}
4038 executed if @var{x} (an RTX) is a legitimate memory address on the
4039 target machine for a memory operand of mode @var{mode}.
4041 It usually pays to define several simpler macros to serve as
4042 subroutines for this one.  Otherwise it may be too complicated to
4043 understand.
4045 This macro must exist in two variants: a strict variant and a
4046 non-strict one.  The strict variant is used in the reload pass.  It
4047 must be defined so that any pseudo-register that has not been
4048 allocated a hard register is considered a memory reference.  In
4049 contexts where some kind of register is required, a pseudo-register
4050 with no hard register must be rejected.
4052 The non-strict variant is used in other passes.  It must be defined to
4053 accept all pseudo-registers in every context where some kind of
4054 register is required.
4056 @findex REG_OK_STRICT
4057 Compiler source files that want to use the strict variant of this
4058 macro define the macro @code{REG_OK_STRICT}.  You should use an
4059 @code{#ifdef REG_OK_STRICT} conditional to define the strict variant
4060 in that case and the non-strict variant otherwise.
4062 Subroutines to check for acceptable registers for various purposes (one
4063 for base registers, one for index registers, and so on) are typically
4064 among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}.
4065 Then only these subroutine macros need have two variants; the higher
4066 levels of macros may be the same whether strict or not.@refill
4068 Normally, constant addresses which are the sum of a @code{symbol_ref}
4069 and an integer are stored inside a @code{const} RTX to mark them as
4070 constant.  Therefore, there is no need to recognize such sums
4071 specifically as legitimate addresses.  Normally you would simply
4072 recognize any @code{const} as legitimate.
4074 Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant
4075 sums that are not marked with  @code{const}.  It assumes that a naked
4076 @code{plus} indicates indexing.  If so, then you @emph{must} reject such
4077 naked constant sums as illegitimate addresses, so that none of them will
4078 be given to @code{PRINT_OPERAND_ADDRESS}.
4080 @cindex @code{ENCODE_SECTION_INFO} and address validation
4081 On some machines, whether a symbolic address is legitimate depends on
4082 the section that the address refers to.  On these machines, define the
4083 macro @code{ENCODE_SECTION_INFO} to store the information into the
4084 @code{symbol_ref}, and then check for it here.  When you see a
4085 @code{const}, you will have to look inside it to find the
4086 @code{symbol_ref} in order to determine the section.  @xref{Assembler
4087 Format}.
4089 @findex saveable_obstack
4090 The best way to modify the name string is by adding text to the
4091 beginning, with suitable punctuation to prevent any ambiguity.  Allocate
4092 the new name in @code{saveable_obstack}.  You will have to modify
4093 @code{ASM_OUTPUT_LABELREF} to remove and decode the added text and
4094 output the name accordingly, and define @code{STRIP_NAME_ENCODING} to
4095 access the original name string.
4097 You can check the information stored here into the @code{symbol_ref} in
4098 the definitions of the macros @code{GO_IF_LEGITIMATE_ADDRESS} and
4099 @code{PRINT_OPERAND_ADDRESS}.
4101 @findex REG_OK_FOR_BASE_P
4102 @item REG_OK_FOR_BASE_P (@var{x})
4103 A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4104 RTX) is valid for use as a base register.  For hard registers, it
4105 should always accept those which the hardware permits and reject the
4106 others.  Whether the macro accepts or rejects pseudo registers must be
4107 controlled by @code{REG_OK_STRICT} as described above.  This usually
4108 requires two variant definitions, of which @code{REG_OK_STRICT}
4109 controls the one actually used.
4111 @findex REG_MODE_OK_FOR_BASE_P
4112 @item REG_MODE_OK_FOR_BASE_P (@var{x}, @var{mode})
4113 A C expression that is just like @code{REG_OK_FOR_BASE_P}, except that
4114 that expression may examine the mode of the memory reference in
4115 @var{mode}.  You should define this macro if the mode of the memory
4116 reference affects whether a register may be used as a base register.  If
4117 you define this macro, the compiler will use it instead of
4118 @code{REG_OK_FOR_BASE_P}.
4120 @findex REG_OK_FOR_INDEX_P
4121 @item REG_OK_FOR_INDEX_P (@var{x})
4122 A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4123 RTX) is valid for use as an index register.
4125 The difference between an index register and a base register is that
4126 the index register may be scaled.  If an address involves the sum of
4127 two registers, neither one of them scaled, then either one may be
4128 labeled the ``base'' and the other the ``index''; but whichever
4129 labeling is used must fit the machine's constraints of which registers
4130 may serve in each capacity.  The compiler will try both labelings,
4131 looking for one that is valid, and will reload one or both registers
4132 only if neither labeling works.
4134 @findex LEGITIMIZE_ADDRESS
4135 @item LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win})
4136 A C compound statement that attempts to replace @var{x} with a valid
4137 memory address for an operand of mode @var{mode}.  @var{win} will be a
4138 C statement label elsewhere in the code; the macro definition may use
4140 @example
4141 GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win});
4142 @end example
4144 @noindent
4145 to avoid further processing if the address has become legitimate.
4147 @findex break_out_memory_refs
4148 @var{x} will always be the result of a call to @code{break_out_memory_refs},
4149 and @var{oldx} will be the operand that was given to that function to produce
4150 @var{x}.
4152 The code generated by this macro should not alter the substructure of
4153 @var{x}.  If it transforms @var{x} into a more legitimate form, it
4154 should assign @var{x} (which will always be a C variable) a new value.
4156 It is not necessary for this macro to come up with a legitimate
4157 address.  The compiler has standard ways of doing so in all cases.  In
4158 fact, it is safe for this macro to do nothing.  But often a
4159 machine-dependent strategy can generate better code.
4161 @findex GO_IF_MODE_DEPENDENT_ADDRESS
4162 @item GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
4163 A C statement or compound statement with a conditional @code{goto
4164 @var{label};} executed if memory address @var{x} (an RTX) can have
4165 different meanings depending on the machine mode of the memory
4166 reference it is used for or if the address is valid for some modes
4167 but not others.
4169 Autoincrement and autodecrement addresses typically have mode-dependent
4170 effects because the amount of the increment or decrement is the size
4171 of the operand being addressed.  Some machines have other mode-dependent
4172 addresses.  Many RISC machines have no mode-dependent addresses.
4174 You may assume that @var{addr} is a valid address for the machine.
4176 @findex LEGITIMATE_CONSTANT_P
4177 @item LEGITIMATE_CONSTANT_P (@var{x})
4178 A C expression that is nonzero if @var{x} is a legitimate constant for
4179 an immediate operand on the target machine.  You can assume that
4180 @var{x} satisfies @code{CONSTANT_P}, so you need not check this.  In fact,
4181 @samp{1} is a suitable definition for this macro on machines where
4182 anything @code{CONSTANT_P} is valid.@refill
4184 @findex DONT_RECORD_EQUIVALENCE
4185 @item DONT_RECORD_EQUIVALENCE (@var{note})
4186 A C expression that is nonzero if the @code{REG_EQUAL} note @var{x} should not
4187 be promoted to a @code{REG_EQUIV} note.
4189 Define this macro if @var{note} refers to a constant that must be accepted
4190 by @code{LEGITIMATE_CONSTANT_P}, but must not appear as an immediate operand.
4192 Most machine descriptions do not need to define this macro.
4193 @end table
4195 @node Condition Code
4196 @section Condition Code Status
4197 @cindex condition code status
4199 @c prevent bad page break with this line
4200 This describes the condition code status.
4202 @findex cc_status
4203 The file @file{conditions.h} defines a variable @code{cc_status} to
4204 describe how the condition code was computed (in case the interpretation of
4205 the condition code depends on the instruction that it was set by).  This
4206 variable contains the RTL expressions on which the condition code is
4207 currently based, and several standard flags.
4209 Sometimes additional machine-specific flags must be defined in the machine
4210 description header file.  It can also add additional machine-specific
4211 information by defining @code{CC_STATUS_MDEP}.
4213 @table @code
4214 @findex CC_STATUS_MDEP
4215 @item CC_STATUS_MDEP
4216 C code for a data type which is used for declaring the @code{mdep}
4217 component of @code{cc_status}.  It defaults to @code{int}.
4219 This macro is not used on machines that do not use @code{cc0}.
4221 @findex CC_STATUS_MDEP_INIT
4222 @item CC_STATUS_MDEP_INIT
4223 A C expression to initialize the @code{mdep} field to ``empty''.
4224 The default definition does nothing, since most machines don't use
4225 the field anyway.  If you want to use the field, you should probably
4226 define this macro to initialize it.
4228 This macro is not used on machines that do not use @code{cc0}.
4230 @findex NOTICE_UPDATE_CC
4231 @item NOTICE_UPDATE_CC (@var{exp}, @var{insn})
4232 A C compound statement to set the components of @code{cc_status}
4233 appropriately for an insn @var{insn} whose body is @var{exp}.  It is
4234 this macro's responsibility to recognize insns that set the condition
4235 code as a byproduct of other activity as well as those that explicitly
4236 set @code{(cc0)}.
4238 This macro is not used on machines that do not use @code{cc0}.
4240 If there are insns that do not set the condition code but do alter
4241 other machine registers, this macro must check to see whether they
4242 invalidate the expressions that the condition code is recorded as
4243 reflecting.  For example, on the 68000, insns that store in address
4244 registers do not set the condition code, which means that usually
4245 @code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such
4246 insns.  But suppose that the previous insn set the condition code
4247 based on location @samp{a4@@(102)} and the current insn stores a new
4248 value in @samp{a4}.  Although the condition code is not changed by
4249 this, it will no longer be true that it reflects the contents of
4250 @samp{a4@@(102)}.  Therefore, @code{NOTICE_UPDATE_CC} must alter
4251 @code{cc_status} in this case to say that nothing is known about the
4252 condition code value.
4254 The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal
4255 with the results of peephole optimization: insns whose patterns are
4256 @code{parallel} RTXs containing various @code{reg}, @code{mem} or
4257 constants which are just the operands.  The RTL structure of these
4258 insns is not sufficient to indicate what the insns actually do.  What
4259 @code{NOTICE_UPDATE_CC} should do when it sees one is just to run
4260 @code{CC_STATUS_INIT}.
4262 A possible definition of @code{NOTICE_UPDATE_CC} is to call a function
4263 that looks at an attribute (@pxref{Insn Attributes}) named, for example,
4264 @samp{cc}.  This avoids having detailed information about patterns in
4265 two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}.
4267 @findex EXTRA_CC_MODES
4268 @item EXTRA_CC_MODES
4269 A list of names to be used for additional modes for condition code
4270 values in registers (@pxref{Jump Patterns}).  These names are added
4271 to @code{enum machine_mode} and all have class @code{MODE_CC}.  By
4272 convention, they should start with @samp{CC} and end with @samp{mode}.
4274 You should only define this macro if your machine does not use @code{cc0}
4275 and only if additional modes are required.
4277 @findex EXTRA_CC_NAMES
4278 @item EXTRA_CC_NAMES
4279 A list of C strings giving the names for the modes listed in
4280 @code{EXTRA_CC_MODES}.  For example, the Sparc defines this macro and
4281 @code{EXTRA_CC_MODES} as
4283 @smallexample
4284 #define EXTRA_CC_MODES CC_NOOVmode, CCFPmode, CCFPEmode
4285 #define EXTRA_CC_NAMES "CC_NOOV", "CCFP", "CCFPE"
4286 @end smallexample
4288 This macro is not required if @code{EXTRA_CC_MODES} is not defined.
4290 @findex SELECT_CC_MODE
4291 @item SELECT_CC_MODE (@var{op}, @var{x}, @var{y})
4292 Returns a mode from class @code{MODE_CC} to be used when comparison
4293 operation code @var{op} is applied to rtx @var{x} and @var{y}.  For
4294 example, on the Sparc, @code{SELECT_CC_MODE} is defined as (see
4295 @pxref{Jump Patterns} for a description of the reason for this
4296 definition)
4298 @smallexample
4299 #define SELECT_CC_MODE(OP,X,Y) \
4300   (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT          \
4301    ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode)    \
4302    : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS    \
4303        || GET_CODE (X) == NEG) \
4304       ? CC_NOOVmode : CCmode))
4305 @end smallexample
4307 You need not define this macro if @code{EXTRA_CC_MODES} is not defined.
4309 @findex CANONICALIZE_COMPARISON
4310 @item CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1})
4311 One some machines not all possible comparisons are defined, but you can
4312 convert an invalid comparison into a valid one.  For example, the Alpha
4313 does not have a @code{GT} comparison, but you can use an @code{LT}
4314 comparison instead and swap the order of the operands.
4316 On such machines, define this macro to be a C statement to do any
4317 required conversions.  @var{code} is the initial comparison code
4318 and @var{op0} and @var{op1} are the left and right operands of the
4319 comparison, respectively.  You should modify @var{code}, @var{op0}, and
4320 @var{op1} as required.
4322 GNU CC will not assume that the comparison resulting from this macro is
4323 valid but will see if the resulting insn matches a pattern in the
4324 @file{md} file.
4326 You need not define this macro if it would never change the comparison
4327 code or operands.
4329 @findex REVERSIBLE_CC_MODE
4330 @item REVERSIBLE_CC_MODE (@var{mode})
4331 A C expression whose value is one if it is always safe to reverse a
4332 comparison whose mode is @var{mode}.  If @code{SELECT_CC_MODE}
4333 can ever return @var{mode} for a floating-point inequality comparison,
4334 then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero.
4336 You need not define this macro if it would always returns zero or if the
4337 floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}.
4338 For example, here is the definition used on the Sparc, where floating-point
4339 inequality comparisons are always given @code{CCFPEmode}:
4341 @smallexample
4342 #define REVERSIBLE_CC_MODE(MODE)  ((MODE) != CCFPEmode)
4343 @end smallexample
4345 @end table
4347 @node Costs
4348 @section Describing Relative Costs of Operations
4349 @cindex costs of instructions
4350 @cindex relative costs
4351 @cindex speed of instructions
4353 These macros let you describe the relative speed of various operations
4354 on the target machine.
4356 @table @code
4357 @findex CONST_COSTS
4358 @item CONST_COSTS (@var{x}, @var{code}, @var{outer_code})
4359 A part of a C @code{switch} statement that describes the relative costs
4360 of constant RTL expressions.  It must contain @code{case} labels for
4361 expression codes @code{const_int}, @code{const}, @code{symbol_ref},
4362 @code{label_ref} and @code{const_double}.  Each case must ultimately
4363 reach a @code{return} statement to return the relative cost of the use
4364 of that kind of constant value in an expression.  The cost may depend on
4365 the precise value of the constant, which is available for examination in
4366 @var{x}, and the rtx code of the expression in which it is contained,
4367 found in @var{outer_code}.
4369 @var{code} is the expression code---redundant, since it can be
4370 obtained with @code{GET_CODE (@var{x})}.
4372 @findex RTX_COSTS
4373 @findex COSTS_N_INSNS
4374 @item RTX_COSTS (@var{x}, @var{code}, @var{outer_code})
4375 Like @code{CONST_COSTS} but applies to nonconstant RTL expressions.
4376 This can be used, for example, to indicate how costly a multiply
4377 instruction is.  In writing this macro, you can use the construct
4378 @code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast
4379 instructions.  @var{outer_code} is the code of the expression in which
4380 @var{x} is contained.
4382 This macro is optional; do not define it if the default cost assumptions
4383 are adequate for the target machine.
4385 @findex ADDRESS_COST
4386 @item ADDRESS_COST (@var{address})
4387 An expression giving the cost of an addressing mode that contains
4388 @var{address}.  If not defined, the cost is computed from
4389 the @var{address} expression and the @code{CONST_COSTS} values.
4391 For most CISC machines, the default cost is a good approximation of the
4392 true cost of the addressing mode.  However, on RISC machines, all
4393 instructions normally have the same length and execution time.  Hence
4394 all addresses will have equal costs.
4396 In cases where more than one form of an address is known, the form with
4397 the lowest cost will be used.  If multiple forms have the same, lowest,
4398 cost, the one that is the most complex will be used.
4400 For example, suppose an address that is equal to the sum of a register
4401 and a constant is used twice in the same basic block.  When this macro
4402 is not defined, the address will be computed in a register and memory
4403 references will be indirect through that register.  On machines where
4404 the cost of the addressing mode containing the sum is no higher than
4405 that of a simple indirect reference, this will produce an additional
4406 instruction and possibly require an additional register.  Proper
4407 specification of this macro eliminates this overhead for such machines.
4409 Similar use of this macro is made in strength reduction of loops.
4411 @var{address} need not be valid as an address.  In such a case, the cost
4412 is not relevant and can be any value; invalid addresses need not be
4413 assigned a different cost.
4415 On machines where an address involving more than one register is as
4416 cheap as an address computation involving only one register, defining
4417 @code{ADDRESS_COST} to reflect this can cause two registers to be live
4418 over a region of code where only one would have been if
4419 @code{ADDRESS_COST} were not defined in that manner.  This effect should
4420 be considered in the definition of this macro.  Equivalent costs should
4421 probably only be given to addresses with different numbers of registers
4422 on machines with lots of registers.
4424 This macro will normally either not be defined or be defined as a
4425 constant.
4427 @findex REGISTER_MOVE_COST
4428 @item REGISTER_MOVE_COST (@var{from}, @var{to})
4429 A C expression for the cost of moving data from a register in class
4430 @var{from} to one in class @var{to}.  The classes are expressed using
4431 the enumeration values such as @code{GENERAL_REGS}.  A value of 2 is the
4432 default; other values are interpreted relative to that.
4434 It is not required that the cost always equal 2 when @var{from} is the
4435 same as @var{to}; on some machines it is expensive to move between
4436 registers if they are not general registers.
4438 If reload sees an insn consisting of a single @code{set} between two
4439 hard registers, and if @code{REGISTER_MOVE_COST} applied to their
4440 classes returns a value of 2, reload does not check to ensure that the
4441 constraints of the insn are met.  Setting a cost of other than 2 will
4442 allow reload to verify that the constraints are met.  You should do this
4443 if the @samp{mov@var{m}} pattern's constraints do not allow such copying.
4445 @findex MEMORY_MOVE_COST
4446 @item MEMORY_MOVE_COST (@var{m})
4447 A C expression for the cost of moving data of mode @var{m} between a
4448 register and memory.  A value of 4 is the default; this cost is relative
4449 to those in @code{REGISTER_MOVE_COST}.
4451 If moving between registers and memory is more expensive than between
4452 two registers, you should define this macro to express the relative cost.
4454 @findex BRANCH_COST
4455 @item BRANCH_COST
4456 A C expression for the cost of a branch instruction.  A value of 1 is
4457 the default; other values are interpreted relative to that.
4458 @end table
4460 Here are additional macros which do not specify precise relative costs,
4461 but only that certain actions are more expensive than GNU CC would
4462 ordinarily expect.
4464 @table @code
4465 @findex SLOW_BYTE_ACCESS
4466 @item SLOW_BYTE_ACCESS
4467 Define this macro as a C expression which is nonzero if accessing less
4468 than a word of memory (i.e. a @code{char} or a @code{short}) is no
4469 faster than accessing a word of memory, i.e., if such access
4470 require more than one instruction or if there is no difference in cost
4471 between byte and (aligned) word loads.
4473 When this macro is not defined, the compiler will access a field by
4474 finding the smallest containing object; when it is defined, a fullword
4475 load will be used if alignment permits.  Unless bytes accesses are
4476 faster than word accesses, using word accesses is preferable since it
4477 may eliminate subsequent memory access if subsequent accesses occur to
4478 other fields in the same word of the structure, but to different bytes.
4480 @findex SLOW_ZERO_EXTEND
4481 @item SLOW_ZERO_EXTEND
4482 Define this macro if zero-extension (of a @code{char} or @code{short}
4483 to an @code{int}) can be done faster if the destination is a register
4484 that is known to be zero.
4486 If you define this macro, you must have instruction patterns that
4487 recognize RTL structures like this:
4489 @smallexample
4490 (set (strict_low_part (subreg:QI (reg:SI @dots{}) 0)) @dots{})
4491 @end smallexample
4493 @noindent
4494 and likewise for @code{HImode}.
4496 @findex SLOW_UNALIGNED_ACCESS
4497 @item SLOW_UNALIGNED_ACCESS
4498 Define this macro to be the value 1 if unaligned accesses have a cost
4499 many times greater than aligned accesses, for example if they are
4500 emulated in a trap handler.
4502 When this macro is non-zero, the compiler will act as if
4503 @code{STRICT_ALIGNMENT} were non-zero when generating code for block
4504 moves.  This can cause significantly more instructions to be produced.
4505 Therefore, do not set this macro non-zero if unaligned accesses only add a
4506 cycle or two to the time for a memory access.
4508 If the value of this macro is always zero, it need not be defined.
4510 @findex DONT_REDUCE_ADDR
4511 @item DONT_REDUCE_ADDR
4512 Define this macro to inhibit strength reduction of memory addresses.
4513 (On some machines, such strength reduction seems to do harm rather
4514 than good.)
4516 @findex MOVE_RATIO
4517 @item MOVE_RATIO
4518 The number of scalar move insns which should be generated instead of a
4519 string move insn or a library call.  Increasing the value will always
4520 make code faster, but eventually incurs high cost in increased code size.
4522 If you don't define this, a reasonable default is used.
4524 @findex NO_FUNCTION_CSE
4525 @item NO_FUNCTION_CSE
4526 Define this macro if it is as good or better to call a constant
4527 function address than to call an address kept in a register.
4529 @findex NO_RECURSIVE_FUNCTION_CSE
4530 @item NO_RECURSIVE_FUNCTION_CSE
4531 Define this macro if it is as good or better for a function to call
4532 itself with an explicit address than to call an address kept in a
4533 register.
4535 @findex ADJUST_COST
4536 @item ADJUST_COST (@var{insn}, @var{link}, @var{dep_insn}, @var{cost})
4537 A C statement (sans semicolon) to update the integer variable @var{cost}
4538 based on the relationship between @var{insn} that is dependent on
4539 @var{dep_insn} through the dependence @var{link}.  The default is to
4540 make no adjustment to @var{cost}.  This can be used for example to
4541 specify to the scheduler that an output- or anti-dependence does not
4542 incur the same cost as a data-dependence.
4544 @findex ADJUST_PRIORITY
4545 @item ADJUST_PRIORITY (@var{insn})
4546 A C statement (sans semicolon) to update the integer scheduling
4547 priority @code{INSN_PRIORITY(@var{insn})}.  Reduce the priority
4548 to execute the @var{insn} earlier, increase the priority to execute
4549 @var{insn} later.    Do not define this macro if you do not need to
4550 adjust the scheduling priorities of insns.
4551 @end table
4553 @node Sections
4554 @section Dividing the Output into Sections (Texts, Data, @dots{})
4555 @c the above section title is WAY too long.  maybe cut the part between
4556 @c the (...)?  --mew 10feb93
4558 An object file is divided into sections containing different types of
4559 data.  In the most common case, there are three sections: the @dfn{text
4560 section}, which holds instructions and read-only data; the @dfn{data
4561 section}, which holds initialized writable data; and the @dfn{bss
4562 section}, which holds uninitialized data.  Some systems have other kinds
4563 of sections.
4565 The compiler must tell the assembler when to switch sections.  These
4566 macros control what commands to output to tell the assembler this.  You
4567 can also define additional sections.
4569 @table @code
4570 @findex TEXT_SECTION_ASM_OP
4571 @item TEXT_SECTION_ASM_OP
4572 A C expression whose value is a string containing the assembler
4573 operation that should precede instructions and read-only data.  Normally
4574 @code{".text"} is right.
4576 @findex DATA_SECTION_ASM_OP
4577 @item DATA_SECTION_ASM_OP
4578 A C expression whose value is a string containing the assembler
4579 operation to identify the following data as writable initialized data.
4580 Normally @code{".data"} is right.
4582 @findex SHARED_SECTION_ASM_OP
4583 @item SHARED_SECTION_ASM_OP
4584 If defined, a C expression whose value is a string containing the
4585 assembler operation to identify the following data as shared data.  If
4586 not defined, @code{DATA_SECTION_ASM_OP} will be used.
4588 @findex BSS_SECTION_ASM_OP
4589 @item BSS_SECTION_ASM_OP
4590 If defined, a C expression whose value is a string containing the
4591 assembler operation to identify the following data as uninitialized global
4592 data.  If not defined, and neither @code{ASM_OUTPUT_BSS} nor
4593 @code{ASM_OUTPUT_ALIGNED_BSS} are defined, uninitialized global data will be
4594 output in the data section if @samp{-fno-common} is passed, otherwise
4595 @code{ASM_OUTPUT_COMMON} will be used.
4597 @findex SHARED_BSS_SECTION_ASM_OP
4598 @item SHARED_BSS_SECTION_ASM_OP
4599 If defined, a C expression whose value is a string containing the
4600 assembler operation to identify the following data as uninitialized global
4601 shared data.  If not defined, and @code{BSS_SECTION_ASM_OP} is, the latter
4602 will be used.
4604 @findex INIT_SECTION_ASM_OP
4605 @item INIT_SECTION_ASM_OP
4606 If defined, a C expression whose value is a string containing the
4607 assembler operation to identify the following data as initialization
4608 code.  If not defined, GNU CC will assume such a section does not
4609 exist.
4611 @findex EXTRA_SECTIONS
4612 @findex in_text
4613 @findex in_data
4614 @item EXTRA_SECTIONS
4615 A list of names for sections other than the standard two, which are
4616 @code{in_text} and @code{in_data}.  You need not define this macro
4617 on a system with no other sections (that GCC needs to use).
4619 @findex EXTRA_SECTION_FUNCTIONS
4620 @findex text_section
4621 @findex data_section
4622 @item EXTRA_SECTION_FUNCTIONS
4623 One or more functions to be defined in @file{varasm.c}.  These
4624 functions should do jobs analogous to those of @code{text_section} and
4625 @code{data_section}, for your additional sections.  Do not define this
4626 macro if you do not define @code{EXTRA_SECTIONS}.
4628 @findex READONLY_DATA_SECTION
4629 @item READONLY_DATA_SECTION
4630 On most machines, read-only variables, constants, and jump tables are
4631 placed in the text section.  If this is not the case on your machine,
4632 this macro should be defined to be the name of a function (either
4633 @code{data_section} or a function defined in @code{EXTRA_SECTIONS}) that
4634 switches to the section to be used for read-only items.
4636 If these items should be placed in the text section, this macro should
4637 not be defined.
4639 @findex SELECT_SECTION
4640 @item SELECT_SECTION (@var{exp}, @var{reloc})
4641 A C statement or statements to switch to the appropriate section for
4642 output of @var{exp}.  You can assume that @var{exp} is either a
4643 @code{VAR_DECL} node or a constant of some sort.  @var{reloc}
4644 indicates whether the initial value of @var{exp} requires link-time
4645 relocations.  Select the section by calling @code{text_section} or one
4646 of the alternatives for other sections.
4648 Do not define this macro if you put all read-only variables and
4649 constants in the read-only data section (usually the text section).
4651 @findex SELECT_RTX_SECTION
4652 @item SELECT_RTX_SECTION (@var{mode}, @var{rtx})
4653 A C statement or statements to switch to the appropriate section for
4654 output of @var{rtx} in mode @var{mode}.  You can assume that @var{rtx}
4655 is some kind of constant in RTL.  The argument @var{mode} is redundant
4656 except in the case of a @code{const_int} rtx.  Select the section by
4657 calling @code{text_section} or one of the alternatives for other
4658 sections.
4660 Do not define this macro if you put all constants in the read-only
4661 data section.
4663 @findex JUMP_TABLES_IN_TEXT_SECTION
4664 @item JUMP_TABLES_IN_TEXT_SECTION
4665 Define this macro if jump tables (for @code{tablejump} insns) should be
4666 output in the text section, along with the assembler instructions.
4667 Otherwise, the readonly data section is used.
4669 This macro is irrelevant if there is no separate readonly data section.
4671 @findex ENCODE_SECTION_INFO
4672 @item ENCODE_SECTION_INFO (@var{decl})
4673 Define this macro if references to a symbol must be treated differently
4674 depending on something about the variable or function named by the
4675 symbol (such as what section it is in).
4677 The macro definition, if any, is executed immediately after the rtl for
4678 @var{decl} has been created and stored in @code{DECL_RTL (@var{decl})}.
4679 The value of the rtl will be a @code{mem} whose address is a
4680 @code{symbol_ref}.
4682 @cindex @code{SYMBOL_REF_FLAG}, in @code{ENCODE_SECTION_INFO}
4683 The usual thing for this macro to do is to record a flag in the
4684 @code{symbol_ref} (such as @code{SYMBOL_REF_FLAG}) or to store a
4685 modified name string in the @code{symbol_ref} (if one bit is not enough
4686 information).
4688 @findex STRIP_NAME_ENCODING
4689 @item STRIP_NAME_ENCODING (@var{var}, @var{sym_name})
4690 Decode @var{sym_name} and store the real name part in @var{var}, sans
4691 the characters that encode section info.  Define this macro if
4692 @code{ENCODE_SECTION_INFO} alters the symbol's name string.
4694 @findex UNIQUE_SECTION_P (@var{decl})
4695 @item UNIQUE_SECTION_P (@var{decl})
4696 A C expression which evaluates to true if @var{decl} should be placed
4697 into a unique section for some target-specific reason.  If you do not
4698 define this macro, the default is @samp{0}.  Note that the flag
4699 @samp{-ffunction-sections} will also cause functions to be placed into
4700 unique sections.
4702 @findex UNIQUE_SECTION
4703 @item UNIQUE_SECTION (@var{decl}, @var{reloc})
4704 A C statement to build up a unique section name, expressed as a
4705 STRING_CST node, and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
4706 @var{reloc} indicates whether the initial value of @var{exp} requires
4707 link-time relocations.  If you do not define this macro, GNU CC will use
4708 the symbol name prefixed by @samp{.} as the section name.
4709 @end table
4711 @node PIC
4712 @section Position Independent Code
4713 @cindex position independent code
4714 @cindex PIC
4716 This section describes macros that help implement generation of position
4717 independent code.  Simply defining these macros is not enough to
4718 generate valid PIC; you must also add support to the macros
4719 @code{GO_IF_LEGITIMATE_ADDRESS} and @code{PRINT_OPERAND_ADDRESS}, as
4720 well as @code{LEGITIMIZE_ADDRESS}.  You must modify the definition of
4721 @samp{movsi} to do something appropriate when the source operand
4722 contains a symbolic address.  You may also need to alter the handling of
4723 switch statements so that they use relative addresses.
4724 @c i rearranged the order of the macros above to try to force one of
4725 @c them to the next line, to eliminate an overfull hbox. --mew 10feb93
4727 @table @code
4728 @findex PIC_OFFSET_TABLE_REGNUM
4729 @item PIC_OFFSET_TABLE_REGNUM
4730 The register number of the register used to address a table of static
4731 data addresses in memory.  In some cases this register is defined by a
4732 processor's ``application binary interface'' (ABI).  When this macro
4733 is defined, RTL is generated for this register once, as with the stack
4734 pointer and frame pointer registers.  If this macro is not defined, it
4735 is up to the machine-dependent files to allocate such a register (if
4736 necessary).
4738 @findex PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
4739 @item PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
4740 Define this macro if the register defined by
4741 @code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls.  Do not define
4742 this macro if @code{PPIC_OFFSET_TABLE_REGNUM} is not defined.
4744 @findex FINALIZE_PIC
4745 @item FINALIZE_PIC
4746 By generating position-independent code, when two different programs (A
4747 and B) share a common library (libC.a), the text of the library can be
4748 shared whether or not the library is linked at the same address for both
4749 programs.  In some of these environments, position-independent code
4750 requires not only the use of different addressing modes, but also
4751 special code to enable the use of these addressing modes.
4753 The @code{FINALIZE_PIC} macro serves as a hook to emit these special
4754 codes once the function is being compiled into assembly code, but not
4755 before.  (It is not done before, because in the case of compiling an
4756 inline function, it would lead to multiple PIC prologues being
4757 included in functions which used inline functions and were compiled to
4758 assembly language.)
4760 @findex LEGITIMATE_PIC_OPERAND_P
4761 @item LEGITIMATE_PIC_OPERAND_P (@var{x})
4762 A C expression that is nonzero if @var{x} is a legitimate immediate
4763 operand on the target machine when generating position independent code.
4764 You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not
4765 check this.  You can also assume @var{flag_pic} is true, so you need not
4766 check it either.  You need not define this macro if all constants
4767 (including @code{SYMBOL_REF}) can be immediate operands when generating
4768 position independent code.
4769 @end table
4771 @node Assembler Format
4772 @section Defining the Output Assembler Language
4774 This section describes macros whose principal purpose is to describe how
4775 to write instructions in assembler language--rather than what the
4776 instructions do.
4778 @menu
4779 * File Framework::       Structural information for the assembler file.
4780 * Data Output::          Output of constants (numbers, strings, addresses).
4781 * Uninitialized Data::   Output of uninitialized variables.
4782 * Label Output::         Output and generation of labels.
4783 * Initialization::       General principles of initialization
4784                            and termination routines.
4785 * Macros for Initialization::
4786                          Specific macros that control the handling of
4787                            initialization and termination routines.
4788 * Instruction Output::   Output of actual instructions.
4789 * Dispatch Tables::      Output of jump tables.
4790 * Exception Region Output:: Output of exception region code.
4791 * Alignment Output::     Pseudo ops for alignment and skipping data.
4792 @end menu
4794 @node File Framework
4795 @subsection The Overall Framework of an Assembler File
4796 @cindex assembler format
4797 @cindex output of assembler code
4799 @c prevent bad page break with this line
4800 This describes the overall framework of an assembler file.
4802 @table @code
4803 @findex ASM_FILE_START
4804 @item ASM_FILE_START (@var{stream})
4805 A C expression which outputs to the stdio stream @var{stream}
4806 some appropriate text to go at the start of an assembler file.
4808 Normally this macro is defined to output a line containing
4809 @samp{#NO_APP}, which is a comment that has no effect on most
4810 assemblers but tells the GNU assembler that it can save time by not
4811 checking for certain assembler constructs.
4813 On systems that use SDB, it is necessary to output certain commands;
4814 see @file{attasm.h}.
4816 @findex ASM_FILE_END
4817 @item ASM_FILE_END (@var{stream})
4818 A C expression which outputs to the stdio stream @var{stream}
4819 some appropriate text to go at the end of an assembler file.
4821 If this macro is not defined, the default is to output nothing
4822 special at the end of the file.  Most systems don't require any
4823 definition.
4825 On systems that use SDB, it is necessary to output certain commands;
4826 see @file{attasm.h}.
4828 @findex ASM_IDENTIFY_GCC
4829 @item ASM_IDENTIFY_GCC (@var{file})
4830 A C statement to output assembler commands which will identify
4831 the object file as having been compiled with GNU CC (or another
4832 GNU compiler).
4834 If you don't define this macro, the string @samp{gcc_compiled.:}
4835 is output.  This string is calculated to define a symbol which,
4836 on BSD systems, will never be defined for any other reason.
4837 GDB checks for the presence of this symbol when reading the
4838 symbol table of an executable.
4840 On non-BSD systems, you must arrange communication with GDB in
4841 some other fashion.  If GDB is not used on your system, you can
4842 define this macro with an empty body.
4844 @findex ASM_COMMENT_START
4845 @item ASM_COMMENT_START
4846 A C string constant describing how to begin a comment in the target
4847 assembler language.  The compiler assumes that the comment will end at
4848 the end of the line.
4850 @findex ASM_APP_ON
4851 @item ASM_APP_ON
4852 A C string constant for text to be output before each @code{asm}
4853 statement or group of consecutive ones.  Normally this is
4854 @code{"#APP"}, which is a comment that has no effect on most
4855 assemblers but tells the GNU assembler that it must check the lines
4856 that follow for all valid assembler constructs.
4858 @findex ASM_APP_OFF
4859 @item ASM_APP_OFF
4860 A C string constant for text to be output after each @code{asm}
4861 statement or group of consecutive ones.  Normally this is
4862 @code{"#NO_APP"}, which tells the GNU assembler to resume making the
4863 time-saving assumptions that are valid for ordinary compiler output.
4865 @findex ASM_OUTPUT_SOURCE_FILENAME
4866 @item ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
4867 A C statement to output COFF information or DWARF debugging information
4868 which indicates that filename @var{name} is the current source file to
4869 the stdio stream @var{stream}.
4871 This macro need not be defined if the standard form of output
4872 for the file format in use is appropriate.
4874 @findex ASM_OUTPUT_SOURCE_LINE
4875 @item ASM_OUTPUT_SOURCE_LINE (@var{stream}, @var{line})
4876 A C statement to output DBX or SDB debugging information before code
4877 for line number @var{line} of the current source file to the
4878 stdio stream @var{stream}.
4880 This macro need not be defined if the standard form of debugging
4881 information for the debugger in use is appropriate.
4883 @findex ASM_OUTPUT_IDENT
4884 @item ASM_OUTPUT_IDENT (@var{stream}, @var{string})
4885 A C statement to output something to the assembler file to handle a
4886 @samp{#ident} directive containing the text @var{string}.  If this
4887 macro is not defined, nothing is output for a @samp{#ident} directive.
4889 @findex ASM_OUTPUT_SECTION_NAME
4890 @item ASM_OUTPUT_SECTION_NAME (@var{stream}, @var{decl}, @var{name}, @var{reloc})
4891 A C statement to output something to the assembler file to switch to section
4892 @var{name} for object @var{decl} which is either a @code{FUNCTION_DECL}, a
4893 @code{VAR_DECL} or @code{NULL_TREE}.  @var{reloc}
4894 indicates whether the initial value of @var{exp} requires link-time
4895 relocations.  Some target formats do not support
4896 arbitrary sections.  Do not define this macro in such cases.
4898 At present this macro is only used to support section attributes.
4899 When this macro is undefined, section attributes are disabled.
4901 @findex OBJC_PROLOGUE
4902 @item OBJC_PROLOGUE
4903 A C statement to output any assembler statements which are required to
4904 precede any Objective C object definitions or message sending.  The
4905 statement is executed only when compiling an Objective C program.
4906 @end table
4908 @need 2000
4909 @node Data Output
4910 @subsection Output of Data
4912 @c prevent bad page break with this line
4913 This describes data output.
4915 @table @code
4916 @findex ASM_OUTPUT_LONG_DOUBLE
4917 @findex ASM_OUTPUT_DOUBLE
4918 @findex ASM_OUTPUT_FLOAT
4919 @item ASM_OUTPUT_LONG_DOUBLE (@var{stream}, @var{value})
4920 @itemx ASM_OUTPUT_DOUBLE (@var{stream}, @var{value})
4921 @itemx ASM_OUTPUT_FLOAT (@var{stream}, @var{value})
4922 @itemx ASM_OUTPUT_THREE_QUARTER_FLOAT (@var{stream}, @var{value})
4923 @itemx ASM_OUTPUT_SHORT_FLOAT (@var{stream}, @var{value})
4924 @itemx ASM_OUTPUT_BYTE_FLOAT (@var{stream}, @var{value})
4925 A C statement to output to the stdio stream @var{stream} an assembler
4926 instruction to assemble a floating-point constant of @code{TFmode},
4927 @code{DFmode}, @code{SFmode}, @code{TQFmode}, @code{HFmode}, or
4928 @code{QFmode}, respectively, whose value is @var{value}.  @var{value}
4929 will be a C expression of type @code{REAL_VALUE_TYPE}.  Macros such as
4930 @code{REAL_VALUE_TO_TARGET_DOUBLE} are useful for writing these
4931 definitions.
4933 @findex ASM_OUTPUT_QUADRUPLE_INT
4934 @findex ASM_OUTPUT_DOUBLE_INT
4935 @findex ASM_OUTPUT_INT
4936 @findex ASM_OUTPUT_SHORT
4937 @findex ASM_OUTPUT_CHAR
4938 @findex output_addr_const
4939 @item ASM_OUTPUT_QUADRUPLE_INT (@var{stream}, @var{exp})
4940 @itemx ASM_OUTPUT_DOUBLE_INT (@var{stream}, @var{exp})
4941 @itemx ASM_OUTPUT_INT (@var{stream}, @var{exp})
4942 @itemx ASM_OUTPUT_SHORT (@var{stream}, @var{exp})
4943 @itemx ASM_OUTPUT_CHAR (@var{stream}, @var{exp})
4944 A C statement to output to the stdio stream @var{stream} an assembler
4945 instruction to assemble an integer of 16, 8, 4, 2 or 1 bytes,
4946 respectively, whose value is @var{value}.  The argument @var{exp} will
4947 be an RTL expression which represents a constant value.  Use
4948 @samp{output_addr_const (@var{stream}, @var{exp})} to output this value
4949 as an assembler expression.@refill
4951 For sizes larger than @code{UNITS_PER_WORD}, if the action of a macro
4952 would be identical to repeatedly calling the macro corresponding to
4953 a size of @code{UNITS_PER_WORD}, once for each word, you need not define
4954 the macro.
4956 @findex ASM_OUTPUT_BYTE
4957 @item ASM_OUTPUT_BYTE (@var{stream}, @var{value})
4958 A C statement to output to the stdio stream @var{stream} an assembler
4959 instruction to assemble a single byte containing the number @var{value}.
4961 @findex ASM_BYTE_OP
4962 @item ASM_BYTE_OP
4963 A C string constant giving the pseudo-op to use for a sequence of
4964 single-byte constants.  If this macro is not defined, the default is
4965 @code{"byte"}.
4967 @findex ASM_OUTPUT_ASCII
4968 @item ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len})
4969 A C statement to output to the stdio stream @var{stream} an assembler
4970 instruction to assemble a string constant containing the @var{len}
4971 bytes at @var{ptr}.  @var{ptr} will be a C expression of type
4972 @code{char *} and @var{len} a C expression of type @code{int}.
4974 If the assembler has a @code{.ascii} pseudo-op as found in the
4975 Berkeley Unix assembler, do not define the macro
4976 @code{ASM_OUTPUT_ASCII}.
4978 @findex CONSTANT_POOL_BEFORE_FUNCTION
4979 @item CONSTANT_POOL_BEFORE_FUNCTION
4980 You may define this macro as a C expression.  You should define the
4981 expression to have a non-zero value if GNU CC should output the constant
4982 pool for a function before the code for the function, or a zero value if
4983 GNU CC should output the constant pool after the function.  If you do
4984 not define this macro, the usual case, GNU CC will output the constant
4985 pool before the function.
4987 @findex ASM_OUTPUT_POOL_PROLOGUE
4988 @item ASM_OUTPUT_POOL_PROLOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
4989 A C statement to output assembler commands to define the start of the
4990 constant pool for a function.  @var{funname} is a string giving
4991 the name of the function.  Should the return type of the function
4992 be required, it can be obtained via @var{fundecl}.  @var{size}
4993 is the size, in bytes, of the constant pool that will be written
4994 immediately after this call.
4996 If no constant-pool prefix is required, the usual case, this macro need
4997 not be defined.
4999 @findex ASM_OUTPUT_SPECIAL_POOL_ENTRY
5000 @item ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto})
5001 A C statement (with or without semicolon) to output a constant in the
5002 constant pool, if it needs special treatment.  (This macro need not do
5003 anything for RTL expressions that can be output normally.)
5005 The argument @var{file} is the standard I/O stream to output the
5006 assembler code on.  @var{x} is the RTL expression for the constant to
5007 output, and @var{mode} is the machine mode (in case @var{x} is a
5008 @samp{const_int}).  @var{align} is the required alignment for the value
5009 @var{x}; you should output an assembler directive to force this much
5010 alignment.
5012 The argument @var{labelno} is a number to use in an internal label for
5013 the address of this pool entry.  The definition of this macro is
5014 responsible for outputting the label definition at the proper place.
5015 Here is how to do this:
5017 @example
5018 ASM_OUTPUT_INTERNAL_LABEL (@var{file}, "LC", @var{labelno});
5019 @end example
5021 When you output a pool entry specially, you should end with a
5022 @code{goto} to the label @var{jumpto}.  This will prevent the same pool
5023 entry from being output a second time in the usual manner.
5025 You need not define this macro if it would do nothing.
5027 @findex CONSTANT_AFTER_FUNCTION_P
5028 @item CONSTANT_AFTER_FUNCTION_P (@var{exp})
5029 Define this macro as a C expression which is nonzero if the constant
5030 @var{exp}, of type @code{tree}, should be output after the code for a
5031 function.  The compiler will normally output all constants before the
5032 function; you need not define this macro if this is OK.
5034 @findex ASM_OUTPUT_POOL_EPILOGUE
5035 @item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
5036 A C statement to output assembler commands to at the end of the constant
5037 pool for a function.  @var{funname} is a string giving the name of the
5038 function.  Should the return type of the function be required, you can
5039 obtain it via @var{fundecl}.  @var{size} is the size, in bytes, of the
5040 constant pool that GNU CC wrote immediately before this call.
5042 If no constant-pool epilogue is required, the usual case, you need not
5043 define this macro.
5045 @findex IS_ASM_LOGICAL_LINE_SEPARATOR
5046 @item IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C})
5047 Define this macro as a C expression which is nonzero if @var{C} is
5048 used as a logical line separator by the assembler.
5050 If you do not define this macro, the default is that only
5051 the character @samp{;} is treated as a logical line separator.
5054 @findex ASM_OPEN_PAREN
5055 @findex ASM_CLOSE_PAREN
5056 @item ASM_OPEN_PAREN
5057 @itemx ASM_CLOSE_PAREN
5058 These macros are defined as C string constant, describing the syntax
5059 in the assembler for grouping arithmetic expressions.  The following
5060 definitions are correct for most assemblers:
5062 @example
5063 #define ASM_OPEN_PAREN "("
5064 #define ASM_CLOSE_PAREN ")"
5065 @end example
5066 @end table
5068   These macros are provided by @file{real.h} for writing the definitions
5069 of @code{ASM_OUTPUT_DOUBLE} and the like:
5071 @table @code
5072 @item REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l})
5073 @itemx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l})
5074 @itemx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l})
5075 @findex REAL_VALUE_TO_TARGET_SINGLE
5076 @findex REAL_VALUE_TO_TARGET_DOUBLE
5077 @findex REAL_VALUE_TO_TARGET_LONG_DOUBLE
5078 These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the target's
5079 floating point representation, and store its bit pattern in the array of
5080 @code{long int} whose address is @var{l}.  The number of elements in the
5081 output array is determined by the size of the desired target floating
5082 point data type: 32 bits of it go in each @code{long int} array
5083 element.  Each array element holds 32 bits of the result, even if
5084 @code{long int} is wider than 32 bits on the host machine.
5086 The array element values are designed so that you can print them out
5087 using @code{fprintf} in the order they should appear in the target
5088 machine's memory.
5090 @item REAL_VALUE_TO_DECIMAL (@var{x}, @var{format}, @var{string})
5091 @findex REAL_VALUE_TO_DECIMAL
5092 This macro converts @var{x}, of type @code{REAL_VALUE_TYPE}, to a
5093 decimal number and stores it as a string into @var{string}.
5094 You must pass, as @var{string}, the address of a long enough block
5095 of space to hold the result.
5097 The argument @var{format} is a @code{printf}-specification that serves
5098 as a suggestion for how to format the output string.
5099 @end table
5101 @node Uninitialized Data
5102 @subsection Output of Uninitialized Variables
5104 Each of the macros in this section is used to do the whole job of
5105 outputting a single uninitialized variable.
5107 @table @code
5108 @findex ASM_OUTPUT_COMMON
5109 @item ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
5110 A C statement (sans semicolon) to output to the stdio stream
5111 @var{stream} the assembler definition of a common-label named
5112 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
5113 is the size rounded up to whatever alignment the caller wants.
5115 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
5116 output the name itself; before and after that, output the additional
5117 assembler syntax for defining the name, and a newline.
5119 This macro controls how the assembler definitions of uninitialized
5120 common global variables are output.
5122 @findex ASM_OUTPUT_ALIGNED_COMMON
5123 @item ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment})
5124 Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a
5125 separate, explicit argument.  If you define this macro, it is used in
5126 place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in
5127 handling the required alignment of the variable.  The alignment is specified
5128 as the number of bits.
5130 @findex ASM_OUTPUT_SHARED_COMMON
5131 @item ASM_OUTPUT_SHARED_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
5132 If defined, it is similar to @code{ASM_OUTPUT_COMMON}, except that it
5133 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_COMMON}
5134 will be used.
5136 @findex ASM_OUTPUT_BSS
5137 @item ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
5138 A C statement (sans semicolon) to output to the stdio stream
5139 @var{stream} the assembler definition of uninitialized global @var{decl} named
5140 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
5141 is the size rounded up to whatever alignment the caller wants.
5143 Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
5144 defining this macro.  If unable, use the expression
5145 @code{assemble_name (@var{stream}, @var{name})} to output the name itself;
5146 before and after that, output the additional assembler syntax for defining
5147 the name, and a newline.
5149 This macro controls how the assembler definitions of uninitialized global
5150 variables are output.  This macro exists to properly support languages like
5151 @code{c++} which do not have @code{common} data.  However, this macro currently
5152 is not defined for all targets.  If this macro and
5153 @code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON}
5154 or @code{ASM_OUTPUT_ALIGNED_COMMON} is used.
5156 @findex ASM_OUTPUT_ALIGNED_BSS
5157 @item ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
5158 Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
5159 separate, explicit argument.  If you define this macro, it is used in
5160 place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
5161 handling the required alignment of the variable.  The alignment is specified
5162 as the number of bits.
5164 Try to use function @code{asm_output_aligned_bss} defined in file
5165 @file{varasm.c} when defining this macro.
5167 @findex ASM_OUTPUT_SHARED_BSS
5168 @item ASM_OUTPUT_SHARED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
5169 If defined, it is similar to @code{ASM_OUTPUT_BSS}, except that it
5170 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_BSS}
5171 will be used.
5173 @findex ASM_OUTPUT_LOCAL
5174 @item ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
5175 A C statement (sans semicolon) to output to the stdio stream
5176 @var{stream} the assembler definition of a local-common-label named
5177 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
5178 is the size rounded up to whatever alignment the caller wants.
5180 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
5181 output the name itself; before and after that, output the additional
5182 assembler syntax for defining the name, and a newline.
5184 This macro controls how the assembler definitions of uninitialized
5185 static variables are output.
5187 @findex ASM_OUTPUT_ALIGNED_LOCAL
5188 @item ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment})
5189 Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a
5190 separate, explicit argument.  If you define this macro, it is used in
5191 place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in
5192 handling the required alignment of the variable.  The alignment is specified
5193 as the number of bits.
5195 @findex ASM_OUTPUT_SHARED_LOCAL
5196 @item ASM_OUTPUT_SHARED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
5197 If defined, it is similar to @code{ASM_OUTPUT_LOCAL}, except that it
5198 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_LOCAL}
5199 will be used.
5200 @end table
5202 @node Label Output
5203 @subsection Output and Generation of Labels
5205 @c prevent bad page break with this line
5206 This is about outputting labels.
5208 @table @code
5209 @findex ASM_OUTPUT_LABEL
5210 @findex assemble_name
5211 @item ASM_OUTPUT_LABEL (@var{stream}, @var{name})
5212 A C statement (sans semicolon) to output to the stdio stream
5213 @var{stream} the assembler definition of a label named @var{name}.
5214 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
5215 output the name itself; before and after that, output the additional
5216 assembler syntax for defining the name, and a newline.
5218 @findex ASM_DECLARE_FUNCTION_NAME
5219 @item ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl})
5220 A C statement (sans semicolon) to output to the stdio stream
5221 @var{stream} any text necessary for declaring the name @var{name} of a
5222 function which is being defined.  This macro is responsible for
5223 outputting the label definition (perhaps using
5224 @code{ASM_OUTPUT_LABEL}).  The argument @var{decl} is the
5225 @code{FUNCTION_DECL} tree node representing the function.
5227 If this macro is not defined, then the function name is defined in the
5228 usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
5230 @findex ASM_DECLARE_FUNCTION_SIZE
5231 @item ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl})
5232 A C statement (sans semicolon) to output to the stdio stream
5233 @var{stream} any text necessary for declaring the size of a function
5234 which is being defined.  The argument @var{name} is the name of the
5235 function.  The argument @var{decl} is the @code{FUNCTION_DECL} tree node
5236 representing the function.
5238 If this macro is not defined, then the function size is not defined.
5240 @findex ASM_DECLARE_OBJECT_NAME
5241 @item ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl})
5242 A C statement (sans semicolon) to output to the stdio stream
5243 @var{stream} any text necessary for declaring the name @var{name} of an
5244 initialized variable which is being defined.  This macro must output the
5245 label definition (perhaps using @code{ASM_OUTPUT_LABEL}).  The argument
5246 @var{decl} is the @code{VAR_DECL} tree node representing the variable.
5248 If this macro is not defined, then the variable name is defined in the
5249 usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
5251 @findex  ASM_FINISH_DECLARE_OBJECT
5252 @item ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend})
5253 A C statement (sans semicolon) to finish up declaring a variable name
5254 once the compiler has processed its initializer fully and thus has had a
5255 chance to determine the size of an array when controlled by an
5256 initializer.  This is used on systems where it's necessary to declare
5257 something about the size of the object.
5259 If you don't define this macro, that is equivalent to defining it to do
5260 nothing.
5262 @findex ASM_GLOBALIZE_LABEL
5263 @item ASM_GLOBALIZE_LABEL (@var{stream}, @var{name})
5264 A C statement (sans semicolon) to output to the stdio stream
5265 @var{stream} some commands that will make the label @var{name} global;
5266 that is, available for reference from other files.  Use the expression
5267 @code{assemble_name (@var{stream}, @var{name})} to output the name
5268 itself; before and after that, output the additional assembler syntax
5269 for making that name global, and a newline.
5271 @findex ASM_WEAKEN_LABEL
5272 @item ASM_WEAKEN_LABEL
5273 A C statement (sans semicolon) to output to the stdio stream
5274 @var{stream} some commands that will make the label @var{name} weak;
5275 that is, available for reference from other files but only used if
5276 no other definition is available.  Use the expression
5277 @code{assemble_name (@var{stream}, @var{name})} to output the name
5278 itself; before and after that, output the additional assembler syntax
5279 for making that name weak, and a newline.
5281 If you don't define this macro, GNU CC will not support weak
5282 symbols and you should not define the @code{SUPPORTS_WEAK} macro.
5284 @findex SUPPORTS_WEAK
5285 @item SUPPORTS_WEAK
5286 A C expression which evaluates to true if the target supports weak symbols.
5288 If you don't define this macro, @file{defaults.h} provides a default
5289 definition.  If @code{ASM_WEAKEN_LABEL} is defined, the default
5290 definition is @samp{1}; otherwise, it is @samp{0}.  Define this macro if
5291 you want to control weak symbol support with a compiler flag such as
5292 @samp{-melf}.
5294 @findex MAKE_DECL_ONE_ONLY (@var{decl})
5295 @item MAKE_DECL_ONE_ONLY
5296 A C statement (sans semicolon) to mark @var{decl} to be emitted as a
5297 public symbol such that extra copies in multiple translation units will
5298 be discarded by the linker.  Define this macro if your object file
5299 format provides support for this concept, such as the @samp{COMDAT}
5300 section flags in the Microsoft Windows PE/COFF format, and this support
5301 requires changes to @var{decl}, such as putting it in a separate section.
5303 @findex SUPPORTS_WEAK
5304 @item SUPPORTS_WEAK
5305 A C expression which evaluates to true if the target supports one-only
5306 semantics.
5308 If you don't define this macro, @file{varasm.c} provides a default
5309 definition.  If @code{MAKE_DECL_ONE_ONLY} is defined, the default
5310 definition is @samp{1}; otherwise, it is @samp{0}.  Define this macro if
5311 you want to control weak symbol support with a compiler flag, or if
5312 setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
5313 be emitted as one-only.
5315 @findex ASM_OUTPUT_EXTERNAL
5316 @item ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name})
5317 A C statement (sans semicolon) to output to the stdio stream
5318 @var{stream} any text necessary for declaring the name of an external
5319 symbol named @var{name} which is referenced in this compilation but
5320 not defined.  The value of @var{decl} is the tree node for the
5321 declaration.
5323 This macro need not be defined if it does not need to output anything.
5324 The GNU assembler and most Unix assemblers don't require anything.
5326 @findex ASM_OUTPUT_EXTERNAL_LIBCALL
5327 @item ASM_OUTPUT_EXTERNAL_LIBCALL (@var{stream}, @var{symref})
5328 A C statement (sans semicolon) to output on @var{stream} an assembler
5329 pseudo-op to declare a library function name external.  The name of the
5330 library function is given by @var{symref}, which has type @code{rtx} and
5331 is a @code{symbol_ref}.
5333 This macro need not be defined if it does not need to output anything.
5334 The GNU assembler and most Unix assemblers don't require anything.
5336 @findex ASM_OUTPUT_LABELREF
5337 @item ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
5338 A C statement (sans semicolon) to output to the stdio stream
5339 @var{stream} a reference in assembler syntax to a label named
5340 @var{name}.  This should add @samp{_} to the front of the name, if that
5341 is customary on your operating system, as it is in most Berkeley Unix
5342 systems.  This macro is used in @code{assemble_name}.
5344 @ignore @c Seems not to exist anymore.
5345 @findex ASM_OUTPUT_LABELREF_AS_INT
5346 @item ASM_OUTPUT_LABELREF_AS_INT (@var{file}, @var{label})
5347 Define this macro for systems that use the program @code{collect2}.
5348 The definition should be a C statement to output a word containing
5349 a reference to the label @var{label}.
5350 @end ignore
5352 @findex ASM_OUTPUT_INTERNAL_LABEL
5353 @item ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{prefix}, @var{num})
5354 A C statement to output to the stdio stream @var{stream} a label whose
5355 name is made from the string @var{prefix} and the number @var{num}.
5357 It is absolutely essential that these labels be distinct from the labels
5358 used for user-level functions and variables.  Otherwise, certain programs
5359 will have name conflicts with internal labels.
5361 It is desirable to exclude internal labels from the symbol table of the
5362 object file.  Most assemblers have a naming convention for labels that
5363 should be excluded; on many systems, the letter @samp{L} at the
5364 beginning of a label has this effect.  You should find out what
5365 convention your system uses, and follow it.
5367 The usual definition of this macro is as follows:
5369 @example
5370 fprintf (@var{stream}, "L%s%d:\n", @var{prefix}, @var{num})
5371 @end example
5373 @findex ASM_GENERATE_INTERNAL_LABEL
5374 @item ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num})
5375 A C statement to store into the string @var{string} a label whose name
5376 is made from the string @var{prefix} and the number @var{num}.
5378 This string, when output subsequently by @code{assemble_name}, should
5379 produce the output that @code{ASM_OUTPUT_INTERNAL_LABEL} would produce
5380 with the same @var{prefix} and @var{num}.
5382 If the string begins with @samp{*}, then @code{assemble_name} will
5383 output the rest of the string unchanged.  It is often convenient for
5384 @code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way.  If the
5385 string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets
5386 to output the string, and may change it.  (Of course,
5387 @code{ASM_OUTPUT_LABELREF} is also part of your machine description, so
5388 you should know what it does on your machine.)
5390 @findex ASM_FORMAT_PRIVATE_NAME
5391 @item ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number})
5392 A C expression to assign to @var{outvar} (which is a variable of type
5393 @code{char *}) a newly allocated string made from the string
5394 @var{name} and the number @var{number}, with some suitable punctuation
5395 added.  Use @code{alloca} to get space for the string.
5397 The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to
5398 produce an assembler label for an internal static variable whose name is
5399 @var{name}.  Therefore, the string must be such as to result in valid
5400 assembler code.  The argument @var{number} is different each time this
5401 macro is executed; it prevents conflicts between similarly-named
5402 internal static variables in different scopes.
5404 Ideally this string should not be a valid C identifier, to prevent any
5405 conflict with the user's own symbols.  Most assemblers allow periods
5406 or percent signs in assembler symbols; putting at least one of these
5407 between the name and the number will suffice.
5409 @findex ASM_OUTPUT_DEF
5410 @item ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value})
5411 A C statement to output to the stdio stream @var{stream} assembler code
5412 which defines (equates) the symbol @var{name} to have the value @var{value}.
5414 If SET_ASM_OP is defined, a default definition is provided which is
5415 correct for most systems.
5417 @findex ASM_OUTPUT_WEAK_ALIAS
5418 @item ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value})
5419 A C statement to output to the stdio stream @var{stream} assembler code
5420 which defines (equates) the weak symbol @var{name} to have the value
5421 @var{value}.
5423 Define this macro if the target only supports weak aliases; define
5424 ASM_OUTPUT_DEF instead if possible.
5426 @findex OBJC_GEN_METHOD_LABEL
5427 @item OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name})
5428 Define this macro to override the default assembler names used for
5429 Objective C methods.
5431 The default name is a unique method number followed by the name of the
5432 class (e.g.@: @samp{_1_Foo}).  For methods in categories, the name of
5433 the category is also included in the assembler name (e.g.@:
5434 @samp{_1_Foo_Bar}).
5436 These names are safe on most systems, but make debugging difficult since
5437 the method's selector is not present in the name.  Therefore, particular
5438 systems define other ways of computing names.
5440 @var{buf} is an expression of type @code{char *} which gives you a
5441 buffer in which to store the name; its length is as long as
5442 @var{class_name}, @var{cat_name} and @var{sel_name} put together, plus
5443 50 characters extra.
5445 The argument @var{is_inst} specifies whether the method is an instance
5446 method or a class method; @var{class_name} is the name of the class;
5447 @var{cat_name} is the name of the category (or NULL if the method is not
5448 in a category); and @var{sel_name} is the name of the selector.
5450 On systems where the assembler can handle quoted names, you can use this
5451 macro to provide more human-readable names.
5452 @end table
5454 @node Initialization
5455 @subsection How Initialization Functions Are Handled
5456 @cindex initialization routines
5457 @cindex termination routines
5458 @cindex constructors, output of
5459 @cindex destructors, output of
5461 The compiled code for certain languages includes @dfn{constructors}
5462 (also called @dfn{initialization routines})---functions to initialize
5463 data in the program when the program is started.  These functions need
5464 to be called before the program is ``started''---that is to say, before
5465 @code{main} is called.
5467 Compiling some languages generates @dfn{destructors} (also called
5468 @dfn{termination routines}) that should be called when the program
5469 terminates.
5471 To make the initialization and termination functions work, the compiler
5472 must output something in the assembler code to cause those functions to
5473 be called at the appropriate time.  When you port the compiler to a new
5474 system, you need to specify how to do this.
5476 There are two major ways that GCC currently supports the execution of
5477 initialization and termination functions.  Each way has two variants.
5478 Much of the structure is common to all four variations.
5480 @findex __CTOR_LIST__
5481 @findex __DTOR_LIST__
5482 The linker must build two lists of these functions---a list of
5483 initialization functions, called @code{__CTOR_LIST__}, and a list of
5484 termination functions, called @code{__DTOR_LIST__}.
5486 Each list always begins with an ignored function pointer (which may hold
5487 0, @minus{}1, or a count of the function pointers after it, depending on
5488 the environment).  This is followed by a series of zero or more function
5489 pointers to constructors (or destructors), followed by a function
5490 pointer containing zero.
5492 Depending on the operating system and its executable file format, either
5493 @file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup
5494 time and exit time.  Constructors are called in reverse order of the
5495 list; destructors in forward order.
5497 The best way to handle static constructors works only for object file
5498 formats which provide arbitrarily-named sections.  A section is set
5499 aside for a list of constructors, and another for a list of destructors.
5500 Traditionally these are called @samp{.ctors} and @samp{.dtors}.  Each
5501 object file that defines an initialization function also puts a word in
5502 the constructor section to point to that function.  The linker
5503 accumulates all these words into one contiguous @samp{.ctors} section.
5504 Termination functions are handled similarly.
5506 To use this method, you need appropriate definitions of the macros
5507 @code{ASM_OUTPUT_CONSTRUCTOR} and @code{ASM_OUTPUT_DESTRUCTOR}.  Usually
5508 you can get them by including @file{svr4.h}.
5510 When arbitrary sections are available, there are two variants, depending
5511 upon how the code in @file{crtstuff.c} is called.  On systems that
5512 support an @dfn{init} section which is executed at program startup,
5513 parts of @file{crtstuff.c} are compiled into that section.  The
5514 program is linked by the @code{gcc} driver like this:
5516 @example
5517 ld -o @var{output_file} crtbegin.o @dots{} crtend.o -lgcc
5518 @end example
5520 The head of a function (@code{__do_global_ctors}) appears in the init
5521 section of @file{crtbegin.o}; the remainder of the function appears in
5522 the init section of @file{crtend.o}.  The linker will pull these two
5523 parts of the section together, making a whole function.  If any of the
5524 user's object files linked into the middle of it contribute code, then that
5525 code will be executed as part of the body of @code{__do_global_ctors}.
5527 To use this variant, you must define the @code{INIT_SECTION_ASM_OP}
5528 macro properly.
5530 If no init section is available, do not define
5531 @code{INIT_SECTION_ASM_OP}.  Then @code{__do_global_ctors} is built into
5532 the text section like all other functions, and resides in
5533 @file{libgcc.a}.  When GCC compiles any function called @code{main}, it
5534 inserts a procedure call to @code{__main} as the first executable code
5535 after the function prologue.  The @code{__main} function, also defined
5536 in @file{libgcc2.c}, simply calls @file{__do_global_ctors}.
5538 In file formats that don't support arbitrary sections, there are again
5539 two variants.  In the simplest variant, the GNU linker (GNU @code{ld})
5540 and an `a.out' format must be used.  In this case,
5541 @code{ASM_OUTPUT_CONSTRUCTOR} is defined to produce a @code{.stabs}
5542 entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__},
5543 and with the address of the void function containing the initialization
5544 code as its value.  The GNU linker recognizes this as a request to add
5545 the value to a ``set''; the values are accumulated, and are eventually
5546 placed in the executable as a vector in the format described above, with
5547 a leading (ignored) count and a trailing zero element.
5548 @code{ASM_OUTPUT_DESTRUCTOR} is handled similarly.  Since no init
5549 section is available, the absence of @code{INIT_SECTION_ASM_OP} causes
5550 the compilation of @code{main} to call @code{__main} as above, starting
5551 the initialization process.
5553 The last variant uses neither arbitrary sections nor the GNU linker.
5554 This is preferable when you want to do dynamic linking and when using
5555 file formats which the GNU linker does not support, such as `ECOFF'.  In
5556 this case, @code{ASM_OUTPUT_CONSTRUCTOR} does not produce an
5557 @code{N_SETT} symbol; initialization and termination functions are
5558 recognized simply by their names.  This requires an extra program in the
5559 linkage step, called @code{collect2}.  This program pretends to be the
5560 linker, for use with GNU CC; it does its job by running the ordinary
5561 linker, but also arranges to include the vectors of initialization and
5562 termination functions.  These functions are called via @code{__main} as
5563 described above.
5565 Choosing among these configuration options has been simplified by a set
5566 of operating-system-dependent files in the @file{config} subdirectory.
5567 These files define all of the relevant parameters.  Usually it is
5568 sufficient to include one into your specific machine-dependent
5569 configuration file.  These files are:
5571 @table @file
5572 @item aoutos.h
5573 For operating systems using the `a.out' format.
5575 @item next.h
5576 For operating systems using the `MachO' format.
5578 @item svr3.h
5579 For System V Release 3 and similar systems using `COFF' format.
5581 @item svr4.h
5582 For System V Release 4 and similar systems using `ELF' format.
5584 @item vms.h
5585 For the VMS operating system.
5586 @end table
5588 @ifinfo
5589 The following section describes the specific macros that control and
5590 customize the handling of initialization and termination functions.
5591 @end ifinfo
5593 @node Macros for Initialization
5594 @subsection Macros Controlling Initialization Routines
5596 Here are the macros that control how the compiler handles initialization
5597 and termination functions:
5599 @table @code
5600 @findex INIT_SECTION_ASM_OP
5601 @item INIT_SECTION_ASM_OP
5602 If defined, a C string constant for the assembler operation to identify
5603 the following data as initialization code.  If not defined, GNU CC will
5604 assume such a section does not exist.  When you are using special
5605 sections for initialization and termination functions, this macro also
5606 controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to run the
5607 initialization functions.
5609 @item HAS_INIT_SECTION
5610 @findex HAS_INIT_SECTION
5611 If defined, @code{main} will not call @code{__main} as described above.
5612 This macro should be defined for systems that control the contents of the
5613 init section on a symbol-by-symbol basis, such as OSF/1, and should not
5614 be defined explicitly for systems that support
5615 @code{INIT_SECTION_ASM_OP}.
5617 @item LD_INIT_SWITCH
5618 @findex LD_INIT_SWITCH
5619 If defined, a C string constant for a switch that tells the linker that
5620 the following symbol is an initialization routine.
5622 @item LD_FINI_SWITCH
5623 @findex LD_FINI_SWITCH
5624 If defined, a C string constant for a switch that tells the linker that
5625 the following symbol is a finalization routine.
5627 @item INVOKE__main
5628 @findex INVOKE__main
5629 If defined, @code{main} will call @code{__main} despite the presence of
5630 @code{INIT_SECTION_ASM_OP}.  This macro should be defined for systems
5631 where the init section is not actually run automatically, but is still
5632 useful for collecting the lists of constructors and destructors.
5634 @item ASM_OUTPUT_CONSTRUCTOR (@var{stream}, @var{name})
5635 @findex ASM_OUTPUT_CONSTRUCTOR
5636 Define this macro as a C statement to output on the stream @var{stream}
5637 the assembler code to arrange to call the function named @var{name} at
5638 initialization time.
5640 Assume that @var{name} is the name of a C function generated
5641 automatically by the compiler.  This function takes no arguments.  Use
5642 the function @code{assemble_name} to output the name @var{name}; this
5643 performs any system-specific syntactic transformations such as adding an
5644 underscore.
5646 If you don't define this macro, nothing special is output to arrange to
5647 call the function.  This is correct when the function will be called in
5648 some other manner---for example, by means of the @code{collect2} program,
5649 which looks through the symbol table to find these functions by their
5650 names.
5652 @item ASM_OUTPUT_DESTRUCTOR (@var{stream}, @var{name})
5653 @findex ASM_OUTPUT_DESTRUCTOR
5654 This is like @code{ASM_OUTPUT_CONSTRUCTOR} but used for termination
5655 functions rather than initialization functions.
5656 @end table
5658 If your system uses @code{collect2} as the means of processing
5659 constructors, then that program normally uses @code{nm} to scan an
5660 object file for constructor functions to be called.  On certain kinds of
5661 systems, you can define these macros to make @code{collect2} work faster
5662 (and, in some cases, make it work at all):
5664 @table @code
5665 @findex OBJECT_FORMAT_COFF
5666 @item OBJECT_FORMAT_COFF
5667 Define this macro if the system uses COFF (Common Object File Format)
5668 object files, so that @code{collect2} can assume this format and scan
5669 object files directly for dynamic constructor/destructor functions.
5671 @findex OBJECT_FORMAT_ROSE
5672 @item OBJECT_FORMAT_ROSE
5673 Define this macro if the system uses ROSE format object files, so that
5674 @code{collect2} can assume this format and scan object files directly
5675 for dynamic constructor/destructor functions.
5677 These macros are effective only in a native compiler; @code{collect2} as
5678 part of a cross compiler always uses @code{nm} for the target machine.
5680 @findex REAL_NM_FILE_NAME
5681 @item REAL_NM_FILE_NAME
5682 Define this macro as a C string constant containing the file name to use
5683 to execute @code{nm}.  The default is to search the path normally for
5684 @code{nm}.
5686 If your system supports shared libraries and has a program to list the
5687 dynamic dependencies of a given library or executable, you can define
5688 these macros to enable support for running initialization and
5689 termination functions in shared libraries:
5691 @findex LDD_SUFFIX
5692 @item LDD_SUFFIX
5693 Define this macro to a C string constant containing the name of the
5694 program which lists dynamic dependencies, like @code{"ldd"} under SunOS 4.
5696 @findex PARSE_LDD_OUTPUT
5697 @item PARSE_LDD_OUTPUT (@var{PTR})
5698 Define this macro to be C code that extracts filenames from the output
5699 of the program denoted by @code{LDD_SUFFIX}.  @var{PTR} is a variable
5700 of type @code{char *} that points to the beginning of a line of output
5701 from @code{LDD_SUFFIX}.  If the line lists a dynamic dependency, the
5702 code must advance @var{PTR} to the beginning of the filename on that
5703 line.  Otherwise, it must set @var{PTR} to @code{NULL}.
5705 @end table
5707 @node Instruction Output
5708 @subsection Output of Assembler Instructions
5710 @c prevent bad page break with this line
5711 This describes assembler instruction output.
5713 @table @code
5714 @findex REGISTER_NAMES
5715 @item REGISTER_NAMES
5716 A C initializer containing the assembler's names for the machine
5717 registers, each one as a C string constant.  This is what translates
5718 register numbers in the compiler into assembler language.
5720 @findex ADDITIONAL_REGISTER_NAMES
5721 @item ADDITIONAL_REGISTER_NAMES
5722 If defined, a C initializer for an array of structures containing a name
5723 and a register number.  This macro defines additional names for hard
5724 registers, thus allowing the @code{asm} option in declarations to refer
5725 to registers using alternate names.
5727 @findex ASM_OUTPUT_OPCODE
5728 @item ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
5729 Define this macro if you are using an unusual assembler that
5730 requires different names for the machine instructions.
5732 The definition is a C statement or statements which output an
5733 assembler instruction opcode to the stdio stream @var{stream}.  The
5734 macro-operand @var{ptr} is a variable of type @code{char *} which
5735 points to the opcode name in its ``internal'' form---the form that is
5736 written in the machine description.  The definition should output the
5737 opcode name to @var{stream}, performing any translation you desire, and
5738 increment the variable @var{ptr} to point at the end of the opcode
5739 so that it will not be output twice.
5741 In fact, your macro definition may process less than the entire opcode
5742 name, or more than the opcode name; but if you want to process text
5743 that includes @samp{%}-sequences to substitute operands, you must take
5744 care of the substitution yourself.  Just be sure to increment
5745 @var{ptr} over whatever text should not be output normally.
5747 @findex recog_operand
5748 If you need to look at the operand values, they can be found as the
5749 elements of @code{recog_operand}.
5751 If the macro definition does nothing, the instruction is output
5752 in the usual way.
5754 @findex FINAL_PRESCAN_INSN
5755 @item FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands})
5756 If defined, a C statement to be executed just prior to the output of
5757 assembler code for @var{insn}, to modify the extracted operands so
5758 they will be output differently.
5760 Here the argument @var{opvec} is the vector containing the operands
5761 extracted from @var{insn}, and @var{noperands} is the number of
5762 elements of the vector which contain meaningful data for this insn.
5763 The contents of this vector are what will be used to convert the insn
5764 template into assembler code, so you can change the assembler output
5765 by changing the contents of the vector.
5767 This macro is useful when various assembler syntaxes share a single
5768 file of instruction patterns; by defining this macro differently, you
5769 can cause a large class of instructions to be output differently (such
5770 as with rearranged operands).  Naturally, variations in assembler
5771 syntax affecting individual insn patterns ought to be handled by
5772 writing conditional output routines in those patterns.
5774 If this macro is not defined, it is equivalent to a null statement.
5776 @findex FINAL_PRESCAN_LABEL
5777 @item FINAL_PRESCAN_LABEL
5778 If defined, @code{FINAL_PRESCAN_INSN} will be called on each
5779 @code{CODE_LABEL}.  In that case, @var{opvec} will be a null pointer and
5780 @var{noperands} will be zero.
5782 @findex PRINT_OPERAND
5783 @item PRINT_OPERAND (@var{stream}, @var{x}, @var{code})
5784 A C compound statement to output to stdio stream @var{stream} the
5785 assembler syntax for an instruction operand @var{x}.  @var{x} is an
5786 RTL expression.
5788 @var{code} is a value that can be used to specify one of several ways
5789 of printing the operand.  It is used when identical operands must be
5790 printed differently depending on the context.  @var{code} comes from
5791 the @samp{%} specification that was used to request printing of the
5792 operand.  If the specification was just @samp{%@var{digit}} then
5793 @var{code} is 0; if the specification was @samp{%@var{ltr}
5794 @var{digit}} then @var{code} is the ASCII code for @var{ltr}.
5796 @findex reg_names
5797 If @var{x} is a register, this macro should print the register's name.
5798 The names can be found in an array @code{reg_names} whose type is
5799 @code{char *[]}.  @code{reg_names} is initialized from
5800 @code{REGISTER_NAMES}.
5802 When the machine description has a specification @samp{%@var{punct}}
5803 (a @samp{%} followed by a punctuation character), this macro is called
5804 with a null pointer for @var{x} and the punctuation character for
5805 @var{code}.
5807 @findex PRINT_OPERAND_PUNCT_VALID_P
5808 @item PRINT_OPERAND_PUNCT_VALID_P (@var{code})
5809 A C expression which evaluates to true if @var{code} is a valid
5810 punctuation character for use in the @code{PRINT_OPERAND} macro.  If
5811 @code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no
5812 punctuation characters (except for the standard one, @samp{%}) are used
5813 in this way.
5815 @findex PRINT_OPERAND_ADDRESS
5816 @item PRINT_OPERAND_ADDRESS (@var{stream}, @var{x})
5817 A C compound statement to output to stdio stream @var{stream} the
5818 assembler syntax for an instruction operand that is a memory reference
5819 whose address is @var{x}.  @var{x} is an RTL expression.
5821 @cindex @code{ENCODE_SECTION_INFO} usage
5822 On some machines, the syntax for a symbolic address depends on the
5823 section that the address refers to.  On these machines, define the macro
5824 @code{ENCODE_SECTION_INFO} to store the information into the
5825 @code{symbol_ref}, and then check for it here.  @xref{Assembler Format}.
5827 @findex DBR_OUTPUT_SEQEND
5828 @findex dbr_sequence_length
5829 @item DBR_OUTPUT_SEQEND(@var{file})
5830 A C statement, to be executed after all slot-filler instructions have
5831 been output.  If necessary, call @code{dbr_sequence_length} to
5832 determine the number of slots filled in a sequence (zero if not
5833 currently outputting a sequence), to decide how many no-ops to output,
5834 or whatever.
5836 Don't define this macro if it has nothing to do, but it is helpful in
5837 reading assembly output if the extent of the delay sequence is made
5838 explicit (e.g. with white space).
5840 @findex final_sequence
5841 Note that output routines for instructions with delay slots must be
5842 prepared to deal with not being output as part of a sequence (i.e.
5843 when the scheduling pass is not run, or when no slot fillers could be
5844 found.)  The variable @code{final_sequence} is null when not
5845 processing a sequence, otherwise it contains the @code{sequence} rtx
5846 being output.
5848 @findex REGISTER_PREFIX
5849 @findex LOCAL_LABEL_PREFIX
5850 @findex USER_LABEL_PREFIX
5851 @findex IMMEDIATE_PREFIX
5852 @findex asm_fprintf
5853 @item REGISTER_PREFIX
5854 @itemx LOCAL_LABEL_PREFIX
5855 @itemx USER_LABEL_PREFIX
5856 @itemx IMMEDIATE_PREFIX
5857 If defined, C string expressions to be used for the @samp{%R}, @samp{%L},
5858 @samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see
5859 @file{final.c}).  These are useful when a single @file{md} file must
5860 support multiple assembler formats.  In that case, the various @file{tm.h}
5861 files can define these macros differently.
5863 @findex ASSEMBLER_DIALECT
5864 @item ASSEMBLER_DIALECT
5865 If your target supports multiple dialects of assembler language (such as
5866 different opcodes), define this macro as a C expression that gives the
5867 numeric index of the assembler language dialect to use, with zero as the
5868 first variant.
5870 If this macro is defined, you may use constructs of the form
5871 @samp{@{option0|option1|option2@dots{}@}} in the output
5872 templates of patterns (@pxref{Output Template}) or in the first argument
5873 of @code{asm_fprintf}.  This construct outputs @samp{option0},
5874 @samp{option1} or @samp{option2}, etc., if the value of
5875 @code{ASSEMBLER_DIALECT} is zero, one or two, etc.  Any special
5876 characters within these strings retain their usual meaning.
5878 If you do not define this macro, the characters @samp{@{}, @samp{|} and
5879 @samp{@}} do not have any special meaning when used in templates or
5880 operands to @code{asm_fprintf}.
5882 Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX},
5883 @code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express
5884 the variations in assemble language syntax with that mechanism.  Define
5885 @code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax
5886 if the syntax variant are larger and involve such things as different
5887 opcodes or operand order.
5889 @findex ASM_OUTPUT_REG_PUSH
5890 @item ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno})
5891 A C expression to output to @var{stream} some assembler code
5892 which will push hard register number @var{regno} onto the stack.
5893 The code need not be optimal, since this macro is used only when
5894 profiling.
5896 @findex ASM_OUTPUT_REG_POP
5897 @item ASM_OUTPUT_REG_POP (@var{stream}, @var{regno})
5898 A C expression to output to @var{stream} some assembler code
5899 which will pop hard register number @var{regno} off of the stack.
5900 The code need not be optimal, since this macro is used only when
5901 profiling.
5902 @end table
5904 @node Dispatch Tables
5905 @subsection Output of Dispatch Tables
5907 @c prevent bad page break with this line
5908 This concerns dispatch tables.
5910 @table @code
5911 @cindex dispatch table
5912 @findex ASM_OUTPUT_ADDR_DIFF_ELT
5913 @item ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{value}, @var{rel})
5914 A C statement to output to the stdio stream @var{stream} an assembler
5915 pseudo-instruction to generate a difference between two labels.
5916 @var{value} and @var{rel} are the numbers of two internal labels.  The
5917 definitions of these labels are output using
5918 @code{ASM_OUTPUT_INTERNAL_LABEL}, and they must be printed in the same
5919 way here.  For example,
5921 @example
5922 fprintf (@var{stream}, "\t.word L%d-L%d\n",
5923          @var{value}, @var{rel})
5924 @end example
5926 You must provide this macro on machines where the addresses in a
5927 dispatch table are relative to the table's own address.  If defined, GNU
5928 CC will also use this macro on all machines when producing PIC.
5930 @findex ASM_OUTPUT_ADDR_VEC_ELT
5931 @item ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value})
5932 This macro should be provided on machines where the addresses
5933 in a dispatch table are absolute.
5935 The definition should be a C statement to output to the stdio stream
5936 @var{stream} an assembler pseudo-instruction to generate a reference to
5937 a label.  @var{value} is the number of an internal label whose
5938 definition is output using @code{ASM_OUTPUT_INTERNAL_LABEL}.
5939 For example,
5941 @example
5942 fprintf (@var{stream}, "\t.word L%d\n", @var{value})
5943 @end example
5945 @findex ASM_OUTPUT_CASE_LABEL
5946 @item ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
5947 Define this if the label before a jump-table needs to be output
5948 specially.  The first three arguments are the same as for
5949 @code{ASM_OUTPUT_INTERNAL_LABEL}; the fourth argument is the
5950 jump-table which follows (a @code{jump_insn} containing an
5951 @code{addr_vec} or @code{addr_diff_vec}).
5953 This feature is used on system V to output a @code{swbeg} statement
5954 for the table.
5956 If this macro is not defined, these labels are output with
5957 @code{ASM_OUTPUT_INTERNAL_LABEL}.
5959 @findex ASM_OUTPUT_CASE_END
5960 @item ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table})
5961 Define this if something special must be output at the end of a
5962 jump-table.  The definition should be a C statement to be executed
5963 after the assembler code for the table is written.  It should write
5964 the appropriate code to stdio stream @var{stream}.  The argument
5965 @var{table} is the jump-table insn, and @var{num} is the label-number
5966 of the preceding label.
5968 If this macro is not defined, nothing special is output at the end of
5969 the jump-table.
5970 @end table
5972 @node Exception Region Output 
5973 @subsection Assembler Commands for Exception Regions
5975 @c prevent bad page break with this line
5977 This describes commands marking the start and the end of an exception
5978 region.
5980 @table @code
5981 @findex ASM_OUTPUT_EH_REGION_BEG
5982 @item ASM_OUTPUT_EH_REGION_BEG ()
5983 A C expression to output text to mark the start of an exception region.
5985 This macro need not be defined on most platforms.
5987 @findex ASM_OUTPUT_EH_REGION_END
5988 @item ASM_OUTPUT_EH_REGION_END ()
5989 A C expression to output text to mark the end of an exception region.
5991 This macro need not be defined on most platforms.
5993 @findex EXCEPTION_SECTION
5994 @item EXCEPTION_SECTION ()
5995 A C expression to switch to the section in which the main
5996 exception table is to be placed (@pxref{Sections}).  The default is a
5997 section named @code{.gcc_except_table} on machines that support named
5998 sections via @code{ASM_OUTPUT_SECTION_NAME}, otherwise if @samp{-fpic}
5999 or @samp{-fPIC} is in effect, the @code{data_section}, otherwise the
6000 @code{readonly_data_section}.
6002 @findex EH_FRAME_SECTION_ASM_OP
6003 @item EH_FRAME_SECTION_ASM_OP
6004 If defined, a C string constant for the assembler operation to switch to
6005 the section for exception handling frame unwind information.  If not
6006 defined, GNU CC will provide a default definition if the target supports
6007 named sections.  @file{crtstuff.c} uses this macro to switch to the
6008 appropriate section.
6010 You should define this symbol if your target supports DWARF 2 frame
6011 unwind information and the default definition does not work.
6013 @findex OMIT_EH_TABLE
6014 @item OMIT_EH_TABLE ()
6015 A C expression that is nonzero if the normal exception table output
6016 should be omitted.
6018 This macro need not be defined on most platforms.
6020 @findex EH_TABLE_LOOKUP
6021 @item EH_TABLE_LOOKUP ()
6022 Alternate runtime support for looking up an exception at runtime and
6023 finding the associated handler, if the default method won't work.
6025 This macro need not be defined on most platforms.
6027 @findex DOESNT_NEED_UNWINDER
6028 @item DOESNT_NEED_UNWINDER
6029 A C expression that decides whether or not the current function needs to
6030 have a function unwinder generated for it.  See the file @code{except.c}
6031 for details on when to define this, and how.
6033 @findex MASK_RETURN_ADDR
6034 @item MASK_RETURN_ADDR
6035 An rtx used to mask the return address found via RETURN_ADDR_RTX, so
6036 that it does not contain any extraneous set bits in it.
6038 @findex DWARF2_UNWIND_INFO
6039 @item DWARF2_UNWIND_INFO
6040 Define this macro to 0 if your target supports DWARF 2 frame unwind
6041 information, but it does not yet work with exception handling.
6042 Otherwise, if your target supports this information (if it defines
6043 @samp{INCOMING_RETURN_ADDR_RTX} and either @samp{UNALIGNED_INT_ASM_OP}
6044 or @samp{OBJECT_FORMAT_ELF}), GCC will provide a default definition of
6047 If this macro is defined to 1, the DWARF 2 unwinder will be the default
6048 exception handling mechanism; otherwise, setjmp/longjmp will be used by
6049 default.
6051 If this macro is defined to anything, the DWARF 2 unwinder will be used
6052 instead of inline unwinders and __unwind_function in the non-setjmp case.
6054 @end table
6056 @node Alignment Output
6057 @subsection Assembler Commands for Alignment
6059 @c prevent bad page break with this line
6060 This describes commands for alignment.
6062 @table @code
6063 @findex ASM_OUTPUT_ALIGN_CODE
6064 @item ASM_OUTPUT_ALIGN_CODE (@var{file})
6065 A C expression to output text to align the location counter in the way
6066 that is desirable at a point in the code that is reached only by
6067 jumping.
6069 This macro need not be defined if you don't want any special alignment
6070 to be done at such a time.  Most machine descriptions do not currently
6071 define the macro.
6073 @findex ASM_OUTPUT_LOOP_ALIGN
6074 @item ASM_OUTPUT_LOOP_ALIGN (@var{file})
6075 A C expression to output text to align the location counter in the way
6076 that is desirable at the beginning of a loop.
6078 This macro need not be defined if you don't want any special alignment
6079 to be done at such a time.  Most machine descriptions do not currently
6080 define the macro.
6082 @findex ASM_OUTPUT_SKIP
6083 @item ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
6084 A C statement to output to the stdio stream @var{stream} an assembler
6085 instruction to advance the location counter by @var{nbytes} bytes.
6086 Those bytes should be zero when loaded.  @var{nbytes} will be a C
6087 expression of type @code{int}.
6089 @findex ASM_NO_SKIP_IN_TEXT
6090 @item ASM_NO_SKIP_IN_TEXT
6091 Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the
6092 text section because it fails put zeros in the bytes that are skipped.
6093 This is true on many Unix systems, where the pseudo--op to skip bytes
6094 produces no-op instructions rather than zeros when used in the text
6095 section.
6097 @findex ASM_OUTPUT_ALIGN
6098 @item ASM_OUTPUT_ALIGN (@var{stream}, @var{power})
6099 A C statement to output to the stdio stream @var{stream} an assembler
6100 command to advance the location counter to a multiple of 2 to the
6101 @var{power} bytes.  @var{power} will be a C expression of type @code{int}.
6102 @end table
6104 @need 3000
6105 @node Debugging Info
6106 @section Controlling Debugging Information Format
6108 @c prevent bad page break with this line
6109 This describes how to specify debugging information.
6111 @menu
6112 * All Debuggers::      Macros that affect all debugging formats uniformly.
6113 * DBX Options::        Macros enabling specific options in DBX format.
6114 * DBX Hooks::          Hook macros for varying DBX format.
6115 * File Names and DBX:: Macros controlling output of file names in DBX format.
6116 * SDB and DWARF::      Macros for SDB (COFF) and DWARF formats.
6117 @end menu
6119 @node All Debuggers
6120 @subsection Macros Affecting All Debugging Formats
6122 @c prevent bad page break with this line
6123 These macros affect all debugging formats.
6125 @table @code
6126 @findex DBX_REGISTER_NUMBER
6127 @item DBX_REGISTER_NUMBER (@var{regno})
6128 A C expression that returns the DBX register number for the compiler
6129 register number @var{regno}.  In simple cases, the value of this
6130 expression may be @var{regno} itself.  But sometimes there are some
6131 registers that the compiler knows about and DBX does not, or vice
6132 versa.  In such cases, some register may need to have one number in
6133 the compiler and another for DBX.
6135 If two registers have consecutive numbers inside GNU CC, and they can be
6136 used as a pair to hold a multiword value, then they @emph{must} have
6137 consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}.
6138 Otherwise, debuggers will be unable to access such a pair, because they
6139 expect register pairs to be consecutive in their own numbering scheme.
6141 If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that
6142 does not preserve register pairs, then what you must do instead is
6143 redefine the actual register numbering scheme.
6145 @findex DEBUGGER_AUTO_OFFSET
6146 @item DEBUGGER_AUTO_OFFSET (@var{x})
6147 A C expression that returns the integer offset value for an automatic
6148 variable having address @var{x} (an RTL expression).  The default
6149 computation assumes that @var{x} is based on the frame-pointer and
6150 gives the offset from the frame-pointer.  This is required for targets
6151 that produce debugging output for DBX or COFF-style debugging output
6152 for SDB and allow the frame-pointer to be eliminated when the
6153 @samp{-g} options is used.
6155 @findex DEBUGGER_ARG_OFFSET
6156 @item DEBUGGER_ARG_OFFSET (@var{offset}, @var{x})
6157 A C expression that returns the integer offset value for an argument
6158 having address @var{x} (an RTL expression).  The nominal offset is
6159 @var{offset}.
6161 @findex PREFERRED_DEBUGGING_TYPE
6162 @item PREFERRED_DEBUGGING_TYPE
6163 A C expression that returns the type of debugging output GNU CC produces
6164 when the user specifies @samp{-g} or @samp{-ggdb}.  Define this if you
6165 have arranged for GNU CC to support more than one format of debugging
6166 output.  Currently, the allowable values are @code{DBX_DEBUG},
6167 @code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG}, and
6168 @code{XCOFF_DEBUG}.
6170 The value of this macro only affects the default debugging output; the
6171 user can always get a specific type of output by using @samp{-gstabs},
6172 @samp{-gcoff}, @samp{-gdwarf-1}, @samp{-gdwarf-2}, or @samp{-gxcoff}.
6173 @end table
6175 @node DBX Options
6176 @subsection Specific Options for DBX Output
6178 @c prevent bad page break with this line
6179 These are specific options for DBX output.
6181 @table @code
6182 @findex DBX_DEBUGGING_INFO
6183 @item DBX_DEBUGGING_INFO
6184 Define this macro if GNU CC should produce debugging output for DBX
6185 in response to the @samp{-g} option.
6187 @findex XCOFF_DEBUGGING_INFO
6188 @item XCOFF_DEBUGGING_INFO
6189 Define this macro if GNU CC should produce XCOFF format debugging output
6190 in response to the @samp{-g} option.  This is a variant of DBX format.
6192 @findex DEFAULT_GDB_EXTENSIONS
6193 @item DEFAULT_GDB_EXTENSIONS
6194 Define this macro to control whether GNU CC should by default generate
6195 GDB's extended version of DBX debugging information (assuming DBX-format
6196 debugging information is enabled at all).  If you don't define the
6197 macro, the default is 1: always generate the extended information
6198 if there is any occasion to.
6200 @findex DEBUG_SYMS_TEXT
6201 @item DEBUG_SYMS_TEXT
6202 Define this macro if all @code{.stabs} commands should be output while
6203 in the text section.
6205 @findex ASM_STABS_OP
6206 @item ASM_STABS_OP
6207 A C string constant naming the assembler pseudo op to use instead of
6208 @code{.stabs} to define an ordinary debugging symbol.  If you don't
6209 define this macro, @code{.stabs} is used.  This macro applies only to
6210 DBX debugging information format.
6212 @findex ASM_STABD_OP
6213 @item ASM_STABD_OP
6214 A C string constant naming the assembler pseudo op to use instead of
6215 @code{.stabd} to define a debugging symbol whose value is the current
6216 location.  If you don't define this macro, @code{.stabd} is used.
6217 This macro applies only to DBX debugging information format.
6219 @findex ASM_STABN_OP
6220 @item ASM_STABN_OP
6221 A C string constant naming the assembler pseudo op to use instead of
6222 @code{.stabn} to define a debugging symbol with no name.  If you don't
6223 define this macro, @code{.stabn} is used.  This macro applies only to
6224 DBX debugging information format.
6226 @findex DBX_NO_XREFS
6227 @item DBX_NO_XREFS
6228 Define this macro if DBX on your system does not support the construct
6229 @samp{xs@var{tagname}}.  On some systems, this construct is used to
6230 describe a forward reference to a structure named @var{tagname}.
6231 On other systems, this construct is not supported at all.
6233 @findex DBX_CONTIN_LENGTH
6234 @item DBX_CONTIN_LENGTH
6235 A symbol name in DBX-format debugging information is normally
6236 continued (split into two separate @code{.stabs} directives) when it
6237 exceeds a certain length (by default, 80 characters).  On some
6238 operating systems, DBX requires this splitting; on others, splitting
6239 must not be done.  You can inhibit splitting by defining this macro
6240 with the value zero.  You can override the default splitting-length by
6241 defining this macro as an expression for the length you desire.
6243 @findex DBX_CONTIN_CHAR
6244 @item DBX_CONTIN_CHAR
6245 Normally continuation is indicated by adding a @samp{\} character to
6246 the end of a @code{.stabs} string when a continuation follows.  To use
6247 a different character instead, define this macro as a character
6248 constant for the character you want to use.  Do not define this macro
6249 if backslash is correct for your system.
6251 @findex DBX_STATIC_STAB_DATA_SECTION
6252 @item DBX_STATIC_STAB_DATA_SECTION
6253 Define this macro if it is necessary to go to the data section before
6254 outputting the @samp{.stabs} pseudo-op for a non-global static
6255 variable.
6257 @findex DBX_TYPE_DECL_STABS_CODE
6258 @item DBX_TYPE_DECL_STABS_CODE
6259 The value to use in the ``code'' field of the @code{.stabs} directive
6260 for a typedef.  The default is @code{N_LSYM}.
6262 @findex DBX_STATIC_CONST_VAR_CODE
6263 @item DBX_STATIC_CONST_VAR_CODE
6264 The value to use in the ``code'' field of the @code{.stabs} directive
6265 for a static variable located in the text section.  DBX format does not
6266 provide any ``right'' way to do this.  The default is @code{N_FUN}.
6268 @findex DBX_REGPARM_STABS_CODE
6269 @item DBX_REGPARM_STABS_CODE
6270 The value to use in the ``code'' field of the @code{.stabs} directive
6271 for a parameter passed in registers.  DBX format does not provide any
6272 ``right'' way to do this.  The default is @code{N_RSYM}.
6274 @findex DBX_REGPARM_STABS_LETTER
6275 @item DBX_REGPARM_STABS_LETTER
6276 The letter to use in DBX symbol data to identify a symbol as a parameter
6277 passed in registers.  DBX format does not customarily provide any way to
6278 do this.  The default is @code{'P'}.
6280 @findex DBX_MEMPARM_STABS_LETTER
6281 @item DBX_MEMPARM_STABS_LETTER
6282 The letter to use in DBX symbol data to identify a symbol as a stack
6283 parameter.  The default is @code{'p'}.
6285 @findex DBX_FUNCTION_FIRST
6286 @item DBX_FUNCTION_FIRST
6287 Define this macro if the DBX information for a function and its
6288 arguments should precede the assembler code for the function.  Normally,
6289 in DBX format, the debugging information entirely follows the assembler
6290 code.
6292 @findex DBX_LBRAC_FIRST
6293 @item DBX_LBRAC_FIRST
6294 Define this macro if the @code{N_LBRAC} symbol for a block should
6295 precede the debugging information for variables and functions defined in
6296 that block.  Normally, in DBX format, the @code{N_LBRAC} symbol comes
6297 first.
6299 @findex DBX_BLOCKS_FUNCTION_RELATIVE
6300 @item DBX_BLOCKS_FUNCTION_RELATIVE
6301 Define this macro if the value of a symbol describing the scope of a
6302 block (@code{N_LBRAC} or @code{N_RBRAC}) should be relative to the start
6303 of the enclosing function.  Normally, GNU C uses an absolute address.
6305 @findex DBX_USE_BINCL
6306 @item DBX_USE_BINCL
6307 Define this macro if GNU C should generate @code{N_BINCL} and
6308 @code{N_EINCL} stabs for included header files, as on Sun systems.  This
6309 macro also directs GNU C to output a type number as a pair of a file
6310 number and a type number within the file.  Normally, GNU C does not
6311 generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single
6312 number for a type number.
6313 @end table
6315 @node DBX Hooks
6316 @subsection Open-Ended Hooks for DBX Format
6318 @c prevent bad page break with this line
6319 These are hooks for DBX format.
6321 @table @code
6322 @findex DBX_OUTPUT_LBRAC
6323 @item DBX_OUTPUT_LBRAC (@var{stream}, @var{name})
6324 Define this macro to say how to output to @var{stream} the debugging
6325 information for the start of a scope level for variable names.  The
6326 argument @var{name} is the name of an assembler symbol (for use with
6327 @code{assemble_name}) whose value is the address where the scope begins.
6329 @findex DBX_OUTPUT_RBRAC
6330 @item DBX_OUTPUT_RBRAC (@var{stream}, @var{name})
6331 Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level.
6333 @findex DBX_OUTPUT_ENUM
6334 @item DBX_OUTPUT_ENUM (@var{stream}, @var{type})
6335 Define this macro if the target machine requires special handling to
6336 output an enumeration type.  The definition should be a C statement
6337 (sans semicolon) to output the appropriate information to @var{stream}
6338 for the type @var{type}.
6340 @findex DBX_OUTPUT_FUNCTION_END
6341 @item DBX_OUTPUT_FUNCTION_END (@var{stream}, @var{function})
6342 Define this macro if the target machine requires special output at the
6343 end of the debugging information for a function.  The definition should
6344 be a C statement (sans semicolon) to output the appropriate information
6345 to @var{stream}.  @var{function} is the @code{FUNCTION_DECL} node for
6346 the function.
6348 @findex DBX_OUTPUT_STANDARD_TYPES
6349 @item DBX_OUTPUT_STANDARD_TYPES (@var{syms})
6350 Define this macro if you need to control the order of output of the
6351 standard data types at the beginning of compilation.  The argument
6352 @var{syms} is a @code{tree} which is a chain of all the predefined
6353 global symbols, including names of data types.
6355 Normally, DBX output starts with definitions of the types for integers
6356 and characters, followed by all the other predefined types of the
6357 particular language in no particular order.
6359 On some machines, it is necessary to output different particular types
6360 first.  To do this, define @code{DBX_OUTPUT_STANDARD_TYPES} to output
6361 those symbols in the necessary order.  Any predefined types that you
6362 don't explicitly output will be output afterward in no particular order.
6364 Be careful not to define this macro so that it works only for C.  There
6365 are no global variables to access most of the built-in types, because
6366 another language may have another set of types.  The way to output a
6367 particular type is to look through @var{syms} to see if you can find it.
6368 Here is an example:
6370 @smallexample
6372   tree decl;
6373   for (decl = syms; decl; decl = TREE_CHAIN (decl))
6374     if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
6375                  "long int"))
6376       dbxout_symbol (decl);
6377   @dots{}
6379 @end smallexample
6381 @noindent
6382 This does nothing if the expected type does not exist.
6384 See the function @code{init_decl_processing} in @file{c-decl.c} to find
6385 the names to use for all the built-in C types.
6387 Here is another way of finding a particular type:
6389 @c this is still overfull.  --mew 10feb93
6390 @smallexample
6392   tree decl;
6393   for (decl = syms; decl; decl = TREE_CHAIN (decl))
6394     if (TREE_CODE (decl) == TYPE_DECL
6395         && (TREE_CODE (TREE_TYPE (decl))
6396             == INTEGER_CST)
6397         && TYPE_PRECISION (TREE_TYPE (decl)) == 16
6398         && TYPE_UNSIGNED (TREE_TYPE (decl)))
6399 @group
6400       /* @r{This must be @code{unsigned short}.}  */
6401       dbxout_symbol (decl);
6402   @dots{}
6404 @end group
6405 @end smallexample
6407 @findex NO_DBX_FUNCTION_END
6408 @item NO_DBX_FUNCTION_END
6409 Some stabs encapsulation formats (in particular ECOFF), cannot handle the
6410 @code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extention construct.
6411 On those machines, define this macro to turn this feature off without
6412 disturbing the rest of the gdb extensions.
6414 @end table
6416 @node File Names and DBX
6417 @subsection File Names in DBX Format
6419 @c prevent bad page break with this line
6420 This describes file names in DBX format.
6422 @table @code
6423 @findex DBX_WORKING_DIRECTORY
6424 @item DBX_WORKING_DIRECTORY
6425 Define this if DBX wants to have the current directory recorded in each
6426 object file.
6428 Note that the working directory is always recorded if GDB extensions are
6429 enabled.
6431 @findex DBX_OUTPUT_MAIN_SOURCE_FILENAME
6432 @item DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
6433 A C statement to output DBX debugging information to the stdio stream
6434 @var{stream} which indicates that file @var{name} is the main source
6435 file---the file specified as the input file for compilation.
6436 This macro is called only once, at the beginning of compilation.
6438 This macro need not be defined if the standard form of output
6439 for DBX debugging information is appropriate.
6441 @findex DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
6442 @item DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (@var{stream}, @var{name})
6443 A C statement to output DBX debugging information to the stdio stream
6444 @var{stream} which indicates that the current directory during
6445 compilation is named @var{name}.
6447 This macro need not be defined if the standard form of output
6448 for DBX debugging information is appropriate.
6450 @findex DBX_OUTPUT_MAIN_SOURCE_FILE_END
6451 @item DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
6452 A C statement to output DBX debugging information at the end of
6453 compilation of the main source file @var{name}.
6455 If you don't define this macro, nothing special is output at the end
6456 of compilation, which is correct for most machines.
6458 @findex DBX_OUTPUT_SOURCE_FILENAME
6459 @item DBX_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
6460 A C statement to output DBX debugging information to the stdio stream
6461 @var{stream} which indicates that file @var{name} is the current source
6462 file.  This output is generated each time input shifts to a different
6463 source file as a result of @samp{#include}, the end of an included file,
6464 or a @samp{#line} command.
6466 This macro need not be defined if the standard form of output
6467 for DBX debugging information is appropriate.
6468 @end table
6470 @need 2000
6471 @node SDB and DWARF
6472 @subsection Macros for SDB and DWARF Output
6474 @c prevent bad page break with this line
6475 Here are macros for SDB and DWARF output.
6477 @table @code
6478 @findex SDB_DEBUGGING_INFO
6479 @item SDB_DEBUGGING_INFO
6480 Define this macro if GNU CC should produce COFF-style debugging output
6481 for SDB in response to the @samp{-g} option.
6483 @findex DWARF_DEBUGGING_INFO
6484 @item DWARF_DEBUGGING_INFO
6485 Define this macro if GNU CC should produce dwarf format debugging output
6486 in response to the @samp{-g} option.
6488 @findex DWARF2_DEBUGGING_INFO
6489 @item DWARF2_DEBUGGING_INFO
6490 Define this macro if GNU CC should produce dwarf version 2 format
6491 debugging output in response to the @samp{-g} option.
6493 To support optional call frame debugging information, you must also
6494 define @code{INCOMING_RETURN_ADDR_RTX} and either set
6495 @code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
6496 prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
6497 as appropriate from @code{FUNCTION_PROLOGUE} if you don't.
6499 @findex PUT_SDB_@dots{}
6500 @item PUT_SDB_@dots{}
6501 Define these macros to override the assembler syntax for the special
6502 SDB assembler directives.  See @file{sdbout.c} for a list of these
6503 macros and their arguments.  If the standard syntax is used, you need
6504 not define them yourself.
6506 @findex SDB_DELIM
6507 @item SDB_DELIM
6508 Some assemblers do not support a semicolon as a delimiter, even between
6509 SDB assembler directives.  In that case, define this macro to be the
6510 delimiter to use (usually @samp{\n}).  It is not necessary to define
6511 a new set of @code{PUT_SDB_@var{op}} macros if this is the only change
6512 required.
6514 @findex SDB_GENERATE_FAKE
6515 @item SDB_GENERATE_FAKE
6516 Define this macro to override the usual method of constructing a dummy
6517 name for anonymous structure and union types.  See @file{sdbout.c} for
6518 more information.
6520 @findex SDB_ALLOW_UNKNOWN_REFERENCES
6521 @item SDB_ALLOW_UNKNOWN_REFERENCES
6522 Define this macro to allow references to unknown structure,
6523 union, or enumeration tags to be emitted.  Standard COFF does not
6524 allow handling of unknown references, MIPS ECOFF has support for
6527 @findex SDB_ALLOW_FORWARD_REFERENCES
6528 @item SDB_ALLOW_FORWARD_REFERENCES
6529 Define this macro to allow references to structure, union, or
6530 enumeration tags that have not yet been seen to be handled.  Some
6531 assemblers choke if forward tags are used, while some require it.
6532 @end table
6534 @node Cross-compilation
6535 @section Cross Compilation and Floating Point
6536 @cindex cross compilation and floating point
6537 @cindex floating point and cross compilation
6539 While all modern machines use 2's complement representation for integers,
6540 there are a variety of representations for floating point numbers.  This
6541 means that in a cross-compiler the representation of floating point numbers
6542 in the compiled program may be different from that used in the machine
6543 doing the compilation.
6545 @findex atof
6546 Because different representation systems may offer different amounts of
6547 range and precision, the cross compiler cannot safely use the host
6548 machine's floating point arithmetic.  Therefore, floating point constants
6549 must be represented in the target machine's format.  This means that the
6550 cross compiler cannot use @code{atof} to parse a floating point constant;
6551 it must have its own special routine to use instead.  Also, constant
6552 folding must emulate the target machine's arithmetic (or must not be done
6553 at all).
6555 The macros in the following table should be defined only if you are cross
6556 compiling between different floating point formats.
6558 Otherwise, don't define them.  Then default definitions will be set up which
6559 use @code{double} as the data type, @code{==} to test for equality, etc.
6561 You don't need to worry about how many times you use an operand of any
6562 of these macros.  The compiler never uses operands which have side effects.
6564 @table @code
6565 @findex REAL_VALUE_TYPE
6566 @item REAL_VALUE_TYPE
6567 A macro for the C data type to be used to hold a floating point value
6568 in the target machine's format.  Typically this would be a
6569 @code{struct} containing an array of @code{int}.
6571 @findex REAL_VALUES_EQUAL
6572 @item REAL_VALUES_EQUAL (@var{x}, @var{y})
6573 A macro for a C expression which compares for equality the two values,
6574 @var{x} and @var{y}, both of type @code{REAL_VALUE_TYPE}.
6576 @findex REAL_VALUES_LESS
6577 @item REAL_VALUES_LESS (@var{x}, @var{y})
6578 A macro for a C expression which tests whether @var{x} is less than
6579 @var{y}, both values being of type @code{REAL_VALUE_TYPE} and
6580 interpreted as floating point numbers in the target machine's
6581 representation.
6583 @findex REAL_VALUE_LDEXP
6584 @findex ldexp
6585 @item REAL_VALUE_LDEXP (@var{x}, @var{scale})
6586 A macro for a C expression which performs the standard library
6587 function @code{ldexp}, but using the target machine's floating point
6588 representation.  Both @var{x} and the value of the expression have
6589 type @code{REAL_VALUE_TYPE}.  The second argument, @var{scale}, is an
6590 integer.
6592 @findex REAL_VALUE_FIX
6593 @item REAL_VALUE_FIX (@var{x})
6594 A macro whose definition is a C expression to convert the target-machine
6595 floating point value @var{x} to a signed integer.  @var{x} has type
6596 @code{REAL_VALUE_TYPE}.
6598 @findex REAL_VALUE_UNSIGNED_FIX
6599 @item REAL_VALUE_UNSIGNED_FIX (@var{x})
6600 A macro whose definition is a C expression to convert the target-machine
6601 floating point value @var{x} to an unsigned integer.  @var{x} has type
6602 @code{REAL_VALUE_TYPE}.
6604 @findex REAL_VALUE_RNDZINT
6605 @item REAL_VALUE_RNDZINT (@var{x})
6606 A macro whose definition is a C expression to round the target-machine
6607 floating point value @var{x} towards zero to an integer value (but still
6608 as a floating point number).  @var{x} has type @code{REAL_VALUE_TYPE},
6609 and so does the value.
6611 @findex REAL_VALUE_UNSIGNED_RNDZINT
6612 @item REAL_VALUE_UNSIGNED_RNDZINT (@var{x})
6613 A macro whose definition is a C expression to round the target-machine
6614 floating point value @var{x} towards zero to an unsigned integer value
6615 (but still represented as a floating point number).  @var{x} has type
6616 @code{REAL_VALUE_TYPE}, and so does the value.
6618 @findex REAL_VALUE_ATOF
6619 @item REAL_VALUE_ATOF (@var{string}, @var{mode})
6620 A macro for a C expression which converts @var{string}, an expression of
6621 type @code{char *}, into a floating point number in the target machine's
6622 representation for mode @var{mode}.  The value has type
6623 @code{REAL_VALUE_TYPE}.
6625 @findex REAL_INFINITY
6626 @item REAL_INFINITY
6627 Define this macro if infinity is a possible floating point value, and
6628 therefore division by 0 is legitimate.
6630 @findex REAL_VALUE_ISINF
6631 @findex isinf
6632 @item REAL_VALUE_ISINF (@var{x})
6633 A macro for a C expression which determines whether @var{x}, a floating
6634 point value, is infinity.  The value has type @code{int}.
6635 By default, this is defined to call @code{isinf}.
6637 @findex REAL_VALUE_ISNAN
6638 @findex isnan
6639 @item REAL_VALUE_ISNAN (@var{x})
6640 A macro for a C expression which determines whether @var{x}, a floating
6641 point value, is a ``nan'' (not-a-number).  The value has type
6642 @code{int}.  By default, this is defined to call @code{isnan}.
6643 @end table
6645 @cindex constant folding and floating point
6646 Define the following additional macros if you want to make floating
6647 point constant folding work while cross compiling.  If you don't
6648 define them, cross compilation is still possible, but constant folding
6649 will not happen for floating point values.
6651 @table @code
6652 @findex REAL_ARITHMETIC
6653 @item REAL_ARITHMETIC (@var{output}, @var{code}, @var{x}, @var{y})
6654 A macro for a C statement which calculates an arithmetic operation of
6655 the two floating point values @var{x} and @var{y}, both of type
6656 @code{REAL_VALUE_TYPE} in the target machine's representation, to
6657 produce a result of the same type and representation which is stored
6658 in @var{output} (which will be a variable).
6660 The operation to be performed is specified by @var{code}, a tree code
6661 which will always be one of the following: @code{PLUS_EXPR},
6662 @code{MINUS_EXPR}, @code{MULT_EXPR}, @code{RDIV_EXPR},
6663 @code{MAX_EXPR}, @code{MIN_EXPR}.@refill
6665 @cindex overflow while constant folding
6666 The expansion of this macro is responsible for checking for overflow.
6667 If overflow happens, the macro expansion should execute the statement
6668 @code{return 0;}, which indicates the inability to perform the
6669 arithmetic operation requested.
6671 @findex REAL_VALUE_NEGATE
6672 @item REAL_VALUE_NEGATE (@var{x})
6673 A macro for a C expression which returns the negative of the floating
6674 point value @var{x}.  Both @var{x} and the value of the expression
6675 have type @code{REAL_VALUE_TYPE} and are in the target machine's
6676 floating point representation.
6678 There is no way for this macro to report overflow, since overflow
6679 can't happen in the negation operation.
6681 @findex REAL_VALUE_TRUNCATE
6682 @item REAL_VALUE_TRUNCATE (@var{mode}, @var{x})
6683 A macro for a C expression which converts the floating point value
6684 @var{x} to mode @var{mode}.
6686 Both @var{x} and the value of the expression are in the target machine's
6687 floating point representation and have type @code{REAL_VALUE_TYPE}.
6688 However, the value should have an appropriate bit pattern to be output
6689 properly as a floating constant whose precision accords with mode
6690 @var{mode}.
6692 There is no way for this macro to report overflow.
6694 @findex REAL_VALUE_TO_INT
6695 @item REAL_VALUE_TO_INT (@var{low}, @var{high}, @var{x})
6696 A macro for a C expression which converts a floating point value
6697 @var{x} into a double-precision integer which is then stored into
6698 @var{low} and @var{high}, two variables of type @var{int}.
6700 @item REAL_VALUE_FROM_INT (@var{x}, @var{low}, @var{high}, @var{mode})
6701 @findex REAL_VALUE_FROM_INT
6702 A macro for a C expression which converts a double-precision integer
6703 found in @var{low} and @var{high}, two variables of type @var{int},
6704 into a floating point value which is then stored into @var{x}.
6705 The value is in the target machine's representation for mode @var{mode}
6706 and has the type @code{REAL_VALUE_TYPE}.
6707 @end table
6709 @node Misc
6710 @section Miscellaneous Parameters
6711 @cindex parameters, miscellaneous
6713 @c prevent bad page break with this line
6714 Here are several miscellaneous parameters.
6716 @table @code
6717 @item PREDICATE_CODES
6718 @findex PREDICATE_CODES
6719 Define this if you have defined special-purpose predicates in the file
6720 @file{@var{machine}.c}.  This macro is called within an initializer of an
6721 array of structures.  The first field in the structure is the name of a
6722 predicate and the second field is an array of rtl codes.  For each
6723 predicate, list all rtl codes that can be in expressions matched by the
6724 predicate.  The list should have a trailing comma.  Here is an example
6725 of two entries in the list for a typical RISC machine:
6727 @smallexample
6728 #define PREDICATE_CODES \
6729   @{"gen_reg_rtx_operand", @{SUBREG, REG@}@},  \
6730   @{"reg_or_short_cint_operand", @{SUBREG, REG, CONST_INT@}@},
6731 @end smallexample
6733 Defining this macro does not affect the generated code (however,
6734 incorrect definitions that omit an rtl code that may be matched by the
6735 predicate can cause the compiler to malfunction).  Instead, it allows
6736 the table built by @file{genrecog} to be more compact and efficient,
6737 thus speeding up the compiler.  The most important predicates to include
6738 in the list specified by this macro are thoses used in the most insn
6739 patterns.
6741 @findex CASE_VECTOR_MODE
6742 @item CASE_VECTOR_MODE
6743 An alias for a machine mode name.  This is the machine mode that
6744 elements of a jump-table should have.
6746 @findex CASE_VECTOR_PC_RELATIVE
6747 @item CASE_VECTOR_PC_RELATIVE
6748 Define this macro if jump-tables should contain relative addresses.
6750 @findex CASE_DROPS_THROUGH
6751 @item CASE_DROPS_THROUGH
6752 Define this if control falls through a @code{case} insn when the index
6753 value is out of range.  This means the specified default-label is
6754 actually ignored by the @code{case} insn proper.
6756 @findex CASE_VALUES_THRESHOLD
6757 @item CASE_VALUES_THRESHOLD
6758 Define this to be the smallest number of different values for which it
6759 is best to use a jump-table instead of a tree of conditional branches.
6760 The default is four for machines with a @code{casesi} instruction and
6761 five otherwise.  This is best for most machines.
6763 @findex WORD_REGISTER_OPERATIONS
6764 @item WORD_REGISTER_OPERATIONS
6765 Define this macro if operations between registers with integral mode
6766 smaller than a word are always performed on the entire register.
6767 Most RISC machines have this property and most CISC machines do not.
6769 @findex LOAD_EXTEND_OP
6770 @item LOAD_EXTEND_OP (@var{mode})
6771 Define this macro to be a C expression indicating when insns that read
6772 memory in @var{mode}, an integral mode narrower than a word, set the
6773 bits outside of @var{mode} to be either the sign-extension or the
6774 zero-extension of the data read.  Return @code{SIGN_EXTEND} for values
6775 of @var{mode} for which the
6776 insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
6777 @code{NIL} for other modes.
6779 This macro is not called with @var{mode} non-integral or with a width
6780 greater than or equal to @code{BITS_PER_WORD}, so you may return any
6781 value in this case.  Do not define this macro if it would always return
6782 @code{NIL}.  On machines where this macro is defined, you will normally
6783 define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
6785 @findex SHORT_IMMEDIATES_SIGN_EXTEND
6786 @item SHORT_IMMEDIATES_SIGN_EXTEND
6787 Define this macro if loading short immediate values into registers sign
6788 extends.
6790 @findex IMPLICIT_FIX_EXPR
6791 @item IMPLICIT_FIX_EXPR
6792 An alias for a tree code that should be used by default for conversion
6793 of floating point values to fixed point.  Normally,
6794 @code{FIX_ROUND_EXPR} is used.@refill
6796 @findex FIXUNS_TRUNC_LIKE_FIX_TRUNC
6797 @item FIXUNS_TRUNC_LIKE_FIX_TRUNC
6798 Define this macro if the same instructions that convert a floating
6799 point number to a signed fixed point number also convert validly to an
6800 unsigned one.
6802 @findex EASY_DIV_EXPR
6803 @item EASY_DIV_EXPR
6804 An alias for a tree code that is the easiest kind of division to
6805 compile code for in the general case.  It may be
6806 @code{TRUNC_DIV_EXPR}, @code{FLOOR_DIV_EXPR}, @code{CEIL_DIV_EXPR} or
6807 @code{ROUND_DIV_EXPR}.  These four division operators differ in how
6808 they round the result to an integer.  @code{EASY_DIV_EXPR} is used
6809 when it is permissible to use any of those kinds of division and the
6810 choice should be made on the basis of efficiency.@refill
6812 @findex MOVE_MAX
6813 @item MOVE_MAX
6814 The maximum number of bytes that a single instruction can move quickly
6815 between memory and registers or between two memory locations.
6817 @findex MAX_MOVE_MAX
6818 @item MAX_MOVE_MAX
6819 The maximum number of bytes that a single instruction can move quickly
6820 between memory and registers or between two memory locations.  If this
6821 is undefined, the default is @code{MOVE_MAX}.  Otherwise, it is the
6822 constant value that is the largest value that @code{MOVE_MAX} can have
6823 at run-time.
6825 @findex SHIFT_COUNT_TRUNCATED
6826 @item SHIFT_COUNT_TRUNCATED
6827 A C expression that is nonzero if on this machine the number of bits
6828 actually used for the count of a shift operation is equal to the number
6829 of bits needed to represent the size of the object being shifted.  When
6830 this macro is non-zero, the compiler will assume that it is safe to omit
6831 a sign-extend, zero-extend, and certain bitwise `and' instructions that
6832 truncates the count of a shift operation.  On machines that have
6833 instructions that act on bitfields at variable positions, which may
6834 include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED}
6835 also enables deletion of truncations of the values that serve as
6836 arguments to bitfield instructions.
6838 If both types of instructions truncate the count (for shifts) and
6839 position (for bitfield operations), or if no variable-position bitfield
6840 instructions exist, you should define this macro.
6842 However, on some machines, such as the 80386 and the 680x0, truncation
6843 only applies to shift operations and not the (real or pretended)
6844 bitfield operations.  Define @code{SHIFT_COUNT_TRUNCATED} to be zero on
6845 such machines.  Instead, add patterns to the @file{md} file that include
6846 the implied truncation of the shift instructions.
6848 You need not define this macro if it would always have the value of zero.
6850 @findex TRULY_NOOP_TRUNCATION
6851 @item TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec})
6852 A C expression which is nonzero if on this machine it is safe to
6853 ``convert'' an integer of @var{inprec} bits to one of @var{outprec}
6854 bits (where @var{outprec} is smaller than @var{inprec}) by merely
6855 operating on it as if it had only @var{outprec} bits.
6857 On many machines, this expression can be 1.
6859 @c rearranged this, removed the phrase "it is reported that".  this was
6860 @c to fix an overfull hbox.  --mew 10feb93
6861 When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for
6862 modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result.
6863 If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in
6864 such cases may improve things.
6866 @findex STORE_FLAG_VALUE
6867 @item STORE_FLAG_VALUE
6868 A C expression describing the value returned by a comparison operator
6869 with an integral mode and stored by a store-flag instruction
6870 (@samp{s@var{cond}}) when the condition is true.  This description must
6871 apply to @emph{all} the @samp{s@var{cond}} patterns and all the
6872 comparison operators whose results have a @code{MODE_INT} mode.
6874 A value of 1 or -1 means that the instruction implementing the
6875 comparison operator returns exactly 1 or -1 when the comparison is true
6876 and 0 when the comparison is false.  Otherwise, the value indicates
6877 which bits of the result are guaranteed to be 1 when the comparison is
6878 true.  This value is interpreted in the mode of the comparison
6879 operation, which is given by the mode of the first operand in the
6880 @samp{s@var{cond}} pattern.  Either the low bit or the sign bit of
6881 @code{STORE_FLAG_VALUE} be on.  Presently, only those bits are used by
6882 the compiler.
6884 If @code{STORE_FLAG_VALUE} is neither 1 or -1, the compiler will
6885 generate code that depends only on the specified bits.  It can also
6886 replace comparison operators with equivalent operations if they cause
6887 the required bits to be set, even if the remaining bits are undefined.
6888 For example, on a machine whose comparison operators return an
6889 @code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as
6890 @samp{0x80000000}, saying that just the sign bit is relevant, the
6891 expression
6893 @smallexample
6894 (ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0))
6895 @end smallexample
6897 @noindent
6898 can be converted to
6900 @smallexample
6901 (ashift:SI @var{x} (const_int @var{n}))
6902 @end smallexample
6904 @noindent
6905 where @var{n} is the appropriate shift count to move the bit being
6906 tested into the sign bit.
6908 There is no way to describe a machine that always sets the low-order bit
6909 for a true value, but does not guarantee the value of any other bits,
6910 but we do not know of any machine that has such an instruction.  If you
6911 are trying to port GNU CC to such a machine, include an instruction to
6912 perform a logical-and of the result with 1 in the pattern for the
6913 comparison operators and let us know
6914 @ifset USING
6915 (@pxref{Bug Reporting,,How to Report Bugs}).
6916 @end ifset
6917 @ifclear USING
6918 (@pxref{Bug Reporting,,How to Report Bugs,gcc.info,Using GCC}).
6919 @end ifclear
6921 Often, a machine will have multiple instructions that obtain a value
6922 from a comparison (or the condition codes).  Here are rules to guide the
6923 choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions
6924 to be used:
6926 @itemize @bullet
6927 @item
6928 Use the shortest sequence that yields a valid definition for
6929 @code{STORE_FLAG_VALUE}.  It is more efficient for the compiler to
6930 ``normalize'' the value (convert it to, e.g., 1 or 0) than for the
6931 comparison operators to do so because there may be opportunities to
6932 combine the normalization with other operations.
6934 @item
6935 For equal-length sequences, use a value of 1 or -1, with -1 being
6936 slightly preferred on machines with expensive jumps and 1 preferred on
6937 other machines.
6939 @item
6940 As a second choice, choose a value of @samp{0x80000001} if instructions
6941 exist that set both the sign and low-order bits but do not define the
6942 others.
6944 @item
6945 Otherwise, use a value of @samp{0x80000000}.
6946 @end itemize
6948 Many machines can produce both the value chosen for
6949 @code{STORE_FLAG_VALUE} and its negation in the same number of
6950 instructions.  On those machines, you should also define a pattern for
6951 those cases, e.g., one matching
6953 @smallexample
6954 (set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C})))
6955 @end smallexample
6957 Some machines can also perform @code{and} or @code{plus} operations on
6958 condition code values with less instructions than the corresponding
6959 @samp{s@var{cond}} insn followed by @code{and} or @code{plus}.  On those
6960 machines, define the appropriate patterns.  Use the names @code{incscc}
6961 and @code{decscc}, respectively, for the patterns which perform
6962 @code{plus} or @code{minus} operations on condition code values.  See
6963 @file{rs6000.md} for some examples.  The GNU Superoptizer can be used to
6964 find such instruction sequences on other machines.
6966 You need not define @code{STORE_FLAG_VALUE} if the machine has no store-flag
6967 instructions.
6969 @findex FLOAT_STORE_FLAG_VALUE
6970 @item FLOAT_STORE_FLAG_VALUE
6971 A C expression that gives a non-zero floating point value that is
6972 returned when comparison operators with floating-point results are true.
6973 Define this macro on machine that have comparison operations that return
6974 floating-point values.  If there are no such operations, do not define
6975 this macro.
6977 @findex Pmode
6978 @item Pmode
6979 An alias for the machine mode for pointers.  On most machines, define
6980 this to be the integer mode corresponding to the width of a hardware
6981 pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines.
6982 On some machines you must define this to be one of the partial integer
6983 modes, such as @code{PSImode}.
6985 The width of @code{Pmode} must be at least as large as the value of
6986 @code{POINTER_SIZE}.  If it is not equal, you must define the macro
6987 @code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended
6988 to @code{Pmode}.
6990 @findex FUNCTION_MODE
6991 @item FUNCTION_MODE
6992 An alias for the machine mode used for memory references to functions
6993 being called, in @code{call} RTL expressions.  On most machines this
6994 should be @code{QImode}.
6996 @findex INTEGRATE_THRESHOLD
6997 @item INTEGRATE_THRESHOLD (@var{decl})
6998 A C expression for the maximum number of instructions above which the
6999 function @var{decl} should not be inlined.  @var{decl} is a
7000 @code{FUNCTION_DECL} node.
7002 The default definition of this macro is 64 plus 8 times the number of
7003 arguments that the function accepts.  Some people think a larger
7004 threshold should be used on RISC machines.
7006 @findex SCCS_DIRECTIVE
7007 @item SCCS_DIRECTIVE
7008 Define this if the preprocessor should ignore @code{#sccs} directives
7009 and print no error message.
7011 @findex NO_IMPLICIT_EXTERN_C
7012 @item NO_IMPLICIT_EXTERN_C
7013 Define this macro if the system header files support C++ as well as C.
7014 This macro inhibits the usual method of using system header files in
7015 C++, which is to pretend that the file's contents are enclosed in
7016 @samp{extern "C" @{@dots{}@}}.
7018 @findex HANDLE_PRAGMA
7019 @findex #pragma
7020 @findex pragma
7021 @item HANDLE_PRAGMA (@var{stream}, @var{node})
7022 Define this macro if you want to implement any pragmas.  If defined, it
7023 is a C expression whose value is 1 if the pragma was handled by the function.
7024 The argument @var{stream} is the stdio input stream from which the source text
7025 can be read.  @var{node} is the tree node for the identifier after the
7026 @code{#pragma}.
7028 It is generally a bad idea to implement new uses of @code{#pragma}.  The
7029 only reason to define this macro is for compatibility with other
7030 compilers that do support @code{#pragma} for the sake of any user
7031 programs which already use it.
7033 @findex VALID_MACHINE_DECL_ATTRIBUTE
7034 @item VALID_MACHINE_DECL_ATTRIBUTE (@var{decl}, @var{attributes}, @var{identifier}, @var{args})
7035 If defined, a C expression whose value is nonzero if @var{identifier} with
7036 arguments @var{args} is a valid machine specific attribute for @var{decl}.
7037 The attributes in @var{attributes} have previously been assigned to @var{decl}.
7039 @findex VALID_MACHINE_TYPE_ATTRIBUTE
7040 @item VALID_MACHINE_TYPE_ATTRIBUTE (@var{type}, @var{attributes}, @var{identifier}, @var{args})
7041 If defined, a C expression whose value is nonzero if @var{identifier} with
7042 arguments @var{args} is a valid machine specific attribute for @var{type}.
7043 The attributes in @var{attributes} have previously been assigned to @var{type}.
7045 @findex COMP_TYPE_ATTRIBUTES
7046 @item COMP_TYPE_ATTRIBUTES (@var{type1}, @var{type2})
7047 If defined, a C expression whose value is zero if the attributes on
7048 @var{type1} and @var{type2} are incompatible, one if they are compatible,
7049 and two if they are nearly compatible (which causes a warning to be
7050 generated).
7052 @findex SET_DEFAULT_TYPE_ATTRIBUTES
7053 @item SET_DEFAULT_TYPE_ATTRIBUTES (@var{type})
7054 If defined, a C statement that assigns default attributes to
7055 newly defined @var{type}.
7057 @findex DOLLARS_IN_IDENTIFIERS
7058 @item DOLLARS_IN_IDENTIFIERS
7059 Define this macro to control use of the character @samp{$} in identifier
7060 names.  0 means @samp{$} is not allowed by default; 1 means it is allowed.
7061 1 is the default; there is no need to define this macro in that case.
7062 This macro controls the compiler proper; it does not affect the preprocessor.
7064 @findex NO_DOLLAR_IN_LABEL
7065 @item NO_DOLLAR_IN_LABEL
7066 Define this macro if the assembler does not accept the character
7067 @samp{$} in label names.  By default constructors and destructors in
7068 G++ have @samp{$} in the identifiers.  If this macro is defined,
7069 @samp{.} is used instead.
7071 @findex NO_DOT_IN_LABEL
7072 @item NO_DOT_IN_LABEL
7073 Define this macro if the assembler does not accept the character
7074 @samp{.} in label names.  By default constructors and destructors in G++
7075 have names that use @samp{.}.  If this macro is defined, these names
7076 are rewritten to avoid @samp{.}.
7078 @findex DEFAULT_MAIN_RETURN
7079 @item DEFAULT_MAIN_RETURN
7080 Define this macro if the target system expects every program's @code{main}
7081 function to return a standard ``success'' value by default (if no other
7082 value is explicitly returned).
7084 The definition should be a C statement (sans semicolon) to generate the
7085 appropriate rtl instructions.  It is used only when compiling the end of
7086 @code{main}.
7088 @item HAVE_ATEXIT
7089 @findex HAVE_ATEXIT
7090 Define this if the target system supports the function
7091 @code{atexit} from the ANSI C standard.  If this is not defined,
7092 and @code{INIT_SECTION_ASM_OP} is not defined, a default
7093 @code{exit} function will be provided to support C++.
7095 @item EXIT_BODY
7096 @findex EXIT_BODY
7097 Define this if your @code{exit} function needs to do something
7098 besides calling an external function @code{_cleanup} before
7099 terminating with @code{_exit}.  The @code{EXIT_BODY} macro is
7100 only needed if netiher @code{HAVE_ATEXIT} nor
7101 @code{INIT_SECTION_ASM_OP} are defined.
7103 @findex INSN_SETS_ARE_DELAYED
7104 @item INSN_SETS_ARE_DELAYED (@var{insn})
7105 Define this macro as a C expression that is nonzero if it is safe for the
7106 delay slot scheduler to place instructions in the delay slot of @var{insn},
7107 even if they appear to use a resource set or clobbered in @var{insn}.
7108 @var{insn} is always a @code{jump_insn} or an @code{insn}; GNU CC knows that
7109 every @code{call_insn} has this behavior.  On machines where some @code{insn}
7110 or @code{jump_insn} is really a function call and hence has this behavior,
7111 you should define this macro.
7113 You need not define this macro if it would always return zero.
7115 @findex INSN_REFERENCES_ARE_DELAYED
7116 @item INSN_REFERENCES_ARE_DELAYED (@var{insn})
7117 Define this macro as a C expression that is nonzero if it is safe for the
7118 delay slot scheduler to place instructions in the delay slot of @var{insn},
7119 even if they appear to set or clobber a resource referenced in @var{insn}.
7120 @var{insn} is always a @code{jump_insn} or an @code{insn}.  On machines where
7121 some @code{insn} or @code{jump_insn} is really a function call and its operands
7122 are registers whose use is actually in the subroutine it calls, you should
7123 define this macro.  Doing so allows the delay slot scheduler to move
7124 instructions which copy arguments into the argument registers into the delay
7125 slot of @var{insn}.
7127 You need not define this macro if it would always return zero.
7129 @findex MACHINE_DEPENDENT_REORG
7130 @item MACHINE_DEPENDENT_REORG (@var{insn})
7131 In rare cases, correct code generation requires extra machine
7132 dependent processing between the second jump optimization pass and
7133 delayed branch scheduling.  On those machines, define this macro as a C
7134 statement to act on the code starting at @var{insn}.
7136 @findex MULTIPLE_SYMBOL_SPACES
7137 @item MULTIPLE_SYMBOL_SPACES
7138 Define this macro if in some cases global symbols from one translation
7139 unit may not be bound to undefined symbols in another translation unit
7140 without user intervention.  For instance, under Microsoft Windows
7141 symbols must be explicitly imported from shared libraries (DLLs).
7143 @findex GIV_SORT_CRITERION
7144 @item GIV_SORT_CRITERION (@var{giv1}, @var{giv2})
7145 In some cases, the strength reduction optimization pass can produce better
7146 code if this is defined.  This macro controls the order that induction
7147 variables are combined.  This macro is particularly useful if the target has
7148 limited addressing modes.  For instance, the SH target has only positive
7149 offsets in addresses.  Thus sorting to put the smallest address first
7150 allows the most combinations to be found.
7152 @findex ISSUE_RATE
7153 @item ISSUE_RATE
7154 A C expression that returns how many instructions can be issued at the
7155 same time if the machine is a superscalar machine.  This is only used by
7156 the @samp{Haifa} scheduler, and not the traditional scheduler.
7158 @end table