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