OSDN Git Service

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