OSDN Git Service

* stor-layout.c (place_field): Handle alignment of whole
[pf3gnuchains/gcc-fork.git] / gcc / doc / tm.texi
1 @c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,2002
2 @c Free Software Foundation, Inc.
3 @c This is part of the GCC manual.
4 @c For copying conditions, see the file gcc.texi.
5
6 @node Target Macros
7 @chapter Target Description Macros and Functions
8 @cindex machine description macros
9 @cindex target description macros
10 @cindex macros, target description
11 @cindex @file{tm.h} macros
12
13 In addition to the file @file{@var{machine}.md}, a machine description
14 includes a C header file conventionally given the name
15 @file{@var{machine}.h} and a C source file named @file{@var{machine}.c}.
16 The header file defines numerous macros that convey the information
17 about the target machine that does not fit into the scheme of the
18 @file{.md} file.  The file @file{tm.h} should be a link to
19 @file{@var{machine}.h}.  The header file @file{config.h} includes
20 @file{tm.h} and most compiler source files include @file{config.h}.  The
21 source file defines a variable @code{targetm}, which is a structure
22 containing pointers to functions and data relating to the target
23 machine.  @file{@var{machine}.c} should also contain their definitions,
24 if they are not defined elsewhere in GCC, and other functions called
25 through the macros defined in the @file{.h} file.
26
27 @menu
28 * Target Structure::    The @code{targetm} variable.
29 * Driver::              Controlling how the driver runs the compilation passes.
30 * Run-time Target::     Defining @samp{-m} options like @option{-m68000} and @option{-m68020}.
31 * Per-Function Data::   Defining data structures for per-function information.
32 * Storage Layout::      Defining sizes and alignments of data.
33 * Type Layout::         Defining sizes and properties of basic user data types.
34 * Escape Sequences::    Defining the value of target character escape sequences
35 * Registers::           Naming and describing the hardware registers.
36 * Register Classes::    Defining the classes of hardware registers.
37 * Stack and Calling::   Defining which way the stack grows and by how much.
38 * Varargs::             Defining the varargs macros.
39 * Trampolines::         Code set up at run time to enter a nested function.
40 * Library Calls::       Controlling how library routines are implicitly called.
41 * Addressing Modes::    Defining addressing modes valid for memory operands.
42 * Condition Code::      Defining how insns update the condition code.
43 * Costs::               Defining relative costs of different operations.
44 * Scheduling::          Adjusting the behavior of the instruction scheduler.
45 * Sections::            Dividing storage into text, data, and other sections.
46 * PIC::                 Macros for position independent code.
47 * Assembler Format::    Defining how to write insns and pseudo-ops to output.
48 * Debugging Info::      Defining the format of debugging output.
49 * Floating Point::      Handling floating point for cross-compilers.
50 * Mode Switching::      Insertion of mode-switching instructions.
51 * Target Attributes::   Defining target-specific uses of @code{__attribute__}.
52 * MIPS Coprocessors::   MIPS coprocessor support and how to customize it.
53 * Misc::                Everything else.
54 @end menu
55
56 @node Target Structure
57 @section The Global @code{targetm} Variable
58 @cindex target hooks
59 @cindex target functions
60
61 @deftypevar {struct gcc_target} targetm
62 The target @file{.c} file must define the global @code{targetm} variable
63 which contains pointers to functions and data relating to the target
64 machine.  The variable is declared in @file{target.h};
65 @file{target-def.h} defines the macro @code{TARGET_INITIALIZER} which is
66 used to initialize the variable, and macros for the default initializers
67 for elements of the structure.  The @file{.c} file should override those
68 macros for which the default definition is inappropriate.  For example:
69 @smallexample
70 #include "target.h"
71 #include "target-def.h"
72
73 /* @r{Initialize the GCC target structure.}  */
74
75 #undef TARGET_COMP_TYPE_ATTRIBUTES
76 #define TARGET_COMP_TYPE_ATTRIBUTES @var{machine}_comp_type_attributes
77
78 struct gcc_target targetm = TARGET_INITIALIZER;
79 @end smallexample
80 @end deftypevar
81
82 Where a macro should be defined in the @file{.c} file in this manner to
83 form part of the @code{targetm} structure, it is documented below as a
84 ``Target Hook'' with a prototype.  Many macros will change in future
85 from being defined in the @file{.h} file to being part of the
86 @code{targetm} structure.
87
88 @node Driver
89 @section Controlling the Compilation Driver, @file{gcc}
90 @cindex driver
91 @cindex controlling the compilation driver
92
93 @c prevent bad page break with this line
94 You can control the compilation driver.
95
96 @table @code
97 @findex SWITCH_TAKES_ARG
98 @item SWITCH_TAKES_ARG (@var{char})
99 A C expression which determines whether the option @option{-@var{char}}
100 takes arguments.  The value should be the number of arguments that
101 option takes--zero, for many options.
102
103 By default, this macro is defined as
104 @code{DEFAULT_SWITCH_TAKES_ARG}, which handles the standard options
105 properly.  You need not define @code{SWITCH_TAKES_ARG} unless you
106 wish to add additional options which take arguments.  Any redefinition
107 should call @code{DEFAULT_SWITCH_TAKES_ARG} and then check for
108 additional options.
109
110 @findex WORD_SWITCH_TAKES_ARG
111 @item WORD_SWITCH_TAKES_ARG (@var{name})
112 A C expression which determines whether the option @option{-@var{name}}
113 takes arguments.  The value should be the number of arguments that
114 option takes--zero, for many options.  This macro rather than
115 @code{SWITCH_TAKES_ARG} is used for multi-character option names.
116
117 By default, this macro is defined as
118 @code{DEFAULT_WORD_SWITCH_TAKES_ARG}, which handles the standard options
119 properly.  You need not define @code{WORD_SWITCH_TAKES_ARG} unless you
120 wish to add additional options which take arguments.  Any redefinition
121 should call @code{DEFAULT_WORD_SWITCH_TAKES_ARG} and then check for
122 additional options.
123
124 @findex SWITCH_CURTAILS_COMPILATION
125 @item SWITCH_CURTAILS_COMPILATION (@var{char})
126 A C expression which determines whether the option @option{-@var{char}}
127 stops compilation before the generation of an executable.  The value is
128 boolean, nonzero if the option does stop an executable from being
129 generated, zero otherwise.
130
131 By default, this macro is defined as
132 @code{DEFAULT_SWITCH_CURTAILS_COMPILATION}, which handles the standard
133 options properly.  You need not define
134 @code{SWITCH_CURTAILS_COMPILATION} unless you wish to add additional
135 options which affect the generation of an executable.  Any redefinition
136 should call @code{DEFAULT_SWITCH_CURTAILS_COMPILATION} and then check
137 for additional options.
138
139 @findex SWITCHES_NEED_SPACES
140 @item SWITCHES_NEED_SPACES
141 A string-valued C expression which enumerates the options for which
142 the linker needs a space between the option and its argument.
143
144 If this macro is not defined, the default value is @code{""}.
145
146 @findex TARGET_OPTION_TRANSLATE_TABLE
147 @item TARGET_OPTION_TRANSLATE_TABLE
148 If defined, a list of pairs of strings, the first of which is a
149 potential command line target to the @file{gcc} driver program, and the
150 second of which is a space-separated (tabs and other whitespace are not
151 supported) list of options with which to replace the first option.  The
152 target defining this list is responsible for assuring that the results
153 are valid.  Replacement options may not be the @code{--opt} style, they
154 must be the @code{-opt} style.  It is the intention of this macro to
155 provide a mechanism for substitution that affects the multilibs chosen,
156 such as one option that enables many options, some of which select
157 multilibs.  Example nonsensical definition, where @code{-malt-abi},
158 @code{-EB}, and @code{-mspoo} cause different multilibs to be chosen:
159
160 @smallexample
161 #define TARGET_OPTION_TRANSLATE_TABLE \
162 @{ "-fast",   "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \
163 @{ "-compat", "-EB -malign=4 -mspoo" @}
164 @end smallexample
165
166 @findex CPP_SPEC
167 @item CPP_SPEC
168 A C string constant that tells the GCC driver program options to
169 pass to CPP@.  It can also specify how to translate options you
170 give to GCC into options for GCC to pass to the CPP@.
171
172 Do not define this macro if it does not need to do anything.
173
174 @findex CPLUSPLUS_CPP_SPEC
175 @item CPLUSPLUS_CPP_SPEC
176 This macro is just like @code{CPP_SPEC}, but is used for C++, rather
177 than C@.  If you do not define this macro, then the value of
178 @code{CPP_SPEC} (if any) will be used instead.
179
180 @findex CC1_SPEC
181 @item CC1_SPEC
182 A C string constant that tells the GCC driver program options to
183 pass to @code{cc1}, @code{cc1plus}, @code{f771}, and the other language
184 front ends.
185 It can also specify how to translate options you give to GCC into options
186 for GCC to pass to front ends.
187
188 Do not define this macro if it does not need to do anything.
189
190 @findex CC1PLUS_SPEC
191 @item CC1PLUS_SPEC
192 A C string constant that tells the GCC driver program options to
193 pass to @code{cc1plus}.  It can also specify how to translate options you
194 give to GCC into options for GCC to pass to the @code{cc1plus}.
195
196 Do not define this macro if it does not need to do anything.
197 Note that everything defined in CC1_SPEC is already passed to
198 @code{cc1plus} so there is no need to duplicate the contents of
199 CC1_SPEC in CC1PLUS_SPEC@.
200
201 @findex ASM_SPEC
202 @item ASM_SPEC
203 A C string constant that tells the GCC driver program options to
204 pass to the assembler.  It can also specify how to translate options
205 you give to GCC into options for GCC to pass to the assembler.
206 See the file @file{sun3.h} for an example of this.
207
208 Do not define this macro if it does not need to do anything.
209
210 @findex ASM_FINAL_SPEC
211 @item ASM_FINAL_SPEC
212 A C string constant that tells the GCC driver program how to
213 run any programs which cleanup after the normal assembler.
214 Normally, this is not needed.  See the file @file{mips.h} for
215 an example of this.
216
217 Do not define this macro if it does not need to do anything.
218
219 @findex LINK_SPEC
220 @item LINK_SPEC
221 A C string constant that tells the GCC driver program options to
222 pass to the linker.  It can also specify how to translate options you
223 give to GCC into options for GCC to pass to the linker.
224
225 Do not define this macro if it does not need to do anything.
226
227 @findex LIB_SPEC
228 @item LIB_SPEC
229 Another C string constant used much like @code{LINK_SPEC}.  The difference
230 between the two is that @code{LIB_SPEC} is used at the end of the
231 command given to the linker.
232
233 If this macro is not defined, a default is provided that
234 loads the standard C library from the usual place.  See @file{gcc.c}.
235
236 @findex LIBGCC_SPEC
237 @item LIBGCC_SPEC
238 Another C string constant that tells the GCC driver program
239 how and when to place a reference to @file{libgcc.a} into the
240 linker command line.  This constant is placed both before and after
241 the value of @code{LIB_SPEC}.
242
243 If this macro is not defined, the GCC driver provides a default that
244 passes the string @option{-lgcc} to the linker.
245
246 @findex STARTFILE_SPEC
247 @item STARTFILE_SPEC
248 Another C string constant used much like @code{LINK_SPEC}.  The
249 difference between the two is that @code{STARTFILE_SPEC} is used at
250 the very beginning of the command given to the linker.
251
252 If this macro is not defined, a default is provided that loads the
253 standard C startup file from the usual place.  See @file{gcc.c}.
254
255 @findex ENDFILE_SPEC
256 @item ENDFILE_SPEC
257 Another C string constant used much like @code{LINK_SPEC}.  The
258 difference between the two is that @code{ENDFILE_SPEC} is used at
259 the very end of the command given to the linker.
260
261 Do not define this macro if it does not need to do anything.
262
263 @findex THREAD_MODEL_SPEC
264 @item THREAD_MODEL_SPEC
265 GCC @code{-v} will print the thread model GCC was configured to use.
266 However, this doesn't work on platforms that are multilibbed on thread
267 models, such as AIX 4.3.  On such platforms, define
268 @code{THREAD_MODEL_SPEC} such that it evaluates to a string without
269 blanks that names one of the recognized thread models.  @code{%*}, the
270 default value of this macro, will expand to the value of
271 @code{thread_file} set in @file{config.gcc}.
272
273 @findex EXTRA_SPECS
274 @item EXTRA_SPECS
275 Define this macro to provide additional specifications to put in the
276 @file{specs} file that can be used in various specifications like
277 @code{CC1_SPEC}.
278
279 The definition should be an initializer for an array of structures,
280 containing a string constant, that defines the specification name, and a
281 string constant that provides the specification.
282
283 Do not define this macro if it does not need to do anything.
284
285 @code{EXTRA_SPECS} is useful when an architecture contains several
286 related targets, which have various @code{@dots{}_SPECS} which are similar
287 to each other, and the maintainer would like one central place to keep
288 these definitions.
289
290 For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to
291 define either @code{_CALL_SYSV} when the System V calling sequence is
292 used or @code{_CALL_AIX} when the older AIX-based calling sequence is
293 used.
294
295 The @file{config/rs6000/rs6000.h} target file defines:
296
297 @example
298 #define EXTRA_SPECS \
299   @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @},
300
301 #define CPP_SYS_DEFAULT ""
302 @end example
303
304 The @file{config/rs6000/sysv.h} target file defines:
305 @smallexample
306 #undef CPP_SPEC
307 #define CPP_SPEC \
308 "%@{posix: -D_POSIX_SOURCE @} \
309 %@{mcall-sysv: -D_CALL_SYSV @} %@{mcall-aix: -D_CALL_AIX @} \
310 %@{!mcall-sysv: %@{!mcall-aix: %(cpp_sysv_default) @}@} \
311 %@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}"
312
313 #undef CPP_SYSV_DEFAULT
314 #define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
315 @end smallexample
316
317 while the @file{config/rs6000/eabiaix.h} target file defines
318 @code{CPP_SYSV_DEFAULT} as:
319
320 @smallexample
321 #undef CPP_SYSV_DEFAULT
322 #define CPP_SYSV_DEFAULT "-D_CALL_AIX"
323 @end smallexample
324
325 @findex LINK_LIBGCC_SPECIAL
326 @item LINK_LIBGCC_SPECIAL
327 Define this macro if the driver program should find the library
328 @file{libgcc.a} itself and should not pass @option{-L} options to the
329 linker.  If you do not define this macro, the driver program will pass
330 the argument @option{-lgcc} to tell the linker to do the search and will
331 pass @option{-L} options to it.
332
333 @findex LINK_LIBGCC_SPECIAL_1
334 @item LINK_LIBGCC_SPECIAL_1
335 Define this macro if the driver program should find the library
336 @file{libgcc.a}.  If you do not define this macro, the driver program will pass
337 the argument @option{-lgcc} to tell the linker to do the search.
338 This macro is similar to @code{LINK_LIBGCC_SPECIAL}, except that it does
339 not affect @option{-L} options.
340
341 @findex LINK_GCC_C_SEQUENCE_SPEC
342 @item LINK_GCC_C_SEQUENCE_SPEC
343 The sequence in which libgcc and libc are specified to the linker.
344 By default this is @code{%G %L %G}.
345
346 @findex LINK_COMMAND_SPEC
347 @item LINK_COMMAND_SPEC
348 A C string constant giving the complete command line need to execute the
349 linker.  When you do this, you will need to update your port each time a
350 change is made to the link command line within @file{gcc.c}.  Therefore,
351 define this macro only if you need to completely redefine the command
352 line for invoking the linker and there is no other way to accomplish
353 the effect you need.  Overriding this macro may be avoidable by overriding
354 @code{LINK_GCC_C_SEQUENCE_SPEC} instead.
355
356 @findex LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
357 @item LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
358 A nonzero value causes @command{collect2} to remove duplicate @option{-L@var{directory}} search
359 directories from linking commands.  Do not give it a nonzero value if
360 removing duplicate search directories changes the linker's semantics.
361
362 @findex MULTILIB_DEFAULTS
363 @item MULTILIB_DEFAULTS
364 Define this macro as a C expression for the initializer of an array of
365 string to tell the driver program which options are defaults for this
366 target and thus do not need to be handled specially when using
367 @code{MULTILIB_OPTIONS}.
368
369 Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in
370 the target makefile fragment or if none of the options listed in
371 @code{MULTILIB_OPTIONS} are set by default.
372 @xref{Target Fragment}.
373
374 @findex RELATIVE_PREFIX_NOT_LINKDIR
375 @item RELATIVE_PREFIX_NOT_LINKDIR
376 Define this macro to tell @code{gcc} that it should only translate
377 a @option{-B} prefix into a @option{-L} linker option if the prefix
378 indicates an absolute file name.
379
380 @findex STANDARD_EXEC_PREFIX
381 @item STANDARD_EXEC_PREFIX
382 Define this macro as a C string constant if you wish to override the
383 standard choice of @file{/usr/local/lib/gcc-lib/} as the default prefix to
384 try when searching for the executable files of the compiler.
385
386 @findex MD_EXEC_PREFIX
387 @item MD_EXEC_PREFIX
388 If defined, this macro is an additional prefix to try after
389 @code{STANDARD_EXEC_PREFIX}.  @code{MD_EXEC_PREFIX} is not searched
390 when the @option{-b} option is used, or the compiler is built as a cross
391 compiler.  If you define @code{MD_EXEC_PREFIX}, then be sure to add it
392 to the list of directories used to find the assembler in @file{configure.in}.
393
394 @findex STANDARD_STARTFILE_PREFIX
395 @item STANDARD_STARTFILE_PREFIX
396 Define this macro as a C string constant if you wish to override the
397 standard choice of @file{/usr/local/lib/} as the default prefix to
398 try when searching for startup files such as @file{crt0.o}.
399
400 @findex MD_STARTFILE_PREFIX
401 @item MD_STARTFILE_PREFIX
402 If defined, this macro supplies an additional prefix to try after the
403 standard prefixes.  @code{MD_EXEC_PREFIX} is not searched when the
404 @option{-b} option is used, or when the compiler is built as a cross
405 compiler.
406
407 @findex MD_STARTFILE_PREFIX_1
408 @item MD_STARTFILE_PREFIX_1
409 If defined, this macro supplies yet another prefix to try after the
410 standard prefixes.  It is not searched when the @option{-b} option is
411 used, or when the compiler is built as a cross compiler.
412
413 @findex INIT_ENVIRONMENT
414 @item INIT_ENVIRONMENT
415 Define this macro as a C string constant if you wish to set environment
416 variables for programs called by the driver, such as the assembler and
417 loader.  The driver passes the value of this macro to @code{putenv} to
418 initialize the necessary environment variables.
419
420 @findex LOCAL_INCLUDE_DIR
421 @item LOCAL_INCLUDE_DIR
422 Define this macro as a C string constant if you wish to override the
423 standard choice of @file{/usr/local/include} as the default prefix to
424 try when searching for local header files.  @code{LOCAL_INCLUDE_DIR}
425 comes before @code{SYSTEM_INCLUDE_DIR} in the search order.
426
427 Cross compilers do not search either @file{/usr/local/include} or its
428 replacement.
429
430 @findex MODIFY_TARGET_NAME
431 @item MODIFY_TARGET_NAME
432 Define this macro if you with to define command-line switches that modify the
433 default target name
434
435 For each switch, you can include a string to be appended to the first
436 part of the configuration name or a string to be deleted from the
437 configuration name, if present.  The definition should be an initializer
438 for an array of structures.  Each array element should have three
439 elements: the switch name (a string constant, including the initial
440 dash), one of the enumeration codes @code{ADD} or @code{DELETE} to
441 indicate whether the string should be inserted or deleted, and the string
442 to be inserted or deleted (a string constant).
443
444 For example, on a machine where @samp{64} at the end of the
445 configuration name denotes a 64-bit target and you want the @option{-32}
446 and @option{-64} switches to select between 32- and 64-bit targets, you would
447 code
448
449 @smallexample
450 #define MODIFY_TARGET_NAME \
451   @{ @{ "-32", DELETE, "64"@}, \
452      @{"-64", ADD, "64"@}@}
453 @end smallexample
454
455
456 @findex SYSTEM_INCLUDE_DIR
457 @item SYSTEM_INCLUDE_DIR
458 Define this macro as a C string constant if you wish to specify a
459 system-specific directory to search for header files before the standard
460 directory.  @code{SYSTEM_INCLUDE_DIR} comes before
461 @code{STANDARD_INCLUDE_DIR} in the search order.
462
463 Cross compilers do not use this macro and do not search the directory
464 specified.
465
466 @findex STANDARD_INCLUDE_DIR
467 @item STANDARD_INCLUDE_DIR
468 Define this macro as a C string constant if you wish to override the
469 standard choice of @file{/usr/include} as the default prefix to
470 try when searching for header files.
471
472 Cross compilers do not use this macro and do not search either
473 @file{/usr/include} or its replacement.
474
475 @findex STANDARD_INCLUDE_COMPONENT
476 @item STANDARD_INCLUDE_COMPONENT
477 The ``component'' corresponding to @code{STANDARD_INCLUDE_DIR}.
478 See @code{INCLUDE_DEFAULTS}, below, for the description of components.
479 If you do not define this macro, no component is used.
480
481 @findex INCLUDE_DEFAULTS
482 @item INCLUDE_DEFAULTS
483 Define this macro if you wish to override the entire default search path
484 for include files.  For a native compiler, the default search path
485 usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR},
486 @code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
487 @code{STANDARD_INCLUDE_DIR}.  In addition, @code{GPLUSPLUS_INCLUDE_DIR}
488 and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
489 and specify private search areas for GCC@.  The directory
490 @code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
491
492 The definition should be an initializer for an array of structures.
493 Each array element should have four elements: the directory name (a
494 string constant), the component name (also a string constant), a flag
495 for C++-only directories,
496 and a flag showing that the includes in the directory don't need to be
497 wrapped in @code{extern @samp{C}} when compiling C++.  Mark the end of
498 the array with a null element.
499
500 The component name denotes what GNU package the include file is part of,
501 if any, in all upper-case letters.  For example, it might be @samp{GCC}
502 or @samp{BINUTILS}.  If the package is part of a vendor-supplied
503 operating system, code the component name as @samp{0}.
504
505 For example, here is the definition used for VAX/VMS:
506
507 @example
508 #define INCLUDE_DEFAULTS \
509 @{                                       \
510   @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@},   \
511   @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@},    \
512   @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@},  \
513   @{ ".", 0, 0, 0@},                      \
514   @{ 0, 0, 0, 0@}                         \
515 @}
516 @end example
517 @end table
518
519 Here is the order of prefixes tried for exec files:
520
521 @enumerate
522 @item
523 Any prefixes specified by the user with @option{-B}.
524
525 @item
526 The environment variable @code{GCC_EXEC_PREFIX}, if any.
527
528 @item
529 The directories specified by the environment variable @code{COMPILER_PATH}.
530
531 @item
532 The macro @code{STANDARD_EXEC_PREFIX}.
533
534 @item
535 @file{/usr/lib/gcc/}.
536
537 @item
538 The macro @code{MD_EXEC_PREFIX}, if any.
539 @end enumerate
540
541 Here is the order of prefixes tried for startfiles:
542
543 @enumerate
544 @item
545 Any prefixes specified by the user with @option{-B}.
546
547 @item
548 The environment variable @code{GCC_EXEC_PREFIX}, if any.
549
550 @item
551 The directories specified by the environment variable @code{LIBRARY_PATH}
552 (or port-specific name; native only, cross compilers do not use this).
553
554 @item
555 The macro @code{STANDARD_EXEC_PREFIX}.
556
557 @item
558 @file{/usr/lib/gcc/}.
559
560 @item
561 The macro @code{MD_EXEC_PREFIX}, if any.
562
563 @item
564 The macro @code{MD_STARTFILE_PREFIX}, if any.
565
566 @item
567 The macro @code{STANDARD_STARTFILE_PREFIX}.
568
569 @item
570 @file{/lib/}.
571
572 @item
573 @file{/usr/lib/}.
574 @end enumerate
575
576 @node Run-time Target
577 @section Run-time Target Specification
578 @cindex run-time target specification
579 @cindex predefined macros
580 @cindex target specifications
581
582 @c prevent bad page break with this line
583 Here are run-time target specifications.
584
585 @table @code
586 @findex TARGET_CPU_CPP_BUILTINS
587 @item TARGET_CPU_CPP_BUILTINS()
588 This function-like macro expands to a block of code that defines
589 built-in preprocessor macros and assertions for the target cpu, using
590 the functions @code{builtin_define}, @code{builtin_define_std} and
591 @code{builtin_assert} defined in @file{c-common.c}.  When the front end
592 calls this macro it provides a trailing semicolon, and since it has
593 finished command line option processing your code can use those
594 results freely.
595
596 @code{builtin_assert} takes a string in the form you pass to the
597 command-line option @option{-A}, such as @code{cpu=mips}, and creates
598 the assertion.  @code{builtin_define} takes a string in the form
599 accepted by option @option{-D} and unconditionally defines the macro.
600
601 @code{builtin_define_std} takes a string representing the name of an
602 object-like macro.  If it doesn't lie in the user's namespace,
603 @code{builtin_define_std} defines it unconditionally.  Otherwise, it
604 defines a version with two leading underscores, and another version
605 with two leading and trailing underscores, and defines the original
606 only if an ISO standard was not requested on the command line.  For
607 example, passing @code{unix} defines @code{__unix}, @code{__unix__}
608 and possibly @code{unix}; passing @code{_mips} defines @code{__mips},
609 @code{__mips__} and possibly @code{_mips}, and passing @code{_ABI64}
610 defines only @code{_ABI64}.
611
612 You can also test for the C dialect being compiled.  The variable
613 @code{c_language} is set to one of @code{clk_c}, @code{clk_cplusplus}
614 or @code{clk_objective_c}.  Note that if we are preprocessing
615 assembler, this variable will be @code{clk_c} but the function-like
616 macro @code{preprocessing_asm_p()} will return true, so you might want
617 to check for that first.  If you need to check for strict ANSI, the
618 variable @code{flag_iso} can be used.
619
620 With @code{TARGET_OS_CPP_BUILTINS} this macro obsoletes the
621 @code{CPP_PREDEFINES} target macro.
622
623 @findex TARGET_OS_CPP_BUILTINS
624 @item TARGET_OS_CPP_BUILTINS()
625 Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
626 and is used for the target operating system instead.
627
628 With @code{TARGET_CPU_CPP_BUILTINS} this macro obsoletes the
629 @code{CPP_PREDEFINES} target macro.
630
631 @findex CPP_PREDEFINES
632 @item CPP_PREDEFINES
633 Define this to be a string constant containing @option{-D} options to
634 define the predefined macros that identify this machine and system.
635 These macros will be predefined unless the @option{-ansi} option (or a
636 @option{-std} option for strict ISO C conformance) is specified.
637
638 In addition, a parallel set of macros are predefined, whose names are
639 made by appending @samp{__} at the beginning and at the end.  These
640 @samp{__} macros are permitted by the ISO standard, so they are
641 predefined regardless of whether @option{-ansi} or a @option{-std} option
642 is specified.
643
644 For example, on the Sun, one can use the following value:
645
646 @smallexample
647 "-Dmc68000 -Dsun -Dunix"
648 @end smallexample
649
650 The result is to define the macros @code{__mc68000__}, @code{__sun__}
651 and @code{__unix__} unconditionally, and the macros @code{mc68000},
652 @code{sun} and @code{unix} provided @option{-ansi} is not specified.
653
654 @findex extern int target_flags
655 @item extern int target_flags;
656 This declaration should be present.
657
658 @cindex optional hardware or system features
659 @cindex features, optional, in system conventions
660 @item TARGET_@dots{}
661 This series of macros is to allow compiler command arguments to
662 enable or disable the use of optional features of the target machine.
663 For example, one machine description serves both the 68000 and
664 the 68020; a command argument tells the compiler whether it should
665 use 68020-only instructions or not.  This command argument works
666 by means of a macro @code{TARGET_68020} that tests a bit in
667 @code{target_flags}.
668
669 Define a macro @code{TARGET_@var{featurename}} for each such option.
670 Its definition should test a bit in @code{target_flags}.  It is
671 recommended that a helper macro @code{TARGET_MASK_@var{featurename}}
672 is defined for each bit-value to test, and used in
673 @code{TARGET_@var{featurename}} and @code{TARGET_SWITCHES}.  For
674 example:
675
676 @smallexample
677 #define TARGET_MASK_68020 1
678 #define TARGET_68020 (target_flags & TARGET_MASK_68020)
679 @end smallexample
680
681 One place where these macros are used is in the condition-expressions
682 of instruction patterns.  Note how @code{TARGET_68020} appears
683 frequently in the 68000 machine description file, @file{m68k.md}.
684 Another place they are used is in the definitions of the other
685 macros in the @file{@var{machine}.h} file.
686
687 @findex TARGET_SWITCHES
688 @item TARGET_SWITCHES
689 This macro defines names of command options to set and clear
690 bits in @code{target_flags}.  Its definition is an initializer
691 with a subgrouping for each command option.
692
693 Each subgrouping contains a string constant, that defines the option
694 name, a number, which contains the bits to set in
695 @code{target_flags}, and a second string which is the description
696 displayed by @option{--help}.  If the number is negative then the bits specified
697 by the number are cleared instead of being set.  If the description
698 string is present but empty, then no help information will be displayed
699 for that option, but it will not count as an undocumented option.  The
700 actual option name is made by appending @samp{-m} to the specified name.
701 Non-empty description strings should be marked with @code{N_(@dots{})} for
702 @command{xgettext}.  Please do not mark empty strings because the empty
703 string is reserved by GNU gettext. @code{gettext("")} returns the header entry
704 of the message catalog with meta information, not the empty string.
705
706 In addition to the description for @option{--help},
707 more detailed documentation for each option should be added to
708 @file{invoke.texi}.
709
710 One of the subgroupings should have a null string.  The number in
711 this grouping is the default value for @code{target_flags}.  Any
712 target options act starting with that value.
713
714 Here is an example which defines @option{-m68000} and @option{-m68020}
715 with opposite meanings, and picks the latter as the default:
716
717 @smallexample
718 #define TARGET_SWITCHES \
719   @{ @{ "68020", TARGET_MASK_68020, "" @},      \
720     @{ "68000", -TARGET_MASK_68020, \
721       N_("Compile for the 68000") @}, \
722     @{ "", TARGET_MASK_68020, "" @}@}
723 @end smallexample
724
725 @findex TARGET_OPTIONS
726 @item TARGET_OPTIONS
727 This macro is similar to @code{TARGET_SWITCHES} but defines names of command
728 options that have values.  Its definition is an initializer with a
729 subgrouping for each command option.
730
731 Each subgrouping contains a string constant, that defines the fixed part
732 of the option name, the address of a variable, and a description string.
733 Non-empty description strings should be marked with @code{N_(@dots{})} for
734 @command{xgettext}.  Please do not mark empty strings because the empty
735 string is reserved by GNU gettext. @code{gettext("")} returns the header entry
736 of the message catalog with meta information, not the empty string.
737
738 The variable, type @code{char *}, is set to the variable part of the
739 given option if the fixed part matches.  The actual option name is made
740 by appending @samp{-m} to the specified name.  Again, each option should
741 also be documented in @file{invoke.texi}.
742
743 Here is an example which defines @option{-mshort-data-@var{number}}.  If the
744 given option is @option{-mshort-data-512}, the variable @code{m88k_short_data}
745 will be set to the string @code{"512"}.
746
747 @smallexample
748 extern char *m88k_short_data;
749 #define TARGET_OPTIONS \
750  @{ @{ "short-data-", &m88k_short_data, \
751      N_("Specify the size of the short data section") @} @}
752 @end smallexample
753
754 @findex TARGET_VERSION
755 @item TARGET_VERSION
756 This macro is a C statement to print on @code{stderr} a string
757 describing the particular machine description choice.  Every machine
758 description should define @code{TARGET_VERSION}.  For example:
759
760 @smallexample
761 #ifdef MOTOROLA
762 #define TARGET_VERSION \
763   fprintf (stderr, " (68k, Motorola syntax)");
764 #else
765 #define TARGET_VERSION \
766   fprintf (stderr, " (68k, MIT syntax)");
767 #endif
768 @end smallexample
769
770 @findex OVERRIDE_OPTIONS
771 @item OVERRIDE_OPTIONS
772 Sometimes certain combinations of command options do not make sense on
773 a particular target machine.  You can define a macro
774 @code{OVERRIDE_OPTIONS} to take account of this.  This macro, if
775 defined, is executed once just after all the command options have been
776 parsed.
777
778 Don't use this macro to turn on various extra optimizations for
779 @option{-O}.  That is what @code{OPTIMIZATION_OPTIONS} is for.
780
781 @findex OPTIMIZATION_OPTIONS
782 @item OPTIMIZATION_OPTIONS (@var{level}, @var{size})
783 Some machines may desire to change what optimizations are performed for
784 various optimization levels.   This macro, if defined, is executed once
785 just after the optimization level is determined and before the remainder
786 of the command options have been parsed.  Values set in this macro are
787 used as the default values for the other command line options.
788
789 @var{level} is the optimization level specified; 2 if @option{-O2} is
790 specified, 1 if @option{-O} is specified, and 0 if neither is specified.
791
792 @var{size} is nonzero if @option{-Os} is specified and zero otherwise.
793
794 You should not use this macro to change options that are not
795 machine-specific.  These should uniformly selected by the same
796 optimization level on all supported machines.  Use this macro to enable
797 machine-specific optimizations.
798
799 @strong{Do not examine @code{write_symbols} in
800 this macro!} The debugging options are not supposed to alter the
801 generated code.
802
803 @findex CAN_DEBUG_WITHOUT_FP
804 @item CAN_DEBUG_WITHOUT_FP
805 Define this macro if debugging can be performed even without a frame
806 pointer.  If this macro is defined, GCC will turn on the
807 @option{-fomit-frame-pointer} option whenever @option{-O} is specified.
808 @end table
809
810 @node Per-Function Data
811 @section Defining data structures for per-function information.
812 @cindex per-function data
813 @cindex data structures
814
815 If the target needs to store information on a per-function basis, GCC
816 provides a macro and a couple of variables to allow this.  Note, just
817 using statics to store the information is a bad idea, since GCC supports
818 nested functions, so you can be halfway through encoding one function
819 when another one comes along.
820
821 GCC defines a data structure called @code{struct function} which
822 contains all of the data specific to an individual function.  This
823 structure contains a field called @code{machine} whose type is
824 @code{struct machine_function *}, which can be used by targets to point
825 to their own specific data.
826
827 If a target needs per-function specific data it should define the type
828 @code{struct machine_function} and also the macro @code{INIT_EXPANDERS}.
829 This macro should be used to initialize the function pointer
830 @code{init_machine_status}.  This pointer is explained below.
831
832 One typical use of per-function, target specific data is to create an
833 RTX to hold the register containing the function's return address.  This
834 RTX can then be used to implement the @code{__builtin_return_address}
835 function, for level 0.
836
837 Note---earlier implementations of GCC used a single data area to hold
838 all of the per-function information.  Thus when processing of a nested
839 function began the old per-function data had to be pushed onto a
840 stack, and when the processing was finished, it had to be popped off the
841 stack.  GCC used to provide function pointers called
842 @code{save_machine_status} and @code{restore_machine_status} to handle
843 the saving and restoring of the target specific information.  Since the
844 single data area approach is no longer used, these pointers are no
845 longer supported.
846
847 The macro and function pointers are described below.
848
849 @table @code
850 @findex INIT_EXPANDERS
851 @item   INIT_EXPANDERS
852 Macro called to initialize any target specific information.  This macro
853 is called once per function, before generation of any RTL has begun.
854 The intention of this macro is to allow the initialization of the
855 function pointers below.
856
857 @findex init_machine_status
858 @item   init_machine_status
859 This is a @code{void (*)(struct function *)} function pointer.  If this
860 pointer is non-@code{NULL} it will be called once per function, before function
861 compilation starts, in order to allow the target to perform any target
862 specific initialization of the @code{struct function} structure.  It is
863 intended that this would be used to initialize the @code{machine} of
864 that structure.
865
866 @code{struct machine_function} structures are expected to be freed by GC.
867 Generally, any memory that they reference must be allocated by using
868 @code{ggc_alloc}, including the structure itself.
869
870 @end table
871
872 @node Storage Layout
873 @section Storage Layout
874 @cindex storage layout
875
876 Note that the definitions of the macros in this table which are sizes or
877 alignments measured in bits do not need to be constant.  They can be C
878 expressions that refer to static variables, such as the @code{target_flags}.
879 @xref{Run-time Target}.
880
881 @table @code
882 @findex BITS_BIG_ENDIAN
883 @item BITS_BIG_ENDIAN
884 Define this macro to have the value 1 if the most significant bit in a
885 byte has the lowest number; otherwise define it to have the value zero.
886 This means that bit-field instructions count from the most significant
887 bit.  If the machine has no bit-field instructions, then this must still
888 be defined, but it doesn't matter which value it is defined to.  This
889 macro need not be a constant.
890
891 This macro does not affect the way structure fields are packed into
892 bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}.
893
894 @findex BYTES_BIG_ENDIAN
895 @item BYTES_BIG_ENDIAN
896 Define this macro to have the value 1 if the most significant byte in a
897 word has the lowest number.  This macro need not be a constant.
898
899 @findex WORDS_BIG_ENDIAN
900 @item WORDS_BIG_ENDIAN
901 Define this macro to have the value 1 if, in a multiword object, the
902 most significant word has the lowest number.  This applies to both
903 memory locations and registers; GCC fundamentally assumes that the
904 order of words in memory is the same as the order in registers.  This
905 macro need not be a constant.
906
907 @findex LIBGCC2_WORDS_BIG_ENDIAN
908 @item LIBGCC2_WORDS_BIG_ENDIAN
909 Define this macro if @code{WORDS_BIG_ENDIAN} is not constant.  This must be a
910 constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be
911 used only when compiling @file{libgcc2.c}.  Typically the value will be set
912 based on preprocessor defines.
913
914 @findex FLOAT_WORDS_BIG_ENDIAN
915 @item FLOAT_WORDS_BIG_ENDIAN
916 Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
917 @code{TFmode} floating point numbers are stored in memory with the word
918 containing the sign bit at the lowest address; otherwise define it to
919 have the value 0.  This macro need not be a constant.
920
921 You need not define this macro if the ordering is the same as for
922 multi-word integers.
923
924 @findex BITS_PER_UNIT
925 @item BITS_PER_UNIT
926 Define this macro to be the number of bits in an addressable storage
927 unit (byte).  If you do not define this macro the default is 8.
928
929 @findex BITS_PER_WORD
930 @item BITS_PER_WORD
931 Number of bits in a word.  If you do not define this macro, the default
932 is @code{BITS_PER_UNIT * UNITS_PER_WORD}.
933
934 @findex MAX_BITS_PER_WORD
935 @item MAX_BITS_PER_WORD
936 Maximum number of bits in a word.  If this is undefined, the default is
937 @code{BITS_PER_WORD}.  Otherwise, it is the constant value that is the
938 largest value that @code{BITS_PER_WORD} can have at run-time.
939
940 @findex UNITS_PER_WORD
941 @item UNITS_PER_WORD
942 Number of storage units in a word; normally 4.
943
944 @findex MIN_UNITS_PER_WORD
945 @item MIN_UNITS_PER_WORD
946 Minimum number of units in a word.  If this is undefined, the default is
947 @code{UNITS_PER_WORD}.  Otherwise, it is the constant value that is the
948 smallest value that @code{UNITS_PER_WORD} can have at run-time.
949
950 @findex POINTER_SIZE
951 @item POINTER_SIZE
952 Width of a pointer, in bits.  You must specify a value no wider than the
953 width of @code{Pmode}.  If it is not equal to the width of @code{Pmode},
954 you must define @code{POINTERS_EXTEND_UNSIGNED}.  If you do not specify
955 a value the default is @code{BITS_PER_WORD}.
956
957 @findex POINTERS_EXTEND_UNSIGNED
958 @item POINTERS_EXTEND_UNSIGNED
959 A C expression whose value is greater than zero if pointers that need to be
960 extended from being @code{POINTER_SIZE} bits wide to @code{Pmode} are to
961 be zero-extended and zero if they are to be sign-extended.  If the value
962 is less then zero then there must be an "ptr_extend" instruction that
963 extends a pointer from @code{POINTER_SIZE} to @code{Pmode}.
964
965 You need not define this macro if the @code{POINTER_SIZE} is equal
966 to the width of @code{Pmode}.
967
968 @findex PROMOTE_MODE
969 @item PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type})
970 A macro to update @var{m} and @var{unsignedp} when an object whose type
971 is @var{type} and which has the specified mode and signedness is to be
972 stored in a register.  This macro is only called when @var{type} is a
973 scalar type.
974
975 On most RISC machines, which only have operations that operate on a full
976 register, define this macro to set @var{m} to @code{word_mode} if
977 @var{m} is an integer mode narrower than @code{BITS_PER_WORD}.  In most
978 cases, only integer modes should be widened because wider-precision
979 floating-point operations are usually more expensive than their narrower
980 counterparts.
981
982 For most machines, the macro definition does not change @var{unsignedp}.
983 However, some machines, have instructions that preferentially handle
984 either signed or unsigned quantities of certain modes.  For example, on
985 the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
986 sign-extend the result to 64 bits.  On such machines, set
987 @var{unsignedp} according to which kind of extension is more efficient.
988
989 Do not define this macro if it would never modify @var{m}.
990
991 @findex PROMOTE_FUNCTION_ARGS
992 @item PROMOTE_FUNCTION_ARGS
993 Define this macro if the promotion described by @code{PROMOTE_MODE}
994 should also be done for outgoing function arguments.
995
996 @findex PROMOTE_FUNCTION_RETURN
997 @item PROMOTE_FUNCTION_RETURN
998 Define this macro if the promotion described by @code{PROMOTE_MODE}
999 should also be done for the return value of functions.
1000
1001 If this macro is defined, @code{FUNCTION_VALUE} must perform the same
1002 promotions done by @code{PROMOTE_MODE}.
1003
1004 @findex PROMOTE_FOR_CALL_ONLY
1005 @item PROMOTE_FOR_CALL_ONLY
1006 Define this macro if the promotion described by @code{PROMOTE_MODE}
1007 should @emph{only} be performed for outgoing function arguments or
1008 function return values, as specified by @code{PROMOTE_FUNCTION_ARGS}
1009 and @code{PROMOTE_FUNCTION_RETURN}, respectively.
1010
1011 @findex PARM_BOUNDARY
1012 @item PARM_BOUNDARY
1013 Normal alignment required for function parameters on the stack, in
1014 bits.  All stack parameters receive at least this much alignment
1015 regardless of data type.  On most machines, this is the same as the
1016 size of an integer.
1017
1018 @findex STACK_BOUNDARY
1019 @item STACK_BOUNDARY
1020 Define this macro to the minimum alignment enforced by hardware for the
1021 stack pointer on this machine.  The definition is a C expression for the
1022 desired alignment (measured in bits).  This value is used as a default
1023 if @code{PREFERRED_STACK_BOUNDARY} is not defined.  On most machines,
1024 this should be the same as @code{PARM_BOUNDARY}.
1025
1026 @findex PREFERRED_STACK_BOUNDARY
1027 @item PREFERRED_STACK_BOUNDARY
1028 Define this macro if you wish to preserve a certain alignment for the
1029 stack pointer, greater than what the hardware enforces.  The definition
1030 is a C expression for the desired alignment (measured in bits).  This
1031 macro must evaluate to a value equal to or larger than
1032 @code{STACK_BOUNDARY}.
1033
1034 @findex FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
1035 @item FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
1036 A C expression that evaluates true if @code{PREFERRED_STACK_BOUNDARY} is
1037 not guaranteed by the runtime and we should emit code to align the stack
1038 at the beginning of @code{main}.
1039
1040 @cindex @code{PUSH_ROUNDING}, interaction with @code{PREFERRED_STACK_BOUNDARY}
1041 If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned
1042 to the specified boundary.  If @code{PUSH_ROUNDING} is defined and specifies
1043 a less strict alignment than @code{PREFERRED_STACK_BOUNDARY}, the stack may
1044 be momentarily unaligned while pushing arguments.
1045
1046 @findex FUNCTION_BOUNDARY
1047 @item FUNCTION_BOUNDARY
1048 Alignment required for a function entry point, in bits.
1049
1050 @findex BIGGEST_ALIGNMENT
1051 @item BIGGEST_ALIGNMENT
1052 Biggest alignment that any data type can require on this machine, in bits.
1053
1054 @findex MINIMUM_ATOMIC_ALIGNMENT
1055 @item MINIMUM_ATOMIC_ALIGNMENT
1056 If defined, the smallest alignment, in bits, that can be given to an
1057 object that can be referenced in one operation, without disturbing any
1058 nearby object.  Normally, this is @code{BITS_PER_UNIT}, but may be larger
1059 on machines that don't have byte or half-word store operations.
1060
1061 @findex BIGGEST_FIELD_ALIGNMENT
1062 @item BIGGEST_FIELD_ALIGNMENT
1063 Biggest alignment that any structure or union field can require on this
1064 machine, in bits.  If defined, this overrides @code{BIGGEST_ALIGNMENT} for
1065 structure and union fields only, unless the field alignment has been set
1066 by the @code{__attribute__ ((aligned (@var{n})))} construct.
1067
1068 @findex ADJUST_FIELD_ALIGN
1069 @item ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
1070 An expression for the alignment of a structure field @var{field} if the
1071 alignment computed in the usual way (including applying of
1072 @code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the
1073 alignment) is @var{computed}.  It overrides alignment only if the
1074 field alignment has not been set by the
1075 @code{__attribute__ ((aligned (@var{n})))} construct.
1076
1077 @findex MAX_OFILE_ALIGNMENT
1078 @item MAX_OFILE_ALIGNMENT
1079 Biggest alignment supported by the object file format of this machine.
1080 Use this macro to limit the alignment which can be specified using the
1081 @code{__attribute__ ((aligned (@var{n})))} construct.  If not defined,
1082 the default value is @code{BIGGEST_ALIGNMENT}.
1083
1084 @findex DATA_ALIGNMENT
1085 @item DATA_ALIGNMENT (@var{type}, @var{basic-align})
1086 If defined, a C expression to compute the alignment for a variable in
1087 the static store.  @var{type} is the data type, and @var{basic-align} is
1088 the alignment that the object would ordinarily have.  The value of this
1089 macro is used instead of that alignment to align the object.
1090
1091 If this macro is not defined, then @var{basic-align} is used.
1092
1093 @findex strcpy
1094 One use of this macro is to increase alignment of medium-size data to
1095 make it all fit in fewer cache lines.  Another is to cause character
1096 arrays to be word-aligned so that @code{strcpy} calls that copy
1097 constants to character arrays can be done inline.
1098
1099 @findex CONSTANT_ALIGNMENT
1100 @item CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
1101 If defined, a C expression to compute the alignment given to a constant
1102 that is being placed in memory.  @var{constant} is the constant and
1103 @var{basic-align} is the alignment that the object would ordinarily
1104 have.  The value of this macro is used instead of that alignment to
1105 align the object.
1106
1107 If this macro is not defined, then @var{basic-align} is used.
1108
1109 The typical use of this macro is to increase alignment for string
1110 constants to be word aligned so that @code{strcpy} calls that copy
1111 constants can be done inline.
1112
1113 @findex LOCAL_ALIGNMENT
1114 @item LOCAL_ALIGNMENT (@var{type}, @var{basic-align})
1115 If defined, a C expression to compute the alignment for a variable in
1116 the local store.  @var{type} is the data type, and @var{basic-align} is
1117 the alignment that the object would ordinarily have.  The value of this
1118 macro is used instead of that alignment to align the object.
1119
1120 If this macro is not defined, then @var{basic-align} is used.
1121
1122 One use of this macro is to increase alignment of medium-size data to
1123 make it all fit in fewer cache lines.
1124
1125 @findex EMPTY_FIELD_BOUNDARY
1126 @item EMPTY_FIELD_BOUNDARY
1127 Alignment in bits to be given to a structure bit-field that follows an
1128 empty field such as @code{int : 0;}.
1129
1130 Note that @code{PCC_BITFIELD_TYPE_MATTERS} also affects the alignment
1131 that results from an empty field.
1132
1133 @findex STRUCTURE_SIZE_BOUNDARY
1134 @item STRUCTURE_SIZE_BOUNDARY
1135 Number of bits which any structure or union's size must be a multiple of.
1136 Each structure or union's size is rounded up to a multiple of this.
1137
1138 If you do not define this macro, the default is the same as
1139 @code{BITS_PER_UNIT}.
1140
1141 @findex STRICT_ALIGNMENT
1142 @item STRICT_ALIGNMENT
1143 Define this macro to be the value 1 if instructions will fail to work
1144 if given data not on the nominal alignment.  If instructions will merely
1145 go slower in that case, define this macro as 0.
1146
1147 @findex PCC_BITFIELD_TYPE_MATTERS
1148 @item PCC_BITFIELD_TYPE_MATTERS
1149 Define this if you wish to imitate the way many other C compilers handle
1150 alignment of bit-fields and the structures that contain them.
1151
1152 The behavior is that the type written for a bit-field (@code{int},
1153 @code{short}, or other integer type) imposes an alignment for the
1154 entire structure, as if the structure really did contain an ordinary
1155 field of that type.  In addition, the bit-field is placed within the
1156 structure so that it would fit within such a field, not crossing a
1157 boundary for it.
1158
1159 Thus, on most machines, a bit-field whose type is written as @code{int}
1160 would not cross a four-byte boundary, and would force four-byte
1161 alignment for the whole structure.  (The alignment used may not be four
1162 bytes; it is controlled by the other alignment parameters.)
1163
1164 If the macro is defined, its definition should be a C expression;
1165 a nonzero value for the expression enables this behavior.
1166
1167 Note that if this macro is not defined, or its value is zero, some
1168 bit-fields may cross more than one alignment boundary.  The compiler can
1169 support such references if there are @samp{insv}, @samp{extv}, and
1170 @samp{extzv} insns that can directly reference memory.
1171
1172 The other known way of making bit-fields work is to define
1173 @code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}.
1174 Then every structure can be accessed with fullwords.
1175
1176 Unless the machine has bit-field instructions or you define
1177 @code{STRUCTURE_SIZE_BOUNDARY} that way, you must define
1178 @code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value.
1179
1180 If your aim is to make GCC use the same conventions for laying out
1181 bit-fields as are used by another compiler, here is how to investigate
1182 what the other compiler does.  Compile and run this program:
1183
1184 @example
1185 struct foo1
1186 @{
1187   char x;
1188   char :0;
1189   char y;
1190 @};
1191
1192 struct foo2
1193 @{
1194   char x;
1195   int :0;
1196   char y;
1197 @};
1198
1199 main ()
1200 @{
1201   printf ("Size of foo1 is %d\n",
1202           sizeof (struct foo1));
1203   printf ("Size of foo2 is %d\n",
1204           sizeof (struct foo2));
1205   exit (0);
1206 @}
1207 @end example
1208
1209 If this prints 2 and 5, then the compiler's behavior is what you would
1210 get from @code{PCC_BITFIELD_TYPE_MATTERS}.
1211
1212 @findex BITFIELD_NBYTES_LIMITED
1213 @item BITFIELD_NBYTES_LIMITED
1214 Like @code{PCC_BITFIELD_TYPE_MATTERS} except that its effect is limited
1215 to aligning a bit-field within the structure.
1216
1217 @findex MEMBER_TYPE_FORCES_BLK
1218 @item MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode})
1219 Return 1 if a structure or array containing @var{field} should be accessed using
1220 @code{BLKMODE}.
1221
1222 If @var{field} is the only field in the structure, @var{mode} is its
1223 mode, otherwise @var{mode} is VOIDmode.  @var{mode} is provided in the
1224 case where structures of one field would require the structure's mode to
1225 retain the field's mode.
1226
1227 Normally, this is not needed.  See the file @file{c4x.h} for an example
1228 of how to use this macro to prevent a structure having a floating point
1229 field from being accessed in an integer mode.
1230
1231 @findex ROUND_TYPE_SIZE
1232 @item ROUND_TYPE_SIZE (@var{type}, @var{computed}, @var{specified})
1233 Define this macro as an expression for the overall size of a type
1234 (given by @var{type} as a tree node) when the size computed in the
1235 usual way is @var{computed} and the alignment is @var{specified}.
1236
1237 The default is to round @var{computed} up to a multiple of @var{specified}.
1238
1239 @findex ROUND_TYPE_SIZE_UNIT
1240 @item ROUND_TYPE_SIZE_UNIT (@var{type}, @var{computed}, @var{specified})
1241 Similar to @code{ROUND_TYPE_SIZE}, but sizes and alignments are
1242 specified in units (bytes).  If you define @code{ROUND_TYPE_SIZE},
1243 you must also define this macro and they must be defined consistently
1244 with each other.
1245
1246 @findex ROUND_TYPE_ALIGN
1247 @item ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
1248 Define this macro as an expression for the alignment of a type (given
1249 by @var{type} as a tree node) if the alignment computed in the usual
1250 way is @var{computed} and the alignment explicitly specified was
1251 @var{specified}.
1252
1253 The default is to use @var{specified} if it is larger; otherwise, use
1254 the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT}
1255
1256 @findex MAX_FIXED_MODE_SIZE
1257 @item MAX_FIXED_MODE_SIZE
1258 An integer expression for the size in bits of the largest integer
1259 machine mode that should actually be used.  All integer machine modes of
1260 this size or smaller can be used for structures and unions with the
1261 appropriate sizes.  If this macro is undefined, @code{GET_MODE_BITSIZE
1262 (DImode)} is assumed.
1263
1264 @findex VECTOR_MODE_SUPPORTED_P
1265 @item VECTOR_MODE_SUPPORTED_P(@var{mode})
1266 Define this macro to be nonzero if the port is prepared to handle insns
1267 involving vector mode @var{mode}.  At the very least, it must have move
1268 patterns for this mode.
1269
1270 @findex STACK_SAVEAREA_MODE
1271 @item STACK_SAVEAREA_MODE (@var{save_level})
1272 If defined, an expression of type @code{enum machine_mode} that
1273 specifies the mode of the save area operand of a
1274 @code{save_stack_@var{level}} named pattern (@pxref{Standard Names}).
1275 @var{save_level} is one of @code{SAVE_BLOCK}, @code{SAVE_FUNCTION}, or
1276 @code{SAVE_NONLOCAL} and selects which of the three named patterns is
1277 having its mode specified.
1278
1279 You need not define this macro if it always returns @code{Pmode}.  You
1280 would most commonly define this macro if the
1281 @code{save_stack_@var{level}} patterns need to support both a 32- and a
1282 64-bit mode.
1283
1284 @findex STACK_SIZE_MODE
1285 @item STACK_SIZE_MODE
1286 If defined, an expression of type @code{enum machine_mode} that
1287 specifies the mode of the size increment operand of an
1288 @code{allocate_stack} named pattern (@pxref{Standard Names}).
1289
1290 You need not define this macro if it always returns @code{word_mode}.
1291 You would most commonly define this macro if the @code{allocate_stack}
1292 pattern needs to support both a 32- and a 64-bit mode.
1293
1294 @findex TARGET_FLOAT_FORMAT
1295 @item TARGET_FLOAT_FORMAT
1296 A code distinguishing the floating point format of the target machine.
1297 There are five defined values:
1298
1299 @table @code
1300 @findex IEEE_FLOAT_FORMAT
1301 @item IEEE_FLOAT_FORMAT
1302 This code indicates IEEE floating point.  It is the default; there is no
1303 need to define this macro when the format is IEEE@.
1304
1305 @findex VAX_FLOAT_FORMAT
1306 @item VAX_FLOAT_FORMAT
1307 This code indicates the ``F float'' (for @code{float}) and ``D float''
1308 or ``G float'' formats (for @code{double}) used on the VAX and PDP-11@.
1309
1310 @findex IBM_FLOAT_FORMAT
1311 @item IBM_FLOAT_FORMAT
1312 This code indicates the format used on the IBM System/370.
1313
1314 @findex C4X_FLOAT_FORMAT
1315 @item C4X_FLOAT_FORMAT
1316 This code indicates the format used on the TMS320C3x/C4x.
1317
1318 @findex UNKNOWN_FLOAT_FORMAT
1319 @item UNKNOWN_FLOAT_FORMAT
1320 This code indicates any other format.
1321 @end table
1322
1323 If any other
1324 formats are actually in use on supported machines, new codes should be
1325 defined for them.
1326
1327 The ordering of the component words of floating point values stored in
1328 memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN}.
1329
1330 @findex MODE_HAS_NANS
1331 @item MODE_HAS_NANS (@var{mode})
1332 When defined, this macro should be true if @var{mode} has a NaN
1333 representation.  The compiler assumes that NaNs are not equal to
1334 anything (including themselves) and that addition, subtraction,
1335 multiplication and division all return NaNs when one operand is
1336 NaN@.
1337
1338 By default, this macro is true if @var{mode} is a floating-point
1339 mode and the target floating-point format is IEEE@.
1340
1341 @findex MODE_HAS_INFINITIES
1342 @item MODE_HAS_INFINITIES (@var{mode})
1343 This macro should be true if @var{mode} can represent infinity.  At
1344 present, the compiler uses this macro to decide whether @samp{x - x}
1345 is always defined.  By default, the macro is true when @var{mode}
1346 is a floating-point mode and the target format is IEEE@.
1347
1348 @findex MODE_HAS_SIGNED_ZEROS
1349 @item MODE_HAS_SIGNED_ZEROS (@var{mode})
1350 True if @var{mode} distinguishes between positive and negative zero.
1351 The rules are expected to follow the IEEE standard:
1352
1353 @itemize @bullet
1354 @item
1355 @samp{x + x} has the same sign as @samp{x}.
1356
1357 @item
1358 If the sum of two values with opposite sign is zero, the result is
1359 positive for all rounding modes expect towards @minus{}infinity, for
1360 which it is negative.
1361
1362 @item
1363 The sign of a product or quotient is negative when exactly one
1364 of the operands is negative.
1365 @end itemize
1366
1367 The default definition is true if @var{mode} is a floating-point
1368 mode and the target format is IEEE@.
1369
1370 @findex MODE_HAS_SIGN_DEPENDENT_ROUNDING
1371 @item MODE_HAS_SIGN_DEPENDENT_ROUNDING (@var{mode})
1372 If defined, this macro should be true for @var{mode} if it has at
1373 least one rounding mode in which @samp{x} and @samp{-x} can be
1374 rounded to numbers of different magnitude.  Two such modes are
1375 towards @minus{}infinity and towards +infinity.
1376
1377 The default definition of this macro is true if @var{mode} is
1378 a floating-point mode and the target format is IEEE@.
1379
1380 @findex ROUND_TOWARDS_ZERO
1381 @item ROUND_TOWARDS_ZERO
1382 If defined, this macro should be true if the prevailing rounding
1383 mode is towards zero.  A true value has the following effects:
1384
1385 @itemize @bullet
1386 @item
1387 @code{MODE_HAS_SIGN_DEPENDENT_ROUNDING} will be false for all modes.
1388
1389 @item
1390 @file{libgcc.a}'s floating-point emulator will round towards zero
1391 rather than towards nearest.
1392
1393 @item
1394 The compiler's floating-point emulator will round towards zero after
1395 doing arithmetic, and when converting from the internal float format to
1396 the target format.
1397 @end itemize
1398
1399 The macro does not affect the parsing of string literals.  When the
1400 primary rounding mode is towards zero, library functions like
1401 @code{strtod} might still round towards nearest, and the compiler's
1402 parser should behave like the target's @code{strtod} where possible.
1403
1404 Not defining this macro is equivalent to returning zero.
1405
1406 @findex LARGEST_EXPONENT_IS_NORMAL
1407 @item LARGEST_EXPONENT_IS_NORMAL (@var{size})
1408 This macro should return true if floats with @var{size}
1409 bits do not have a NaN or infinity representation, but use the largest
1410 exponent for normal numbers instead.
1411
1412 Defining this macro to true for @var{size} causes @code{MODE_HAS_NANS}
1413 and @code{MODE_HAS_INFINITIES} to be false for @var{size}-bit modes.
1414 It also affects the way @file{libgcc.a} and @file{real.c} emulate
1415 floating-point arithmetic.
1416
1417 The default definition of this macro returns false for all sizes.
1418 @end table
1419
1420 @deftypefn {Target Hook} bool TARGET_MS_BITFIELD_LAYOUT_P (tree @var{record_type})
1421 This target hook returns @code{true} if bit-fields in the given
1422 @var{record_type} are to be laid out following the rules of Microsoft
1423 Visual C/C++, namely: (i) a bit-field won't share the same storage
1424 unit with the previous bit-field if their underlying types have
1425 different sizes, and the bit-field will be aligned to the highest
1426 alignment of the underlying types of itself and of the previous
1427 bit-field; (ii) a zero-sized bit-field will affect the alignment of
1428 the whole enclosing structure, even if it is unnamed; except that
1429 (iii) a zero-sized bit-field will be disregarded unless it follows
1430 another bit-field of non-zero size.  If this hook returns @code{true},
1431 other macros that control bit-field layout are ignored.
1432
1433 When a bit-field is inserted into a packed record, the whole size
1434 of the underlying type is used by one or more same-size adjacent
1435 bit-fields (that is, if its long:3, 32 bits is used in the record,
1436 and any additional adjacent long bit-fields are packed into the same
1437 chunk of 32 bits. However, if the size changes, a new field of that
1438 size is allocated). In an unpacked record, this is the same as using
1439 alignment, but not equivalent when packing.
1440
1441 If both MS bit-fields and @samp{__attribute__((packed))} are used,
1442 the latter will take precedence. If @samp{__attribute__((packed))} is
1443 used on a single field when MS bit-fields are in use, it will take
1444 precedence for that field, but the alignment of the rest of the structure
1445 may affect its placement.
1446 @end deftypefn
1447
1448 @node Type Layout
1449 @section Layout of Source Language Data Types
1450
1451 These macros define the sizes and other characteristics of the standard
1452 basic data types used in programs being compiled.  Unlike the macros in
1453 the previous section, these apply to specific features of C and related
1454 languages, rather than to fundamental aspects of storage layout.
1455
1456 @table @code
1457 @findex INT_TYPE_SIZE
1458 @item INT_TYPE_SIZE
1459 A C expression for the size in bits of the type @code{int} on the
1460 target machine.  If you don't define this, the default is one word.
1461
1462 @findex SHORT_TYPE_SIZE
1463 @item SHORT_TYPE_SIZE
1464 A C expression for the size in bits of the type @code{short} on the
1465 target machine.  If you don't define this, the default is half a word.
1466 (If this would be less than one storage unit, it is rounded up to one
1467 unit.)
1468
1469 @findex LONG_TYPE_SIZE
1470 @item LONG_TYPE_SIZE
1471 A C expression for the size in bits of the type @code{long} on the
1472 target machine.  If you don't define this, the default is one word.
1473
1474 @findex ADA_LONG_TYPE_SIZE
1475 @item ADA_LONG_TYPE_SIZE
1476 On some machines, the size used for the Ada equivalent of the type
1477 @code{long} by a native Ada compiler differs from that used by C.  In
1478 that situation, define this macro to be a C expression to be used for
1479 the size of that type.  If you don't define this, the default is the
1480 value of @code{LONG_TYPE_SIZE}.
1481
1482 @findex MAX_LONG_TYPE_SIZE
1483 @item MAX_LONG_TYPE_SIZE
1484 Maximum number for the size in bits of the type @code{long} on the
1485 target machine.  If this is undefined, the default is
1486 @code{LONG_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1487 largest value that @code{LONG_TYPE_SIZE} can have at run-time.  This is
1488 used in @code{cpp}.
1489
1490 @findex LONG_LONG_TYPE_SIZE
1491 @item LONG_LONG_TYPE_SIZE
1492 A C expression for the size in bits of the type @code{long long} on the
1493 target machine.  If you don't define this, the default is two
1494 words.  If you want to support GNU Ada on your machine, the value of this
1495 macro must be at least 64.
1496
1497 @findex CHAR_TYPE_SIZE
1498 @item CHAR_TYPE_SIZE
1499 A C expression for the size in bits of the type @code{char} on the
1500 target machine.  If you don't define this, the default is
1501 @code{BITS_PER_UNIT}.
1502
1503 @findex BOOL_TYPE_SIZE
1504 @item BOOL_TYPE_SIZE
1505 A C expression for the size in bits of the C++ type @code{bool} and
1506 C99 type @code{_Bool} on the target machine.  If you don't define
1507 this, and you probably shouldn't, the default is @code{CHAR_TYPE_SIZE}.
1508
1509 @findex FLOAT_TYPE_SIZE
1510 @item FLOAT_TYPE_SIZE
1511 A C expression for the size in bits of the type @code{float} on the
1512 target machine.  If you don't define this, the default is one word.
1513
1514 @findex DOUBLE_TYPE_SIZE
1515 @item DOUBLE_TYPE_SIZE
1516 A C expression for the size in bits of the type @code{double} on the
1517 target machine.  If you don't define this, the default is two
1518 words.
1519
1520 @findex LONG_DOUBLE_TYPE_SIZE
1521 @item LONG_DOUBLE_TYPE_SIZE
1522 A C expression for the size in bits of the type @code{long double} on
1523 the target machine.  If you don't define this, the default is two
1524 words.
1525
1526 @findex MAX_LONG_DOUBLE_TYPE_SIZE
1527 Maximum number for the size in bits of the type @code{long double} on the
1528 target machine.  If this is undefined, the default is
1529 @code{LONG_DOUBLE_TYPE_SIZE}.  Otherwise, it is the constant value that is
1530 the largest value that @code{LONG_DOUBLE_TYPE_SIZE} can have at run-time.
1531 This is used in @code{cpp}.
1532
1533 @findex INTEL_EXTENDED_IEEE_FORMAT
1534 @item INTEL_EXTENDED_IEEE_FORMAT
1535 Define this macro to be 1 if the target machine uses 80-bit floating-point
1536 values with 128-bit size and alignment.  This is used in @file{real.c}.
1537 This also distinguishes the Intel 80-bit floating-point format from the
1538 Motorola 96-bit floating-point format.
1539
1540 @findex TARGET_FLT_EVAL_METHOD
1541 @item TARGET_FLT_EVAL_METHOD
1542 A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h},
1543 assuming, if applicable, that the floating-point control word is in its
1544 default state.  If you do not define this macro the value of
1545 @code{FLT_EVAL_METHOD} will be zero.
1546
1547 @findex WIDEST_HARDWARE_FP_SIZE
1548 @item WIDEST_HARDWARE_FP_SIZE
1549 A C expression for the size in bits of the widest floating-point format
1550 supported by the hardware.  If you define this macro, you must specify a
1551 value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}.
1552 If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE}
1553 is the default.
1554
1555 @findex DEFAULT_SIGNED_CHAR
1556 @item DEFAULT_SIGNED_CHAR
1557 An expression whose value is 1 or 0, according to whether the type
1558 @code{char} should be signed or unsigned by default.  The user can
1559 always override this default with the options @option{-fsigned-char}
1560 and @option{-funsigned-char}.
1561
1562 @findex DEFAULT_SHORT_ENUMS
1563 @item DEFAULT_SHORT_ENUMS
1564 A C expression to determine whether to give an @code{enum} type
1565 only as many bytes as it takes to represent the range of possible values
1566 of that type.  A nonzero value means to do that; a zero value means all
1567 @code{enum} types should be allocated like @code{int}.
1568
1569 If you don't define the macro, the default is 0.
1570
1571 @findex SIZE_TYPE
1572 @item SIZE_TYPE
1573 A C expression for a string describing the name of the data type to use
1574 for size values.  The typedef name @code{size_t} is defined using the
1575 contents of the string.
1576
1577 The string can contain more than one keyword.  If so, separate them with
1578 spaces, and write first any length keyword, then @code{unsigned} if
1579 appropriate, and finally @code{int}.  The string must exactly match one
1580 of the data type names defined in the function
1581 @code{init_decl_processing} in the file @file{c-decl.c}.  You may not
1582 omit @code{int} or change the order---that would cause the compiler to
1583 crash on startup.
1584
1585 If you don't define this macro, the default is @code{"long unsigned
1586 int"}.
1587
1588 @findex PTRDIFF_TYPE
1589 @item PTRDIFF_TYPE
1590 A C expression for a string describing the name of the data type to use
1591 for the result of subtracting two pointers.  The typedef name
1592 @code{ptrdiff_t} is defined using the contents of the string.  See
1593 @code{SIZE_TYPE} above for more information.
1594
1595 If you don't define this macro, the default is @code{"long int"}.
1596
1597 @findex WCHAR_TYPE
1598 @item WCHAR_TYPE
1599 A C expression for a string describing the name of the data type to use
1600 for wide characters.  The typedef name @code{wchar_t} is defined using
1601 the contents of the string.  See @code{SIZE_TYPE} above for more
1602 information.
1603
1604 If you don't define this macro, the default is @code{"int"}.
1605
1606 @findex WCHAR_TYPE_SIZE
1607 @item WCHAR_TYPE_SIZE
1608 A C expression for the size in bits of the data type for wide
1609 characters.  This is used in @code{cpp}, which cannot make use of
1610 @code{WCHAR_TYPE}.
1611
1612 @findex MAX_WCHAR_TYPE_SIZE
1613 @item MAX_WCHAR_TYPE_SIZE
1614 Maximum number for the size in bits of the data type for wide
1615 characters.  If this is undefined, the default is
1616 @code{WCHAR_TYPE_SIZE}.  Otherwise, it is the constant value that is the
1617 largest value that @code{WCHAR_TYPE_SIZE} can have at run-time.  This is
1618 used in @code{cpp}.
1619
1620 @findex GCOV_TYPE_SIZE
1621 @item GCOV_TYPE_SIZE
1622 A C expression for the size in bits of the type used for gcov counters on the
1623 target machine.  If you don't define this, the default is one
1624 @code{LONG_TYPE_SIZE} in case it is greater or equal to 64-bit and
1625 @code{LONG_LONG_TYPE_SIZE} otherwise.  You may want to re-define the type to
1626 ensure atomicity for counters in multithreaded programs.
1627
1628 @findex WINT_TYPE
1629 @item WINT_TYPE
1630 A C expression for a string describing the name of the data type to
1631 use for wide characters passed to @code{printf} and returned from
1632 @code{getwc}.  The typedef name @code{wint_t} is defined using the
1633 contents of the string.  See @code{SIZE_TYPE} above for more
1634 information.
1635
1636 If you don't define this macro, the default is @code{"unsigned int"}.
1637
1638 @findex INTMAX_TYPE
1639 @item INTMAX_TYPE
1640 A C expression for a string describing the name of the data type that
1641 can represent any value of any standard or extended signed integer type.
1642 The typedef name @code{intmax_t} is defined using the contents of the
1643 string.  See @code{SIZE_TYPE} above for more information.
1644
1645 If you don't define this macro, the default is the first of
1646 @code{"int"}, @code{"long int"}, or @code{"long long int"} that has as
1647 much precision as @code{long long int}.
1648
1649 @findex UINTMAX_TYPE
1650 @item UINTMAX_TYPE
1651 A C expression for a string describing the name of the data type that
1652 can represent any value of any standard or extended unsigned integer
1653 type.  The typedef name @code{uintmax_t} is defined using the contents
1654 of the string.  See @code{SIZE_TYPE} above for more information.
1655
1656 If you don't define this macro, the default is the first of
1657 @code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long
1658 unsigned int"} that has as much precision as @code{long long unsigned
1659 int}.
1660
1661 @findex TARGET_PTRMEMFUNC_VBIT_LOCATION
1662 @item TARGET_PTRMEMFUNC_VBIT_LOCATION
1663 The C++ compiler represents a pointer-to-member-function with a struct
1664 that looks like:
1665
1666 @example
1667   struct @{
1668     union @{
1669       void (*fn)();
1670       ptrdiff_t vtable_index;
1671     @};
1672     ptrdiff_t delta;
1673   @};
1674 @end example
1675
1676 @noindent
1677 The C++ compiler must use one bit to indicate whether the function that
1678 will be called through a pointer-to-member-function is virtual.
1679 Normally, we assume that the low-order bit of a function pointer must
1680 always be zero.  Then, by ensuring that the vtable_index is odd, we can
1681 distinguish which variant of the union is in use.  But, on some
1682 platforms function pointers can be odd, and so this doesn't work.  In
1683 that case, we use the low-order bit of the @code{delta} field, and shift
1684 the remainder of the @code{delta} field to the left.
1685
1686 GCC will automatically make the right selection about where to store
1687 this bit using the @code{FUNCTION_BOUNDARY} setting for your platform.
1688 However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY}
1689 set such that functions always start at even addresses, but the lowest
1690 bit of pointers to functions indicate whether the function at that
1691 address is in ARM or Thumb mode.  If this is the case of your
1692 architecture, you should define this macro to
1693 @code{ptrmemfunc_vbit_in_delta}.
1694
1695 In general, you should not have to define this macro.  On architectures
1696 in which function addresses are always even, according to
1697 @code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to
1698 @code{ptrmemfunc_vbit_in_pfn}.
1699
1700 @findex TARGET_VTABLE_USES_DESCRIPTORS
1701 @item TARGET_VTABLE_USES_DESCRIPTORS
1702 Normally, the C++ compiler uses function pointers in vtables.  This
1703 macro allows the target to change to use ``function descriptors''
1704 instead.  Function descriptors are found on targets for whom a
1705 function pointer is actually a small data structure.  Normally the
1706 data structure consists of the actual code address plus a data
1707 pointer to which the function's data is relative.
1708
1709 If vtables are used, the value of this macro should be the number
1710 of words that the function descriptor occupies.
1711
1712 @findex TARGET_VTABLE_ENTRY_ALIGN
1713 @item TARGET_VTABLE_ENTRY_ALIGN
1714 By default, the vtable entries are void pointers, the so the alignment
1715 is the same as pointer alignment.  The value of this macro specifies
1716 the alignment of the vtable entry in bits.  It should be defined only
1717 when special alignment is necessary. */
1718
1719 @findex TARGET_VTABLE_DATA_ENTRY_DISTANCE
1720 @item TARGET_VTABLE_DATA_ENTRY_DISTANCE
1721 There are a few non-descriptor entries in the vtable at offsets below
1722 zero.  If these entries must be padded (say, to preserve the alignment
1723 specified by @code{TARGET_VTABLE_ENTRY_ALIGN}), set this to the number
1724 of words in each data entry.
1725 @end table
1726
1727 @node Escape Sequences
1728 @section Target Character Escape Sequences
1729 @cindex escape sequences
1730
1731 By default, GCC assumes that the C character escape sequences take on
1732 their ASCII values for the target.  If this is not correct, you must
1733 explicitly define all of the macros below.
1734
1735 @table @code
1736 @findex TARGET_BELL
1737 @item TARGET_BELL
1738 A C constant expression for the integer value for escape sequence
1739 @samp{\a}.
1740
1741 @findex TARGET_ESC
1742 @item TARGET_ESC
1743 A C constant expression for the integer value of the target escape
1744 character.  As an extension, GCC evaluates the escape sequences
1745 @samp{\e} and @samp{\E} to this.
1746
1747 @findex TARGET_TAB
1748 @findex TARGET_BS
1749 @findex TARGET_NEWLINE
1750 @item TARGET_BS
1751 @itemx TARGET_TAB
1752 @itemx TARGET_NEWLINE
1753 C constant expressions for the integer values for escape sequences
1754 @samp{\b}, @samp{\t} and @samp{\n}.
1755
1756 @findex TARGET_VT
1757 @findex TARGET_FF
1758 @findex TARGET_CR
1759 @item TARGET_VT
1760 @itemx TARGET_FF
1761 @itemx TARGET_CR
1762 C constant expressions for the integer values for escape sequences
1763 @samp{\v}, @samp{\f} and @samp{\r}.
1764 @end table
1765
1766 @node Registers
1767 @section Register Usage
1768 @cindex register usage
1769
1770 This section explains how to describe what registers the target machine
1771 has, and how (in general) they can be used.
1772
1773 The description of which registers a specific instruction can use is
1774 done with register classes; see @ref{Register Classes}.  For information
1775 on using registers to access a stack frame, see @ref{Frame Registers}.
1776 For passing values in registers, see @ref{Register Arguments}.
1777 For returning values in registers, see @ref{Scalar Return}.
1778
1779 @menu
1780 * Register Basics::             Number and kinds of registers.
1781 * Allocation Order::            Order in which registers are allocated.
1782 * Values in Registers::         What kinds of values each reg can hold.
1783 * Leaf Functions::              Renumbering registers for leaf functions.
1784 * Stack Registers::             Handling a register stack such as 80387.
1785 @end menu
1786
1787 @node Register Basics
1788 @subsection Basic Characteristics of Registers
1789
1790 @c prevent bad page break with this line
1791 Registers have various characteristics.
1792
1793 @table @code
1794 @findex FIRST_PSEUDO_REGISTER
1795 @item FIRST_PSEUDO_REGISTER
1796 Number of hardware registers known to the compiler.  They receive
1797 numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
1798 pseudo register's number really is assigned the number
1799 @code{FIRST_PSEUDO_REGISTER}.
1800
1801 @item FIXED_REGISTERS
1802 @findex FIXED_REGISTERS
1803 @cindex fixed register
1804 An initializer that says which registers are used for fixed purposes
1805 all throughout the compiled code and are therefore not available for
1806 general allocation.  These would include the stack pointer, the frame
1807 pointer (except on machines where that can be used as a general
1808 register when no frame pointer is needed), the program counter on
1809 machines where that is considered one of the addressable registers,
1810 and any other numbered register with a standard use.
1811
1812 This information is expressed as a sequence of numbers, separated by
1813 commas and surrounded by braces.  The @var{n}th number is 1 if
1814 register @var{n} is fixed, 0 otherwise.
1815
1816 The table initialized from this macro, and the table initialized by
1817 the following one, may be overridden at run time either automatically,
1818 by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
1819 the user with the command options @option{-ffixed-@var{reg}},
1820 @option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}.
1821
1822 @findex CALL_USED_REGISTERS
1823 @item CALL_USED_REGISTERS
1824 @cindex call-used register
1825 @cindex call-clobbered register
1826 @cindex call-saved register
1827 Like @code{FIXED_REGISTERS} but has 1 for each register that is
1828 clobbered (in general) by function calls as well as for fixed
1829 registers.  This macro therefore identifies the registers that are not
1830 available for general allocation of values that must live across
1831 function calls.
1832
1833 If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler
1834 automatically saves it on function entry and restores it on function
1835 exit, if the register is used within the function.
1836
1837 @findex CALL_REALLY_USED_REGISTERS
1838 @item CALL_REALLY_USED_REGISTERS
1839 @cindex call-used register
1840 @cindex call-clobbered register
1841 @cindex call-saved register
1842 Like @code{CALL_USED_REGISTERS} except this macro doesn't require
1843 that the entire set of @code{FIXED_REGISTERS} be included.
1844 (@code{CALL_USED_REGISTERS} must be a superset of @code{FIXED_REGISTERS}).
1845 This macro is optional.  If not specified, it defaults to the value
1846 of @code{CALL_USED_REGISTERS}.
1847
1848 @findex HARD_REGNO_CALL_PART_CLOBBERED
1849 @item HARD_REGNO_CALL_PART_CLOBBERED (@var{regno}, @var{mode})
1850 @cindex call-used register
1851 @cindex call-clobbered register
1852 @cindex call-saved register
1853 A C expression that is nonzero if it is not permissible to store a
1854 value of mode @var{mode} in hard register number @var{regno} across a
1855 call without some part of it being clobbered.  For most machines this
1856 macro need not be defined.  It is only required for machines that do not
1857 preserve the entire contents of a register across a call.
1858
1859 @findex CONDITIONAL_REGISTER_USAGE
1860 @findex fixed_regs
1861 @findex call_used_regs
1862 @item CONDITIONAL_REGISTER_USAGE
1863 Zero or more C statements that may conditionally modify five variables
1864 @code{fixed_regs}, @code{call_used_regs}, @code{global_regs},
1865 @code{reg_names}, and @code{reg_class_contents}, to take into account
1866 any dependence of these register sets on target flags.  The first three
1867 of these are of type @code{char []} (interpreted as Boolean vectors).
1868 @code{global_regs} is a @code{const char *[]}, and
1869 @code{reg_class_contents} is a @code{HARD_REG_SET}.  Before the macro is
1870 called, @code{fixed_regs}, @code{call_used_regs},
1871 @code{reg_class_contents}, and @code{reg_names} have been initialized
1872 from @code{FIXED_REGISTERS}, @code{CALL_USED_REGISTERS},
1873 @code{REG_CLASS_CONTENTS}, and @code{REGISTER_NAMES}, respectively.
1874 @code{global_regs} has been cleared, and any @option{-ffixed-@var{reg}},
1875 @option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}
1876 command options have been applied.
1877
1878 You need not define this macro if it has no work to do.
1879
1880 @cindex disabling certain registers
1881 @cindex controlling register usage
1882 If the usage of an entire class of registers depends on the target
1883 flags, you may indicate this to GCC by using this macro to modify
1884 @code{fixed_regs} and @code{call_used_regs} to 1 for each of the
1885 registers in the classes which should not be used by GCC@.  Also define
1886 the macro @code{REG_CLASS_FROM_LETTER} to return @code{NO_REGS} if it
1887 is called with a letter for a class that shouldn't be used.
1888
1889 (However, if this class is not included in @code{GENERAL_REGS} and all
1890 of the insn patterns whose constraints permit this class are
1891 controlled by target switches, then GCC will automatically avoid using
1892 these registers when the target switches are opposed to them.)
1893
1894 @findex NON_SAVING_SETJMP
1895 @item NON_SAVING_SETJMP
1896 If this macro is defined and has a nonzero value, it means that
1897 @code{setjmp} and related functions fail to save the registers, or that
1898 @code{longjmp} fails to restore them.  To compensate, the compiler
1899 avoids putting variables in registers in functions that use
1900 @code{setjmp}.
1901
1902 @findex INCOMING_REGNO
1903 @item INCOMING_REGNO (@var{out})
1904 Define this macro if the target machine has register windows.  This C
1905 expression returns the register number as seen by the called function
1906 corresponding to the register number @var{out} as seen by the calling
1907 function.  Return @var{out} if register number @var{out} is not an
1908 outbound register.
1909
1910 @findex OUTGOING_REGNO
1911 @item OUTGOING_REGNO (@var{in})
1912 Define this macro if the target machine has register windows.  This C
1913 expression returns the register number as seen by the calling function
1914 corresponding to the register number @var{in} as seen by the called
1915 function.  Return @var{in} if register number @var{in} is not an inbound
1916 register.
1917
1918 @findex LOCAL_REGNO
1919 @item LOCAL_REGNO (@var{regno})
1920 Define this macro if the target machine has register windows.  This C
1921 expression returns true if the register is call-saved but is in the
1922 register window.  Unlike most call-saved registers, such registers
1923 need not be explicitly restored on function exit or during non-local
1924 gotos.
1925
1926 @ignore
1927 @findex PC_REGNUM
1928 @item PC_REGNUM
1929 If the program counter has a register number, define this as that
1930 register number.  Otherwise, do not define it.
1931 @end ignore
1932 @end table
1933
1934 @node Allocation Order
1935 @subsection Order of Allocation of Registers
1936 @cindex order of register allocation
1937 @cindex register allocation order
1938
1939 @c prevent bad page break with this line
1940 Registers are allocated in order.
1941
1942 @table @code
1943 @findex REG_ALLOC_ORDER
1944 @item REG_ALLOC_ORDER
1945 If defined, an initializer for a vector of integers, containing the
1946 numbers of hard registers in the order in which GCC should prefer
1947 to use them (from most preferred to least).
1948
1949 If this macro is not defined, registers are used lowest numbered first
1950 (all else being equal).
1951
1952 One use of this macro is on machines where the highest numbered
1953 registers must always be saved and the save-multiple-registers
1954 instruction supports only sequences of consecutive registers.  On such
1955 machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists
1956 the highest numbered allocable register first.
1957
1958 @findex ORDER_REGS_FOR_LOCAL_ALLOC
1959 @item ORDER_REGS_FOR_LOCAL_ALLOC
1960 A C statement (sans semicolon) to choose the order in which to allocate
1961 hard registers for pseudo-registers local to a basic block.
1962
1963 Store the desired register order in the array @code{reg_alloc_order}.
1964 Element 0 should be the register to allocate first; element 1, the next
1965 register; and so on.
1966
1967 The macro body should not assume anything about the contents of
1968 @code{reg_alloc_order} before execution of the macro.
1969
1970 On most machines, it is not necessary to define this macro.
1971 @end table
1972
1973 @node Values in Registers
1974 @subsection How Values Fit in Registers
1975
1976 This section discusses the macros that describe which kinds of values
1977 (specifically, which machine modes) each register can hold, and how many
1978 consecutive registers are needed for a given mode.
1979
1980 @table @code
1981 @findex HARD_REGNO_NREGS
1982 @item HARD_REGNO_NREGS (@var{regno}, @var{mode})
1983 A C expression for the number of consecutive hard registers, starting
1984 at register number @var{regno}, required to hold a value of mode
1985 @var{mode}.
1986
1987 On a machine where all registers are exactly one word, a suitable
1988 definition of this macro is
1989
1990 @smallexample
1991 #define HARD_REGNO_NREGS(REGNO, MODE)            \
1992    ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
1993     / UNITS_PER_WORD)
1994 @end smallexample
1995
1996 @findex HARD_REGNO_MODE_OK
1997 @item HARD_REGNO_MODE_OK (@var{regno}, @var{mode})
1998 A C expression that is nonzero if it is permissible to store a value
1999 of mode @var{mode} in hard register number @var{regno} (or in several
2000 registers starting with that one).  For a machine where all registers
2001 are equivalent, a suitable definition is
2002
2003 @smallexample
2004 #define HARD_REGNO_MODE_OK(REGNO, MODE) 1
2005 @end smallexample
2006
2007 You need not include code to check for the numbers of fixed registers,
2008 because the allocation mechanism considers them to be always occupied.
2009
2010 @cindex register pairs
2011 On some machines, double-precision values must be kept in even/odd
2012 register pairs.  You can implement that by defining this macro to reject
2013 odd register numbers for such modes.
2014
2015 The minimum requirement for a mode to be OK in a register is that the
2016 @samp{mov@var{mode}} instruction pattern support moves between the
2017 register and other hard register in the same class and that moving a
2018 value into the register and back out not alter it.
2019
2020 Since the same instruction used to move @code{word_mode} will work for
2021 all narrower integer modes, it is not necessary on any machine for
2022 @code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided
2023 you define patterns @samp{movhi}, etc., to take advantage of this.  This
2024 is useful because of the interaction between @code{HARD_REGNO_MODE_OK}
2025 and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes
2026 to be tieable.
2027
2028 Many machines have special registers for floating point arithmetic.
2029 Often people assume that floating point machine modes are allowed only
2030 in floating point registers.  This is not true.  Any registers that
2031 can hold integers can safely @emph{hold} a floating point machine
2032 mode, whether or not floating arithmetic can be done on it in those
2033 registers.  Integer move instructions can be used to move the values.
2034
2035 On some machines, though, the converse is true: fixed-point machine
2036 modes may not go in floating registers.  This is true if the floating
2037 registers normalize any value stored in them, because storing a
2038 non-floating value there would garble it.  In this case,
2039 @code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in
2040 floating registers.  But if the floating registers do not automatically
2041 normalize, if you can store any bit pattern in one and retrieve it
2042 unchanged without a trap, then any machine mode may go in a floating
2043 register, so you can define this macro to say so.
2044
2045 The primary significance of special floating registers is rather that
2046 they are the registers acceptable in floating point arithmetic
2047 instructions.  However, this is of no concern to
2048 @code{HARD_REGNO_MODE_OK}.  You handle it by writing the proper
2049 constraints for those instructions.
2050
2051 On some machines, the floating registers are especially slow to access,
2052 so that it is better to store a value in a stack frame than in such a
2053 register if floating point arithmetic is not being done.  As long as the
2054 floating registers are not in class @code{GENERAL_REGS}, they will not
2055 be used unless some pattern's constraint asks for one.
2056
2057 @findex MODES_TIEABLE_P
2058 @item MODES_TIEABLE_P (@var{mode1}, @var{mode2})
2059 A C expression that is nonzero if a value of mode
2060 @var{mode1} is accessible in mode @var{mode2} without copying.
2061
2062 If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and
2063 @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are always the same for
2064 any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1}, @var{mode2})}
2065 should be nonzero.  If they differ for any @var{r}, you should define
2066 this macro to return zero unless some other mechanism ensures the
2067 accessibility of the value in a narrower mode.
2068
2069 You should define this macro to return nonzero in as many cases as
2070 possible since doing so will allow GCC to perform better register
2071 allocation.
2072
2073 @findex AVOID_CCMODE_COPIES
2074 @item AVOID_CCMODE_COPIES
2075 Define this macro if the compiler should avoid copies to/from @code{CCmode}
2076 registers.  You should only define this macro if support for copying to/from
2077 @code{CCmode} is incomplete.
2078 @end table
2079
2080 @node Leaf Functions
2081 @subsection Handling Leaf Functions
2082
2083 @cindex leaf functions
2084 @cindex functions, leaf
2085 On some machines, a leaf function (i.e., one which makes no calls) can run
2086 more efficiently if it does not make its own register window.  Often this
2087 means it is required to receive its arguments in the registers where they
2088 are passed by the caller, instead of the registers where they would
2089 normally arrive.
2090
2091 The special treatment for leaf functions generally applies only when
2092 other conditions are met; for example, often they may use only those
2093 registers for its own variables and temporaries.  We use the term ``leaf
2094 function'' to mean a function that is suitable for this special
2095 handling, so that functions with no calls are not necessarily ``leaf
2096 functions''.
2097
2098 GCC assigns register numbers before it knows whether the function is
2099 suitable for leaf function treatment.  So it needs to renumber the
2100 registers in order to output a leaf function.  The following macros
2101 accomplish this.
2102
2103 @table @code
2104 @findex LEAF_REGISTERS
2105 @item LEAF_REGISTERS
2106 Name of a char vector, indexed by hard register number, which
2107 contains 1 for a register that is allowable in a candidate for leaf
2108 function treatment.
2109
2110 If leaf function treatment involves renumbering the registers, then the
2111 registers marked here should be the ones before renumbering---those that
2112 GCC would ordinarily allocate.  The registers which will actually be
2113 used in the assembler code, after renumbering, should not be marked with 1
2114 in this vector.
2115
2116 Define this macro only if the target machine offers a way to optimize
2117 the treatment of leaf functions.
2118
2119 @findex LEAF_REG_REMAP
2120 @item LEAF_REG_REMAP (@var{regno})
2121 A C expression whose value is the register number to which @var{regno}
2122 should be renumbered, when a function is treated as a leaf function.
2123
2124 If @var{regno} is a register number which should not appear in a leaf
2125 function before renumbering, then the expression should yield @minus{}1, which
2126 will cause the compiler to abort.
2127
2128 Define this macro only if the target machine offers a way to optimize the
2129 treatment of leaf functions, and registers need to be renumbered to do
2130 this.
2131 @end table
2132
2133 @findex current_function_is_leaf
2134 @findex current_function_uses_only_leaf_regs
2135 @code{TARGET_ASM_FUNCTION_PROLOGUE} and
2136 @code{TARGET_ASM_FUNCTION_EPILOGUE} must usually treat leaf functions
2137 specially.  They can test the C variable @code{current_function_is_leaf}
2138 which is nonzero for leaf functions.  @code{current_function_is_leaf} is
2139 set prior to local register allocation and is valid for the remaining
2140 compiler passes.  They can also test the C variable
2141 @code{current_function_uses_only_leaf_regs} which is nonzero for leaf
2142 functions which only use leaf registers.
2143 @code{current_function_uses_only_leaf_regs} is valid after reload and is
2144 only useful if @code{LEAF_REGISTERS} is defined.
2145 @c changed this to fix overfull.  ALSO:  why the "it" at the beginning
2146 @c of the next paragraph?!  --mew 2feb93
2147
2148 @node Stack Registers
2149 @subsection Registers That Form a Stack
2150
2151 There are special features to handle computers where some of the
2152 ``registers'' form a stack, as in the 80387 coprocessor for the 80386.
2153 Stack registers are normally written by pushing onto the stack, and are
2154 numbered relative to the top of the stack.
2155
2156 Currently, GCC can only handle one group of stack-like registers, and
2157 they must be consecutively numbered.
2158
2159 @table @code
2160 @findex STACK_REGS
2161 @item STACK_REGS
2162 Define this if the machine has any stack-like registers.
2163
2164 @findex FIRST_STACK_REG
2165 @item FIRST_STACK_REG
2166 The number of the first stack-like register.  This one is the top
2167 of the stack.
2168
2169 @findex LAST_STACK_REG
2170 @item LAST_STACK_REG
2171 The number of the last stack-like register.  This one is the bottom of
2172 the stack.
2173 @end table
2174
2175 @node Register Classes
2176 @section Register Classes
2177 @cindex register class definitions
2178 @cindex class definitions, register
2179
2180 On many machines, the numbered registers are not all equivalent.
2181 For example, certain registers may not be allowed for indexed addressing;
2182 certain registers may not be allowed in some instructions.  These machine
2183 restrictions are described to the compiler using @dfn{register classes}.
2184
2185 You define a number of register classes, giving each one a name and saying
2186 which of the registers belong to it.  Then you can specify register classes
2187 that are allowed as operands to particular instruction patterns.
2188
2189 @findex ALL_REGS
2190 @findex NO_REGS
2191 In general, each register will belong to several classes.  In fact, one
2192 class must be named @code{ALL_REGS} and contain all the registers.  Another
2193 class must be named @code{NO_REGS} and contain no registers.  Often the
2194 union of two classes will be another class; however, this is not required.
2195
2196 @findex GENERAL_REGS
2197 One of the classes must be named @code{GENERAL_REGS}.  There is nothing
2198 terribly special about the name, but the operand constraint letters
2199 @samp{r} and @samp{g} specify this class.  If @code{GENERAL_REGS} is
2200 the same as @code{ALL_REGS}, just define it as a macro which expands
2201 to @code{ALL_REGS}.
2202
2203 Order the classes so that if class @var{x} is contained in class @var{y}
2204 then @var{x} has a lower class number than @var{y}.
2205
2206 The way classes other than @code{GENERAL_REGS} are specified in operand
2207 constraints is through machine-dependent operand constraint letters.
2208 You can define such letters to correspond to various classes, then use
2209 them in operand constraints.
2210
2211 You should define a class for the union of two classes whenever some
2212 instruction allows both classes.  For example, if an instruction allows
2213 either a floating point (coprocessor) register or a general register for a
2214 certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS}
2215 which includes both of them.  Otherwise you will get suboptimal code.
2216
2217 You must also specify certain redundant information about the register
2218 classes: for each class, which classes contain it and which ones are
2219 contained in it; for each pair of classes, the largest class contained
2220 in their union.
2221
2222 When a value occupying several consecutive registers is expected in a
2223 certain class, all the registers used must belong to that class.
2224 Therefore, register classes cannot be used to enforce a requirement for
2225 a register pair to start with an even-numbered register.  The way to
2226 specify this requirement is with @code{HARD_REGNO_MODE_OK}.
2227
2228 Register classes used for input-operands of bitwise-and or shift
2229 instructions have a special requirement: each such class must have, for
2230 each fixed-point machine mode, a subclass whose registers can transfer that
2231 mode to or from memory.  For example, on some machines, the operations for
2232 single-byte values (@code{QImode}) are limited to certain registers.  When
2233 this is so, each register class that is used in a bitwise-and or shift
2234 instruction must have a subclass consisting of registers from which
2235 single-byte values can be loaded or stored.  This is so that
2236 @code{PREFERRED_RELOAD_CLASS} can always have a possible value to return.
2237
2238 @table @code
2239 @findex enum reg_class
2240 @item enum reg_class
2241 An enumeral type that must be defined with all the register class names
2242 as enumeral values.  @code{NO_REGS} must be first.  @code{ALL_REGS}
2243 must be the last register class, followed by one more enumeral value,
2244 @code{LIM_REG_CLASSES}, which is not a register class but rather
2245 tells how many classes there are.
2246
2247 Each register class has a number, which is the value of casting
2248 the class name to type @code{int}.  The number serves as an index
2249 in many of the tables described below.
2250
2251 @findex N_REG_CLASSES
2252 @item N_REG_CLASSES
2253 The number of distinct register classes, defined as follows:
2254
2255 @example
2256 #define N_REG_CLASSES (int) LIM_REG_CLASSES
2257 @end example
2258
2259 @findex REG_CLASS_NAMES
2260 @item REG_CLASS_NAMES
2261 An initializer containing the names of the register classes as C string
2262 constants.  These names are used in writing some of the debugging dumps.
2263
2264 @findex REG_CLASS_CONTENTS
2265 @item REG_CLASS_CONTENTS
2266 An initializer containing the contents of the register classes, as integers
2267 which are bit masks.  The @var{n}th integer specifies the contents of class
2268 @var{n}.  The way the integer @var{mask} is interpreted is that
2269 register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1.
2270
2271 When the machine has more than 32 registers, an integer does not suffice.
2272 Then the integers are replaced by sub-initializers, braced groupings containing
2273 several integers.  Each sub-initializer must be suitable as an initializer
2274 for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}.
2275 In this situation, the first integer in each sub-initializer corresponds to
2276 registers 0 through 31, the second integer to registers 32 through 63, and
2277 so on.
2278
2279 @findex REGNO_REG_CLASS
2280 @item REGNO_REG_CLASS (@var{regno})
2281 A C expression whose value is a register class containing hard register
2282 @var{regno}.  In general there is more than one such class; choose a class
2283 which is @dfn{minimal}, meaning that no smaller class also contains the
2284 register.
2285
2286 @findex BASE_REG_CLASS
2287 @item BASE_REG_CLASS
2288 A macro whose definition is the name of the class to which a valid
2289 base register must belong.  A base register is one used in an address
2290 which is the register value plus a displacement.
2291
2292 @findex MODE_BASE_REG_CLASS
2293 @item MODE_BASE_REG_CLASS (@var{mode})
2294 This is a variation of the @code{BASE_REG_CLASS} macro which allows
2295 the selection of a base register in a mode depenedent manner.  If
2296 @var{mode} is VOIDmode then it should return the same value as
2297 @code{BASE_REG_CLASS}.
2298
2299 @findex INDEX_REG_CLASS
2300 @item INDEX_REG_CLASS
2301 A macro whose definition is the name of the class to which a valid
2302 index register must belong.  An index register is one used in an
2303 address where its value is either multiplied by a scale factor or
2304 added to another register (as well as added to a displacement).
2305
2306 @findex REG_CLASS_FROM_LETTER
2307 @item REG_CLASS_FROM_LETTER (@var{char})
2308 A C expression which defines the machine-dependent operand constraint
2309 letters for register classes.  If @var{char} is such a letter, the
2310 value should be the register class corresponding to it.  Otherwise,
2311 the value should be @code{NO_REGS}.  The register letter @samp{r},
2312 corresponding to class @code{GENERAL_REGS}, will not be passed
2313 to this macro; you do not need to handle it.
2314
2315 @findex REGNO_OK_FOR_BASE_P
2316 @item REGNO_OK_FOR_BASE_P (@var{num})
2317 A C expression which is nonzero if register number @var{num} is
2318 suitable for use as a base register in operand addresses.  It may be
2319 either a suitable hard register or a pseudo register that has been
2320 allocated such a hard register.
2321
2322 @findex REGNO_MODE_OK_FOR_BASE_P
2323 @item REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
2324 A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
2325 that expression may examine the mode of the memory reference in
2326 @var{mode}.  You should define this macro if the mode of the memory
2327 reference affects whether a register may be used as a base register.  If
2328 you define this macro, the compiler will use it instead of
2329 @code{REGNO_OK_FOR_BASE_P}.
2330
2331 @findex REGNO_OK_FOR_INDEX_P
2332 @item REGNO_OK_FOR_INDEX_P (@var{num})
2333 A C expression which is nonzero if register number @var{num} is
2334 suitable for use as an index register in operand addresses.  It may be
2335 either a suitable hard register or a pseudo register that has been
2336 allocated such a hard register.
2337
2338 The difference between an index register and a base register is that
2339 the index register may be scaled.  If an address involves the sum of
2340 two registers, neither one of them scaled, then either one may be
2341 labeled the ``base'' and the other the ``index''; but whichever
2342 labeling is used must fit the machine's constraints of which registers
2343 may serve in each capacity.  The compiler will try both labelings,
2344 looking for one that is valid, and will reload one or both registers
2345 only if neither labeling works.
2346
2347 @findex PREFERRED_RELOAD_CLASS
2348 @item PREFERRED_RELOAD_CLASS (@var{x}, @var{class})
2349 A C expression that places additional restrictions on the register class
2350 to use when it is necessary to copy value @var{x} into a register in class
2351 @var{class}.  The value is a register class; perhaps @var{class}, or perhaps
2352 another, smaller class.  On many machines, the following definition is
2353 safe:
2354
2355 @example
2356 #define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
2357 @end example
2358
2359 Sometimes returning a more restrictive class makes better code.  For
2360 example, on the 68000, when @var{x} is an integer constant that is in range
2361 for a @samp{moveq} instruction, the value of this macro is always
2362 @code{DATA_REGS} as long as @var{class} includes the data registers.
2363 Requiring a data register guarantees that a @samp{moveq} will be used.
2364
2365 If @var{x} is a @code{const_double}, by returning @code{NO_REGS}
2366 you can force @var{x} into a memory constant.  This is useful on
2367 certain machines where immediate floating values cannot be loaded into
2368 certain kinds of registers.
2369
2370 @findex PREFERRED_OUTPUT_RELOAD_CLASS
2371 @item PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class})
2372 Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of
2373 input reloads.  If you don't define this macro, the default is to use
2374 @var{class}, unchanged.
2375
2376 @findex LIMIT_RELOAD_CLASS
2377 @item LIMIT_RELOAD_CLASS (@var{mode}, @var{class})
2378 A C expression that places additional restrictions on the register class
2379 to use when it is necessary to be able to hold a value of mode
2380 @var{mode} in a reload register for which class @var{class} would
2381 ordinarily be used.
2382
2383 Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when
2384 there are certain modes that simply can't go in certain reload classes.
2385
2386 The value is a register class; perhaps @var{class}, or perhaps another,
2387 smaller class.
2388
2389 Don't define this macro unless the target machine has limitations which
2390 require the macro to do something nontrivial.
2391
2392 @findex SECONDARY_RELOAD_CLASS
2393 @findex SECONDARY_INPUT_RELOAD_CLASS
2394 @findex SECONDARY_OUTPUT_RELOAD_CLASS
2395 @item SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2396 @itemx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2397 @itemx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2398 Many machines have some registers that cannot be copied directly to or
2399 from memory or even from other types of registers.  An example is the
2400 @samp{MQ} register, which on most machines, can only be copied to or
2401 from general registers, but not memory.  Some machines allow copying all
2402 registers to and from memory, but require a scratch register for stores
2403 to some memory locations (e.g., those with symbolic address on the RT,
2404 and those with certain symbolic address on the SPARC when compiling
2405 PIC)@.  In some cases, both an intermediate and a scratch register are
2406 required.
2407
2408 You should define these macros to indicate to the reload phase that it may
2409 need to allocate at least one register for a reload in addition to the
2410 register to contain the data.  Specifically, if copying @var{x} to a
2411 register @var{class} in @var{mode} requires an intermediate register,
2412 you should define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the
2413 largest register class all of whose registers can be used as
2414 intermediate registers or scratch registers.
2415
2416 If copying a register @var{class} in @var{mode} to @var{x} requires an
2417 intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS}
2418 should be defined to return the largest register class required.  If the
2419 requirements for input and output reloads are the same, the macro
2420 @code{SECONDARY_RELOAD_CLASS} should be used instead of defining both
2421 macros identically.
2422
2423 The values returned by these macros are often @code{GENERAL_REGS}.
2424 Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x}
2425 can be directly copied to or from a register of @var{class} in
2426 @var{mode} without requiring a scratch register.  Do not define this
2427 macro if it would always return @code{NO_REGS}.
2428
2429 If a scratch register is required (either with or without an
2430 intermediate register), you should define patterns for
2431 @samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required
2432 (@pxref{Standard Names}.  These patterns, which will normally be
2433 implemented with a @code{define_expand}, should be similar to the
2434 @samp{mov@var{m}} patterns, except that operand 2 is the scratch
2435 register.
2436
2437 Define constraints for the reload register and scratch register that
2438 contain a single register class.  If the original reload register (whose
2439 class is @var{class}) can meet the constraint given in the pattern, the
2440 value returned by these macros is used for the class of the scratch
2441 register.  Otherwise, two additional reload registers are required.
2442 Their classes are obtained from the constraints in the insn pattern.
2443
2444 @var{x} might be a pseudo-register or a @code{subreg} of a
2445 pseudo-register, which could either be in a hard register or in memory.
2446 Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is
2447 in memory and the hard register number if it is in a register.
2448
2449 These macros should not be used in the case where a particular class of
2450 registers can only be copied to memory and not to another class of
2451 registers.  In that case, secondary reload registers are not needed and
2452 would not be helpful.  Instead, a stack location must be used to perform
2453 the copy and the @code{mov@var{m}} pattern should use memory as an
2454 intermediate storage.  This case often occurs between floating-point and
2455 general registers.
2456
2457 @findex SECONDARY_MEMORY_NEEDED
2458 @item SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m})
2459 Certain machines have the property that some registers cannot be copied
2460 to some other registers without using memory.  Define this macro on
2461 those machines to be a C expression that is nonzero if objects of mode
2462 @var{m} in registers of @var{class1} can only be copied to registers of
2463 class @var{class2} by storing a register of @var{class1} into memory
2464 and loading that memory location into a register of @var{class2}.
2465
2466 Do not define this macro if its value would always be zero.
2467
2468 @findex SECONDARY_MEMORY_NEEDED_RTX
2469 @item SECONDARY_MEMORY_NEEDED_RTX (@var{mode})
2470 Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler
2471 allocates a stack slot for a memory location needed for register copies.
2472 If this macro is defined, the compiler instead uses the memory location
2473 defined by this macro.
2474
2475 Do not define this macro if you do not define
2476 @code{SECONDARY_MEMORY_NEEDED}.
2477
2478 @findex SECONDARY_MEMORY_NEEDED_MODE
2479 @item SECONDARY_MEMORY_NEEDED_MODE (@var{mode})
2480 When the compiler needs a secondary memory location to copy between two
2481 registers of mode @var{mode}, it normally allocates sufficient memory to
2482 hold a quantity of @code{BITS_PER_WORD} bits and performs the store and
2483 load operations in a mode that many bits wide and whose class is the
2484 same as that of @var{mode}.
2485
2486 This is right thing to do on most machines because it ensures that all
2487 bits of the register are copied and prevents accesses to the registers
2488 in a narrower mode, which some machines prohibit for floating-point
2489 registers.
2490
2491 However, this default behavior is not correct on some machines, such as
2492 the DEC Alpha, that store short integers in floating-point registers
2493 differently than in integer registers.  On those machines, the default
2494 widening will not work correctly and you must define this macro to
2495 suppress that widening in some cases.  See the file @file{alpha.h} for
2496 details.
2497
2498 Do not define this macro if you do not define
2499 @code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that
2500 is @code{BITS_PER_WORD} bits wide is correct for your machine.
2501
2502 @findex SMALL_REGISTER_CLASSES
2503 @item SMALL_REGISTER_CLASSES
2504 On some machines, it is risky to let hard registers live across arbitrary
2505 insns.  Typically, these machines have instructions that require values
2506 to be in specific registers (like an accumulator), and reload will fail
2507 if the required hard register is used for another purpose across such an
2508 insn.
2509
2510 Define @code{SMALL_REGISTER_CLASSES} to be an expression with a nonzero
2511 value on these machines.  When this macro has a nonzero value, the
2512 compiler will try to minimize the lifetime of hard registers.
2513
2514 It is always safe to define this macro with a nonzero value, but if you
2515 unnecessarily define it, you will reduce the amount of optimizations
2516 that can be performed in some cases.  If you do not define this macro
2517 with a nonzero value when it is required, the compiler will run out of
2518 spill registers and print a fatal error message.  For most machines, you
2519 should not define this macro at all.
2520
2521 @findex CLASS_LIKELY_SPILLED_P
2522 @item CLASS_LIKELY_SPILLED_P (@var{class})
2523 A C expression whose value is nonzero if pseudos that have been assigned
2524 to registers of class @var{class} would likely be spilled because
2525 registers of @var{class} are needed for spill registers.
2526
2527 The default value of this macro returns 1 if @var{class} has exactly one
2528 register and zero otherwise.  On most machines, this default should be
2529 used.  Only define this macro to some other expression if pseudos
2530 allocated by @file{local-alloc.c} end up in memory because their hard
2531 registers were needed for spill registers.  If this macro returns nonzero
2532 for those classes, those pseudos will only be allocated by
2533 @file{global.c}, which knows how to reallocate the pseudo to another
2534 register.  If there would not be another register available for
2535 reallocation, you should not change the definition of this macro since
2536 the only effect of such a definition would be to slow down register
2537 allocation.
2538
2539 @findex CLASS_MAX_NREGS
2540 @item CLASS_MAX_NREGS (@var{class}, @var{mode})
2541 A C expression for the maximum number of consecutive registers
2542 of class @var{class} needed to hold a value of mode @var{mode}.
2543
2544 This is closely related to the macro @code{HARD_REGNO_NREGS}.  In fact,
2545 the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})}
2546 should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno},
2547 @var{mode})} for all @var{regno} values in the class @var{class}.
2548
2549 This macro helps control the handling of multiple-word values
2550 in the reload pass.
2551
2552 @item CLASS_CANNOT_CHANGE_MODE
2553 If defined, a C expression for a class that contains registers for
2554 which the compiler may not change modes arbitrarily.
2555
2556 @item CLASS_CANNOT_CHANGE_MODE_P(@var{from}, @var{to})
2557 A C expression that is true if, for a register in
2558 @code{CLASS_CANNOT_CHANGE_MODE}, the requested mode punning is invalid.
2559
2560 For the example, loading 32-bit integer or floating-point objects into
2561 floating-point registers on the Alpha extends them to 64 bits.
2562 Therefore loading a 64-bit object and then storing it as a 32-bit object
2563 does not store the low-order 32 bits, as would be the case for a normal
2564 register.  Therefore, @file{alpha.h} defines @code{CLASS_CANNOT_CHANGE_MODE}
2565 as @code{FLOAT_REGS} and @code{CLASS_CANNOT_CHANGE_MODE_P} restricts
2566 mode changes to same-size modes.
2567
2568 Compare this to IA-64, which extends floating-point values to 82-bits,
2569 and stores 64-bit integers in a different format than 64-bit doubles.
2570 Therefore @code{CLASS_CANNOT_CHANGE_MODE_P} is always true.
2571 @end table
2572
2573 Three other special macros describe which operands fit which constraint
2574 letters.
2575
2576 @table @code
2577 @findex CONST_OK_FOR_LETTER_P
2578 @item CONST_OK_FOR_LETTER_P (@var{value}, @var{c})
2579 A C expression that defines the machine-dependent operand constraint
2580 letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify
2581 particular ranges of integer values.  If @var{c} is one of those
2582 letters, the expression should check that @var{value}, an integer, is in
2583 the appropriate range and return 1 if so, 0 otherwise.  If @var{c} is
2584 not one of those letters, the value should be 0 regardless of
2585 @var{value}.
2586
2587 @findex CONST_DOUBLE_OK_FOR_LETTER_P
2588 @item CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c})
2589 A C expression that defines the machine-dependent operand constraint
2590 letters that specify particular ranges of @code{const_double} values
2591 (@samp{G} or @samp{H}).
2592
2593 If @var{c} is one of those letters, the expression should check that
2594 @var{value}, an RTX of code @code{const_double}, is in the appropriate
2595 range and return 1 if so, 0 otherwise.  If @var{c} is not one of those
2596 letters, the value should be 0 regardless of @var{value}.
2597
2598 @code{const_double} is used for all floating-point constants and for
2599 @code{DImode} fixed-point constants.  A given letter can accept either
2600 or both kinds of values.  It can use @code{GET_MODE} to distinguish
2601 between these kinds.
2602
2603 @findex EXTRA_CONSTRAINT
2604 @item EXTRA_CONSTRAINT (@var{value}, @var{c})
2605 A C expression that defines the optional machine-dependent constraint
2606 letters that can be used to segregate specific types of operands, usually
2607 memory references, for the target machine.  Any letter that is not
2608 elsewhere defined and not matched by @code{REG_CLASS_FROM_LETTER}
2609 may be used.  Normally this macro will not be defined.
2610
2611 If it is required for a particular target machine, it should return 1
2612 if @var{value} corresponds to the operand type represented by the
2613 constraint letter @var{c}.  If @var{c} is not defined as an extra
2614 constraint, the value returned should be 0 regardless of @var{value}.
2615
2616 For example, on the ROMP, load instructions cannot have their output
2617 in r0 if the memory reference contains a symbolic address.  Constraint
2618 letter @samp{Q} is defined as representing a memory address that does
2619 @emph{not} contain a symbolic address.  An alternative is specified with
2620 a @samp{Q} constraint on the input and @samp{r} on the output.  The next
2621 alternative specifies @samp{m} on the input and a register class that
2622 does not include r0 on the output.
2623
2624 @findex EXTRA_MEMORY_CONSTRAINT
2625 @item EXTRA_MEMORY_CONSTRAINT (@var{c})
2626 A C expression that defines the optional machine-dependent constraint
2627 letters, amongst those accepted by @code{EXTRA_CONSTRAINT}, that should
2628 be treated like memory constraints by the reload pass.
2629
2630 It should return 1 if the operand type represented by the constraint 
2631 letter @var{c} comprises a subset of all memory references including
2632 all those whose address is simply a base register.  This allows the reload 
2633 pass to reload an operand, if it does not directly correspond to the operand 
2634 type of @var{c}, by copying its address into a base register.
2635
2636 For example, on the S/390, some instructions do not accept arbitrary
2637 memory references, but only those that do not make use of an index
2638 register.  The constraint letter @samp{Q} is defined via
2639 @code{EXTRA_CONSTRAINT} as representing a memory address of this type.
2640 If the letter @samp{Q} is marked as @code{EXTRA_MEMORY_CONSTRAINT},
2641 a @samp{Q} constraint can handle any memory operand, because the
2642 reload pass knows it can be reloaded by copying the memory address
2643 into a base register if required.  This is analogous to the way
2644 a @samp{o} constraint can handle any memory operand.
2645
2646 @findex EXTRA_ADDRESS_CONSTRAINT
2647 @item EXTRA_ADDRESS_CONSTRAINT (@var{c})
2648 A C expression that defines the optional machine-dependent constraint
2649 letters, amongst those accepted by @code{EXTRA_CONSTRAINT}, that should
2650 be treated like address constraints by the reload pass.
2651
2652 It should return 1 if the operand type represented by the constraint 
2653 letter @var{c} comprises a subset of all memory addresses including
2654 all those that consist of just a base register.  This allows the reload 
2655 pass to reload an operand, if it does not directly correspond to the operand 
2656 type of @var{c}, by copying it into a base register.
2657
2658 Any constraint marked as @code{EXTRA_ADDRESS_CONSTRAINT} can only
2659 be used with the @code{address_operand} predicate.  It is treated 
2660 analogously to the @samp{p} constraint.
2661 @end table
2662
2663 @node Stack and Calling
2664 @section Stack Layout and Calling Conventions
2665 @cindex calling conventions
2666
2667 @c prevent bad page break with this line
2668 This describes the stack layout and calling conventions.
2669
2670 @menu
2671 * Frame Layout::
2672 * Exception Handling::
2673 * Stack Checking::
2674 * Frame Registers::
2675 * Elimination::
2676 * Stack Arguments::
2677 * Register Arguments::
2678 * Scalar Return::
2679 * Aggregate Return::
2680 * Caller Saves::
2681 * Function Entry::
2682 * Profiling::
2683 * Tail Calls::
2684 @end menu
2685
2686 @node Frame Layout
2687 @subsection Basic Stack Layout
2688 @cindex stack frame layout
2689 @cindex frame layout
2690
2691 @c prevent bad page break with this line
2692 Here is the basic stack layout.
2693
2694 @table @code
2695 @findex STACK_GROWS_DOWNWARD
2696 @item STACK_GROWS_DOWNWARD
2697 Define this macro if pushing a word onto the stack moves the stack
2698 pointer to a smaller address.
2699
2700 When we say, ``define this macro if @dots{},'' it means that the
2701 compiler checks this macro only with @code{#ifdef} so the precise
2702 definition used does not matter.
2703
2704 @findex STACK_PUSH_CODE
2705 @item STACK_PUSH_CODE
2706
2707 This macro defines the operation used when something is pushed
2708 on the stack.  In RTL, a push operation will be
2709 @code{(set (mem (STACK_PUSH_CODE (reg sp))) @dots{})}
2710
2711 The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC},
2712 and @code{POST_INC}.  Which of these is correct depends on
2713 the stack direction and on whether the stack pointer points
2714 to the last item on the stack or whether it points to the
2715 space for the next item on the stack.
2716
2717 The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is
2718 defined, which is almost always right, and @code{PRE_INC} otherwise,
2719 which is often wrong.
2720
2721 @findex FRAME_GROWS_DOWNWARD
2722 @item FRAME_GROWS_DOWNWARD
2723 Define this macro if the addresses of local variable slots are at negative
2724 offsets from the frame pointer.
2725
2726 @findex ARGS_GROW_DOWNWARD
2727 @item ARGS_GROW_DOWNWARD
2728 Define this macro if successive arguments to a function occupy decreasing
2729 addresses on the stack.
2730
2731 @findex STARTING_FRAME_OFFSET
2732 @item STARTING_FRAME_OFFSET
2733 Offset from the frame pointer to the first local variable slot to be allocated.
2734
2735 If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by
2736 subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}.
2737 Otherwise, it is found by adding the length of the first slot to the
2738 value @code{STARTING_FRAME_OFFSET}.
2739 @c i'm not sure if the above is still correct.. had to change it to get
2740 @c rid of an overfull.  --mew 2feb93
2741
2742 @findex STACK_POINTER_OFFSET
2743 @item STACK_POINTER_OFFSET
2744 Offset from the stack pointer register to the first location at which
2745 outgoing arguments are placed.  If not specified, the default value of
2746 zero is used.  This is the proper value for most machines.
2747
2748 If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2749 the first location at which outgoing arguments are placed.
2750
2751 @findex FIRST_PARM_OFFSET
2752 @item FIRST_PARM_OFFSET (@var{fundecl})
2753 Offset from the argument pointer register to the first argument's
2754 address.  On some machines it may depend on the data type of the
2755 function.
2756
2757 If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2758 the first argument's address.
2759
2760 @findex STACK_DYNAMIC_OFFSET
2761 @item STACK_DYNAMIC_OFFSET (@var{fundecl})
2762 Offset from the stack pointer register to an item dynamically allocated
2763 on the stack, e.g., by @code{alloca}.
2764
2765 The default value for this macro is @code{STACK_POINTER_OFFSET} plus the
2766 length of the outgoing arguments.  The default is correct for most
2767 machines.  See @file{function.c} for details.
2768
2769 @findex DYNAMIC_CHAIN_ADDRESS
2770 @item DYNAMIC_CHAIN_ADDRESS (@var{frameaddr})
2771 A C expression whose value is RTL representing the address in a stack
2772 frame where the pointer to the caller's frame is stored.  Assume that
2773 @var{frameaddr} is an RTL expression for the address of the stack frame
2774 itself.
2775
2776 If you don't define this macro, the default is to return the value
2777 of @var{frameaddr}---that is, the stack frame address is also the
2778 address of the stack word that points to the previous frame.
2779
2780 @findex SETUP_FRAME_ADDRESSES
2781 @item SETUP_FRAME_ADDRESSES
2782 If defined, a C expression that produces the machine-specific code to
2783 setup the stack so that arbitrary frames can be accessed.  For example,
2784 on the SPARC, we must flush all of the register windows to the stack
2785 before we can access arbitrary stack frames.  You will seldom need to
2786 define this macro.
2787
2788 @findex BUILTIN_SETJMP_FRAME_VALUE
2789 @item BUILTIN_SETJMP_FRAME_VALUE
2790 If defined, a C expression that contains an rtx that is used to store
2791 the address of the current frame into the built in @code{setjmp} buffer.
2792 The default value, @code{virtual_stack_vars_rtx}, is correct for most
2793 machines.  One reason you may need to define this macro is if
2794 @code{hard_frame_pointer_rtx} is the appropriate value on your machine.
2795
2796 @findex RETURN_ADDR_RTX
2797 @item RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
2798 A C expression whose value is RTL representing the value of the return
2799 address for the frame @var{count} steps up from the current frame, after
2800 the prologue.  @var{frameaddr} is the frame pointer of the @var{count}
2801 frame, or the frame pointer of the @var{count} @minus{} 1 frame if
2802 @code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
2803
2804 The value of the expression must always be the correct address when
2805 @var{count} is zero, but may be @code{NULL_RTX} if there is not way to
2806 determine the return address of other frames.
2807
2808 @findex RETURN_ADDR_IN_PREVIOUS_FRAME
2809 @item RETURN_ADDR_IN_PREVIOUS_FRAME
2810 Define this if the return address of a particular stack frame is accessed
2811 from the frame pointer of the previous stack frame.
2812
2813 @findex INCOMING_RETURN_ADDR_RTX
2814 @item INCOMING_RETURN_ADDR_RTX
2815 A C expression whose value is RTL representing the location of the
2816 incoming return address at the beginning of any function, before the
2817 prologue.  This RTL is either a @code{REG}, indicating that the return
2818 value is saved in @samp{REG}, or a @code{MEM} representing a location in
2819 the stack.
2820
2821 You only need to define this macro if you want to support call frame
2822 debugging information like that provided by DWARF 2.
2823
2824 If this RTL is a @code{REG}, you should also define
2825 @code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}.
2826
2827 @findex INCOMING_FRAME_SP_OFFSET
2828 @item INCOMING_FRAME_SP_OFFSET
2829 A C expression whose value is an integer giving the offset, in bytes,
2830 from the value of the stack pointer register to the top of the stack
2831 frame at the beginning of any function, before the prologue.  The top of
2832 the frame is defined to be the value of the stack pointer in the
2833 previous frame, just before the call instruction.
2834
2835 You only need to define this macro if you want to support call frame
2836 debugging information like that provided by DWARF 2.
2837
2838 @findex ARG_POINTER_CFA_OFFSET
2839 @item ARG_POINTER_CFA_OFFSET (@var{fundecl})
2840 A C expression whose value is an integer giving the offset, in bytes,
2841 from the argument pointer to the canonical frame address (cfa).  The
2842 final value should coincide with that calculated by
2843 @code{INCOMING_FRAME_SP_OFFSET}.  Which is unfortunately not usable
2844 during virtual register instantiation.
2845
2846 The default value for this macro is @code{FIRST_PARM_OFFSET (fundecl)},
2847 which is correct for most machines; in general, the arguments are found
2848 immediately before the stack frame.  Note that this is not the case on
2849 some targets that save registers into the caller's frame, such as SPARC
2850 and rs6000, and so such targets need to define this macro.
2851
2852 You only need to define this macro if the default is incorrect, and you
2853 want to support call frame debugging information like that provided by
2854 DWARF 2.
2855
2856 @findex SMALL_STACK
2857 @item SMALL_STACK
2858 Define this macro if the stack size for the target is very small.  This
2859 has the effect of disabling gcc's built-in @samp{alloca}, though
2860 @samp{__builtin_alloca} is not affected.
2861 @end table
2862
2863 @node Exception Handling
2864 @subsection Exception Handling Support
2865 @cindex exception handling
2866
2867 @table @code
2868 @findex EH_RETURN_DATA_REGNO
2869 @item EH_RETURN_DATA_REGNO (@var{N})
2870 A C expression whose value is the @var{N}th register number used for
2871 data by exception handlers, or @code{INVALID_REGNUM} if fewer than
2872 @var{N} registers are usable.
2873
2874 The exception handling library routines communicate with the exception
2875 handlers via a set of agreed upon registers.  Ideally these registers
2876 should be call-clobbered; it is possible to use call-saved registers,
2877 but may negatively impact code size.  The target must support at least
2878 2 data registers, but should define 4 if there are enough free registers.
2879
2880 You must define this macro if you want to support call frame exception
2881 handling like that provided by DWARF 2.
2882
2883 @findex EH_RETURN_STACKADJ_RTX
2884 @item EH_RETURN_STACKADJ_RTX
2885 A C expression whose value is RTL representing a location in which
2886 to store a stack adjustment to be applied before function return.
2887 This is used to unwind the stack to an exception handler's call frame.
2888 It will be assigned zero on code paths that return normally.
2889
2890 Typically this is a call-clobbered hard register that is otherwise
2891 untouched by the epilogue, but could also be a stack slot.
2892
2893 You must define this macro if you want to support call frame exception
2894 handling like that provided by DWARF 2.
2895
2896 @findex EH_RETURN_HANDLER_RTX
2897 @item EH_RETURN_HANDLER_RTX
2898 A C expression whose value is RTL representing a location in which
2899 to store the address of an exception handler to which we should
2900 return.  It will not be assigned on code paths that return normally.
2901
2902 Typically this is the location in the call frame at which the normal
2903 return address is stored.  For targets that return by popping an
2904 address off the stack, this might be a memory address just below
2905 the @emph{target} call frame rather than inside the current call
2906 frame.  @code{EH_RETURN_STACKADJ_RTX} will have already been assigned,
2907 so it may be used to calculate the location of the target call frame.
2908
2909 Some targets have more complex requirements than storing to an
2910 address calculable during initial code generation.  In that case
2911 the @code{eh_return} instruction pattern should be used instead.
2912
2913 If you want to support call frame exception handling, you must
2914 define either this macro or the @code{eh_return} instruction pattern.
2915
2916 @findex ASM_PREFERRED_EH_DATA_FORMAT
2917 @item ASM_PREFERRED_EH_DATA_FORMAT(@var{code}, @var{global})
2918 This macro chooses the encoding of pointers embedded in the exception
2919 handling sections.  If at all possible, this should be defined such
2920 that the exception handling section will not require dynamic relocations,
2921 and so may be read-only.
2922
2923 @var{code} is 0 for data, 1 for code labels, 2 for function pointers.
2924 @var{global} is true if the symbol may be affected by dynamic relocations.
2925 The macro should return a combination of the @code{DW_EH_PE_*} defines
2926 as found in @file{dwarf2.h}.
2927
2928 If this macro is not defined, pointers will not be encoded but
2929 represented directly.
2930
2931 @findex ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX
2932 @item ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX(@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done})
2933 This macro allows the target to emit whatever special magic is required
2934 to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}.
2935 Generic code takes care of pc-relative and indirect encodings; this must
2936 be defined if the target uses text-relative or data-relative encodings.
2937
2938 This is a C statement that branches to @var{done} if the format was
2939 handled.  @var{encoding} is the format chosen, @var{size} is the number
2940 of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF}
2941 to be emitted.
2942
2943 @findex MD_FALLBACK_FRAME_STATE_FOR
2944 @item MD_FALLBACK_FRAME_STATE_FOR(@var{context}, @var{fs}, @var{success})
2945 This macro allows the target to add cpu and operating system specific
2946 code to the call-frame unwinder for use when there is no unwind data
2947 available.  The most common reason to implement this macro is to unwind
2948 through signal frames.
2949
2950 This macro is called from @code{uw_frame_state_for} in @file{unwind-dw2.c}
2951 and @file{unwind-ia64.c}.  @var{context} is an @code{_Unwind_Context};
2952 @var{fs} is an @code{_Unwind_FrameState}.  Examine @code{context->ra}
2953 for the address of the code being executed and @code{context->cfa} for
2954 the stack pointer value.  If the frame can be decoded, the register save
2955 addresses should be updated in @var{fs} and the macro should branch to
2956 @var{success}.  If the frame cannot be decoded, the macro should do
2957 nothing.
2958 @end table
2959
2960 @node Stack Checking
2961 @subsection Specifying How Stack Checking is Done
2962
2963 GCC will check that stack references are within the boundaries of
2964 the stack, if the @option{-fstack-check} is specified, in one of three ways:
2965
2966 @enumerate
2967 @item
2968 If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GCC
2969 will assume that you have arranged for stack checking to be done at
2970 appropriate places in the configuration files, e.g., in
2971 @code{TARGET_ASM_FUNCTION_PROLOGUE}.  GCC will do not other special
2972 processing.
2973
2974 @item
2975 If @code{STACK_CHECK_BUILTIN} is zero and you defined a named pattern
2976 called @code{check_stack} in your @file{md} file, GCC will call that
2977 pattern with one argument which is the address to compare the stack
2978 value against.  You must arrange for this pattern to report an error if
2979 the stack pointer is out of range.
2980
2981 @item
2982 If neither of the above are true, GCC will generate code to periodically
2983 ``probe'' the stack pointer using the values of the macros defined below.
2984 @end enumerate
2985
2986 Normally, you will use the default values of these macros, so GCC
2987 will use the third approach.
2988
2989 @table @code
2990 @findex STACK_CHECK_BUILTIN
2991 @item STACK_CHECK_BUILTIN
2992 A nonzero value if stack checking is done by the configuration files in a
2993 machine-dependent manner.  You should define this macro if stack checking
2994 is require by the ABI of your machine or if you would like to have to stack
2995 checking in some more efficient way than GCC's portable approach.
2996 The default value of this macro is zero.
2997
2998 @findex STACK_CHECK_PROBE_INTERVAL
2999 @item STACK_CHECK_PROBE_INTERVAL
3000 An integer representing the interval at which GCC must generate stack
3001 probe instructions.  You will normally define this macro to be no larger
3002 than the size of the ``guard pages'' at the end of a stack area.  The
3003 default value of 4096 is suitable for most systems.
3004
3005 @findex STACK_CHECK_PROBE_LOAD
3006 @item STACK_CHECK_PROBE_LOAD
3007 A integer which is nonzero if GCC should perform the stack probe
3008 as a load instruction and zero if GCC should use a store instruction.
3009 The default is zero, which is the most efficient choice on most systems.
3010
3011 @findex STACK_CHECK_PROTECT
3012 @item STACK_CHECK_PROTECT
3013 The number of bytes of stack needed to recover from a stack overflow,
3014 for languages where such a recovery is supported.  The default value of
3015 75 words should be adequate for most machines.
3016
3017 @findex STACK_CHECK_MAX_FRAME_SIZE
3018 @item STACK_CHECK_MAX_FRAME_SIZE
3019 The maximum size of a stack frame, in bytes.  GCC will generate probe
3020 instructions in non-leaf functions to ensure at least this many bytes of
3021 stack are available.  If a stack frame is larger than this size, stack
3022 checking will not be reliable and GCC will issue a warning.  The
3023 default is chosen so that GCC only generates one instruction on most
3024 systems.  You should normally not change the default value of this macro.
3025
3026 @findex STACK_CHECK_FIXED_FRAME_SIZE
3027 @item STACK_CHECK_FIXED_FRAME_SIZE
3028 GCC uses this value to generate the above warning message.  It
3029 represents the amount of fixed frame used by a function, not including
3030 space for any callee-saved registers, temporaries and user variables.
3031 You need only specify an upper bound for this amount and will normally
3032 use the default of four words.
3033
3034 @findex STACK_CHECK_MAX_VAR_SIZE
3035 @item STACK_CHECK_MAX_VAR_SIZE
3036 The maximum size, in bytes, of an object that GCC will place in the
3037 fixed area of the stack frame when the user specifies
3038 @option{-fstack-check}.
3039 GCC computed the default from the values of the above macros and you will
3040 normally not need to override that default.
3041 @end table
3042
3043 @need 2000
3044 @node Frame Registers
3045 @subsection Registers That Address the Stack Frame
3046
3047 @c prevent bad page break with this line
3048 This discusses registers that address the stack frame.
3049
3050 @table @code
3051 @findex STACK_POINTER_REGNUM
3052 @item STACK_POINTER_REGNUM
3053 The register number of the stack pointer register, which must also be a
3054 fixed register according to @code{FIXED_REGISTERS}.  On most machines,
3055 the hardware determines which register this is.
3056
3057 @findex FRAME_POINTER_REGNUM
3058 @item FRAME_POINTER_REGNUM
3059 The register number of the frame pointer register, which is used to
3060 access automatic variables in the stack frame.  On some machines, the
3061 hardware determines which register this is.  On other machines, you can
3062 choose any register you wish for this purpose.
3063
3064 @findex HARD_FRAME_POINTER_REGNUM
3065 @item HARD_FRAME_POINTER_REGNUM
3066 On some machines the offset between the frame pointer and starting
3067 offset of the automatic variables is not known until after register
3068 allocation has been done (for example, because the saved registers are
3069 between these two locations).  On those machines, define
3070 @code{FRAME_POINTER_REGNUM} the number of a special, fixed register to
3071 be used internally until the offset is known, and define
3072 @code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number
3073 used for the frame pointer.
3074
3075 You should define this macro only in the very rare circumstances when it
3076 is not possible to calculate the offset between the frame pointer and
3077 the automatic variables until after register allocation has been
3078 completed.  When this macro is defined, you must also indicate in your
3079 definition of @code{ELIMINABLE_REGS} how to eliminate
3080 @code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM}
3081 or @code{STACK_POINTER_REGNUM}.
3082
3083 Do not define this macro if it would be the same as
3084 @code{FRAME_POINTER_REGNUM}.
3085
3086 @findex ARG_POINTER_REGNUM
3087 @item ARG_POINTER_REGNUM
3088 The register number of the arg pointer register, which is used to access
3089 the function's argument list.  On some machines, this is the same as the
3090 frame pointer register.  On some machines, the hardware determines which
3091 register this is.  On other machines, you can choose any register you
3092 wish for this purpose.  If this is not the same register as the frame
3093 pointer register, then you must mark it as a fixed register according to
3094 @code{FIXED_REGISTERS}, or arrange to be able to eliminate it
3095 (@pxref{Elimination}).
3096
3097 @findex RETURN_ADDRESS_POINTER_REGNUM
3098 @item RETURN_ADDRESS_POINTER_REGNUM
3099 The register number of the return address pointer register, which is used to
3100 access the current function's return address from the stack.  On some
3101 machines, the return address is not at a fixed offset from the frame
3102 pointer or stack pointer or argument pointer.  This register can be defined
3103 to point to the return address on the stack, and then be converted by
3104 @code{ELIMINABLE_REGS} into either the frame pointer or stack pointer.
3105
3106 Do not define this macro unless there is no other way to get the return
3107 address from the stack.
3108
3109 @findex STATIC_CHAIN_REGNUM
3110 @findex STATIC_CHAIN_INCOMING_REGNUM
3111 @item STATIC_CHAIN_REGNUM
3112 @itemx STATIC_CHAIN_INCOMING_REGNUM
3113 Register numbers used for passing a function's static chain pointer.  If
3114 register windows are used, the register number as seen by the called
3115 function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register
3116 number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}.  If
3117 these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need
3118 not be defined.
3119
3120 The static chain register need not be a fixed register.
3121
3122 If the static chain is passed in memory, these macros should not be
3123 defined; instead, the next two macros should be defined.
3124
3125 @findex STATIC_CHAIN
3126 @findex STATIC_CHAIN_INCOMING
3127 @item STATIC_CHAIN
3128 @itemx STATIC_CHAIN_INCOMING
3129 If the static chain is passed in memory, these macros provide rtx giving
3130 @code{mem} expressions that denote where they are stored.
3131 @code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations
3132 as seen by the calling and called functions, respectively.  Often the former
3133 will be at an offset from the stack pointer and the latter at an offset from
3134 the frame pointer.
3135
3136 @findex stack_pointer_rtx
3137 @findex frame_pointer_rtx
3138 @findex arg_pointer_rtx
3139 The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and
3140 @code{arg_pointer_rtx} will have been initialized prior to the use of these
3141 macros and should be used to refer to those items.
3142
3143 If the static chain is passed in a register, the two previous macros should
3144 be defined instead.
3145
3146 @findex DWARF_FRAME_REGISTERS
3147 @item DWARF_FRAME_REGISTERS
3148 This macro specifies the maximum number of hard registers that can be
3149 saved in a call frame.  This is used to size data structures used in
3150 DWARF2 exception handling.
3151
3152 Prior to GCC 3.0, this macro was needed in order to establish a stable
3153 exception handling ABI in the face of adding new hard registers for ISA
3154 extensions.  In GCC 3.0 and later, the EH ABI is insulated from changes
3155 in the number of hard registers.  Nevertheless, this macro can still be
3156 used to reduce the runtime memory requirements of the exception handling
3157 routines, which can be substantial if the ISA contains a lot of
3158 registers that are not call-saved.
3159
3160 If this macro is not defined, it defaults to
3161 @code{FIRST_PSEUDO_REGISTER}.
3162
3163 @findex PRE_GCC3_DWARF_FRAME_REGISTERS
3164 @item PRE_GCC3_DWARF_FRAME_REGISTERS
3165
3166 This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided
3167 for backward compatibility in pre GCC 3.0 compiled code.
3168
3169 If this macro is not defined, it defaults to
3170 @code{DWARF_FRAME_REGISTERS}.
3171
3172 @end table
3173
3174 @node Elimination
3175 @subsection Eliminating Frame Pointer and Arg Pointer
3176
3177 @c prevent bad page break with this line
3178 This is about eliminating the frame pointer and arg pointer.
3179
3180 @table @code
3181 @findex FRAME_POINTER_REQUIRED
3182 @item FRAME_POINTER_REQUIRED
3183 A C expression which is nonzero if a function must have and use a frame
3184 pointer.  This expression is evaluated  in the reload pass.  If its value is
3185 nonzero the function will have a frame pointer.
3186
3187 The expression can in principle examine the current function and decide
3188 according to the facts, but on most machines the constant 0 or the
3189 constant 1 suffices.  Use 0 when the machine allows code to be generated
3190 with no frame pointer, and doing so saves some time or space.  Use 1
3191 when there is no possible advantage to avoiding a frame pointer.
3192
3193 In certain cases, the compiler does not know how to produce valid code
3194 without a frame pointer.  The compiler recognizes those cases and
3195 automatically gives the function a frame pointer regardless of what
3196 @code{FRAME_POINTER_REQUIRED} says.  You don't need to worry about
3197 them.
3198
3199 In a function that does not require a frame pointer, the frame pointer
3200 register can be allocated for ordinary usage, unless you mark it as a
3201 fixed register.  See @code{FIXED_REGISTERS} for more information.
3202
3203 @findex INITIAL_FRAME_POINTER_OFFSET
3204 @findex get_frame_size
3205 @item INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
3206 A C statement to store in the variable @var{depth-var} the difference
3207 between the frame pointer and the stack pointer values immediately after
3208 the function prologue.  The value would be computed from information
3209 such as the result of @code{get_frame_size ()} and the tables of
3210 registers @code{regs_ever_live} and @code{call_used_regs}.
3211
3212 If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
3213 need not be defined.  Otherwise, it must be defined even if
3214 @code{FRAME_POINTER_REQUIRED} is defined to always be true; in that
3215 case, you may set @var{depth-var} to anything.
3216
3217 @findex ELIMINABLE_REGS
3218 @item ELIMINABLE_REGS
3219 If defined, this macro specifies a table of register pairs used to
3220 eliminate unneeded registers that point into the stack frame.  If it is not
3221 defined, the only elimination attempted by the compiler is to replace
3222 references to the frame pointer with references to the stack pointer.
3223
3224 The definition of this macro is a list of structure initializations, each
3225 of which specifies an original and replacement register.
3226
3227 On some machines, the position of the argument pointer is not known until
3228 the compilation is completed.  In such a case, a separate hard register
3229 must be used for the argument pointer.  This register can be eliminated by
3230 replacing it with either the frame pointer or the argument pointer,
3231 depending on whether or not the frame pointer has been eliminated.
3232
3233 In this case, you might specify:
3234 @example
3235 #define ELIMINABLE_REGS  \
3236 @{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
3237  @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
3238  @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
3239 @end example
3240
3241 Note that the elimination of the argument pointer with the stack pointer is
3242 specified first since that is the preferred elimination.
3243
3244 @findex CAN_ELIMINATE
3245 @item CAN_ELIMINATE (@var{from-reg}, @var{to-reg})
3246 A C expression that returns nonzero if the compiler is allowed to try
3247 to replace register number @var{from-reg} with register number
3248 @var{to-reg}.  This macro need only be defined if @code{ELIMINABLE_REGS}
3249 is defined, and will usually be the constant 1, since most of the cases
3250 preventing register elimination are things that the compiler already
3251 knows about.
3252
3253 @findex INITIAL_ELIMINATION_OFFSET
3254 @item INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
3255 This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}.  It
3256 specifies the initial difference between the specified pair of
3257 registers.  This macro must be defined if @code{ELIMINABLE_REGS} is
3258 defined.
3259 @end table
3260
3261 @node Stack Arguments
3262 @subsection Passing Function Arguments on the Stack
3263 @cindex arguments on stack
3264 @cindex stack arguments
3265
3266 The macros in this section control how arguments are passed
3267 on the stack.  See the following section for other macros that
3268 control passing certain arguments in registers.
3269
3270 @table @code
3271 @findex PROMOTE_PROTOTYPES
3272 @item PROMOTE_PROTOTYPES
3273 A C expression whose value is nonzero if an argument declared in
3274 a prototype as an integral type smaller than @code{int} should
3275 actually be passed as an @code{int}.  In addition to avoiding
3276 errors in certain cases of mismatch, it also makes for better
3277 code on certain machines.  If the macro is not defined in target
3278 header files, it defaults to 0.
3279
3280 @findex PUSH_ARGS
3281 @item PUSH_ARGS
3282 A C expression.  If nonzero, push insns will be used to pass
3283 outgoing arguments.
3284 If the target machine does not have a push instruction, set it to zero.
3285 That directs GCC to use an alternate strategy: to
3286 allocate the entire argument block and then store the arguments into
3287 it.  When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too.
3288 On some machines, the definition
3289
3290 @findex PUSH_ROUNDING
3291 @item PUSH_ROUNDING (@var{npushed})
3292 A C expression that is the number of bytes actually pushed onto the
3293 stack when an instruction attempts to push @var{npushed} bytes.
3294
3295 On some machines, the definition
3296
3297 @example
3298 #define PUSH_ROUNDING(BYTES) (BYTES)
3299 @end example
3300
3301 @noindent
3302 will suffice.  But on other machines, instructions that appear
3303 to push one byte actually push two bytes in an attempt to maintain
3304 alignment.  Then the definition should be
3305
3306 @example
3307 #define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
3308 @end example
3309
3310 @findex ACCUMULATE_OUTGOING_ARGS
3311 @findex current_function_outgoing_args_size
3312 @item ACCUMULATE_OUTGOING_ARGS
3313 A C expression.  If nonzero, the maximum amount of space required for outgoing arguments
3314 will be computed and placed into the variable
3315 @code{current_function_outgoing_args_size}.  No space will be pushed
3316 onto the stack for each call; instead, the function prologue should
3317 increase the stack frame size by this amount.
3318
3319 Setting both @code{PUSH_ARGS} and @code{ACCUMULATE_OUTGOING_ARGS}
3320 is not proper.
3321
3322 @findex REG_PARM_STACK_SPACE
3323 @item REG_PARM_STACK_SPACE (@var{fndecl})
3324 Define this macro if functions should assume that stack space has been
3325 allocated for arguments even when their values are passed in
3326 registers.
3327
3328 The value of this macro is the size, in bytes, of the area reserved for
3329 arguments passed in registers for the function represented by @var{fndecl},
3330 which can be zero if GCC is calling a library function.
3331
3332 This space can be allocated by the caller, or be a part of the
3333 machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says
3334 which.
3335 @c above is overfull.  not sure what to do.  --mew 5feb93  did
3336 @c something, not sure if it looks good.  --mew 10feb93
3337
3338 @findex MAYBE_REG_PARM_STACK_SPACE
3339 @findex FINAL_REG_PARM_STACK_SPACE
3340 @item MAYBE_REG_PARM_STACK_SPACE
3341 @itemx FINAL_REG_PARM_STACK_SPACE (@var{const_size}, @var{var_size})
3342 Define these macros in addition to the one above if functions might
3343 allocate stack space for arguments even when their values are passed
3344 in registers.  These should be used when the stack space allocated
3345 for arguments in registers is not a simple constant independent of the
3346 function declaration.
3347
3348 The value of the first macro is the size, in bytes, of the area that
3349 we should initially assume would be reserved for arguments passed in registers.
3350
3351 The value of the second macro is the actual size, in bytes, of the area
3352 that will be reserved for arguments passed in registers.  This takes two
3353 arguments: an integer representing the number of bytes of fixed sized
3354 arguments on the stack, and a tree representing the number of bytes of
3355 variable sized arguments on the stack.
3356
3357 When these macros are defined, @code{REG_PARM_STACK_SPACE} will only be
3358 called for libcall functions, the current function, or for a function
3359 being called when it is known that such stack space must be allocated.
3360 In each case this value can be easily computed.
3361
3362 When deciding whether a called function needs such stack space, and how
3363 much space to reserve, GCC uses these two macros instead of
3364 @code{REG_PARM_STACK_SPACE}.
3365
3366 @findex OUTGOING_REG_PARM_STACK_SPACE
3367 @item OUTGOING_REG_PARM_STACK_SPACE
3368 Define this if it is the responsibility of the caller to allocate the area
3369 reserved for arguments passed in registers.
3370
3371 If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls
3372 whether the space for these arguments counts in the value of
3373 @code{current_function_outgoing_args_size}.
3374
3375 @findex STACK_PARMS_IN_REG_PARM_AREA
3376 @item STACK_PARMS_IN_REG_PARM_AREA
3377 Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the
3378 stack parameters don't skip the area specified by it.
3379 @c i changed this, makes more sens and it should have taken care of the
3380 @c overfull.. not as specific, tho.  --mew 5feb93
3381
3382 Normally, when a parameter is not passed in registers, it is placed on the
3383 stack beyond the @code{REG_PARM_STACK_SPACE} area.  Defining this macro
3384 suppresses this behavior and causes the parameter to be passed on the
3385 stack in its natural location.
3386
3387 @findex RETURN_POPS_ARGS
3388 @item RETURN_POPS_ARGS (@var{fundecl}, @var{funtype}, @var{stack-size})
3389 A C expression that should indicate the number of bytes of its own
3390 arguments that a function pops on returning, or 0 if the
3391 function pops no arguments and the caller must therefore pop them all
3392 after the function returns.
3393
3394 @var{fundecl} is a C variable whose value is a tree node that describes
3395 the function in question.  Normally it is a node of type
3396 @code{FUNCTION_DECL} that describes the declaration of the function.
3397 From this you can obtain the @code{DECL_ATTRIBUTES} of the function.
3398
3399 @var{funtype} is a C variable whose value is a tree node that
3400 describes the function in question.  Normally it is a node of type
3401 @code{FUNCTION_TYPE} that describes the data type of the function.
3402 From this it is possible to obtain the data types of the value and
3403 arguments (if known).
3404
3405 When a call to a library function is being considered, @var{fundecl}
3406 will contain an identifier node for the library function.  Thus, if
3407 you need to distinguish among various library functions, you can do so
3408 by their names.  Note that ``library function'' in this context means
3409 a function used to perform arithmetic, whose name is known specially
3410 in the compiler and was not mentioned in the C code being compiled.
3411
3412 @var{stack-size} is the number of bytes of arguments passed on the
3413 stack.  If a variable number of bytes is passed, it is zero, and
3414 argument popping will always be the responsibility of the calling function.
3415
3416 On the VAX, all functions always pop their arguments, so the definition
3417 of this macro is @var{stack-size}.  On the 68000, using the standard
3418 calling convention, no functions pop their arguments, so the value of
3419 the macro is always 0 in this case.  But an alternative calling
3420 convention is available in which functions that take a fixed number of
3421 arguments pop them but other functions (such as @code{printf}) pop
3422 nothing (the caller pops all).  When this convention is in use,
3423 @var{funtype} is examined to determine whether a function takes a fixed
3424 number of arguments.
3425
3426 @findex CALL_POPS_ARGS
3427 @item   CALL_POPS_ARGS (@var{cum})
3428 A C expression that should indicate the number of bytes a call sequence
3429 pops off the stack.  It is added to the value of @code{RETURN_POPS_ARGS}
3430 when compiling a function call.
3431
3432 @var{cum} is the variable in which all arguments to the called function
3433 have been accumulated.
3434
3435 On certain architectures, such as the SH5, a call trampoline is used
3436 that pops certain registers off the stack, depending on the arguments
3437 that have been passed to the function.  Since this is a property of the
3438 call site, not of the called function, @code{RETURN_POPS_ARGS} is not
3439 appropriate.
3440
3441 @end table
3442
3443 @node Register Arguments
3444 @subsection Passing Arguments in Registers
3445 @cindex arguments in registers
3446 @cindex registers arguments
3447
3448 This section describes the macros which let you control how various
3449 types of arguments are passed in registers or how they are arranged in
3450 the stack.
3451
3452 @table @code
3453 @findex FUNCTION_ARG
3454 @item FUNCTION_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
3455 A C expression that controls whether a function argument is passed
3456 in a register, and which register.
3457
3458 The arguments are @var{cum}, which summarizes all the previous
3459 arguments; @var{mode}, the machine mode of the argument; @var{type},
3460 the data type of the argument as a tree node or 0 if that is not known
3461 (which happens for C support library functions); and @var{named},
3462 which is 1 for an ordinary argument and 0 for nameless arguments that
3463 correspond to @samp{@dots{}} in the called function's prototype.
3464 @var{type} can be an incomplete type if a syntax error has previously
3465 occurred.
3466
3467 The value of the expression is usually either a @code{reg} RTX for the
3468 hard register in which to pass the argument, or zero to pass the
3469 argument on the stack.
3470
3471 For machines like the VAX and 68000, where normally all arguments are
3472 pushed, zero suffices as a definition.
3473
3474 The value of the expression can also be a @code{parallel} RTX@.  This is
3475 used when an argument is passed in multiple locations.  The mode of the
3476 of the @code{parallel} should be the mode of the entire argument.  The
3477 @code{parallel} holds any number of @code{expr_list} pairs; each one
3478 describes where part of the argument is passed.  In each
3479 @code{expr_list} the first operand must be a @code{reg} RTX for the hard
3480 register in which to pass this part of the argument, and the mode of the
3481 register RTX indicates how large this part of the argument is.  The
3482 second operand of the @code{expr_list} is a @code{const_int} which gives
3483 the offset in bytes into the entire argument of where this part starts.
3484 As a special exception the first @code{expr_list} in the @code{parallel}
3485 RTX may have a first operand of zero.  This indicates that the entire
3486 argument is also stored on the stack.
3487
3488 The last time this macro is called, it is called with @code{MODE ==
3489 VOIDmode}, and its result is passed to the @code{call} or @code{call_value}
3490 pattern as operands 2 and 3 respectively.
3491
3492 @cindex @file{stdarg.h} and register arguments
3493 The usual way to make the ISO library @file{stdarg.h} work on a machine
3494 where some arguments are usually passed in registers, is to cause
3495 nameless arguments to be passed on the stack instead.  This is done
3496 by making @code{FUNCTION_ARG} return 0 whenever @var{named} is 0.
3497
3498 @cindex @code{MUST_PASS_IN_STACK}, and @code{FUNCTION_ARG}
3499 @cindex @code{REG_PARM_STACK_SPACE}, and @code{FUNCTION_ARG}
3500 You may use the macro @code{MUST_PASS_IN_STACK (@var{mode}, @var{type})}
3501 in the definition of this macro to determine if this argument is of a
3502 type that must be passed in the stack.  If @code{REG_PARM_STACK_SPACE}
3503 is not defined and @code{FUNCTION_ARG} returns nonzero for such an
3504 argument, the compiler will abort.  If @code{REG_PARM_STACK_SPACE} is
3505 defined, the argument will be computed in the stack and then loaded into
3506 a register.
3507
3508 @findex MUST_PASS_IN_STACK
3509 @item MUST_PASS_IN_STACK (@var{mode}, @var{type})
3510 Define as a C expression that evaluates to nonzero if we do not know how
3511 to pass TYPE solely in registers.  The file @file{expr.h} defines a
3512 definition that is usually appropriate, refer to @file{expr.h} for additional
3513 documentation.
3514
3515 @findex FUNCTION_INCOMING_ARG
3516 @item FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
3517 Define this macro if the target machine has ``register windows'', so
3518 that the register in which a function sees an arguments is not
3519 necessarily the same as the one in which the caller passed the
3520 argument.
3521
3522 For such machines, @code{FUNCTION_ARG} computes the register in which
3523 the caller passes the value, and @code{FUNCTION_INCOMING_ARG} should
3524 be defined in a similar fashion to tell the function being called
3525 where the arguments will arrive.
3526
3527 If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG}
3528 serves both purposes.
3529
3530 @findex FUNCTION_ARG_PARTIAL_NREGS
3531 @item FUNCTION_ARG_PARTIAL_NREGS (@var{cum}, @var{mode}, @var{type}, @var{named})
3532 A C expression for the number of words, at the beginning of an
3533 argument, that must be put in registers.  The value must be zero for
3534 arguments that are passed entirely in registers or that are entirely
3535 pushed on the stack.
3536
3537 On some machines, certain arguments must be passed partially in
3538 registers and partially in memory.  On these machines, typically the
3539 first @var{n} words of arguments are passed in registers, and the rest
3540 on the stack.  If a multi-word argument (a @code{double} or a
3541 structure) crosses that boundary, its first few words must be passed
3542 in registers and the rest must be pushed.  This macro tells the
3543 compiler when this occurs, and how many of the words should go in
3544 registers.
3545
3546 @code{FUNCTION_ARG} for these arguments should return the first
3547 register to be used by the caller for this argument; likewise
3548 @code{FUNCTION_INCOMING_ARG}, for the called function.
3549
3550 @findex FUNCTION_ARG_PASS_BY_REFERENCE
3551 @item FUNCTION_ARG_PASS_BY_REFERENCE (@var{cum}, @var{mode}, @var{type}, @var{named})
3552 A C expression that indicates when an argument must be passed by reference.
3553 If nonzero for an argument, a copy of that argument is made in memory and a
3554 pointer to the argument is passed instead of the argument itself.
3555 The pointer is passed in whatever way is appropriate for passing a pointer
3556 to that type.
3557
3558 On machines where @code{REG_PARM_STACK_SPACE} is not defined, a suitable
3559 definition of this macro might be
3560 @smallexample
3561 #define FUNCTION_ARG_PASS_BY_REFERENCE\
3562 (CUM, MODE, TYPE, NAMED)  \
3563   MUST_PASS_IN_STACK (MODE, TYPE)
3564 @end smallexample
3565 @c this is *still* too long.  --mew 5feb93
3566
3567 @findex FUNCTION_ARG_CALLEE_COPIES
3568 @item FUNCTION_ARG_CALLEE_COPIES (@var{cum}, @var{mode}, @var{type}, @var{named})
3569 If defined, a C expression that indicates when it is the called function's
3570 responsibility to make a copy of arguments passed by invisible reference.
3571 Normally, the caller makes a copy and passes the address of the copy to the
3572 routine being called.  When @code{FUNCTION_ARG_CALLEE_COPIES} is defined and is
3573 nonzero, the caller does not make a copy.  Instead, it passes a pointer to the
3574 ``live'' value.  The called function must not modify this value.  If it can be
3575 determined that the value won't be modified, it need not make a copy;
3576 otherwise a copy must be made.
3577
3578 @findex FUNCTION_ARG_REG_LITTLE_ENDIAN
3579 @item FUNCTION_ARG_REG_LITTLE_ENDIAN
3580 If defined TRUE on a big-endian system then structure arguments passed
3581 (and returned) in registers are passed in a little-endian manner instead of
3582 the big-endian manner.  On the HP-UX IA64 and PA64 platforms structures are
3583 aligned differently then integral values and setting this value to true will
3584 allow for the special handling of structure arguments and return values.
3585
3586 @findex CUMULATIVE_ARGS
3587 @item CUMULATIVE_ARGS
3588 A C type for declaring a variable that is used as the first argument of
3589 @code{FUNCTION_ARG} and other related values.  For some target machines,
3590 the type @code{int} suffices and can hold the number of bytes of
3591 argument so far.
3592
3593 There is no need to record in @code{CUMULATIVE_ARGS} anything about the
3594 arguments that have been passed on the stack.  The compiler has other
3595 variables to keep track of that.  For target machines on which all
3596 arguments are passed on the stack, there is no need to store anything in
3597 @code{CUMULATIVE_ARGS}; however, the data structure must exist and
3598 should not be empty, so use @code{int}.
3599
3600 @findex INIT_CUMULATIVE_ARGS
3601 @item INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{indirect})
3602 A C statement (sans semicolon) for initializing the variable @var{cum}
3603 for the state at the beginning of the argument list.  The variable has
3604 type @code{CUMULATIVE_ARGS}.  The value of @var{fntype} is the tree node
3605 for the data type of the function which will receive the args, or 0
3606 if the args are to a compiler support library function.  The value of
3607 @var{indirect} is nonzero when processing an indirect call, for example
3608 a call through a function pointer.  The value of @var{indirect} is zero
3609 for a call to an explicitly named function, a library function call, or when
3610 @code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function
3611 being compiled.
3612
3613 When processing a call to a compiler support library function,
3614 @var{libname} identifies which one.  It is a @code{symbol_ref} rtx which
3615 contains the name of the function, as a string.  @var{libname} is 0 when
3616 an ordinary C function call is being processed.  Thus, each time this
3617 macro is called, either @var{libname} or @var{fntype} is nonzero, but
3618 never both of them at once.
3619
3620 @findex INIT_CUMULATIVE_LIBCALL_ARGS
3621 @item INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname})
3622 Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls,
3623 it gets a @code{MODE} argument instead of @var{fntype}, that would be
3624 @code{NULL}.  @var{indirect} would always be zero, too.  If this macro
3625 is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname,
3626 0)} is used instead.
3627
3628 @findex INIT_CUMULATIVE_INCOMING_ARGS
3629 @item INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
3630 Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of
3631 finding the arguments for the function being compiled.  If this macro is
3632 undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
3633
3634 The value passed for @var{libname} is always 0, since library routines
3635 with special calling conventions are never compiled with GCC@.  The
3636 argument @var{libname} exists for symmetry with
3637 @code{INIT_CUMULATIVE_ARGS}.
3638 @c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
3639 @c --mew 5feb93   i switched the order of the sentences.  --mew 10feb93
3640
3641 @findex FUNCTION_ARG_ADVANCE
3642 @item FUNCTION_ARG_ADVANCE (@var{cum}, @var{mode}, @var{type}, @var{named})
3643 A C statement (sans semicolon) to update the summarizer variable
3644 @var{cum} to advance past an argument in the argument list.  The
3645 values @var{mode}, @var{type} and @var{named} describe that argument.
3646 Once this is done, the variable @var{cum} is suitable for analyzing
3647 the @emph{following} argument with @code{FUNCTION_ARG}, etc.
3648
3649 This macro need not do anything if the argument in question was passed
3650 on the stack.  The compiler knows how to track the amount of stack space
3651 used for arguments without any special help.
3652
3653 @findex FUNCTION_ARG_PADDING
3654 @item FUNCTION_ARG_PADDING (@var{mode}, @var{type})
3655 If defined, a C expression which determines whether, and in which direction,
3656 to pad out an argument with extra space.  The value should be of type
3657 @code{enum direction}: either @code{upward} to pad above the argument,
3658 @code{downward} to pad below, or @code{none} to inhibit padding.
3659
3660 The @emph{amount} of padding is always just enough to reach the next
3661 multiple of @code{FUNCTION_ARG_BOUNDARY}; this macro does not control
3662 it.
3663
3664 This macro has a default definition which is right for most systems.
3665 For little-endian machines, the default is to pad upward.  For
3666 big-endian machines, the default is to pad downward for an argument of
3667 constant size shorter than an @code{int}, and upward otherwise.
3668
3669 @findex PAD_VARARGS_DOWN
3670 @item PAD_VARARGS_DOWN
3671 If defined, a C expression which determines whether the default
3672 implementation of va_arg will attempt to pad down before reading the
3673 next argument, if that argument is smaller than its aligned space as
3674 controlled by @code{PARM_BOUNDARY}.  If this macro is not defined, all such
3675 arguments are padded down if @code{BYTES_BIG_ENDIAN} is true.
3676
3677 @findex FUNCTION_ARG_BOUNDARY
3678 @item FUNCTION_ARG_BOUNDARY (@var{mode}, @var{type})
3679 If defined, a C expression that gives the alignment boundary, in bits,
3680 of an argument with the specified mode and type.  If it is not defined,
3681 @code{PARM_BOUNDARY} is used for all arguments.
3682
3683 @findex FUNCTION_ARG_REGNO_P
3684 @item FUNCTION_ARG_REGNO_P (@var{regno})
3685 A C expression that is nonzero if @var{regno} is the number of a hard
3686 register in which function arguments are sometimes passed.  This does
3687 @emph{not} include implicit arguments such as the static chain and
3688 the structure-value address.  On many machines, no registers can be
3689 used for this purpose since all function arguments are pushed on the
3690 stack.
3691
3692 @findex LOAD_ARGS_REVERSED
3693 @item LOAD_ARGS_REVERSED
3694 If defined, the order in which arguments are loaded into their
3695 respective argument registers is reversed so that the last
3696 argument is loaded first.  This macro only affects arguments
3697 passed in registers.
3698
3699 @end table
3700
3701 @node Scalar Return
3702 @subsection How Scalar Function Values Are Returned
3703 @cindex return values in registers
3704 @cindex values, returned by functions
3705 @cindex scalars, returned as values
3706
3707 This section discusses the macros that control returning scalars as
3708 values---values that can fit in registers.
3709
3710 @table @code
3711 @findex FUNCTION_VALUE
3712 @item FUNCTION_VALUE (@var{valtype}, @var{func})
3713 A C expression to create an RTX representing the place where a
3714 function returns a value of data type @var{valtype}.  @var{valtype} is
3715 a tree node representing a data type.  Write @code{TYPE_MODE
3716 (@var{valtype})} to get the machine mode used to represent that type.
3717 On many machines, only the mode is relevant.  (Actually, on most
3718 machines, scalar values are returned in the same place regardless of
3719 mode).
3720
3721 The value of the expression is usually a @code{reg} RTX for the hard
3722 register where the return value is stored.  The value can also be a
3723 @code{parallel} RTX, if the return value is in multiple places.  See
3724 @code{FUNCTION_ARG} for an explanation of the @code{parallel} form.
3725
3726 If @code{PROMOTE_FUNCTION_RETURN} is defined, you must apply the same
3727 promotion rules specified in @code{PROMOTE_MODE} if @var{valtype} is a
3728 scalar type.
3729
3730 If the precise function being called is known, @var{func} is a tree
3731 node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
3732 pointer.  This makes it possible to use a different value-returning
3733 convention for specific functions when all their calls are
3734 known.
3735
3736 @code{FUNCTION_VALUE} is not used for return vales with aggregate data
3737 types, because these are returned in another way.  See
3738 @code{STRUCT_VALUE_REGNUM} and related macros, below.
3739
3740 @findex FUNCTION_OUTGOING_VALUE
3741 @item FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
3742 Define this macro if the target machine has ``register windows''
3743 so that the register in which a function returns its value is not
3744 the same as the one in which the caller sees the value.
3745
3746 For such machines, @code{FUNCTION_VALUE} computes the register in which
3747 the caller will see the value.  @code{FUNCTION_OUTGOING_VALUE} should be
3748 defined in a similar fashion to tell the function where to put the
3749 value.
3750
3751 If @code{FUNCTION_OUTGOING_VALUE} is not defined,
3752 @code{FUNCTION_VALUE} serves both purposes.
3753
3754 @code{FUNCTION_OUTGOING_VALUE} is not used for return vales with
3755 aggregate data types, because these are returned in another way.  See
3756 @code{STRUCT_VALUE_REGNUM} and related macros, below.
3757
3758 @findex LIBCALL_VALUE
3759 @item LIBCALL_VALUE (@var{mode})
3760 A C expression to create an RTX representing the place where a library
3761 function returns a value of mode @var{mode}.  If the precise function
3762 being called is known, @var{func} is a tree node
3763 (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
3764 pointer.  This makes it possible to use a different value-returning
3765 convention for specific functions when all their calls are
3766 known.
3767
3768 Note that ``library function'' in this context means a compiler
3769 support routine, used to perform arithmetic, whose name is known
3770 specially by the compiler and was not mentioned in the C code being
3771 compiled.
3772
3773 The definition of @code{LIBRARY_VALUE} need not be concerned aggregate
3774 data types, because none of the library functions returns such types.
3775
3776 @findex FUNCTION_VALUE_REGNO_P
3777 @item FUNCTION_VALUE_REGNO_P (@var{regno})
3778 A C expression that is nonzero if @var{regno} is the number of a hard
3779 register in which the values of called function may come back.
3780
3781 A register whose use for returning values is limited to serving as the
3782 second of a pair (for a value of type @code{double}, say) need not be
3783 recognized by this macro.  So for most machines, this definition
3784 suffices:
3785
3786 @example
3787 #define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
3788 @end example
3789
3790 If the machine has register windows, so that the caller and the called
3791 function use different registers for the return value, this macro
3792 should recognize only the caller's register numbers.
3793
3794 @findex APPLY_RESULT_SIZE
3795 @item APPLY_RESULT_SIZE
3796 Define this macro if @samp{untyped_call} and @samp{untyped_return}
3797 need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for
3798 saving and restoring an arbitrary return value.
3799 @end table
3800
3801 @node Aggregate Return
3802 @subsection How Large Values Are Returned
3803 @cindex aggregates as return values
3804 @cindex large return values
3805 @cindex returning aggregate values
3806 @cindex structure value address
3807
3808 When a function value's mode is @code{BLKmode} (and in some other
3809 cases), the value is not returned according to @code{FUNCTION_VALUE}
3810 (@pxref{Scalar Return}).  Instead, the caller passes the address of a
3811 block of memory in which the value should be stored.  This address
3812 is called the @dfn{structure value address}.
3813
3814 This section describes how to control returning structure values in
3815 memory.
3816
3817 @table @code
3818 @findex RETURN_IN_MEMORY
3819 @item RETURN_IN_MEMORY (@var{type})
3820 A C expression which can inhibit the returning of certain function
3821 values in registers, based on the type of value.  A nonzero value says
3822 to return the function value in memory, just as large structures are
3823 always returned.  Here @var{type} will be a C expression of type
3824 @code{tree}, representing the data type of the value.
3825
3826 Note that values of mode @code{BLKmode} must be explicitly handled
3827 by this macro.  Also, the option @option{-fpcc-struct-return}
3828 takes effect regardless of this macro.  On most systems, it is
3829 possible to leave the macro undefined; this causes a default
3830 definition to be used, whose value is the constant 1 for @code{BLKmode}
3831 values, and 0 otherwise.
3832
3833 Do not use this macro to indicate that structures and unions should always
3834 be returned in memory.  You should instead use @code{DEFAULT_PCC_STRUCT_RETURN}
3835 to indicate this.
3836
3837 @findex DEFAULT_PCC_STRUCT_RETURN
3838 @item DEFAULT_PCC_STRUCT_RETURN
3839 Define this macro to be 1 if all structure and union return values must be
3840 in memory.  Since this results in slower code, this should be defined
3841 only if needed for compatibility with other compilers or with an ABI@.
3842 If you define this macro to be 0, then the conventions used for structure
3843 and union return values are decided by the @code{RETURN_IN_MEMORY} macro.
3844
3845 If not defined, this defaults to the value 1.
3846
3847 @findex STRUCT_VALUE_REGNUM
3848 @item STRUCT_VALUE_REGNUM
3849 If the structure value address is passed in a register, then
3850 @code{STRUCT_VALUE_REGNUM} should be the number of that register.
3851
3852 @findex STRUCT_VALUE
3853 @item STRUCT_VALUE
3854 If the structure value address is not passed in a register, define
3855 @code{STRUCT_VALUE} as an expression returning an RTX for the place
3856 where the address is passed.  If it returns 0, the address is passed as
3857 an ``invisible'' first argument.
3858
3859 @findex STRUCT_VALUE_INCOMING_REGNUM
3860 @item STRUCT_VALUE_INCOMING_REGNUM
3861 On some architectures the place where the structure value address
3862 is found by the called function is not the same place that the
3863 caller put it.  This can be due to register windows, or it could
3864 be because the function prologue moves it to a different place.
3865
3866 If the incoming location of the structure value address is in a
3867 register, define this macro as the register number.
3868
3869 @findex STRUCT_VALUE_INCOMING
3870 @item STRUCT_VALUE_INCOMING
3871 If the incoming location is not a register, then you should define
3872 @code{STRUCT_VALUE_INCOMING} as an expression for an RTX for where the
3873 called function should find the value.  If it should find the value on
3874 the stack, define this to create a @code{mem} which refers to the frame
3875 pointer.  A definition of 0 means that the address is passed as an
3876 ``invisible'' first argument.
3877
3878 @findex PCC_STATIC_STRUCT_RETURN
3879 @item PCC_STATIC_STRUCT_RETURN
3880 Define this macro if the usual system convention on the target machine
3881 for returning structures and unions is for the called function to return
3882 the address of a static variable containing the value.
3883
3884 Do not define this if the usual system convention is for the caller to
3885 pass an address to the subroutine.
3886
3887 This macro has effect in @option{-fpcc-struct-return} mode, but it does
3888 nothing when you use @option{-freg-struct-return} mode.
3889 @end table
3890
3891 @node Caller Saves
3892 @subsection Caller-Saves Register Allocation
3893
3894 If you enable it, GCC can save registers around function calls.  This
3895 makes it possible to use call-clobbered registers to hold variables that
3896 must live across calls.
3897
3898 @table @code
3899 @findex DEFAULT_CALLER_SAVES
3900 @item DEFAULT_CALLER_SAVES
3901 Define this macro if function calls on the target machine do not preserve
3902 any registers; in other words, if @code{CALL_USED_REGISTERS} has 1
3903 for all registers.  When defined, this macro enables @option{-fcaller-saves}
3904 by default for all optimization levels.  It has no effect for optimization
3905 levels 2 and higher, where @option{-fcaller-saves} is the default.
3906
3907 @findex CALLER_SAVE_PROFITABLE
3908 @item CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls})
3909 A C expression to determine whether it is worthwhile to consider placing
3910 a pseudo-register in a call-clobbered hard register and saving and
3911 restoring it around each function call.  The expression should be 1 when
3912 this is worth doing, and 0 otherwise.
3913
3914 If you don't define this macro, a default is used which is good on most
3915 machines: @code{4 * @var{calls} < @var{refs}}.
3916
3917 @findex HARD_REGNO_CALLER_SAVE_MODE
3918 @item HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs})
3919 A C expression specifying which mode is required for saving @var{nregs}
3920 of a pseudo-register in call-clobbered hard register @var{regno}.  If
3921 @var{regno} is unsuitable for caller save, @code{VOIDmode} should be
3922 returned.  For most machines this macro need not be defined since GCC
3923 will select the smallest suitable mode.
3924 @end table
3925
3926 @node Function Entry
3927 @subsection Function Entry and Exit
3928 @cindex function entry and exit
3929 @cindex prologue
3930 @cindex epilogue
3931
3932 This section describes the macros that output function entry
3933 (@dfn{prologue}) and exit (@dfn{epilogue}) code.
3934
3935 @deftypefn {Target Hook} void TARGET_ASM_FUNCTION_PROLOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
3936 If defined, a function that outputs the assembler code for entry to a
3937 function.  The prologue is responsible for setting up the stack frame,
3938 initializing the frame pointer register, saving registers that must be
3939 saved, and allocating @var{size} additional bytes of storage for the
3940 local variables.  @var{size} is an integer.  @var{file} is a stdio
3941 stream to which the assembler code should be output.
3942
3943 The label for the beginning of the function need not be output by this
3944 macro.  That has already been done when the macro is run.
3945
3946 @findex regs_ever_live
3947 To determine which registers to save, the macro can refer to the array
3948 @code{regs_ever_live}: element @var{r} is nonzero if hard register
3949 @var{r} is used anywhere within the function.  This implies the function
3950 prologue should save register @var{r}, provided it is not one of the
3951 call-used registers.  (@code{TARGET_ASM_FUNCTION_EPILOGUE} must likewise use
3952 @code{regs_ever_live}.)
3953
3954 On machines that have ``register windows'', the function entry code does
3955 not save on the stack the registers that are in the windows, even if
3956 they are supposed to be preserved by function calls; instead it takes
3957 appropriate steps to ``push'' the register stack, if any non-call-used
3958 registers are used in the function.
3959
3960 @findex frame_pointer_needed
3961 On machines where functions may or may not have frame-pointers, the
3962 function entry code must vary accordingly; it must set up the frame
3963 pointer if one is wanted, and not otherwise.  To determine whether a
3964 frame pointer is in wanted, the macro can refer to the variable
3965 @code{frame_pointer_needed}.  The variable's value will be 1 at run
3966 time in a function that needs a frame pointer.  @xref{Elimination}.
3967
3968 The function entry code is responsible for allocating any stack space
3969 required for the function.  This stack space consists of the regions
3970 listed below.  In most cases, these regions are allocated in the
3971 order listed, with the last listed region closest to the top of the
3972 stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and
3973 the highest address if it is not defined).  You can use a different order
3974 for a machine if doing so is more convenient or required for
3975 compatibility reasons.  Except in cases where required by standard
3976 or by a debugger, there is no reason why the stack layout used by GCC
3977 need agree with that used by other compilers for a machine.
3978 @end deftypefn
3979
3980 @deftypefn {Target Hook} void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *@var{file})
3981 If defined, a function that outputs assembler code at the end of a
3982 prologue.  This should be used when the function prologue is being
3983 emitted as RTL, and you have some extra assembler that needs to be
3984 emitted.  @xref{prologue instruction pattern}.
3985 @end deftypefn
3986
3987 @deftypefn {Target Hook} void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *@var{file})
3988 If defined, a function that outputs assembler code at the start of an
3989 epilogue.  This should be used when the function epilogue is being
3990 emitted as RTL, and you have some extra assembler that needs to be
3991 emitted.  @xref{epilogue instruction pattern}.
3992 @end deftypefn
3993
3994 @deftypefn {Target Hook} void TARGET_ASM_FUNCTION_EPILOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
3995 If defined, a function that outputs the assembler code for exit from a
3996 function.  The epilogue is responsible for restoring the saved
3997 registers and stack pointer to their values when the function was
3998 called, and returning control to the caller.  This macro takes the
3999 same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the
4000 registers to restore are determined from @code{regs_ever_live} and
4001 @code{CALL_USED_REGISTERS} in the same way.
4002
4003 On some machines, there is a single instruction that does all the work
4004 of returning from the function.  On these machines, give that
4005 instruction the name @samp{return} and do not define the macro
4006 @code{TARGET_ASM_FUNCTION_EPILOGUE} at all.
4007
4008 Do not define a pattern named @samp{return} if you want the
4009 @code{TARGET_ASM_FUNCTION_EPILOGUE} to be used.  If you want the target
4010 switches to control whether return instructions or epilogues are used,
4011 define a @samp{return} pattern with a validity condition that tests the
4012 target switches appropriately.  If the @samp{return} pattern's validity
4013 condition is false, epilogues will be used.
4014
4015 On machines where functions may or may not have frame-pointers, the
4016 function exit code must vary accordingly.  Sometimes the code for these
4017 two cases is completely different.  To determine whether a frame pointer
4018 is wanted, the macro can refer to the variable
4019 @code{frame_pointer_needed}.  The variable's value will be 1 when compiling
4020 a function that needs a frame pointer.
4021
4022 Normally, @code{TARGET_ASM_FUNCTION_PROLOGUE} and
4023 @code{TARGET_ASM_FUNCTION_EPILOGUE} must treat leaf functions specially.
4024 The C variable @code{current_function_is_leaf} is nonzero for such a
4025 function.  @xref{Leaf Functions}.
4026
4027 On some machines, some functions pop their arguments on exit while
4028 others leave that for the caller to do.  For example, the 68020 when
4029 given @option{-mrtd} pops arguments in functions that take a fixed
4030 number of arguments.
4031
4032 @findex current_function_pops_args
4033 Your definition of the macro @code{RETURN_POPS_ARGS} decides which
4034 functions pop their own arguments.  @code{TARGET_ASM_FUNCTION_EPILOGUE}
4035 needs to know what was decided.  The variable that is called
4036 @code{current_function_pops_args} is the number of bytes of its
4037 arguments that a function should pop.  @xref{Scalar Return}.
4038 @c what is the "its arguments" in the above sentence referring to, pray
4039 @c tell?  --mew 5feb93
4040 @end deftypefn
4041
4042 @table @code
4043
4044 @itemize @bullet
4045 @item
4046 @findex current_function_pretend_args_size
4047 A region of @code{current_function_pretend_args_size} bytes of
4048 uninitialized space just underneath the first argument arriving on the
4049 stack.  (This may not be at the very start of the allocated stack region
4050 if the calling sequence has pushed anything else since pushing the stack
4051 arguments.  But usually, on such machines, nothing else has been pushed
4052 yet, because the function prologue itself does all the pushing.)  This
4053 region is used on machines where an argument may be passed partly in
4054 registers and partly in memory, and, in some cases to support the
4055 features in @code{<stdarg.h>}.
4056
4057 @item
4058 An area of memory used to save certain registers used by the function.
4059 The size of this area, which may also include space for such things as
4060 the return address and pointers to previous stack frames, is
4061 machine-specific and usually depends on which registers have been used
4062 in the function.  Machines with register windows often do not require
4063 a save area.
4064
4065 @item
4066 A region of at least @var{size} bytes, possibly rounded up to an allocation
4067 boundary, to contain the local variables of the function.  On some machines,
4068 this region and the save area may occur in the opposite order, with the
4069 save area closer to the top of the stack.
4070
4071 @item
4072 @cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
4073 Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
4074 @code{current_function_outgoing_args_size} bytes to be used for outgoing
4075 argument lists of the function.  @xref{Stack Arguments}.
4076 @end itemize
4077
4078 Normally, it is necessary for the macros
4079 @code{TARGET_ASM_FUNCTION_PROLOGUE} and
4080 @code{TARGET_ASM_FUNCTION_EPILOGUE} to treat leaf functions specially.
4081 The C variable @code{current_function_is_leaf} is nonzero for such a
4082 function.
4083
4084 @findex EXIT_IGNORE_STACK
4085 @item EXIT_IGNORE_STACK
4086 Define this macro as a C expression that is nonzero if the return
4087 instruction or the function epilogue ignores the value of the stack
4088 pointer; in other words, if it is safe to delete an instruction to
4089 adjust the stack pointer before a return from the function.
4090
4091 Note that this macro's value is relevant only for functions for which
4092 frame pointers are maintained.  It is never safe to delete a final
4093 stack adjustment in a function that has no frame pointer, and the
4094 compiler knows this regardless of @code{EXIT_IGNORE_STACK}.
4095
4096 @findex EPILOGUE_USES
4097 @item EPILOGUE_USES (@var{regno})
4098 Define this macro as a C expression that is nonzero for registers that are
4099 used by the epilogue or the @samp{return} pattern.  The stack and frame
4100 pointer registers are already be assumed to be used as needed.
4101
4102 @findex EH_USES
4103 @item EH_USES (@var{regno})
4104 Define this macro as a C expression that is nonzero for registers that are
4105 used by the exception handling mechanism, and so should be considered live
4106 on entry to an exception edge.
4107
4108 @findex DELAY_SLOTS_FOR_EPILOGUE
4109 @item DELAY_SLOTS_FOR_EPILOGUE
4110 Define this macro if the function epilogue contains delay slots to which
4111 instructions from the rest of the function can be ``moved''.  The
4112 definition should be a C expression whose value is an integer
4113 representing the number of delay slots there.
4114
4115 @findex ELIGIBLE_FOR_EPILOGUE_DELAY
4116 @item ELIGIBLE_FOR_EPILOGUE_DELAY (@var{insn}, @var{n})
4117 A C expression that returns 1 if @var{insn} can be placed in delay
4118 slot number @var{n} of the epilogue.
4119
4120 The argument @var{n} is an integer which identifies the delay slot now
4121 being considered (since different slots may have different rules of
4122 eligibility).  It is never negative and is always less than the number
4123 of epilogue delay slots (what @code{DELAY_SLOTS_FOR_EPILOGUE} returns).
4124 If you reject a particular insn for a given delay slot, in principle, it
4125 may be reconsidered for a subsequent delay slot.  Also, other insns may
4126 (at least in principle) be considered for the so far unfilled delay
4127 slot.
4128
4129 @findex current_function_epilogue_delay_list
4130 @findex final_scan_insn
4131 The insns accepted to fill the epilogue delay slots are put in an RTL
4132 list made with @code{insn_list} objects, stored in the variable
4133 @code{current_function_epilogue_delay_list}.  The insn for the first
4134 delay slot comes first in the list.  Your definition of the macro
4135 @code{TARGET_ASM_FUNCTION_EPILOGUE} should fill the delay slots by
4136 outputting the insns in this list, usually by calling
4137 @code{final_scan_insn}.
4138
4139 You need not define this macro if you did not define
4140 @code{DELAY_SLOTS_FOR_EPILOGUE}.
4141
4142 @findex ASM_OUTPUT_MI_THUNK
4143 @item ASM_OUTPUT_MI_THUNK (@var{file}, @var{thunk_fndecl}, @var{delta}, @var{function})
4144 A C compound statement that outputs the assembler code for a thunk
4145 function, used to implement C++ virtual function calls with multiple
4146 inheritance.  The thunk acts as a wrapper around a virtual function,
4147 adjusting the implicit object parameter before handing control off to
4148 the real function.
4149
4150 First, emit code to add the integer @var{delta} to the location that
4151 contains the incoming first argument.  Assume that this argument
4152 contains a pointer, and is the one used to pass the @code{this} pointer
4153 in C++.  This is the incoming argument @emph{before} the function prologue,
4154 e.g.@: @samp{%o0} on a sparc.  The addition must preserve the values of
4155 all other incoming arguments.
4156
4157 After the addition, emit code to jump to @var{function}, which is a
4158 @code{FUNCTION_DECL}.  This is a direct pure jump, not a call, and does
4159 not touch the return address.  Hence returning from @var{FUNCTION} will
4160 return to whoever called the current @samp{thunk}.
4161
4162 The effect must be as if @var{function} had been called directly with
4163 the adjusted first argument.  This macro is responsible for emitting all
4164 of the code for a thunk function; @code{TARGET_ASM_FUNCTION_PROLOGUE}
4165 and @code{TARGET_ASM_FUNCTION_EPILOGUE} are not invoked.
4166
4167 The @var{thunk_fndecl} is redundant.  (@var{delta} and @var{function}
4168 have already been extracted from it.)  It might possibly be useful on
4169 some targets, but probably not.
4170
4171 If you do not define this macro, the target-independent code in the C++
4172 front end will generate a less efficient heavyweight thunk that calls
4173 @var{function} instead of jumping to it.  The generic approach does
4174 not support varargs.
4175 @end table
4176
4177 @node Profiling
4178 @subsection Generating Code for Profiling
4179 @cindex profiling, code generation
4180
4181 These macros will help you generate code for profiling.
4182
4183 @table @code
4184 @findex FUNCTION_PROFILER
4185 @item FUNCTION_PROFILER (@var{file}, @var{labelno})
4186 A C statement or compound statement to output to @var{file} some
4187 assembler code to call the profiling subroutine @code{mcount}.
4188
4189 @findex mcount
4190 The details of how @code{mcount} expects to be called are determined by
4191 your operating system environment, not by GCC@.  To figure them out,
4192 compile a small program for profiling using the system's installed C
4193 compiler and look at the assembler code that results.
4194
4195 Older implementations of @code{mcount} expect the address of a counter
4196 variable to be loaded into some register.  The name of this variable is
4197 @samp{LP} followed by the number @var{labelno}, so you would generate
4198 the name using @samp{LP%d} in a @code{fprintf}.
4199
4200 @findex PROFILE_HOOK
4201 @item PROFILE_HOOK
4202 A C statement or compound statement to output to @var{file} some assembly
4203 code to call the profiling subroutine @code{mcount} even the target does
4204 not support profiling.
4205
4206 @findex NO_PROFILE_COUNTERS
4207 @item NO_PROFILE_COUNTERS
4208 Define this macro if the @code{mcount} subroutine on your system does
4209 not need a counter variable allocated for each function.  This is true
4210 for almost all modern implementations.  If you define this macro, you
4211 must not use the @var{labelno} argument to @code{FUNCTION_PROFILER}.
4212
4213 @findex PROFILE_BEFORE_PROLOGUE
4214 @item PROFILE_BEFORE_PROLOGUE
4215 Define this macro if the code for function profiling should come before
4216 the function prologue.  Normally, the profiling code comes after.
4217 @end table
4218
4219 @node Tail Calls
4220 @subsection Permitting tail calls
4221 @cindex tail calls
4222
4223 @table @code
4224 @findex FUNCTION_OK_FOR_SIBCALL
4225 @item FUNCTION_OK_FOR_SIBCALL (@var{decl})
4226 A C expression that evaluates to true if it is ok to perform a sibling
4227 call to @var{decl} from the current function.
4228
4229 It is not uncommon for limitations of calling conventions to prevent
4230 tail calls to functions outside the current unit of translation, or
4231 during PIC compilation.  Use this macro to enforce these restrictions,
4232 as the @code{sibcall} md pattern can not fail, or fall over to a
4233 ``normal'' call.
4234 @end table
4235
4236 @node Varargs
4237 @section Implementing the Varargs Macros
4238 @cindex varargs implementation
4239
4240 GCC comes with an implementation of @code{<varargs.h>} and
4241 @code{<stdarg.h>} that work without change on machines that pass arguments
4242 on the stack.  Other machines require their own implementations of
4243 varargs, and the two machine independent header files must have
4244 conditionals to include it.
4245
4246 ISO @code{<stdarg.h>} differs from traditional @code{<varargs.h>} mainly in
4247 the calling convention for @code{va_start}.  The traditional
4248 implementation takes just one argument, which is the variable in which
4249 to store the argument pointer.  The ISO implementation of
4250 @code{va_start} takes an additional second argument.  The user is
4251 supposed to write the last named argument of the function here.
4252
4253 However, @code{va_start} should not use this argument.  The way to find
4254 the end of the named arguments is with the built-in functions described
4255 below.
4256
4257 @table @code
4258 @findex __builtin_saveregs
4259 @item __builtin_saveregs ()
4260 Use this built-in function to save the argument registers in memory so
4261 that the varargs mechanism can access them.  Both ISO and traditional
4262 versions of @code{va_start} must use @code{__builtin_saveregs}, unless
4263 you use @code{SETUP_INCOMING_VARARGS} (see below) instead.
4264
4265 On some machines, @code{__builtin_saveregs} is open-coded under the
4266 control of the macro @code{EXPAND_BUILTIN_SAVEREGS}.  On other machines,
4267 it calls a routine written in assembler language, found in
4268 @file{libgcc2.c}.
4269
4270 Code generated for the call to @code{__builtin_saveregs} appears at the
4271 beginning of the function, as opposed to where the call to
4272 @code{__builtin_saveregs} is written, regardless of what the code is.
4273 This is because the registers must be saved before the function starts
4274 to use them for its own purposes.
4275 @c i rewrote the first sentence above to fix an overfull hbox. --mew
4276 @c 10feb93
4277
4278 @findex __builtin_args_info
4279 @item __builtin_args_info (@var{category})
4280 Use this built-in function to find the first anonymous arguments in
4281 registers.
4282
4283 In general, a machine may have several categories of registers used for
4284 arguments, each for a particular category of data types.  (For example,
4285 on some machines, floating-point registers are used for floating-point
4286 arguments while other arguments are passed in the general registers.)
4287 To make non-varargs functions use the proper calling convention, you
4288 have defined the @code{CUMULATIVE_ARGS} data type to record how many
4289 registers in each category have been used so far
4290
4291 @code{__builtin_args_info} accesses the same data structure of type
4292 @code{CUMULATIVE_ARGS} after the ordinary argument layout is finished
4293 with it, with @var{category} specifying which word to access.  Thus, the
4294 value indicates the first unused register in a given category.
4295
4296 Normally, you would use @code{__builtin_args_info} in the implementation
4297 of @code{va_start}, accessing each category just once and storing the
4298 value in the @code{va_list} object.  This is because @code{va_list} will
4299 have to update the values, and there is no way to alter the
4300 values accessed by @code{__builtin_args_info}.
4301
4302 @findex __builtin_next_arg
4303 @item __builtin_next_arg (@var{lastarg})
4304 This is the equivalent of @code{__builtin_args_info}, for stack
4305 arguments.  It returns the address of the first anonymous stack
4306 argument, as type @code{void *}.  If @code{ARGS_GROW_DOWNWARD}, it
4307 returns the address of the location above the first anonymous stack
4308 argument.  Use it in @code{va_start} to initialize the pointer for
4309 fetching arguments from the stack.  Also use it in @code{va_start} to
4310 verify that the second parameter @var{lastarg} is the last named argument
4311 of the current function.
4312
4313 @findex __builtin_classify_type
4314 @item __builtin_classify_type (@var{object})
4315 Since each machine has its own conventions for which data types are
4316 passed in which kind of register, your implementation of @code{va_arg}
4317 has to embody these conventions.  The easiest way to categorize the
4318 specified data type is to use @code{__builtin_classify_type} together
4319 with @code{sizeof} and @code{__alignof__}.
4320
4321 @code{__builtin_classify_type} ignores the value of @var{object},
4322 considering only its data type.  It returns an integer describing what
4323 kind of type that is---integer, floating, pointer, structure, and so on.
4324
4325 The file @file{typeclass.h} defines an enumeration that you can use to
4326 interpret the values of @code{__builtin_classify_type}.
4327 @end table
4328
4329 These machine description macros help implement varargs:
4330
4331 @table @code
4332 @findex EXPAND_BUILTIN_SAVEREGS
4333 @item EXPAND_BUILTIN_SAVEREGS ()
4334 If defined, is a C expression that produces the machine-specific code
4335 for a call to @code{__builtin_saveregs}.  This code will be moved to the
4336 very beginning of the function, before any parameter access are made.
4337 The return value of this function should be an RTX that contains the
4338 value to use as the return of @code{__builtin_saveregs}.
4339
4340 @findex SETUP_INCOMING_VARARGS
4341 @item SETUP_INCOMING_VARARGS (@var{args_so_far}, @var{mode}, @var{type}, @var{pretend_args_size}, @var{second_time})
4342 This macro offers an alternative to using @code{__builtin_saveregs} and
4343 defining the macro @code{EXPAND_BUILTIN_SAVEREGS}.  Use it to store the
4344 anonymous register arguments into the stack so that all the arguments
4345 appear to have been passed consecutively on the stack.  Once this is
4346 done, you can use the standard implementation of varargs that works for
4347 machines that pass all their arguments on the stack.
4348
4349 The argument @var{args_so_far} is the @code{CUMULATIVE_ARGS} data
4350 structure, containing the values that are obtained after processing the
4351 named arguments.  The arguments @var{mode} and @var{type} describe the
4352 last named argument---its machine mode and its data type as a tree node.
4353
4354 The macro implementation should do two things: first, push onto the
4355 stack all the argument registers @emph{not} used for the named
4356 arguments, and second, store the size of the data thus pushed into the
4357 @code{int}-valued variable whose name is supplied as the argument
4358 @var{pretend_args_size}.  The value that you store here will serve as
4359 additional offset for setting up the stack frame.
4360
4361 Because you must generate code to push the anonymous arguments at
4362 compile time without knowing their data types,
4363 @code{SETUP_INCOMING_VARARGS} is only useful on machines that have just
4364 a single category of argument register and use it uniformly for all data
4365 types.
4366
4367 If the argument @var{second_time} is nonzero, it means that the
4368 arguments of the function are being analyzed for the second time.  This
4369 happens for an inline function, which is not actually compiled until the
4370 end of the source file.  The macro @code{SETUP_INCOMING_VARARGS} should
4371 not generate any instructions in this case.
4372
4373 @findex STRICT_ARGUMENT_NAMING
4374 @item STRICT_ARGUMENT_NAMING
4375 Define this macro to be a nonzero value if the location where a function
4376 argument is passed depends on whether or not it is a named argument.
4377
4378 This macro controls how the @var{named} argument to @code{FUNCTION_ARG}
4379 is set for varargs and stdarg functions.  If this macro returns a
4380 nonzero value, the @var{named} argument is always true for named
4381 arguments, and false for unnamed arguments.  If it returns a value of
4382 zero, but @code{SETUP_INCOMING_VARARGS} is defined, then all arguments
4383 are treated as named.  Otherwise, all named arguments except the last
4384 are treated as named.
4385
4386 You need not define this macro if it always returns zero.
4387
4388 @findex PRETEND_OUTGOING_VARARGS_NAMED
4389 @item PRETEND_OUTGOING_VARARGS_NAMED
4390 If you need to conditionally change ABIs so that one works with
4391 @code{SETUP_INCOMING_VARARGS}, but the other works like neither
4392 @code{SETUP_INCOMING_VARARGS} nor @code{STRICT_ARGUMENT_NAMING} was
4393 defined, then define this macro to return nonzero if
4394 @code{SETUP_INCOMING_VARARGS} is used, zero otherwise.
4395 Otherwise, you should not define this macro.
4396 @end table
4397
4398 @node Trampolines
4399 @section Trampolines for Nested Functions
4400 @cindex trampolines for nested functions
4401 @cindex nested functions, trampolines for
4402
4403 A @dfn{trampoline} is a small piece of code that is created at run time
4404 when the address of a nested function is taken.  It normally resides on
4405 the stack, in the stack frame of the containing function.  These macros
4406 tell GCC how to generate code to allocate and initialize a
4407 trampoline.
4408
4409 The instructions in the trampoline must do two things: load a constant
4410 address into the static chain register, and jump to the real address of
4411 the nested function.  On CISC machines such as the m68k, this requires
4412 two instructions, a move immediate and a jump.  Then the two addresses
4413 exist in the trampoline as word-long immediate operands.  On RISC
4414 machines, it is often necessary to load each address into a register in
4415 two parts.  Then pieces of each address form separate immediate
4416 operands.
4417
4418 The code generated to initialize the trampoline must store the variable
4419 parts---the static chain value and the function address---into the
4420 immediate operands of the instructions.  On a CISC machine, this is
4421 simply a matter of copying each address to a memory reference at the
4422 proper offset from the start of the trampoline.  On a RISC machine, it
4423 may be necessary to take out pieces of the address and store them
4424 separately.
4425
4426 @table @code
4427 @findex TRAMPOLINE_TEMPLATE
4428 @item TRAMPOLINE_TEMPLATE (@var{file})
4429 A C statement to output, on the stream @var{file}, assembler code for a
4430 block of data that contains the constant parts of a trampoline.  This
4431 code should not include a label---the label is taken care of
4432 automatically.
4433
4434 If you do not define this macro, it means no template is needed
4435 for the target.  Do not define this macro on systems where the block move
4436 code to copy the trampoline into place would be larger than the code
4437 to generate it on the spot.
4438
4439 @findex TRAMPOLINE_SECTION
4440 @item TRAMPOLINE_SECTION
4441 The name of a subroutine to switch to the section in which the
4442 trampoline template is to be placed (@pxref{Sections}).  The default is
4443 a value of @samp{readonly_data_section}, which places the trampoline in
4444 the section containing read-only data.
4445
4446 @findex TRAMPOLINE_SIZE
4447 @item TRAMPOLINE_SIZE
4448 A C expression for the size in bytes of the trampoline, as an integer.
4449
4450 @findex TRAMPOLINE_ALIGNMENT
4451 @item TRAMPOLINE_ALIGNMENT
4452 Alignment required for trampolines, in bits.
4453
4454 If you don't define this macro, the value of @code{BIGGEST_ALIGNMENT}
4455 is used for aligning trampolines.
4456
4457 @findex INITIALIZE_TRAMPOLINE
4458 @item INITIALIZE_TRAMPOLINE (@var{addr}, @var{fnaddr}, @var{static_chain})
4459 A C statement to initialize the variable parts of a trampoline.
4460 @var{addr} is an RTX for the address of the trampoline; @var{fnaddr} is
4461 an RTX for the address of the nested function; @var{static_chain} is an
4462 RTX for the static chain value that should be passed to the function
4463 when it is called.
4464
4465 @findex TRAMPOLINE_ADJUST_ADDRESS
4466 @item TRAMPOLINE_ADJUST_ADDRESS (@var{addr})
4467 A C statement that should perform any machine-specific adjustment in
4468 the address of the trampoline.  Its argument contains the address that
4469 was passed to @code{INITIALIZE_TRAMPOLINE}.  In case the address to be
4470 used for a function call should be different from the address in which
4471 the template was stored, the different address should be assigned to
4472 @var{addr}.  If this macro is not defined, @var{addr} will be used for
4473 function calls.
4474
4475 @findex ALLOCATE_TRAMPOLINE
4476 @item ALLOCATE_TRAMPOLINE (@var{fp})
4477 A C expression to allocate run-time space for a trampoline.  The
4478 expression value should be an RTX representing a memory reference to the
4479 space for the trampoline.
4480
4481 @cindex @code{TARGET_ASM_FUNCTION_EPILOGUE} and trampolines
4482 @cindex @code{TARGET_ASM_FUNCTION_PROLOGUE} and trampolines
4483 If this macro is not defined, by default the trampoline is allocated as
4484 a stack slot.  This default is right for most machines.  The exceptions
4485 are machines where it is impossible to execute instructions in the stack
4486 area.  On such machines, you may have to implement a separate stack,
4487 using this macro in conjunction with @code{TARGET_ASM_FUNCTION_PROLOGUE}
4488 and @code{TARGET_ASM_FUNCTION_EPILOGUE}.
4489
4490 @var{fp} points to a data structure, a @code{struct function}, which
4491 describes the compilation status of the immediate containing function of
4492 the function which the trampoline is for.  Normally (when
4493 @code{ALLOCATE_TRAMPOLINE} is not defined), the stack slot for the
4494 trampoline is in the stack frame of this containing function.  Other
4495 allocation strategies probably must do something analogous with this
4496 information.
4497 @end table
4498
4499 Implementing trampolines is difficult on many machines because they have
4500 separate instruction and data caches.  Writing into a stack location
4501 fails to clear the memory in the instruction cache, so when the program
4502 jumps to that location, it executes the old contents.
4503
4504 Here are two possible solutions.  One is to clear the relevant parts of
4505 the instruction cache whenever a trampoline is set up.  The other is to
4506 make all trampolines identical, by having them jump to a standard
4507 subroutine.  The former technique makes trampoline execution faster; the
4508 latter makes initialization faster.
4509
4510 To clear the instruction cache when a trampoline is initialized, define
4511 the following macros which describe the shape of the cache.
4512
4513 @table @code
4514 @findex INSN_CACHE_SIZE
4515 @item INSN_CACHE_SIZE
4516 The total size in bytes of the cache.
4517
4518 @findex INSN_CACHE_LINE_WIDTH
4519 @item INSN_CACHE_LINE_WIDTH
4520 The length in bytes of each cache line.  The cache is divided into cache
4521 lines which are disjoint slots, each holding a contiguous chunk of data
4522 fetched from memory.  Each time data is brought into the cache, an
4523 entire line is read at once.  The data loaded into a cache line is
4524 always aligned on a boundary equal to the line size.
4525
4526 @findex INSN_CACHE_DEPTH
4527 @item INSN_CACHE_DEPTH
4528 The number of alternative cache lines that can hold any particular memory
4529 location.
4530 @end table
4531
4532 Alternatively, if the machine has system calls or instructions to clear
4533 the instruction cache directly, you can define the following macro.
4534
4535 @table @code
4536 @findex CLEAR_INSN_CACHE
4537 @item CLEAR_INSN_CACHE (@var{beg}, @var{end})
4538 If defined, expands to a C expression clearing the @emph{instruction
4539 cache} in the specified interval.  If it is not defined, and the macro
4540 @code{INSN_CACHE_SIZE} is defined, some generic code is generated to clear the
4541 cache.  The definition of this macro would typically be a series of
4542 @code{asm} statements.  Both @var{beg} and @var{end} are both pointer
4543 expressions.
4544 @end table
4545
4546 To use a standard subroutine, define the following macro.  In addition,
4547 you must make sure that the instructions in a trampoline fill an entire
4548 cache line with identical instructions, or else ensure that the
4549 beginning of the trampoline code is always aligned at the same point in
4550 its cache line.  Look in @file{m68k.h} as a guide.
4551
4552 @table @code
4553 @findex TRANSFER_FROM_TRAMPOLINE
4554 @item TRANSFER_FROM_TRAMPOLINE
4555 Define this macro if trampolines need a special subroutine to do their
4556 work.  The macro should expand to a series of @code{asm} statements
4557 which will be compiled with GCC@.  They go in a library function named
4558 @code{__transfer_from_trampoline}.
4559
4560 If you need to avoid executing the ordinary prologue code of a compiled
4561 C function when you jump to the subroutine, you can do so by placing a
4562 special label of your own in the assembler code.  Use one @code{asm}
4563 statement to generate an assembler label, and another to make the label
4564 global.  Then trampolines can use that label to jump directly to your
4565 special assembler code.
4566 @end table
4567
4568 @node Library Calls
4569 @section Implicit Calls to Library Routines
4570 @cindex library subroutine names
4571 @cindex @file{libgcc.a}
4572
4573 @c prevent bad page break with this line
4574 Here is an explanation of implicit calls to library routines.
4575
4576 @table @code
4577 @findex MULSI3_LIBCALL
4578 @item MULSI3_LIBCALL
4579 A C string constant giving the name of the function to call for
4580 multiplication of one signed full-word by another.  If you do not
4581 define this macro, the default name is used, which is @code{__mulsi3},
4582 a function defined in @file{libgcc.a}.
4583
4584 @findex DIVSI3_LIBCALL
4585 @item DIVSI3_LIBCALL
4586 A C string constant giving the name of the function to call for
4587 division of one signed full-word by another.  If you do not define
4588 this macro, the default name is used, which is @code{__divsi3}, a
4589 function defined in @file{libgcc.a}.
4590
4591 @findex UDIVSI3_LIBCALL
4592 @item UDIVSI3_LIBCALL
4593 A C string constant giving the name of the function to call for
4594 division of one unsigned full-word by another.  If you do not define
4595 this macro, the default name is used, which is @code{__udivsi3}, a
4596 function defined in @file{libgcc.a}.
4597
4598 @findex MODSI3_LIBCALL
4599 @item MODSI3_LIBCALL
4600 A C string constant giving the name of the function to call for the
4601 remainder in division of one signed full-word by another.  If you do
4602 not define this macro, the default name is used, which is
4603 @code{__modsi3}, a function defined in @file{libgcc.a}.
4604
4605 @findex UMODSI3_LIBCALL
4606 @item UMODSI3_LIBCALL
4607 A C string constant giving the name of the function to call for the
4608 remainder in division of one unsigned full-word by another.  If you do
4609 not define this macro, the default name is used, which is
4610 @code{__umodsi3}, a function defined in @file{libgcc.a}.
4611
4612 @findex MULDI3_LIBCALL
4613 @item MULDI3_LIBCALL
4614 A C string constant giving the name of the function to call for
4615 multiplication of one signed double-word by another.  If you do not
4616 define this macro, the default name is used, which is @code{__muldi3},
4617 a function defined in @file{libgcc.a}.
4618
4619 @findex DIVDI3_LIBCALL
4620 @item DIVDI3_LIBCALL
4621 A C string constant giving the name of the function to call for
4622 division of one signed double-word by another.  If you do not define
4623 this macro, the default name is used, which is @code{__divdi3}, a
4624 function defined in @file{libgcc.a}.
4625
4626 @findex UDIVDI3_LIBCALL
4627 @item UDIVDI3_LIBCALL
4628 A C string constant giving the name of the function to call for
4629 division of one unsigned full-word by another.  If you do not define
4630 this macro, the default name is used, which is @code{__udivdi3}, a
4631 function defined in @file{libgcc.a}.
4632
4633 @findex MODDI3_LIBCALL
4634 @item MODDI3_LIBCALL
4635 A C string constant giving the name of the function to call for the
4636 remainder in division of one signed double-word by another.  If you do
4637 not define this macro, the default name is used, which is
4638 @code{__moddi3}, a function defined in @file{libgcc.a}.
4639
4640 @findex UMODDI3_LIBCALL
4641 @item UMODDI3_LIBCALL
4642 A C string constant giving the name of the function to call for the
4643 remainder in division of one unsigned full-word by another.  If you do
4644 not define this macro, the default name is used, which is
4645 @code{__umoddi3}, a function defined in @file{libgcc.a}.
4646
4647 @findex DECLARE_LIBRARY_RENAMES
4648 @item DECLARE_LIBRARY_RENAMES
4649 This macro, if defined, should expand to a piece of C code that will get
4650 expanded when compiling functions for libgcc.a.  It can be used to
4651 provide alternate names for gcc's internal library functions if there
4652 are ABI-mandated names that the compiler should provide.
4653
4654 @findex INIT_TARGET_OPTABS
4655 @item INIT_TARGET_OPTABS
4656 Define this macro as a C statement that declares additional library
4657 routines renames existing ones.  @code{init_optabs} calls this macro after
4658 initializing all the normal library routines.
4659
4660 @findex FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison})
4661 @item FLOAT_LIB_COMPARE_RETURNS_BOOL
4662 Define this macro as a C statement that returns nonzero if a call to
4663 the floating point comparison library function will return a boolean
4664 value that indicates the result of the comparison.  It should return
4665 zero if one of gcc's own libgcc functions is called.
4666
4667 Most ports don't need to define this macro.
4668
4669 @findex TARGET_EDOM
4670 @cindex @code{EDOM}, implicit usage
4671 @item TARGET_EDOM
4672 The value of @code{EDOM} on the target machine, as a C integer constant
4673 expression.  If you don't define this macro, GCC does not attempt to
4674 deposit the value of @code{EDOM} into @code{errno} directly.  Look in
4675 @file{/usr/include/errno.h} to find the value of @code{EDOM} on your
4676 system.
4677
4678 If you do not define @code{TARGET_EDOM}, then compiled code reports
4679 domain errors by calling the library function and letting it report the
4680 error.  If mathematical functions on your system use @code{matherr} when
4681 there is an error, then you should leave @code{TARGET_EDOM} undefined so
4682 that @code{matherr} is used normally.
4683
4684 @findex GEN_ERRNO_RTX
4685 @cindex @code{errno}, implicit usage
4686 @item GEN_ERRNO_RTX
4687 Define this macro as a C expression to create an rtl expression that
4688 refers to the global ``variable'' @code{errno}.  (On certain systems,
4689 @code{errno} may not actually be a variable.)  If you don't define this
4690 macro, a reasonable default is used.
4691
4692 @findex TARGET_MEM_FUNCTIONS
4693 @cindex @code{bcopy}, implicit usage
4694 @cindex @code{memcpy}, implicit usage
4695 @cindex @code{memmove}, implicit usage
4696 @cindex @code{bzero}, implicit usage
4697 @cindex @code{memset}, implicit usage
4698 @item TARGET_MEM_FUNCTIONS
4699 Define this macro if GCC should generate calls to the ISO C
4700 (and System V) library functions @code{memcpy}, @code{memmove} and
4701 @code{memset} rather than the BSD functions @code{bcopy} and @code{bzero}.
4702
4703 @findex LIBGCC_NEEDS_DOUBLE
4704 @item LIBGCC_NEEDS_DOUBLE
4705 Define this macro if @code{float} arguments cannot be passed to library
4706 routines (so they must be converted to @code{double}).  This macro
4707 affects both how library calls are generated and how the library
4708 routines in @file{libgcc.a} accept their arguments.  It is useful on
4709 machines where floating and fixed point arguments are passed
4710 differently, such as the i860.
4711
4712 @findex NEXT_OBJC_RUNTIME
4713 @item NEXT_OBJC_RUNTIME
4714 Define this macro to generate code for Objective-C message sending using
4715 the calling convention of the NeXT system.  This calling convention
4716 involves passing the object, the selector and the method arguments all
4717 at once to the method-lookup library function.
4718
4719 The default calling convention passes just the object and the selector
4720 to the lookup function, which returns a pointer to the method.
4721 @end table
4722
4723 @node Addressing Modes
4724 @section Addressing Modes
4725 @cindex addressing modes
4726
4727 @c prevent bad page break with this line
4728 This is about addressing modes.
4729
4730 @table @code
4731 @findex HAVE_PRE_INCREMENT
4732 @findex HAVE_PRE_DECREMENT
4733 @findex HAVE_POST_INCREMENT
4734 @findex HAVE_POST_DECREMENT
4735 @item HAVE_PRE_INCREMENT
4736 @itemx HAVE_PRE_DECREMENT
4737 @itemx HAVE_POST_INCREMENT
4738 @itemx HAVE_POST_DECREMENT
4739 A C expression that is nonzero if the machine supports pre-increment,
4740 pre-decrement, post-increment, or post-decrement addressing respectively.
4741
4742 @findex HAVE_POST_MODIFY_DISP
4743 @findex HAVE_PRE_MODIFY_DISP
4744 @item HAVE_PRE_MODIFY_DISP
4745 @itemx HAVE_POST_MODIFY_DISP
4746 A C expression that is nonzero if the machine supports pre- or
4747 post-address side-effect generation involving constants other than
4748 the size of the memory operand.
4749
4750 @findex HAVE_POST_MODIFY_REG
4751 @findex HAVE_PRE_MODIFY_REG
4752 @item HAVE_PRE_MODIFY_REG
4753 @itemx HAVE_POST_MODIFY_REG
4754 A C expression that is nonzero if the machine supports pre- or
4755 post-address side-effect generation involving a register displacement.
4756
4757 @findex CONSTANT_ADDRESS_P
4758 @item CONSTANT_ADDRESS_P (@var{x})
4759 A C expression that is 1 if the RTX @var{x} is a constant which
4760 is a valid address.  On most machines, this can be defined as
4761 @code{CONSTANT_P (@var{x})}, but a few machines are more restrictive
4762 in which constant addresses are supported.
4763
4764 @findex CONSTANT_P
4765 @code{CONSTANT_P} accepts integer-values expressions whose values are
4766 not explicitly known, such as @code{symbol_ref}, @code{label_ref}, and
4767 @code{high} expressions and @code{const} arithmetic expressions, in
4768 addition to @code{const_int} and @code{const_double} expressions.
4769
4770 @findex MAX_REGS_PER_ADDRESS
4771 @item MAX_REGS_PER_ADDRESS
4772 A number, the maximum number of registers that can appear in a valid
4773 memory address.  Note that it is up to you to specify a value equal to
4774 the maximum number that @code{GO_IF_LEGITIMATE_ADDRESS} would ever
4775 accept.
4776
4777 @findex GO_IF_LEGITIMATE_ADDRESS
4778 @item GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label})
4779 A C compound statement with a conditional @code{goto @var{label};}
4780 executed if @var{x} (an RTX) is a legitimate memory address on the
4781 target machine for a memory operand of mode @var{mode}.
4782
4783 It usually pays to define several simpler macros to serve as
4784 subroutines for this one.  Otherwise it may be too complicated to
4785 understand.
4786
4787 This macro must exist in two variants: a strict variant and a
4788 non-strict one.  The strict variant is used in the reload pass.  It
4789 must be defined so that any pseudo-register that has not been
4790 allocated a hard register is considered a memory reference.  In
4791 contexts where some kind of register is required, a pseudo-register
4792 with no hard register must be rejected.
4793
4794 The non-strict variant is used in other passes.  It must be defined to
4795 accept all pseudo-registers in every context where some kind of
4796 register is required.
4797
4798 @findex REG_OK_STRICT
4799 Compiler source files that want to use the strict variant of this
4800 macro define the macro @code{REG_OK_STRICT}.  You should use an
4801 @code{#ifdef REG_OK_STRICT} conditional to define the strict variant
4802 in that case and the non-strict variant otherwise.
4803
4804 Subroutines to check for acceptable registers for various purposes (one
4805 for base registers, one for index registers, and so on) are typically
4806 among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}.
4807 Then only these subroutine macros need have two variants; the higher
4808 levels of macros may be the same whether strict or not.
4809
4810 Normally, constant addresses which are the sum of a @code{symbol_ref}
4811 and an integer are stored inside a @code{const} RTX to mark them as
4812 constant.  Therefore, there is no need to recognize such sums
4813 specifically as legitimate addresses.  Normally you would simply
4814 recognize any @code{const} as legitimate.
4815
4816 Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant
4817 sums that are not marked with  @code{const}.  It assumes that a naked
4818 @code{plus} indicates indexing.  If so, then you @emph{must} reject such
4819 naked constant sums as illegitimate addresses, so that none of them will
4820 be given to @code{PRINT_OPERAND_ADDRESS}.
4821
4822 @cindex @code{TARGET_ENCODE_SECTION_INFO} and address validation
4823 On some machines, whether a symbolic address is legitimate depends on
4824 the section that the address refers to.  On these machines, define the
4825 target hook @code{TARGET_ENCODE_SECTION_INFO} to store the information
4826 into the @code{symbol_ref}, and then check for it here.  When you see a
4827 @code{const}, you will have to look inside it to find the
4828 @code{symbol_ref} in order to determine the section.  @xref{Assembler
4829 Format}.
4830
4831 @findex saveable_obstack
4832 The best way to modify the name string is by adding text to the
4833 beginning, with suitable punctuation to prevent any ambiguity.  Allocate
4834 the new name in @code{saveable_obstack}.  You will have to modify
4835 @code{ASM_OUTPUT_LABELREF} to remove and decode the added text and
4836 output the name accordingly, and define @code{TARGET_STRIP_NAME_ENCODING}
4837 to access the original name string.
4838
4839 You can check the information stored here into the @code{symbol_ref} in
4840 the definitions of the macros @code{GO_IF_LEGITIMATE_ADDRESS} and
4841 @code{PRINT_OPERAND_ADDRESS}.
4842
4843 @findex REG_OK_FOR_BASE_P
4844 @item REG_OK_FOR_BASE_P (@var{x})
4845 A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4846 RTX) is valid for use as a base register.  For hard registers, it
4847 should always accept those which the hardware permits and reject the
4848 others.  Whether the macro accepts or rejects pseudo registers must be
4849 controlled by @code{REG_OK_STRICT} as described above.  This usually
4850 requires two variant definitions, of which @code{REG_OK_STRICT}
4851 controls the one actually used.
4852
4853 @findex REG_MODE_OK_FOR_BASE_P
4854 @item REG_MODE_OK_FOR_BASE_P (@var{x}, @var{mode})
4855 A C expression that is just like @code{REG_OK_FOR_BASE_P}, except that
4856 that expression may examine the mode of the memory reference in
4857 @var{mode}.  You should define this macro if the mode of the memory
4858 reference affects whether a register may be used as a base register.  If
4859 you define this macro, the compiler will use it instead of
4860 @code{REG_OK_FOR_BASE_P}.
4861
4862 @findex REG_OK_FOR_INDEX_P
4863 @item REG_OK_FOR_INDEX_P (@var{x})
4864 A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4865 RTX) is valid for use as an index register.
4866
4867 The difference between an index register and a base register is that
4868 the index register may be scaled.  If an address involves the sum of
4869 two registers, neither one of them scaled, then either one may be
4870 labeled the ``base'' and the other the ``index''; but whichever
4871 labeling is used must fit the machine's constraints of which registers
4872 may serve in each capacity.  The compiler will try both labelings,
4873 looking for one that is valid, and will reload one or both registers
4874 only if neither labeling works.
4875
4876 @findex FIND_BASE_TERM
4877 @item FIND_BASE_TERM (@var{x})
4878 A C expression to determine the base term of address @var{x}.
4879 This macro is used in only one place: `find_base_term' in alias.c.
4880
4881 It is always safe for this macro to not be defined.  It exists so
4882 that alias analysis can understand machine-dependent addresses.
4883
4884 The typical use of this macro is to handle addresses containing
4885 a label_ref or symbol_ref within an UNSPEC@.
4886
4887 @findex LEGITIMIZE_ADDRESS
4888 @item LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win})
4889 A C compound statement that attempts to replace @var{x} with a valid
4890 memory address for an operand of mode @var{mode}.  @var{win} will be a
4891 C statement label elsewhere in the code; the macro definition may use
4892
4893 @example
4894 GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win});
4895 @end example
4896
4897 @noindent
4898 to avoid further processing if the address has become legitimate.
4899
4900 @findex break_out_memory_refs
4901 @var{x} will always be the result of a call to @code{break_out_memory_refs},
4902 and @var{oldx} will be the operand that was given to that function to produce
4903 @var{x}.
4904
4905 The code generated by this macro should not alter the substructure of
4906 @var{x}.  If it transforms @var{x} into a more legitimate form, it
4907 should assign @var{x} (which will always be a C variable) a new value.
4908
4909 It is not necessary for this macro to come up with a legitimate
4910 address.  The compiler has standard ways of doing so in all cases.  In
4911 fact, it is safe for this macro to do nothing.  But often a
4912 machine-dependent strategy can generate better code.
4913
4914 @findex LEGITIMIZE_RELOAD_ADDRESS
4915 @item LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win})
4916 A C compound statement that attempts to replace @var{x}, which is an address
4917 that needs reloading, with a valid memory address for an operand of mode
4918 @var{mode}.  @var{win} will be a C statement label elsewhere in the code.
4919 It is not necessary to define this macro, but it might be useful for
4920 performance reasons.
4921
4922 For example, on the i386, it is sometimes possible to use a single
4923 reload register instead of two by reloading a sum of two pseudo
4924 registers into a register.  On the other hand, for number of RISC
4925 processors offsets are limited so that often an intermediate address
4926 needs to be generated in order to address a stack slot.  By defining
4927 @code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses
4928 generated for adjacent some stack slots can be made identical, and thus
4929 be shared.
4930
4931 @emph{Note}: This macro should be used with caution.  It is necessary
4932 to know something of how reload works in order to effectively use this,
4933 and it is quite easy to produce macros that build in too much knowledge
4934 of reload internals.
4935
4936 @emph{Note}: This macro must be able to reload an address created by a
4937 previous invocation of this macro.  If it fails to handle such addresses
4938 then the compiler may generate incorrect code or abort.
4939
4940 @findex push_reload
4941 The macro definition should use @code{push_reload} to indicate parts that
4942 need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually
4943 suitable to be passed unaltered to @code{push_reload}.
4944
4945 The code generated by this macro must not alter the substructure of
4946 @var{x}.  If it transforms @var{x} into a more legitimate form, it
4947 should assign @var{x} (which will always be a C variable) a new value.
4948 This also applies to parts that you change indirectly by calling
4949 @code{push_reload}.
4950
4951 @findex strict_memory_address_p
4952 The macro definition may use @code{strict_memory_address_p} to test if
4953 the address has become legitimate.
4954
4955 @findex copy_rtx
4956 If you want to change only a part of @var{x}, one standard way of doing
4957 this is to use @code{copy_rtx}.  Note, however, that is unshares only a
4958 single level of rtl.  Thus, if the part to be changed is not at the
4959 top level, you'll need to replace first the top level.
4960 It is not necessary for this macro to come up with a legitimate
4961 address;  but often a machine-dependent strategy can generate better code.
4962
4963 @findex GO_IF_MODE_DEPENDENT_ADDRESS
4964 @item GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
4965 A C statement or compound statement with a conditional @code{goto
4966 @var{label};} executed if memory address @var{x} (an RTX) can have
4967 different meanings depending on the machine mode of the memory
4968 reference it is used for or if the address is valid for some modes
4969 but not others.
4970
4971 Autoincrement and autodecrement addresses typically have mode-dependent
4972 effects because the amount of the increment or decrement is the size
4973 of the operand being addressed.  Some machines have other mode-dependent
4974 addresses.  Many RISC machines have no mode-dependent addresses.
4975
4976 You may assume that @var{addr} is a valid address for the machine.
4977
4978 @findex LEGITIMATE_CONSTANT_P
4979 @item LEGITIMATE_CONSTANT_P (@var{x})
4980 A C expression that is nonzero if @var{x} is a legitimate constant for
4981 an immediate operand on the target machine.  You can assume that
4982 @var{x} satisfies @code{CONSTANT_P}, so you need not check this.  In fact,
4983 @samp{1} is a suitable definition for this macro on machines where
4984 anything @code{CONSTANT_P} is valid.
4985 @end table
4986
4987 @node Condition Code
4988 @section Condition Code Status
4989 @cindex condition code status
4990
4991 @c prevent bad page break with this line
4992 This describes the condition code status.
4993
4994 @findex cc_status
4995 The file @file{conditions.h} defines a variable @code{cc_status} to
4996 describe how the condition code was computed (in case the interpretation of
4997 the condition code depends on the instruction that it was set by).  This
4998 variable contains the RTL expressions on which the condition code is
4999 currently based, and several standard flags.
5000
5001 Sometimes additional machine-specific flags must be defined in the machine
5002 description header file.  It can also add additional machine-specific
5003 information by defining @code{CC_STATUS_MDEP}.
5004
5005 @table @code
5006 @findex CC_STATUS_MDEP
5007 @item CC_STATUS_MDEP
5008 C code for a data type which is used for declaring the @code{mdep}
5009 component of @code{cc_status}.  It defaults to @code{int}.
5010
5011 This macro is not used on machines that do not use @code{cc0}.
5012
5013 @findex CC_STATUS_MDEP_INIT
5014 @item CC_STATUS_MDEP_INIT
5015 A C expression to initialize the @code{mdep} field to ``empty''.
5016 The default definition does nothing, since most machines don't use
5017 the field anyway.  If you want to use the field, you should probably
5018 define this macro to initialize it.
5019
5020 This macro is not used on machines that do not use @code{cc0}.
5021
5022 @findex NOTICE_UPDATE_CC
5023 @item NOTICE_UPDATE_CC (@var{exp}, @var{insn})
5024 A C compound statement to set the components of @code{cc_status}
5025 appropriately for an insn @var{insn} whose body is @var{exp}.  It is
5026 this macro's responsibility to recognize insns that set the condition
5027 code as a byproduct of other activity as well as those that explicitly
5028 set @code{(cc0)}.
5029
5030 This macro is not used on machines that do not use @code{cc0}.
5031
5032 If there are insns that do not set the condition code but do alter
5033 other machine registers, this macro must check to see whether they
5034 invalidate the expressions that the condition code is recorded as
5035 reflecting.  For example, on the 68000, insns that store in address
5036 registers do not set the condition code, which means that usually
5037 @code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such
5038 insns.  But suppose that the previous insn set the condition code
5039 based on location @samp{a4@@(102)} and the current insn stores a new
5040 value in @samp{a4}.  Although the condition code is not changed by
5041 this, it will no longer be true that it reflects the contents of
5042 @samp{a4@@(102)}.  Therefore, @code{NOTICE_UPDATE_CC} must alter
5043 @code{cc_status} in this case to say that nothing is known about the
5044 condition code value.
5045
5046 The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal
5047 with the results of peephole optimization: insns whose patterns are
5048 @code{parallel} RTXs containing various @code{reg}, @code{mem} or
5049 constants which are just the operands.  The RTL structure of these
5050 insns is not sufficient to indicate what the insns actually do.  What
5051 @code{NOTICE_UPDATE_CC} should do when it sees one is just to run
5052 @code{CC_STATUS_INIT}.
5053
5054 A possible definition of @code{NOTICE_UPDATE_CC} is to call a function
5055 that looks at an attribute (@pxref{Insn Attributes}) named, for example,
5056 @samp{cc}.  This avoids having detailed information about patterns in
5057 two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}.
5058
5059 @findex EXTRA_CC_MODES
5060 @item EXTRA_CC_MODES
5061 Condition codes are represented in registers by machine modes of class
5062 @code{MODE_CC}.  By default, there is just one mode, @code{CCmode}, with
5063 this class.  If you need more such modes, create a file named
5064 @file{@var{machine}-modes.def} in your @file{config/@var{machine}}
5065 directory (@pxref{Back End, , Anatomy of a Target Back End}), containing
5066 a list of these modes.  Each entry in the list should be a call to the
5067 macro @code{CC}.  This macro takes one argument, which is the name of
5068 the mode: it should begin with @samp{CC}.  Do not put quotation marks
5069 around the name, or include the trailing @samp{mode}; these are
5070 automatically added.  There should not be anything else in the file
5071 except comments.
5072
5073 A sample @file{@var{machine}-modes.def} file might look like this:
5074
5075 @smallexample
5076 CC (CC_NOOV)   /* @r{Comparison only valid if there was no overflow.} */
5077 CC (CCFP)      /* @r{Floating point comparison that cannot trap.} */
5078 CC (CCFPE)     /* @r{Floating point comparison that may trap.} */
5079 @end smallexample
5080
5081 When you create this file, the macro @code{EXTRA_CC_MODES} is
5082 automatically defined by @command{configure}, with value @samp{1}.
5083
5084 @findex SELECT_CC_MODE
5085 @item SELECT_CC_MODE (@var{op}, @var{x}, @var{y})
5086 Returns a mode from class @code{MODE_CC} to be used when comparison
5087 operation code @var{op} is applied to rtx @var{x} and @var{y}.  For
5088 example, on the SPARC, @code{SELECT_CC_MODE} is defined as (see
5089 @pxref{Jump Patterns} for a description of the reason for this
5090 definition)
5091
5092 @smallexample
5093 #define SELECT_CC_MODE(OP,X,Y) \
5094   (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT          \
5095    ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode)    \
5096    : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS    \
5097        || GET_CODE (X) == NEG) \
5098       ? CC_NOOVmode : CCmode))
5099 @end smallexample
5100
5101 You need not define this macro if @code{EXTRA_CC_MODES} is not defined.
5102
5103 @findex CANONICALIZE_COMPARISON
5104 @item CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1})
5105 On some machines not all possible comparisons are defined, but you can
5106 convert an invalid comparison into a valid one.  For example, the Alpha
5107 does not have a @code{GT} comparison, but you can use an @code{LT}
5108 comparison instead and swap the order of the operands.
5109
5110 On such machines, define this macro to be a C statement to do any
5111 required conversions.  @var{code} is the initial comparison code
5112 and @var{op0} and @var{op1} are the left and right operands of the
5113 comparison, respectively.  You should modify @var{code}, @var{op0}, and
5114 @var{op1} as required.
5115
5116 GCC will not assume that the comparison resulting from this macro is
5117 valid but will see if the resulting insn matches a pattern in the
5118 @file{md} file.
5119
5120 You need not define this macro if it would never change the comparison
5121 code or operands.
5122
5123 @findex REVERSIBLE_CC_MODE
5124 @item REVERSIBLE_CC_MODE (@var{mode})
5125 A C expression whose value is one if it is always safe to reverse a
5126 comparison whose mode is @var{mode}.  If @code{SELECT_CC_MODE}
5127 can ever return @var{mode} for a floating-point inequality comparison,
5128 then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero.
5129
5130 You need not define this macro if it would always returns zero or if the
5131 floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}.
5132 For example, here is the definition used on the SPARC, where floating-point
5133 inequality comparisons are always given @code{CCFPEmode}:
5134
5135 @smallexample
5136 #define REVERSIBLE_CC_MODE(MODE)  ((MODE) != CCFPEmode)
5137 @end smallexample
5138
5139 @findex REVERSE_CONDITION (@var{code}, @var{mode})
5140 A C expression whose value is reversed condition code of the @var{code} for
5141 comparison done in CC_MODE @var{mode}.  The macro is used only in case
5142 @code{REVERSIBLE_CC_MODE (@var{mode})} is nonzero.  Define this macro in case
5143 machine has some non-standard way how to reverse certain conditionals.  For
5144 instance in case all floating point conditions are non-trapping, compiler may
5145 freely convert unordered compares to ordered one.  Then definition may look
5146 like:
5147
5148 @smallexample
5149 #define REVERSE_CONDITION(CODE, MODE) \
5150    ((MODE) != CCFPmode ? reverse_condition (CODE) \
5151     : reverse_condition_maybe_unordered (CODE))
5152 @end smallexample
5153
5154 @findex REVERSE_CONDEXEC_PREDICATES_P
5155 @item REVERSE_CONDEXEC_PREDICATES_P (@var{code1}, @var{code2})
5156 A C expression that returns true if the conditional execution predicate
5157 @var{code1} is the inverse of @var{code2} and vice versa.  Define this to
5158 return 0 if the target has conditional execution predicates that cannot be
5159 reversed safely.  If no expansion is specified, this macro is defined as
5160 follows:
5161
5162 @smallexample
5163 #define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
5164    ((x) == reverse_condition (y))
5165 @end smallexample
5166
5167 @end table
5168
5169 @node Costs
5170 @section Describing Relative Costs of Operations
5171 @cindex costs of instructions
5172 @cindex relative costs
5173 @cindex speed of instructions
5174
5175 These macros let you describe the relative speed of various operations
5176 on the target machine.
5177
5178 @table @code
5179 @findex CONST_COSTS
5180 @item CONST_COSTS (@var{x}, @var{code}, @var{outer_code})
5181 A part of a C @code{switch} statement that describes the relative costs
5182 of constant RTL expressions.  It must contain @code{case} labels for
5183 expression codes @code{const_int}, @code{const}, @code{symbol_ref},
5184 @code{label_ref} and @code{const_double}.  Each case must ultimately
5185 reach a @code{return} statement to return the relative cost of the use
5186 of that kind of constant value in an expression.  The cost may depend on
5187 the precise value of the constant, which is available for examination in
5188 @var{x}, and the rtx code of the expression in which it is contained,
5189 found in @var{outer_code}.
5190
5191 @var{code} is the expression code---redundant, since it can be
5192 obtained with @code{GET_CODE (@var{x})}.
5193
5194 @findex RTX_COSTS
5195 @findex COSTS_N_INSNS
5196 @item RTX_COSTS (@var{x}, @var{code}, @var{outer_code})
5197 Like @code{CONST_COSTS} but applies to nonconstant RTL expressions.
5198 This can be used, for example, to indicate how costly a multiply
5199 instruction is.  In writing this macro, you can use the construct
5200 @code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast
5201 instructions.  @var{outer_code} is the code of the expression in which
5202 @var{x} is contained.
5203
5204 This macro is optional; do not define it if the default cost assumptions
5205 are adequate for the target machine.
5206
5207 @findex DEFAULT_RTX_COSTS
5208 @item DEFAULT_RTX_COSTS (@var{x}, @var{code}, @var{outer_code})
5209 This macro, if defined, is called for any case not handled by the
5210 @code{RTX_COSTS} or @code{CONST_COSTS} macros.  This eliminates the need
5211 to put case labels into the macro, but the code, or any functions it
5212 calls, must assume that the RTL in @var{x} could be of any type that has
5213 not already been handled.  The arguments are the same as for
5214 @code{RTX_COSTS}, and the macro should execute a return statement giving
5215 the cost of any RTL expressions that it can handle.  The default cost
5216 calculation is used for any RTL for which this macro does not return a
5217 value.
5218
5219 This macro is optional; do not define it if the default cost assumptions
5220 are adequate for the target machine.
5221
5222 @findex ADDRESS_COST
5223 @item ADDRESS_COST (@var{address})
5224 An expression giving the cost of an addressing mode that contains
5225 @var{address}.  If not defined, the cost is computed from
5226 the @var{address} expression and the @code{CONST_COSTS} values.
5227
5228 For most CISC machines, the default cost is a good approximation of the
5229 true cost of the addressing mode.  However, on RISC machines, all
5230 instructions normally have the same length and execution time.  Hence
5231 all addresses will have equal costs.
5232
5233 In cases where more than one form of an address is known, the form with
5234 the lowest cost will be used.  If multiple forms have the same, lowest,
5235 cost, the one that is the most complex will be used.
5236
5237 For example, suppose an address that is equal to the sum of a register
5238 and a constant is used twice in the same basic block.  When this macro
5239 is not defined, the address will be computed in a register and memory
5240 references will be indirect through that register.  On machines where
5241 the cost of the addressing mode containing the sum is no higher than
5242 that of a simple indirect reference, this will produce an additional
5243 instruction and possibly require an additional register.  Proper
5244 specification of this macro eliminates this overhead for such machines.
5245
5246 Similar use of this macro is made in strength reduction of loops.
5247
5248 @var{address} need not be valid as an address.  In such a case, the cost
5249 is not relevant and can be any value; invalid addresses need not be
5250 assigned a different cost.
5251
5252 On machines where an address involving more than one register is as
5253 cheap as an address computation involving only one register, defining
5254 @code{ADDRESS_COST} to reflect this can cause two registers to be live
5255 over a region of code where only one would have been if
5256 @code{ADDRESS_COST} were not defined in that manner.  This effect should
5257 be considered in the definition of this macro.  Equivalent costs should
5258 probably only be given to addresses with different numbers of registers
5259 on machines with lots of registers.
5260
5261 This macro will normally either not be defined or be defined as a
5262 constant.
5263
5264 @findex REGISTER_MOVE_COST
5265 @item REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to})
5266 A C expression for the cost of moving data of mode @var{mode} from a
5267 register in class @var{from} to one in class @var{to}.  The classes are
5268 expressed using the enumeration values such as @code{GENERAL_REGS}.  A
5269 value of 2 is the default; other values are interpreted relative to
5270 that.
5271
5272 It is not required that the cost always equal 2 when @var{from} is the
5273 same as @var{to}; on some machines it is expensive to move between
5274 registers if they are not general registers.
5275
5276 If reload sees an insn consisting of a single @code{set} between two
5277 hard registers, and if @code{REGISTER_MOVE_COST} applied to their
5278 classes returns a value of 2, reload does not check to ensure that the
5279 constraints of the insn are met.  Setting a cost of other than 2 will
5280 allow reload to verify that the constraints are met.  You should do this
5281 if the @samp{mov@var{m}} pattern's constraints do not allow such copying.
5282
5283 @findex MEMORY_MOVE_COST
5284 @item MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in})
5285 A C expression for the cost of moving data of mode @var{mode} between a
5286 register of class @var{class} and memory; @var{in} is zero if the value
5287 is to be written to memory, nonzero if it is to be read in.  This cost
5288 is relative to those in @code{REGISTER_MOVE_COST}.  If moving between
5289 registers and memory is more expensive than between two registers, you
5290 should define this macro to express the relative cost.
5291
5292 If you do not define this macro, GCC uses a default cost of 4 plus
5293 the cost of copying via a secondary reload register, if one is
5294 needed.  If your machine requires a secondary reload register to copy
5295 between memory and a register of @var{class} but the reload mechanism is
5296 more complex than copying via an intermediate, define this macro to
5297 reflect the actual cost of the move.
5298
5299 GCC defines the function @code{memory_move_secondary_cost} if
5300 secondary reloads are needed.  It computes the costs due to copying via
5301 a secondary register.  If your machine copies from memory using a
5302 secondary register in the conventional way but the default base value of
5303 4 is not correct for your machine, define this macro to add some other
5304 value to the result of that function.  The arguments to that function
5305 are the same as to this macro.
5306
5307 @findex BRANCH_COST
5308 @item BRANCH_COST
5309 A C expression for the cost of a branch instruction.  A value of 1 is
5310 the default; other values are interpreted relative to that.
5311 @end table
5312
5313 Here are additional macros which do not specify precise relative costs,
5314 but only that certain actions are more expensive than GCC would
5315 ordinarily expect.
5316
5317 @table @code
5318 @findex SLOW_BYTE_ACCESS
5319 @item SLOW_BYTE_ACCESS
5320 Define this macro as a C expression which is nonzero if accessing less
5321 than a word of memory (i.e.@: a @code{char} or a @code{short}) is no
5322 faster than accessing a word of memory, i.e., if such access
5323 require more than one instruction or if there is no difference in cost
5324 between byte and (aligned) word loads.
5325
5326 When this macro is not defined, the compiler will access a field by
5327 finding the smallest containing object; when it is defined, a fullword
5328 load will be used if alignment permits.  Unless bytes accesses are
5329 faster than word accesses, using word accesses is preferable since it
5330 may eliminate subsequent memory access if subsequent accesses occur to
5331 other fields in the same word of the structure, but to different bytes.
5332
5333 @findex SLOW_UNALIGNED_ACCESS
5334 @item SLOW_UNALIGNED_ACCESS (@var{mode}, @var{alignment})
5335 Define this macro to be the value 1 if memory accesses described by the
5336 @var{mode} and @var{alignment} parameters have a cost many times greater
5337 than aligned accesses, for example if they are emulated in a trap
5338 handler.
5339
5340 When this macro is nonzero, the compiler will act as if
5341 @code{STRICT_ALIGNMENT} were nonzero when generating code for block
5342 moves.  This can cause significantly more instructions to be produced.
5343 Therefore, do not set this macro nonzero if unaligned accesses only add a
5344 cycle or two to the time for a memory access.
5345
5346 If the value of this macro is always zero, it need not be defined.  If
5347 this macro is defined, it should produce a nonzero value when
5348 @code{STRICT_ALIGNMENT} is nonzero.
5349
5350 @findex DONT_REDUCE_ADDR
5351 @item DONT_REDUCE_ADDR
5352 Define this macro to inhibit strength reduction of memory addresses.
5353 (On some machines, such strength reduction seems to do harm rather
5354 than good.)
5355
5356 @findex MOVE_RATIO
5357 @item MOVE_RATIO
5358 The threshold of number of scalar memory-to-memory move insns, @emph{below}
5359 which a sequence of insns should be generated instead of a
5360 string move insn or a library call.  Increasing the value will always
5361 make code faster, but eventually incurs high cost in increased code size.
5362
5363 Note that on machines where the corresponding move insn is a
5364 @code{define_expand} that emits a sequence of insns, this macro counts
5365 the number of such sequences.
5366
5367 If you don't define this, a reasonable default is used.
5368
5369 @findex MOVE_BY_PIECES_P
5370 @item MOVE_BY_PIECES_P (@var{size}, @var{alignment})
5371 A C expression used to determine whether @code{move_by_pieces} will be used to
5372 copy a chunk of memory, or whether some other block move mechanism
5373 will be used.  Defaults to 1 if @code{move_by_pieces_ninsns} returns less
5374 than @code{MOVE_RATIO}.
5375
5376 @findex MOVE_MAX_PIECES
5377 @item MOVE_MAX_PIECES
5378 A C expression used by @code{move_by_pieces} to determine the largest unit
5379 a load or store used to copy memory is.  Defaults to @code{MOVE_MAX}.
5380
5381 @findex CLEAR_RATIO
5382 @item CLEAR_RATIO
5383 The threshold of number of scalar move insns, @emph{below} which a sequence
5384 of insns should be generated to clear memory instead of a string clear insn
5385 or a library call.  Increasing the value will always make code faster, but
5386 eventually incurs high cost in increased code size.
5387
5388 If you don't define this, a reasonable default is used.
5389
5390 @findex CLEAR_BY_PIECES_P
5391 @item CLEAR_BY_PIECES_P (@var{size}, @var{alignment})
5392 A C expression used to determine whether @code{clear_by_pieces} will be used
5393 to clear a chunk of memory, or whether some other block clear mechanism
5394 will be used.  Defaults to 1 if @code{move_by_pieces_ninsns} returns less
5395 than @code{CLEAR_RATIO}.
5396
5397 @findex USE_LOAD_POST_INCREMENT
5398 @item USE_LOAD_POST_INCREMENT (@var{mode})
5399 A C expression used to determine whether a load postincrement is a good
5400 thing to use for a given mode.  Defaults to the value of
5401 @code{HAVE_POST_INCREMENT}.
5402
5403 @findex USE_LOAD_POST_DECREMENT
5404 @item USE_LOAD_POST_DECREMENT (@var{mode})
5405 A C expression used to determine whether a load postdecrement is a good
5406 thing to use for a given mode.  Defaults to the value of
5407 @code{HAVE_POST_DECREMENT}.
5408
5409 @findex USE_LOAD_PRE_INCREMENT
5410 @item USE_LOAD_PRE_INCREMENT (@var{mode})
5411 A C expression used to determine whether a load preincrement is a good
5412 thing to use for a given mode.  Defaults to the value of
5413 @code{HAVE_PRE_INCREMENT}.
5414
5415 @findex USE_LOAD_PRE_DECREMENT
5416 @item USE_LOAD_PRE_DECREMENT (@var{mode})
5417 A C expression used to determine whether a load predecrement is a good
5418 thing to use for a given mode.  Defaults to the value of
5419 @code{HAVE_PRE_DECREMENT}.
5420
5421 @findex USE_STORE_POST_INCREMENT
5422 @item USE_STORE_POST_INCREMENT (@var{mode})
5423 A C expression used to determine whether a store postincrement is a good
5424 thing to use for a given mode.  Defaults to the value of
5425 @code{HAVE_POST_INCREMENT}.
5426
5427 @findex USE_STORE_POST_DECREMENT
5428 @item USE_STORE_POST_DECREMENT (@var{mode})
5429 A C expression used to determine whether a store postdecrement is a good
5430 thing to use for a given mode.  Defaults to the value of
5431 @code{HAVE_POST_DECREMENT}.
5432
5433 @findex USE_STORE_PRE_INCREMENT
5434 @item USE_STORE_PRE_INCREMENT (@var{mode})
5435 This macro is used to determine whether a store preincrement is a good
5436 thing to use for a given mode.  Defaults to the value of
5437 @code{HAVE_PRE_INCREMENT}.
5438
5439 @findex USE_STORE_PRE_DECREMENT
5440 @item USE_STORE_PRE_DECREMENT (@var{mode})
5441 This macro is used to determine whether a store predecrement is a good
5442 thing to use for a given mode.  Defaults to the value of
5443 @code{HAVE_PRE_DECREMENT}.
5444
5445 @findex NO_FUNCTION_CSE
5446 @item NO_FUNCTION_CSE
5447 Define this macro if it is as good or better to call a constant
5448 function address than to call an address kept in a register.
5449
5450 @findex NO_RECURSIVE_FUNCTION_CSE
5451 @item NO_RECURSIVE_FUNCTION_CSE
5452 Define this macro if it is as good or better for a function to call
5453 itself with an explicit address than to call an address kept in a
5454 register.
5455 @end table
5456
5457 @node Scheduling
5458 @section Adjusting the Instruction Scheduler
5459
5460 The instruction scheduler may need a fair amount of machine-specific
5461 adjustment in order to produce good code.  GCC provides several target
5462 hooks for this purpose.  It is usually enough to define just a few of
5463 them: try the first ones in this list first.
5464
5465 @deftypefn {Target Hook} int TARGET_SCHED_ISSUE_RATE (void)
5466 This hook returns the maximum number of instructions that can ever
5467 issue at the same time on the target machine.  The default is one.
5468 Although the insn scheduler can define itself the possibility of issue
5469 an insn on the same cycle, the value can serve as an additional
5470 constraint to issue insns on the same simulated processor cycle (see
5471 hooks @samp{TARGET_SCHED_REORDER} and @samp{TARGET_SCHED_REORDER2}).
5472 This value must be constant over the entire compilation.  If you need
5473 it to vary depending on what the instructions are, you must use
5474 @samp{TARGET_SCHED_VARIABLE_ISSUE}.
5475
5476 For the automaton based pipeline interface, you could define this hook
5477 to return the value of the macro @code{MAX_DFA_ISSUE_RATE}.
5478 @end deftypefn
5479
5480 @deftypefn {Target Hook} int TARGET_SCHED_VARIABLE_ISSUE (FILE *@var{file}, int @var{verbose}, rtx @var{insn}, int @var{more})
5481 This hook is executed by the scheduler after it has scheduled an insn
5482 from the ready list.  It should return the number of insns which can
5483 still be issued in the current cycle.  Normally this is
5484 @samp{@w{@var{more} - 1}}.  You should define this hook if some insns
5485 take more machine resources than others, so that fewer insns can follow
5486 them in the same cycle.  @var{file} is either a null pointer, or a stdio
5487 stream to write any debug output to.  @var{verbose} is the verbose level
5488 provided by @option{-fsched-verbose-@var{n}}.  @var{insn} is the
5489 instruction that was scheduled.
5490 @end deftypefn
5491
5492 @deftypefn {Target Hook} int TARGET_SCHED_ADJUST_COST (rtx @var{insn}, rtx @var{link}, rtx @var{dep_insn}, int @var{cost})
5493 This function corrects the value of @var{cost} based on the
5494 relationship between @var{insn} and @var{dep_insn} through the
5495 dependence @var{link}.  It should return the new value.  The default
5496 is to make no adjustment to @var{cost}.  This can be used for example
5497 to specify to the scheduler using the traditional pipeline description
5498 that an output- or anti-dependence does not incur the same cost as a
5499 data-dependence.  If the scheduler using the automaton based pipeline
5500 description, the cost of anti-dependence is zero and the cost of
5501 output-dependence is maximum of one and the difference of latency
5502 times of the first and the second insns.  If these values are not
5503 acceptable, you could use the hook to modify them too.  See also
5504 @pxref{Automaton pipeline description}.
5505 @end deftypefn
5506
5507 @deftypefn {Target Hook} int TARGET_SCHED_ADJUST_PRIORITY (rtx @var{insn}, int @var{priority})
5508 This hook adjusts the integer scheduling priority @var{priority} of
5509 @var{insn}.  It should return the new priority.  Reduce the priority to
5510 execute @var{insn} earlier, increase the priority to execute @var{insn}
5511 later.  Do not define this hook if you do not need to adjust the
5512 scheduling priorities of insns.
5513 @end deftypefn
5514
5515 @deftypefn {Target Hook} int TARGET_SCHED_REORDER (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_readyp}, int @var{clock})
5516 This hook is executed by the scheduler after it has scheduled the ready
5517 list, to allow the machine description to reorder it (for example to
5518 combine two small instructions together on @samp{VLIW} machines).
5519 @var{file} is either a null pointer, or a stdio stream to write any
5520 debug output to.  @var{verbose} is the verbose level provided by
5521 @option{-fsched-verbose-@var{n}}.  @var{ready} is a pointer to the ready
5522 list of instructions that are ready to be scheduled.  @var{n_readyp} is
5523 a pointer to the number of elements in the ready list.  The scheduler
5524 reads the ready list in reverse order, starting with
5525 @var{ready}[@var{*n_readyp}-1] and going to @var{ready}[0].  @var{clock}
5526 is the timer tick of the scheduler.  You may modify the ready list and
5527 the number of ready insns.  The return value is the number of insns that
5528 can issue this cycle; normally this is just @code{issue_rate}.  See also
5529 @samp{TARGET_SCHED_REORDER2}.
5530 @end deftypefn
5531
5532 @deftypefn {Target Hook} int TARGET_SCHED_REORDER2 (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_ready}, @var{clock})
5533 Like @samp{TARGET_SCHED_REORDER}, but called at a different time.  That
5534 function is called whenever the scheduler starts a new cycle.  This one
5535 is called once per iteration over a cycle, immediately after
5536 @samp{TARGET_SCHED_VARIABLE_ISSUE}; it can reorder the ready list and
5537 return the number of insns to be scheduled in the same cycle.  Defining
5538 this hook can be useful if there are frequent situations where
5539 scheduling one insn causes other insns to become ready in the same
5540 cycle.  These other insns can then be taken into account properly.
5541 @end deftypefn
5542
5543 @deftypefn {Target Hook} void TARGET_SCHED_INIT (FILE *@var{file}, int @var{verbose}, int @var{max_ready})
5544 This hook is executed by the scheduler at the beginning of each block of
5545 instructions that are to be scheduled.  @var{file} is either a null
5546 pointer, or a stdio stream to write any debug output to.  @var{verbose}
5547 is the verbose level provided by @option{-fsched-verbose-@var{n}}.
5548 @var{max_ready} is the maximum number of insns in the current scheduling
5549 region that can be live at the same time.  This can be used to allocate
5550 scratch space if it is needed, e.g. by @samp{TARGET_SCHED_REORDER}.
5551 @end deftypefn
5552
5553 @deftypefn {Target Hook} void TARGET_SCHED_FINISH (FILE *@var{file}, int @var{verbose})
5554 This hook is executed by the scheduler at the end of each block of
5555 instructions that are to be scheduled.  It can be used to perform
5556 cleanup of any actions done by the other scheduling hooks.  @var{file}
5557 is either a null pointer, or a stdio stream to write any debug output
5558 to.  @var{verbose} is the verbose level provided by
5559 @option{-fsched-verbose-@var{n}}.
5560 @end deftypefn
5561
5562 @deftypefn {Target Hook} int TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE (void)
5563 This hook is called many times during insn scheduling.  If the hook
5564 returns nonzero, the automaton based pipeline description is used for
5565 insn scheduling.  Otherwise the traditional pipeline description is
5566 used.  The default is usage of the traditional pipeline description.
5567
5568 You should also remember that to simplify the insn scheduler sources
5569 an empty traditional pipeline description interface is generated even
5570 if there is no a traditional pipeline description in the @file{.md}
5571 file.  The same is true for the automaton based pipeline description.
5572 That means that you should be accurate in defining the hook.
5573 @end deftypefn
5574
5575 @deftypefn {Target Hook} int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
5576 The hook returns an RTL insn.  The automaton state used in the
5577 pipeline hazard recognizer is changed as if the insn were scheduled
5578 when the new simulated processor cycle starts.  Usage of the hook may
5579 simplify the automaton pipeline description for some @acronym{VLIW}
5580 processors.  If the hook is defined, it is used only for the automaton
5581 based pipeline description.  The default is not to change the state
5582 when the new simulated processor cycle starts.
5583 @end deftypefn
5584
5585 @deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
5586 The hook can be used to initialize data used by the previous hook.
5587 @end deftypefn
5588
5589 @deftypefn {Target Hook} int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
5590 The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
5591 to changed the state as if the insn were scheduled when the new
5592 simulated processor cycle finishes.
5593 @end deftypefn
5594
5595 @deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
5596 The hook is analogous to @samp{TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN} but
5597 used to initialize data used by the previous hook.
5598 @end deftypefn
5599
5600 @deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD (void)
5601 This hook controls better choosing an insn from the ready insn queue
5602 for the @acronym{DFA}-based insn scheduler.  Usually the scheduler
5603 chooses the first insn from the queue.  If the hook returns a positive
5604 value, an additional scheduler code tries all permutations of
5605 @samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()}
5606 subsequent ready insns to choose an insn whose issue will result in
5607 maximal number of issued insns on the same cycle.  For the
5608 @acronym{VLIW} processor, the code could actually solve the problem of
5609 packing simple insns into the @acronym{VLIW} insn.  Of course, if the
5610 rules of @acronym{VLIW} packing are described in the automaton.
5611
5612 This code also could be used for superscalar @acronym{RISC}
5613 processors.  Let us consider a superscalar @acronym{RISC} processor
5614 with 3 pipelines.  Some insns can be executed in pipelines @var{A} or
5615 @var{B}, some insns can be executed only in pipelines @var{B} or
5616 @var{C}, and one insn can be executed in pipeline @var{B}.  The
5617 processor may issue the 1st insn into @var{A} and the 2nd one into
5618 @var{B}.  In this case, the 3rd insn will wait for freeing @var{B}
5619 until the next cycle.  If the scheduler issues the 3rd insn the first,
5620 the processor could issue all 3 insns per cycle.
5621
5622 Actually this code demonstrates advantages of the automaton based
5623 pipeline hazard recognizer.  We try quickly and easy many insn
5624 schedules to choose the best one.
5625
5626 The default is no multipass scheduling.
5627 @end deftypefn
5628
5629 @deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_BUBBLES (void)
5630 The @acronym{DFA}-based scheduler could take the insertion of nop
5631 operations for better insn scheduling into account.  It can be done
5632 only if the multi-pass insn scheduling works (see hook
5633 @samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD}).
5634
5635 Let us consider a @acronym{VLIW} processor insn with 3 slots.  Each
5636 insn can be placed only in one of the three slots.  We have 3 ready
5637 insns @var{A}, @var{B}, and @var{C}.  @var{A} and @var{C} can be
5638 placed only in the 1st slot, @var{B} can be placed only in the 3rd
5639 slot.  We described the automaton which does not permit empty slot
5640 gaps between insns (usually such description is simpler).  Without
5641 this code the scheduler would place each insn in 3 separate
5642 @acronym{VLIW} insns.  If the scheduler places a nop insn into the 2nd
5643 slot, it could place the 3 insns into 2 @acronym{VLIW} insns.  What is
5644 the nop insn is returned by hook @samp{TARGET_SCHED_DFA_BUBBLE}.  Hook
5645 @samp{TARGET_SCHED_INIT_DFA_BUBBLES} can be used to initialize or
5646 create the nop insns.
5647
5648 You should remember that the scheduler does not insert the nop insns.
5649 It is not wise because of the following optimizations.  The scheduler
5650 only considers such possibility to improve the result schedule.  The
5651 nop insns should be inserted lately, e.g. on the final phase.
5652 @end deftypefn
5653
5654 @deftypefn {Target Hook} rtx TARGET_SCHED_DFA_BUBBLE (int @var{index})
5655 This hook @samp{FIRST_CYCLE_MULTIPASS_SCHEDULING} is used to insert
5656 nop operations for better insn scheduling when @acronym{DFA}-based
5657 scheduler makes multipass insn scheduling (see also description of
5658 hook @samp{TARGET_SCHED_INIT_DFA_BUBBLES}).  This hook
5659 returns a nop insn with given @var{index}.  The indexes start with
5660 zero.  The hook should return @code{NULL} if there are no more nop
5661 insns with indexes greater than given index.
5662 @end deftypefn
5663
5664 Macros in the following table are generated by the program
5665 @file{genattr} and can be useful for writing the hooks.
5666
5667 @table @code
5668 @findex TRADITIONAL_PIPELINE_INTERFACE
5669 @item TRADITIONAL_PIPELINE_INTERFACE
5670 The macro definition is generated if there is a traditional pipeline
5671 description in @file{.md} file. You should also remember that to
5672 simplify the insn scheduler sources an empty traditional pipeline
5673 description interface is generated even if there is no a traditional
5674 pipeline description in the @file{.md} file.  The macro can be used to
5675 distinguish the two types of the traditional interface.
5676
5677 @findex DFA_PIPELINE_INTERFACE
5678 @item DFA_PIPELINE_INTERFACE
5679 The macro definition is generated if there is an automaton pipeline
5680 description in @file{.md} file.  You should also remember that to
5681 simplify the insn scheduler sources an empty automaton pipeline
5682 description interface is generated even if there is no an automaton
5683 pipeline description in the @file{.md} file.  The macro can be used to
5684 distinguish the two types of the automaton interface.
5685
5686 @findex MAX_DFA_ISSUE_RATE
5687 @item MAX_DFA_ISSUE_RATE
5688 The macro definition is generated in the automaton based pipeline
5689 description interface.  Its value is calculated from the automaton
5690 based pipeline description and is equal to maximal number of all insns
5691 described in constructions @samp{define_insn_reservation} which can be
5692 issued on the same processor cycle.
5693
5694 @end table
5695
5696 @node Sections
5697 @section Dividing the Output into Sections (Texts, Data, @dots{})
5698 @c the above section title is WAY too long.  maybe cut the part between
5699 @c the (...)?  --mew 10feb93
5700
5701 An object file is divided into sections containing different types of
5702 data.  In the most common case, there are three sections: the @dfn{text
5703 section}, which holds instructions and read-only data; the @dfn{data
5704 section}, which holds initialized writable data; and the @dfn{bss
5705 section}, which holds uninitialized data.  Some systems have other kinds
5706 of sections.
5707
5708 The compiler must tell the assembler when to switch sections.  These
5709 macros control what commands to output to tell the assembler this.  You
5710 can also define additional sections.
5711
5712 @table @code
5713 @findex TEXT_SECTION_ASM_OP
5714 @item TEXT_SECTION_ASM_OP
5715 A C expression whose value is a string, including spacing, containing the
5716 assembler operation that should precede instructions and read-only data.
5717 Normally @code{"\t.text"} is right.
5718
5719 @findex TEXT_SECTION
5720 @item TEXT_SECTION
5721 A C statement that switches to the default section containing instructions.
5722 Normally this is not needed, as simply defining @code{TEXT_SECTION_ASM_OP}
5723 is enough.  The MIPS port uses this to sort all functions after all data
5724 declarations.
5725
5726 @findex HOT_TEXT_SECTION_NAME
5727 @item HOT_TEXT_SECTION_NAME
5728 If defined, a C string constant for the name of the section containing most
5729 frequently executed functions of the program.  If not defined, GCC will provide
5730 a default definition if the target supports named sections.
5731
5732 @findex UNLIKELY_EXECUTED_TEXT_SECTION_NAME
5733 @item UNLIKELY_EXECUTED_TEXT_SECTION_NAME
5734 If defined, a C string constant for the name of the section containing unlikely
5735 executed functions in the program.
5736
5737 @findex DATA_SECTION_ASM_OP
5738 @item DATA_SECTION_ASM_OP
5739 A C expression whose value is a string, including spacing, containing the
5740 assembler operation to identify the following data as writable initialized
5741 data.  Normally @code{"\t.data"} is right.
5742
5743 @findex READONLY_DATA_SECTION_ASM_OP
5744 @item READONLY_DATA_SECTION_ASM_OP
5745 A C expression whose value is a string, including spacing, containing the
5746 assembler operation to identify the following data as read-only initialized
5747 data.
5748
5749 @findex READONLY_DATA_SECTION
5750 @item READONLY_DATA_SECTION
5751 A macro naming a function to call to switch to the proper section for
5752 read-only data.  The default is to use @code{READONLY_DATA_SECTION_ASM_OP}
5753 if defined, else fall back to @code{text_section}.
5754
5755 The most common definition will be @code{data_section}, if the target
5756 does not have a special read-only data section, and does not put data
5757 in the text section.
5758
5759 @findex SHARED_SECTION_ASM_OP
5760 @item SHARED_SECTION_ASM_OP
5761 If defined, a C expression whose value is a string, including spacing,
5762 containing the assembler operation to identify the following data as
5763 shared data.  If not defined, @code{DATA_SECTION_ASM_OP} will be used.
5764
5765 @findex BSS_SECTION_ASM_OP
5766 @item BSS_SECTION_ASM_OP
5767 If defined, a C expression whose value is a string, including spacing,
5768 containing the assembler operation to identify the following data as
5769 uninitialized global data.  If not defined, and neither
5770 @code{ASM_OUTPUT_BSS} nor @code{ASM_OUTPUT_ALIGNED_BSS} are defined,
5771 uninitialized global data will be output in the data section if
5772 @option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be
5773 used.
5774
5775 @findex SHARED_BSS_SECTION_ASM_OP
5776 @item SHARED_BSS_SECTION_ASM_OP
5777 If defined, a C expression whose value is a string, including spacing,
5778 containing the assembler operation to identify the following data as
5779 uninitialized global shared data.  If not defined, and
5780 @code{BSS_SECTION_ASM_OP} is, the latter will be used.
5781
5782 @findex INIT_SECTION_ASM_OP
5783 @item INIT_SECTION_ASM_OP
5784 If defined, a C expression whose value is a string, including spacing,
5785 containing the assembler operation to identify the following data as
5786 initialization code.  If not defined, GCC will assume such a section does
5787 not exist.
5788
5789 @findex FINI_SECTION_ASM_OP
5790 @item FINI_SECTION_ASM_OP
5791 If defined, a C expression whose value is a string, including spacing,
5792 containing the assembler operation to identify the following data as
5793 finalization code.  If not defined, GCC will assume such a section does
5794 not exist.
5795
5796 @findex CRT_CALL_STATIC_FUNCTION
5797 @item CRT_CALL_STATIC_FUNCTION (@var{section_op}, @var{function})
5798 If defined, an ASM statement that switches to a different section
5799 via @var{section_op}, calls @var{function}, and switches back to
5800 the text section.  This is used in @file{crtstuff.c} if
5801 @code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls
5802 to initialization and finalization functions from the init and fini
5803 sections.  By default, this macro uses a simple function call.  Some
5804 ports need hand-crafted assembly code to avoid dependencies on
5805 registers initialized in the function prologue or to ensure that
5806 constant pools don't end up too far way in the text section.
5807
5808 @findex FORCE_CODE_SECTION_ALIGN
5809 @item FORCE_CODE_SECTION_ALIGN
5810 If defined, an ASM statement that aligns a code section to some
5811 arbitrary boundary.  This is used to force all fragments of the
5812 @code{.init} and @code{.fini} sections to have to same alignment
5813 and thus prevent the linker from having to add any padding.
5814
5815 @findex EXTRA_SECTIONS
5816 @findex in_text
5817 @findex in_data
5818 @item EXTRA_SECTIONS
5819 A list of names for sections other than the standard two, which are
5820 @code{in_text} and @code{in_data}.  You need not define this macro
5821 on a system with no other sections (that GCC needs to use).
5822
5823 @findex EXTRA_SECTION_FUNCTIONS
5824 @findex text_section
5825 @findex data_section
5826 @item EXTRA_SECTION_FUNCTIONS
5827 One or more functions to be defined in @file{varasm.c}.  These
5828 functions should do jobs analogous to those of @code{text_section} and
5829 @code{data_section}, for your additional sections.  Do not define this
5830 macro if you do not define @code{EXTRA_SECTIONS}.
5831
5832 @findex JUMP_TABLES_IN_TEXT_SECTION
5833 @item JUMP_TABLES_IN_TEXT_SECTION
5834 Define this macro to be an expression with a nonzero value if jump
5835 tables (for @code{tablejump} insns) should be output in the text
5836 section, along with the assembler instructions.  Otherwise, the
5837 readonly data section is used.
5838
5839 This macro is irrelevant if there is no separate readonly data section.
5840 @end table
5841
5842 @deftypefn {Target Hook} void TARGET_ASM_SELECT_SECTION (tree @var{exp}, int @var{reloc}, unsigned HOST_WIDE_INT @var{align})
5843 Switches to the appropriate section for output of @var{exp}.  You can
5844 assume that @var{exp} is either a @code{VAR_DECL} node or a constant of
5845 some sort.  @var{reloc} indicates whether the initial value of @var{exp}
5846 requires link-time relocations.  Bit 0 is set when variable contains
5847 local relocations only, while bit 1 is set for global relocations.
5848 Select the section by calling @code{data_section} or one of the
5849 alternatives for other sections.  @var{align} is the constant alignment
5850 in bits.
5851
5852 The default version of this function takes care of putting read-only
5853 variables in @code{readonly_data_section}.
5854 @end deftypefn
5855
5856 @deftypefn {Target Hook} void TARGET_ASM_UNIQUE_SECTION (tree @var{decl}, int @var{reloc})
5857 Build up a unique section name, expressed as a @code{STRING_CST} node,
5858 and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
5859 As with @code{TARGET_ASM_SELECT_SECTION}, @var{reloc} indicates whether
5860 the initial value of @var{exp} requires link-time relocations.
5861
5862 The default version of this function appends the symbol name to the
5863 ELF section name that would normally be used for the symbol.  For
5864 example, the function @code{foo} would be placed in @code{.text.foo}.
5865 Whatever the actual target object format, this is often good enough.
5866 @end deftypefn
5867
5868 @deftypefn {Target Hook} void TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode @var{mode}, rtx @var{x}, unsigned HOST_WIDE_INT @var{align})
5869 Switches to the appropriate section for output of constant pool entry
5870 @var{x} in @var{mode}.  You can assume that @var{x} is some kind of
5871 constant in RTL@.  The argument @var{mode} is redundant except in the
5872 case of a @code{const_int} rtx.  Select the section by calling
5873 @code{readonly_data_section} or one of the alternatives for other
5874 sections.  @var{align} is the constant alignment in bits.
5875
5876 The default version of this function takes care of putting symbolic
5877 constants in @code{flag_pic} mode in @code{data_section} and everything
5878 else in @code{readonly_data_section}.
5879 @end deftypefn
5880
5881 @deftypefn {Target Hook} void TARGET_ENCODE_SECTION_INFO (tree @var{decl}, int @var{new_decl_p})
5882 Define this hook if references to a symbol or a constant must be
5883 treated differently depending on something about the variable or
5884 function named by the symbol (such as what section it is in).
5885
5886 The hook is executed under two circumstances.  One is immediately after
5887 the rtl for @var{decl} that represents a variable or a function has been
5888 created and stored in @code{DECL_RTL(@var{decl})}.  The value of the rtl
5889 will be a @code{mem} whose address is a @code{symbol_ref}.  The other is
5890 immediately after the rtl for @var{decl} that represents a constant has
5891 been created and stored in @code{TREE_CST_RTL (@var{decl})}.  The macro
5892 is called once for each distinct constant in a source file.
5893
5894 The @var{new_decl_p} argument will be true if this is the first time
5895 that @code{ENCODE_SECTION_INFO} has been invoked on this decl.  It will
5896 be false for subsequent invocations, which will happen for duplicate
5897 declarations.  Whether or not anything must be done for the duplicate
5898 declaration depends on whether the hook examines @code{DECL_ATTRIBUTES}.
5899
5900 @cindex @code{SYMBOL_REF_FLAG}, in @code{TARGET_ENCODE_SECTION_INFO}
5901 The usual thing for this hook to do is to record a flag in the
5902 @code{symbol_ref} (such as @code{SYMBOL_REF_FLAG}) or to store a
5903 modified name string in the @code{symbol_ref} (if one bit is not
5904 enough information).
5905 @end deftypefn
5906
5907 @deftypefn {Target Hook} const char *TARGET_STRIP_NAME_ENCODING (const char *name)
5908 Decode @var{name} and return the real name part, sans
5909 the characters that @code{TARGET_ENCODE_SECTION_INFO}
5910 may have added.
5911 @end deftypefn
5912
5913 @deftypefn {Target Hook} bool TARGET_IN_SMALL_DATA_P (tree @var{exp})
5914 Returns true if @var{exp} should be placed into a ``small data'' section.
5915 The default version of this hook always returns false.
5916 @end deftypefn
5917
5918 @deftypevar {Target Hook} bool TARGET_HAVE_SRODATA_SECTION
5919 Contains the value true if the target places read-only
5920 ``small data'' into a separate section.  The default value is false.
5921 @end deftypevar
5922
5923 @deftypefn {Target Hook} bool TARGET_BINDS_LOCAL_P (tree @var{exp})
5924 Returns true if @var{exp} names an object for which name resolution
5925 rules must resolve to the current ``module'' (dynamic shared library
5926 or executable image).
5927
5928 The default version of this hook implements the name resolution rules
5929 for ELF, which has a looser model of global name binding than other
5930 currently supported object file formats.
5931 @end deftypefn
5932
5933 @deftypevar {Target Hook} bool TARGET_HAVE_TLS
5934 Contains the value true if the target supports thread-local storage.
5935 The default value is false.
5936 @end deftypevar
5937
5938
5939 @node PIC
5940 @section Position Independent Code
5941 @cindex position independent code
5942 @cindex PIC
5943
5944 This section describes macros that help implement generation of position
5945 independent code.  Simply defining these macros is not enough to
5946 generate valid PIC; you must also add support to the macros
5947 @code{GO_IF_LEGITIMATE_ADDRESS} and @code{PRINT_OPERAND_ADDRESS}, as
5948 well as @code{LEGITIMIZE_ADDRESS}.  You must modify the definition of
5949 @samp{movsi} to do something appropriate when the source operand
5950 contains a symbolic address.  You may also need to alter the handling of
5951 switch statements so that they use relative addresses.
5952 @c i rearranged the order of the macros above to try to force one of
5953 @c them to the next line, to eliminate an overfull hbox. --mew 10feb93
5954
5955 @table @code
5956 @findex PIC_OFFSET_TABLE_REGNUM
5957 @item PIC_OFFSET_TABLE_REGNUM
5958 The register number of the register used to address a table of static
5959 data addresses in memory.  In some cases this register is defined by a
5960 processor's ``application binary interface'' (ABI)@.  When this macro
5961 is defined, RTL is generated for this register once, as with the stack
5962 pointer and frame pointer registers.  If this macro is not defined, it
5963 is up to the machine-dependent files to allocate such a register (if
5964 necessary).  Note that this register must be fixed when in use (e.g.@:
5965 when @code{flag_pic} is true).
5966
5967 @findex PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
5968 @item PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
5969 Define this macro if the register defined by
5970 @code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls.  Do not define
5971 this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined.
5972
5973 @findex FINALIZE_PIC
5974 @item FINALIZE_PIC
5975 By generating position-independent code, when two different programs (A
5976 and B) share a common library (libC.a), the text of the library can be
5977 shared whether or not the library is linked at the same address for both
5978 programs.  In some of these environments, position-independent code
5979 requires not only the use of different addressing modes, but also
5980 special code to enable the use of these addressing modes.
5981
5982 The @code{FINALIZE_PIC} macro serves as a hook to emit these special
5983 codes once the function is being compiled into assembly code, but not
5984 before.  (It is not done before, because in the case of compiling an
5985 inline function, it would lead to multiple PIC prologues being
5986 included in functions which used inline functions and were compiled to
5987 assembly language.)
5988
5989 @findex LEGITIMATE_PIC_OPERAND_P
5990 @item LEGITIMATE_PIC_OPERAND_P (@var{x})
5991 A C expression that is nonzero if @var{x} is a legitimate immediate
5992 operand on the target machine when generating position independent code.
5993 You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not
5994 check this.  You can also assume @var{flag_pic} is true, so you need not
5995 check it either.  You need not define this macro if all constants
5996 (including @code{SYMBOL_REF}) can be immediate operands when generating
5997 position independent code.
5998 @end table
5999
6000 @node Assembler Format
6001 @section Defining the Output Assembler Language
6002
6003 This section describes macros whose principal purpose is to describe how
6004 to write instructions in assembler language---rather than what the
6005 instructions do.
6006
6007 @menu
6008 * File Framework::       Structural information for the assembler file.
6009 * Data Output::          Output of constants (numbers, strings, addresses).
6010 * Uninitialized Data::   Output of uninitialized variables.
6011 * Label Output::         Output and generation of labels.
6012 * Initialization::       General principles of initialization
6013                            and termination routines.
6014 * Macros for Initialization::
6015                          Specific macros that control the handling of
6016                            initialization and termination routines.
6017 * Instruction Output::   Output of actual instructions.
6018 * Dispatch Tables::      Output of jump tables.
6019 * Exception Region Output:: Output of exception region code.
6020 * Alignment Output::     Pseudo ops for alignment and skipping data.
6021 @end menu
6022
6023 @node File Framework
6024 @subsection The Overall Framework of an Assembler File
6025 @cindex assembler format
6026 @cindex output of assembler code
6027
6028 @c prevent bad page break with this line
6029 This describes the overall framework of an assembler file.
6030
6031 @table @code
6032 @findex ASM_FILE_START
6033 @item ASM_FILE_START (@var{stream})
6034 A C expression which outputs to the stdio stream @var{stream}
6035 some appropriate text to go at the start of an assembler file.
6036
6037 Normally this macro is defined to output a line containing
6038 @samp{#NO_APP}, which is a comment that has no effect on most
6039 assemblers but tells the GNU assembler that it can save time by not
6040 checking for certain assembler constructs.
6041
6042 On systems that use SDB, it is necessary to output certain commands;
6043 see @file{attasm.h}.
6044
6045 @findex ASM_FILE_END
6046 @item ASM_FILE_END (@var{stream})
6047 A C expression which outputs to the stdio stream @var{stream}
6048 some appropriate text to go at the end of an assembler file.
6049
6050 If this macro is not defined, the default is to output nothing
6051 special at the end of the file.  Most systems don't require any
6052 definition.
6053
6054 On systems that use SDB, it is necessary to output certain commands;
6055 see @file{attasm.h}.
6056
6057 @findex ASM_COMMENT_START
6058 @item ASM_COMMENT_START
6059 A C string constant describing how to begin a comment in the target
6060 assembler language.  The compiler assumes that the comment will end at
6061 the end of the line.
6062
6063 @findex ASM_APP_ON
6064 @item ASM_APP_ON
6065 A C string constant for text to be output before each @code{asm}
6066 statement or group of consecutive ones.  Normally this is
6067 @code{"#APP"}, which is a comment that has no effect on most
6068 assemblers but tells the GNU assembler that it must check the lines
6069 that follow for all valid assembler constructs.
6070
6071 @findex ASM_APP_OFF
6072 @item ASM_APP_OFF
6073 A C string constant for text to be output after each @code{asm}
6074 statement or group of consecutive ones.  Normally this is
6075 @code{"#NO_APP"}, which tells the GNU assembler to resume making the
6076 time-saving assumptions that are valid for ordinary compiler output.
6077
6078 @findex ASM_OUTPUT_SOURCE_FILENAME
6079 @item ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
6080 A C statement to output COFF information or DWARF debugging information
6081 which indicates that filename @var{name} is the current source file to
6082 the stdio stream @var{stream}.
6083
6084 This macro need not be defined if the standard form of output
6085 for the file format in use is appropriate.
6086
6087 @findex OUTPUT_QUOTED_STRING
6088 @item OUTPUT_QUOTED_STRING (@var{stream}, @var{string})
6089 A C statement to output the string @var{string} to the stdio stream
6090 @var{stream}.  If you do not call the function @code{output_quoted_string}
6091 in your config files, GCC will only call it to output filenames to
6092 the assembler source.  So you can use it to canonicalize the format
6093 of the filename using this macro.
6094
6095 @findex ASM_OUTPUT_SOURCE_LINE
6096 @item ASM_OUTPUT_SOURCE_LINE (@var{stream}, @var{line})
6097 A C statement to output DBX or SDB debugging information before code
6098 for line number @var{line} of the current source file to the
6099 stdio stream @var{stream}.
6100
6101 This macro need not be defined if the standard form of debugging
6102 information for the debugger in use is appropriate.
6103
6104 @findex ASM_OUTPUT_IDENT
6105 @item ASM_OUTPUT_IDENT (@var{stream}, @var{string})
6106 A C statement to output something to the assembler file to handle a
6107 @samp{#ident} directive containing the text @var{string}.  If this
6108 macro is not defined, nothing is output for a @samp{#ident} directive.
6109
6110 @findex OBJC_PROLOGUE
6111 @item OBJC_PROLOGUE
6112 A C statement to output any assembler statements which are required to
6113 precede any Objective-C object definitions or message sending.  The
6114 statement is executed only when compiling an Objective-C program.
6115 @end table
6116
6117 @deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name}, unsigned int @var{flags}, unsigned int @var{align})
6118 Output assembly directives to switch to section @var{name}.  The section
6119 should have attributes as specified by @var{flags}, which is a bit mask
6120 of the @code{SECTION_*} flags defined in @file{output.h}.  If @var{align}
6121 is nonzero, it contains an alignment in bytes to be used for the section,
6122 otherwise some target default should be used.  Only targets that must
6123 specify an alignment within the section directive need pay attention to
6124 @var{align} -- we will still use @code{ASM_OUTPUT_ALIGN}.
6125 @end deftypefn
6126
6127 @deftypefn {Target Hook} bool TARGET_HAVE_NAMED_SECTIONS
6128 This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}.
6129 @end deftypefn
6130
6131 @deftypefn {Target Hook} {unsigned int} TARGET_SECTION_TYPE_FLAGS (tree @var{decl}, const char *@var{name}, int @var{reloc})
6132 Choose a set of section attributes for use by @code{TARGET_ASM_NAMED_SECTION}
6133 based on a variable or function decl, a section name, and whether or not the
6134 declaration's initializer may contain runtime relocations.  @var{decl} may be
6135  null, in which case read-write data should be assumed.
6136
6137 The default version if this function handles choosing code vs data,
6138 read-only vs read-write data, and @code{flag_pic}.  You should only
6139 need to override this if your target has special flags that might be
6140 set via @code{__attribute__}.
6141 @end deftypefn
6142
6143 @need 2000
6144 @node Data Output
6145 @subsection Output of Data
6146
6147
6148 @deftypevr {Target Hook} {const char *} TARGET_ASM_BYTE_OP
6149 @deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_HI_OP
6150 @deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_SI_OP
6151 @deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_DI_OP
6152 @deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_TI_OP
6153 @deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_HI_OP
6154 @deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_SI_OP
6155 @deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_DI_OP
6156 @deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_TI_OP
6157 These hooks specify assembly directives for creating certain kinds
6158 of integer object.  The @code{TARGET_ASM_BYTE_OP} directive creates a
6159 byte-sized object, the @code{TARGET_ASM_ALIGNED_HI_OP} one creates an
6160 aligned two-byte object, and so on.  Any of the hooks may be
6161 @code{NULL}, indicating that no suitable directive is available.
6162
6163 The compiler will print these strings at the start of a new line,
6164 followed immediately by the object's initial value.  In most cases,
6165 the string should contain a tab, a pseudo-op, and then another tab.
6166 @end deftypevr
6167
6168 @deftypefn {Target Hook} bool TARGET_ASM_INTEGER (rtx @var{x}, unsigned int @var{size}, int @var{aligned_p})
6169 The @code{assemble_integer} function uses this hook to output an
6170 integer object.  @var{x} is the object's value, @var{size} is its size
6171 in bytes and @var{aligned_p} indicates whether it is aligned.  The
6172 function should return @code{true} if it was able to output the
6173 object.  If it returns false, @code{assemble_integer} will try to
6174 split the object into smaller parts.
6175
6176 The default implementation of this hook will use the
6177 @code{TARGET_ASM_BYTE_OP} family of strings, returning @code{false}
6178 when the relevant string is @code{NULL}.
6179 @end deftypefn
6180
6181 @table @code
6182 @findex OUTPUT_ADDR_CONST_EXTRA
6183 @item OUTPUT_ADDR_CONST_EXTRA (@var{stream}, @var{x}, @var{fail})
6184 A C statement to recognize @var{rtx} patterns that
6185 @code{output_addr_const} can't deal with, and output assembly code to
6186 @var{stream} corresponding to the pattern @var{x}.  This may be used to
6187 allow machine-dependent @code{UNSPEC}s to appear within constants.
6188
6189 If @code{OUTPUT_ADDR_CONST_EXTRA} fails to recognize a pattern, it must
6190 @code{goto fail}, so that a standard error message is printed.  If it
6191 prints an error message itself, by calling, for example,
6192 @code{output_operand_lossage}, it may just complete normally.
6193
6194 @findex ASM_OUTPUT_ASCII
6195 @item ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len})
6196 A C statement to output to the stdio stream @var{stream} an assembler
6197 instruction to assemble a string constant containing the @var{len}
6198 bytes at @var{ptr}.  @var{ptr} will be a C expression of type
6199 @code{char *} and @var{len} a C expression of type @code{int}.
6200
6201 If the assembler has a @code{.ascii} pseudo-op as found in the
6202 Berkeley Unix assembler, do not define the macro
6203 @code{ASM_OUTPUT_ASCII}.
6204
6205 @findex ASM_OUTPUT_FDESC
6206 @item ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n})
6207 A C statement to output word @var{n} of a function descriptor for
6208 @var{decl}.  This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS}
6209 is defined, and is otherwise unused.
6210
6211 @findex CONSTANT_POOL_BEFORE_FUNCTION
6212 @item CONSTANT_POOL_BEFORE_FUNCTION
6213 You may define this macro as a C expression.  You should define the
6214 expression to have a nonzero value if GCC should output the constant
6215 pool for a function before the code for the function, or a zero value if
6216 GCC should output the constant pool after the function.  If you do
6217 not define this macro, the usual case, GCC will output the constant
6218 pool before the function.
6219
6220 @findex ASM_OUTPUT_POOL_PROLOGUE
6221 @item ASM_OUTPUT_POOL_PROLOGUE (@var{file}, @var{funname}, @var{fundecl}, @var{size})
6222 A C statement to output assembler commands to define the start of the
6223 constant pool for a function.  @var{funname} is a string giving
6224 the name of the function.  Should the return type of the function
6225 be required, it can be obtained via @var{fundecl}.  @var{size}
6226 is the size, in bytes, of the constant pool that will be written
6227 immediately after this call.
6228
6229 If no constant-pool prefix is required, the usual case, this macro need
6230 not be defined.
6231
6232 @findex ASM_OUTPUT_SPECIAL_POOL_ENTRY
6233 @item ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto})
6234 A C statement (with or without semicolon) to output a constant in the
6235 constant pool, if it needs special treatment.  (This macro need not do
6236 anything for RTL expressions that can be output normally.)
6237
6238 The argument @var{file} is the standard I/O stream to output the
6239 assembler code on.  @var{x} is the RTL expression for the constant to
6240 output, and @var{mode} is the machine mode (in case @var{x} is a
6241 @samp{const_int}).  @var{align} is the required alignment for the value
6242 @var{x}; you should output an assembler directive to force this much
6243 alignment.
6244
6245 The argument @var{labelno} is a number to use in an internal label for
6246 the address of this pool entry.  The definition of this macro is
6247 responsible for outputting the label definition at the proper place.
6248 Here is how to do this:
6249
6250 @example
6251 ASM_OUTPUT_INTERNAL_LABEL (@var{file}, "LC", @var{labelno});
6252 @end example
6253
6254 When you output a pool entry specially, you should end with a
6255 @code{goto} to the label @var{jumpto}.  This will prevent the same pool
6256 entry from being output a second time in the usual manner.
6257
6258 You need not define this macro if it would do nothing.
6259
6260 @findex CONSTANT_AFTER_FUNCTION_P
6261 @item CONSTANT_AFTER_FUNCTION_P (@var{exp})
6262 Define this macro as a C expression which is nonzero if the constant
6263 @var{exp}, of type @code{tree}, should be output after the code for a
6264 function.  The compiler will normally output all constants before the
6265 function; you need not define this macro if this is OK@.
6266
6267 @findex ASM_OUTPUT_POOL_EPILOGUE
6268 @item ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
6269 A C statement to output assembler commands to at the end of the constant
6270 pool for a function.  @var{funname} is a string giving the name of the
6271 function.  Should the return type of the function be required, you can
6272 obtain it via @var{fundecl}.  @var{size} is the size, in bytes, of the
6273 constant pool that GCC wrote immediately before this call.
6274
6275 If no constant-pool epilogue is required, the usual case, you need not
6276 define this macro.
6277
6278 @findex IS_ASM_LOGICAL_LINE_SEPARATOR
6279 @item IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C})
6280 Define this macro as a C expression which is nonzero if @var{C} is
6281 used as a logical line separator by the assembler.
6282
6283 If you do not define this macro, the default is that only
6284 the character @samp{;} is treated as a logical line separator.
6285 @end table
6286
6287 @deftypevr {Target Hook} {const char *} TARGET_ASM_OPEN_PAREN
6288 @deftypevrx {Target Hook} {const char *} TARGET_ASM_CLOSE_PAREN
6289 These target hooks are C string constants, describing the syntax in the
6290 assembler for grouping arithmetic expressions.  If not overridden, they
6291 default to normal parentheses, which is correct for most assemblers.
6292 @end deftypevr
6293
6294   These macros are provided by @file{real.h} for writing the definitions
6295 of @code{ASM_OUTPUT_DOUBLE} and the like:
6296
6297 @table @code
6298 @item REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l})
6299 @itemx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l})
6300 @itemx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l})
6301 @findex REAL_VALUE_TO_TARGET_SINGLE
6302 @findex REAL_VALUE_TO_TARGET_DOUBLE
6303 @findex REAL_VALUE_TO_TARGET_LONG_DOUBLE
6304 These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the target's
6305 floating point representation, and store its bit pattern in the variable
6306 @var{l}.  For @code{REAL_VALUE_TO_TARGET_SINGLE}, this variable should
6307 be a simple @code{long int}.  For the others, it should be an array of
6308 @code{long int}.  The number of elements in this array is determined by
6309 the size of the desired target floating point data type: 32 bits of it
6310 go in each @code{long int} array element.  Each array element holds 32
6311 bits of the result, even if @code{long int} is wider than 32 bits on the
6312 host machine.
6313
6314 The array element values are designed so that you can print them out
6315 using @code{fprintf} in the order they should appear in the target
6316 machine's memory.
6317
6318 @item REAL_VALUE_TO_DECIMAL (@var{x}, @var{string}, @var{digits})
6319 @findex REAL_VALUE_TO_DECIMAL
6320 This macro converts @var{x}, of type @code{REAL_VALUE_TYPE}, to a
6321 decimal number and stores it as a string into @var{string}.
6322 You must pass, as @var{string}, the address of a long enough block
6323 of space to hold the result.
6324
6325 The argument @var{digits} is the number of decimal digits to print,
6326 or @minus{}1 to indicate ``enough'', i.e. @code{DECIMAL_DIG} for
6327 for the target.
6328 @end table
6329
6330 @node Uninitialized Data
6331 @subsection Output of Uninitialized Variables
6332
6333 Each of the macros in this section is used to do the whole job of
6334 outputting a single uninitialized variable.
6335
6336 @table @code
6337 @findex ASM_OUTPUT_COMMON
6338 @item ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
6339 A C statement (sans semicolon) to output to the stdio stream
6340 @var{stream} the assembler definition of a common-label named
6341 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
6342 is the size rounded up to whatever alignment the caller wants.
6343
6344 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6345 output the name itself; before and after that, output the additional
6346 assembler syntax for defining the name, and a newline.
6347
6348 This macro controls how the assembler definitions of uninitialized
6349 common global variables are output.
6350
6351 @findex ASM_OUTPUT_ALIGNED_COMMON
6352 @item ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment})
6353 Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a
6354 separate, explicit argument.  If you define this macro, it is used in
6355 place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in
6356 handling the required alignment of the variable.  The alignment is specified
6357 as the number of bits.
6358
6359 @findex ASM_OUTPUT_ALIGNED_DECL_COMMON
6360 @item ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
6361 Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the
6362 variable to be output, if there is one, or @code{NULL_TREE} if there
6363 is no corresponding variable.  If you define this macro, GCC will use it
6364 in place of both @code{ASM_OUTPUT_COMMON} and
6365 @code{ASM_OUTPUT_ALIGNED_COMMON}.  Define this macro when you need to see
6366 the variable's decl in order to chose what to output.
6367
6368 @findex ASM_OUTPUT_SHARED_COMMON
6369 @item ASM_OUTPUT_SHARED_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
6370 If defined, it is similar to @code{ASM_OUTPUT_COMMON}, except that it
6371 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_COMMON}
6372 will be used.
6373
6374 @findex ASM_OUTPUT_BSS
6375 @item ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
6376 A C statement (sans semicolon) to output to the stdio stream
6377 @var{stream} the assembler definition of uninitialized global @var{decl} named
6378 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
6379 is the size rounded up to whatever alignment the caller wants.
6380
6381 Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
6382 defining this macro.  If unable, use the expression
6383 @code{assemble_name (@var{stream}, @var{name})} to output the name itself;
6384 before and after that, output the additional assembler syntax for defining
6385 the name, and a newline.
6386
6387 This macro controls how the assembler definitions of uninitialized global
6388 variables are output.  This macro exists to properly support languages like
6389 C++ which do not have @code{common} data.  However, this macro currently
6390 is not defined for all targets.  If this macro and
6391 @code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON}
6392 or @code{ASM_OUTPUT_ALIGNED_COMMON} or
6393 @code{ASM_OUTPUT_ALIGNED_DECL_COMMON} is used.
6394
6395 @findex ASM_OUTPUT_ALIGNED_BSS
6396 @item ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
6397 Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
6398 separate, explicit argument.  If you define this macro, it is used in
6399 place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
6400 handling the required alignment of the variable.  The alignment is specified
6401 as the number of bits.
6402
6403 Try to use function @code{asm_output_aligned_bss} defined in file
6404 @file{varasm.c} when defining this macro.
6405
6406 @findex ASM_OUTPUT_SHARED_BSS
6407 @item ASM_OUTPUT_SHARED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
6408 If defined, it is similar to @code{ASM_OUTPUT_BSS}, except that it
6409 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_BSS}
6410 will be used.
6411
6412 @findex ASM_OUTPUT_LOCAL
6413 @item ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
6414 A C statement (sans semicolon) to output to the stdio stream
6415 @var{stream} the assembler definition of a local-common-label named
6416 @var{name} whose size is @var{size} bytes.  The variable @var{rounded}
6417 is the size rounded up to whatever alignment the caller wants.
6418
6419 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6420 output the name itself; before and after that, output the additional
6421 assembler syntax for defining the name, and a newline.
6422
6423 This macro controls how the assembler definitions of uninitialized
6424 static variables are output.
6425
6426 @findex ASM_OUTPUT_ALIGNED_LOCAL
6427 @item ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment})
6428 Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a
6429 separate, explicit argument.  If you define this macro, it is used in
6430 place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in
6431 handling the required alignment of the variable.  The alignment is specified
6432 as the number of bits.
6433
6434 @findex ASM_OUTPUT_ALIGNED_DECL_LOCAL
6435 @item ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
6436 Like @code{ASM_OUTPUT_ALIGNED_DECL} except that @var{decl} of the
6437 variable to be output, if there is one, or @code{NULL_TREE} if there
6438 is no corresponding variable.  If you define this macro, GCC will use it
6439 in place of both @code{ASM_OUTPUT_DECL} and
6440 @code{ASM_OUTPUT_ALIGNED_DECL}.  Define this macro when you need to see
6441 the variable's decl in order to chose what to output.
6442
6443 @findex ASM_OUTPUT_SHARED_LOCAL
6444 @item ASM_OUTPUT_SHARED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
6445 If defined, it is similar to @code{ASM_OUTPUT_LOCAL}, except that it
6446 is used when @var{name} is shared.  If not defined, @code{ASM_OUTPUT_LOCAL}
6447 will be used.
6448 @end table
6449
6450 @node Label Output
6451 @subsection Output and Generation of Labels
6452
6453 @c prevent bad page break with this line
6454 This is about outputting labels.
6455
6456 @table @code
6457 @findex ASM_OUTPUT_LABEL
6458 @findex assemble_name
6459 @item ASM_OUTPUT_LABEL (@var{stream}, @var{name})
6460 A C statement (sans semicolon) to output to the stdio stream
6461 @var{stream} the assembler definition of a label named @var{name}.
6462 Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6463 output the name itself; before and after that, output the additional
6464 assembler syntax for defining the name, and a newline.  A default
6465 definition of this macro is provided which is correct for most systems.
6466
6467 @findex SIZE_ASM_OP
6468 @item SIZE_ASM_OP
6469 A C string containing the appropriate assembler directive to specify the
6470 size of a symbol, without any arguments.  On systems that use ELF, the
6471 default (in @file{config/elfos.h}) is @samp{"\t.size\t"}; on other
6472 systems, the default is not to define this macro.
6473
6474 Define this macro only if it is correct to use the default definitions
6475 of @code{ASM_OUTPUT_SIZE_DIRECTIVE} and @code{ASM_OUTPUT_MEASURED_SIZE}
6476 for your system.  If you need your own custom definitions of those
6477 macros, or if you do not need explicit symbol sizes at all, do not
6478 define this macro.
6479
6480 @findex ASM_OUTPUT_SIZE_DIRECTIVE
6481 @item ASM_OUTPUT_SIZE_DIRECTIVE (@var{stream}, @var{name}, @var{size})
6482 A C statement (sans semicolon) to output to the stdio stream
6483 @var{stream} a directive telling the assembler that the size of the
6484 symbol @var{name} is @var{size}.  @var{size} is a @code{HOST_WIDE_INT}.
6485 If you define @code{SIZE_ASM_OP}, a default definition of this macro is
6486 provided.
6487
6488 @findex ASM_OUTPUT_MEASURED_SIZE
6489 @item ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name})
6490 A C statement (sans semicolon) to output to the stdio stream
6491 @var{stream} a directive telling the assembler to calculate the size of
6492 the symbol @var{name} by subtracting its address from the current
6493 address.  
6494
6495 If you define @code{SIZE_ASM_OP}, a default definition of this macro is
6496 provided.  The default assumes that the assembler recognizes a special
6497 @samp{.} symbol as referring to the current address, and can calculate
6498 the difference between this and another symbol.  If your assembler does
6499 not recognize @samp{.} or cannot do calculations with it, you will need
6500 to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
6501
6502 @findex TYPE_ASM_OP
6503 @item TYPE_ASM_OP
6504 A C string containing the appropriate assembler directive to specify the
6505 type of a symbol, without any arguments.  On systems that use ELF, the
6506 default (in @file{config/elfos.h}) is @samp{"\t.type\t"}; on other
6507 systems, the default is not to define this macro.
6508
6509 Define this macro only if it is correct to use the default definition of
6510 @code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system.  If you need your own
6511 custom definition of this macro, or if you do not need explicit symbol
6512 types at all, do not define this macro.
6513
6514 @findex TYPE_OPERAND_FMT
6515 @item TYPE_OPERAND_FMT
6516 A C string which specifies (using @code{printf} syntax) the format of
6517 the second operand to @code{TYPE_ASM_OP}.  On systems that use ELF, the
6518 default (in @file{config/elfos.h}) is @samp{"@@%s"}; on other systems,
6519 the default is not to define this macro.
6520
6521 Define this macro only if it is correct to use the default definition of
6522 @code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system.  If you need your own
6523 custom definition of this macro, or if you do not need explicit symbol
6524 types at all, do not define this macro.
6525
6526 @findex ASM_OUTPUT_TYPE_DIRECTIVE
6527 @item ASM_OUTPUT_TYPE_DIRECTIVE (@var{stream}, @var{type})
6528 A C statement (sans semicolon) to output to the stdio stream
6529 @var{stream} a directive telling the assembler that the type of the
6530 symbol @var{name} is @var{type}.  @var{type} is a C string; currently,
6531 that string is always either @samp{"function"} or @samp{"object"}, but
6532 you should not count on this.
6533
6534 If you define @code{TYPE_ASM_OP} and @code{TYPE_OPERAND_FMT}, a default
6535 definition of this macro is provided.
6536
6537 @findex ASM_DECLARE_FUNCTION_NAME
6538 @item ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl})
6539 A C statement (sans semicolon) to output to the stdio stream
6540 @var{stream} any text necessary for declaring the name @var{name} of a
6541 function which is being defined.  This macro is responsible for
6542 outputting the label definition (perhaps using
6543 @code{ASM_OUTPUT_LABEL}).  The argument @var{decl} is the
6544 @code{FUNCTION_DECL} tree node representing the function.
6545
6546 If this macro is not defined, then the function name is defined in the
6547 usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
6548
6549 You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
6550 of this macro.
6551
6552 @findex ASM_DECLARE_FUNCTION_SIZE
6553 @item ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl})
6554 A C statement (sans semicolon) to output to the stdio stream
6555 @var{stream} any text necessary for declaring the size of a function
6556 which is being defined.  The argument @var{name} is the name of the
6557 function.  The argument @var{decl} is the @code{FUNCTION_DECL} tree node
6558 representing the function.
6559
6560 If this macro is not defined, then the function size is not defined.
6561
6562 You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition
6563 of this macro.
6564
6565 @findex ASM_DECLARE_OBJECT_NAME
6566 @item ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl})
6567 A C statement (sans semicolon) to output to the stdio stream
6568 @var{stream} any text necessary for declaring the name @var{name} of an
6569 initialized variable which is being defined.  This macro must output the
6570 label definition (perhaps using @code{ASM_OUTPUT_LABEL}).  The argument
6571 @var{decl} is the @code{VAR_DECL} tree node representing the variable.
6572
6573 If this macro is not defined, then the variable name is defined in the
6574 usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
6575
6576 You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} and/or
6577 @code{ASM_OUTPUT_SIZE_DIRECTIVE} in the definition of this macro.
6578
6579 @findex ASM_DECLARE_REGISTER_GLOBAL
6580 @item ASM_DECLARE_REGISTER_GLOBAL (@var{stream}, @var{decl}, @var{regno}, @var{name})
6581 A C statement (sans semicolon) to output to the stdio stream
6582 @var{stream} any text necessary for claiming a register @var{regno}
6583 for a global variable @var{decl} with name @var{name}.
6584
6585 If you don't define this macro, that is equivalent to defining it to do
6586 nothing.
6587
6588 @findex  ASM_FINISH_DECLARE_OBJECT
6589 @item ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend})
6590 A C statement (sans semicolon) to finish up declaring a variable name
6591 once the compiler has processed its initializer fully and thus has had a
6592 chance to determine the size of an array when controlled by an
6593 initializer.  This is used on systems where it's necessary to declare
6594 something about the size of the object.
6595
6596 If you don't define this macro, that is equivalent to defining it to do
6597 nothing.
6598
6599 You may wish to use @code{ASM_OUTPUT_SIZE_DIRECTIVE} and/or
6600 @code{ASM_OUTPUT_MEASURED_SIZE} in the definition of this macro.
6601 @end table
6602
6603 @deftypefn {Target Hook} void TARGET_ASM_GLOBALIZE_LABEL (FILE *@var{stream}, const char *@var{name})
6604 This target hook is a function to output to the stdio stream
6605 @var{stream} some commands that will make the label @var{name} global;
6606 that is, available for reference from other files.
6607
6608 The default implementation relies on a proper definition of
6609 @code{GLOBAL_ASM_OP}.
6610 @end deftypefn
6611
6612 @table @code
6613 @findex ASM_WEAKEN_LABEL
6614 @item ASM_WEAKEN_LABEL (@var{stream}, @var{name})
6615 A C statement (sans semicolon) to output to the stdio stream
6616 @var{stream} some commands that will make the label @var{name} weak;
6617 that is, available for reference from other files but only used if
6618 no other definition is available.  Use the expression
6619 @code{assemble_name (@var{stream}, @var{name})} to output the name
6620 itself; before and after that, output the additional assembler syntax
6621 for making that name weak, and a newline.
6622
6623 If you don't define this macro or @code{ASM_WEAKEN_DECL}, GCC will not
6624 support weak symbols and you should not define the @code{SUPPORTS_WEAK}
6625 macro.
6626
6627 @findex ASM_WEAKEN_DECL
6628 @item ASM_WEAKEN_DECL (@var{stream}, @var{decl}, @var{name}, @var{value})
6629 Combines (and replaces) the function of @code{ASM_WEAKEN_LABEL} and
6630 @code{ASM_OUTPUT_WEAK_ALIAS}, allowing access to the associated function
6631 or variable decl.  If @var{value} is not @code{NULL}, this C statement
6632 should output to the stdio stream @var{stream} assembler code which
6633 defines (equates) the weak symbol @var{name} to have the value
6634 @var{value}.  If @var{value} is @code{NULL}, it should output commands
6635 to make @var{name} weak.
6636
6637 @findex SUPPORTS_WEAK
6638 @item SUPPORTS_WEAK
6639 A C expression which evaluates to true if the target supports weak symbols.
6640
6641 If you don't define this macro, @file{defaults.h} provides a default
6642 definition.  If either @code{ASM_WEAKEN_LABEL} or @code{ASM_WEAKEN_DECL}
6643 is defined, the default definition is @samp{1}; otherwise, it is
6644 @samp{0}.  Define this macro if you want to control weak symbol support
6645 with a compiler flag such as @option{-melf}.
6646
6647 @findex MAKE_DECL_ONE_ONLY (@var{decl})
6648 @item MAKE_DECL_ONE_ONLY
6649 A C statement (sans semicolon) to mark @var{decl} to be emitted as a
6650 public symbol such that extra copies in multiple translation units will
6651 be discarded by the linker.  Define this macro if your object file
6652 format provides support for this concept, such as the @samp{COMDAT}
6653 section flags in the Microsoft Windows PE/COFF format, and this support
6654 requires changes to @var{decl}, such as putting it in a separate section.
6655
6656 @findex SUPPORTS_ONE_ONLY
6657 @item SUPPORTS_ONE_ONLY
6658 A C expression which evaluates to true if the target supports one-only
6659 semantics.
6660
6661 If you don't define this macro, @file{varasm.c} provides a default
6662 definition.  If @code{MAKE_DECL_ONE_ONLY} is defined, the default
6663 definition is @samp{1}; otherwise, it is @samp{0}.  Define this macro if
6664 you want to control one-only symbol support with a compiler flag, or if
6665 setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
6666 be emitted as one-only.
6667
6668 @deftypefn {Target Hook} void TARGET_ASM_ASSEMBLE_VISIBILITY (tree @var{decl}, const char *@var{visibility})
6669 This target hook is a function to output to @var{asm_out_file} some
6670 commands that will make the symbol(s) associated with @var{decl} have
6671 hidden, protected or internal visibility as specified by @var{visibility}.
6672 @end deftypefn
6673
6674 @findex ASM_OUTPUT_EXTERNAL
6675 @item ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name})
6676 A C statement (sans semicolon) to output to the stdio stream
6677 @var{stream} any text necessary for declaring the name of an external
6678 symbol named @var{name} which is referenced in this compilation but
6679 not defined.  The value of @var{decl} is the tree node for the
6680 declaration.
6681
6682 This macro need not be defined if it does not need to output anything.
6683 The GNU assembler and most Unix assemblers don't require anything.
6684
6685 @findex ASM_OUTPUT_EXTERNAL_LIBCALL
6686 @item ASM_OUTPUT_EXTERNAL_LIBCALL (@var{stream}, @var{symref})
6687 A C statement (sans semicolon) to output on @var{stream} an assembler
6688 pseudo-op to declare a library function name external.  The name of the
6689 library function is given by @var{symref}, which has type @code{rtx} and
6690 is a @code{symbol_ref}.
6691
6692 This macro need not be defined if it does not need to output anything.
6693 The GNU assembler and most Unix assemblers don't require anything.
6694
6695 @findex ASM_OUTPUT_LABELREF
6696 @item ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
6697 A C statement (sans semicolon) to output to the stdio stream
6698 @var{stream} a reference in assembler syntax to a label named
6699 @var{name}.  This should add @samp{_} to the front of the name, if that
6700 is customary on your operating system, as it is in most Berkeley Unix
6701 systems.  This macro is used in @code{assemble_name}.
6702
6703 @findex ASM_OUTPUT_SYMBOL_REF
6704 @item ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym})
6705 A C statement (sans semicolon) to output a reference to
6706 @code{SYMBOL_REF} @var{sym}.  If not defined, @code{assemble_name}
6707 will be used to output the name of the symbol.  This macro may be used
6708 to modify the way a symbol is referenced depending on information
6709 encoded by @code{TARGET_ENCODE_SECTION_INFO}.
6710
6711 @findex ASM_OUTPUT_LABEL_REF
6712 @item ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf})
6713 A C statement (sans semicolon) to output a reference to @var{buf}, the
6714 result of @code{ASM_GENERATE_INTERNAL_LABEL}.  If not defined,
6715 @code{assemble_name} will be used to output the name of the symbol.
6716 This macro is not used by @code{output_asm_label}, or the @code{%l}
6717 specifier that calls it; the intention is that this macro should be set
6718 when it is necessary to output a label differently when its address is
6719 being taken.
6720
6721 @findex ASM_OUTPUT_INTERNAL_LABEL
6722 @item ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{prefix}, @var{num})
6723 A C statement to output to the stdio stream @var{stream} a label whose
6724 name is made from the string @var{prefix} and the number @var{num}.
6725
6726 It is absolutely essential that these labels be distinct from the labels
6727 used for user-level functions and variables.  Otherwise, certain programs
6728 will have name conflicts with internal labels.
6729
6730 It is desirable to exclude internal labels from the symbol table of the
6731 object file.  Most assemblers have a naming convention for labels that
6732 should be excluded; on many systems, the letter @samp{L} at the
6733 beginning of a label has this effect.  You should find out what
6734 convention your system uses, and follow it.
6735
6736 The usual definition of this macro is as follows:
6737
6738 @example
6739 fprintf (@var{stream}, "L%s%d:\n", @var{prefix}, @var{num})
6740 @end example
6741
6742 @findex ASM_OUTPUT_DEBUG_LABEL
6743 @item ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num})
6744 A C statement to output to the stdio stream @var{stream} a debug info
6745 label whose name is made from the string @var{prefix} and the number
6746 @var{num}.  This is useful for VLIW targets, where debug info labels
6747 may need to be treated differently than branch target labels.  On some
6748 systems, branch target labels must be at the beginning of instruction
6749 bundles, but debug info labels can occur in the middle of instruction
6750 bundles.
6751
6752 If this macro is not defined, then @code{ASM_OUTPUT_INTERNAL_LABEL} will be
6753 used.
6754
6755 @findex ASM_GENERATE_INTERNAL_LABEL
6756 @item ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num})
6757 A C statement to store into the string @var{string} a label whose name
6758 is made from the string @var{prefix} and the number @var{num}.
6759
6760 This string, when output subsequently by @code{assemble_name}, should
6761 produce the output that @code{ASM_OUTPUT_INTERNAL_LABEL} would produce
6762 with the same @var{prefix} and @var{num}.
6763
6764 If the string begins with @samp{*}, then @code{assemble_name} will
6765 output the rest of the string unchanged.  It is often convenient for
6766 @code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way.  If the
6767 string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets
6768 to output the string, and may change it.  (Of course,
6769 @code{ASM_OUTPUT_LABELREF} is also part of your machine description, so
6770 you should know what it does on your machine.)
6771
6772 @findex ASM_FORMAT_PRIVATE_NAME
6773 @item ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number})
6774 A C expression to assign to @var{outvar} (which is a variable of type
6775 @code{char *}) a newly allocated string made from the string
6776 @var{name} and the number @var{number}, with some suitable punctuation
6777 added.  Use @code{alloca} to get space for the string.
6778
6779 The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to
6780 produce an assembler label for an internal static variable whose name is
6781 @var{name}.  Therefore, the string must be such as to result in valid
6782 assembler code.  The argument @var{number} is different each time this
6783 macro is executed; it prevents conflicts between similarly-named
6784 internal static variables in different scopes.
6785
6786 Ideally this string should not be a valid C identifier, to prevent any
6787 conflict with the user's own symbols.  Most assemblers allow periods
6788 or percent signs in assembler symbols; putting at least one of these
6789 between the name and the number will suffice.
6790
6791 @findex ASM_OUTPUT_DEF
6792 @item ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value})
6793 A C statement to output to the stdio stream @var{stream} assembler code
6794 which defines (equates) the symbol @var{name} to have the value @var{value}.
6795
6796 @findex SET_ASM_OP
6797 If @code{SET_ASM_OP} is defined, a default definition is provided which is
6798 correct for most systems.
6799
6800 @findex ASM_OUTPUT_DEF_FROM_DECLS
6801 @item ASM_OUTPUT_DEF_FROM_DECLS (@var{stream}, @var{decl_of_name}, @var{decl_of_value})
6802 A C statement to output to the stdio stream @var{stream} assembler code
6803 which defines (equates) the symbol whose tree node is @var{decl_of_name}
6804 to have the value of the tree node @var{decl_of_value}.  This macro will
6805 be used in preference to @samp{ASM_OUTPUT_DEF} if it is defined and if
6806 the tree nodes are available.
6807
6808 @findex SET_ASM_OP
6809 If @code{SET_ASM_OP} is defined, a default definition is provided which is
6810 correct for most systems.
6811
6812 @findex ASM_OUTPUT_WEAK_ALIAS
6813 @item ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value})
6814 A C statement to output to the stdio stream @var{stream} assembler code
6815 which defines (equates) the weak symbol @var{name} to have the value
6816 @var{value}.  If @var{value} is @code{NULL}, it defines @var{name} as
6817 an undefined weak symbol.
6818
6819 Define this macro if the target only supports weak aliases; define
6820 @code{ASM_OUTPUT_DEF} instead if possible.
6821
6822 @findex OBJC_GEN_METHOD_LABEL
6823 @item OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name})
6824 Define this macro to override the default assembler names used for
6825 Objective-C methods.
6826
6827 The default name is a unique method number followed by the name of the
6828 class (e.g.@: @samp{_1_Foo}).  For methods in categories, the name of
6829 the category is also included in the assembler name (e.g.@:
6830 @samp{_1_Foo_Bar}).
6831
6832 These names are safe on most systems, but make debugging difficult since
6833 the method's selector is not present in the name.  Therefore, particular
6834 systems define other ways of computing names.
6835
6836 @var{buf} is an expression of type @code{char *} which gives you a
6837 buffer in which to store the name; its length is as long as
6838 @var{class_name}, @var{cat_name} and @var{sel_name} put together, plus
6839 50 characters extra.
6840
6841 The argument @var{is_inst} specifies whether the method is an instance
6842 method or a class method; @var{class_name} is the name of the class;
6843 @var{cat_name} is the name of the category (or @code{NULL} if the method is not
6844 in a category); and @var{sel_name} is the name of the selector.
6845
6846 On systems where the assembler can handle quoted names, you can use this
6847 macro to provide more human-readable names.
6848
6849 @findex ASM_DECLARE_CLASS_REFERENCE
6850 @item ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name})
6851 A C statement (sans semicolon) to output to the stdio stream
6852 @var{stream} commands to declare that the label @var{name} is an
6853 Objective-C class reference.  This is only needed for targets whose
6854 linkers have special support for NeXT-style runtimes.
6855
6856 @findex ASM_DECLARE_UNRESOLVED_REFERENCE
6857 @item ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name})
6858 A C statement (sans semicolon) to output to the stdio stream
6859 @var{stream} commands to declare that the label @var{name} is an
6860 unresolved Objective-C class reference.  This is only needed for targets
6861 whose linkers have special support for NeXT-style runtimes.
6862 @end table
6863
6864 @node Initialization
6865 @subsection How Initialization Functions Are Handled
6866 @cindex initialization routines
6867 @cindex termination routines
6868 @cindex constructors, output of
6869 @cindex destructors, output of
6870
6871 The compiled code for certain languages includes @dfn{constructors}
6872 (also called @dfn{initialization routines})---functions to initialize
6873 data in the program when the program is started.  These functions need
6874 to be called before the program is ``started''---that is to say, before
6875 @code{main} is called.
6876
6877 Compiling some languages generates @dfn{destructors} (also called
6878 @dfn{termination routines}) that should be called when the program
6879 terminates.
6880
6881 To make the initialization and termination functions work, the compiler
6882 must output something in the assembler code to cause those functions to
6883 be called at the appropriate time.  When you port the compiler to a new
6884 system, you need to specify how to do this.
6885
6886 There are two major ways that GCC currently supports the execution of
6887 initialization and termination functions.  Each way has two variants.
6888 Much of the structure is common to all four variations.
6889
6890 @findex __CTOR_LIST__
6891 @findex __DTOR_LIST__
6892 The linker must build two lists of these functions---a list of
6893 initialization functions, called @code{__CTOR_LIST__}, and a list of
6894 termination functions, called @code{__DTOR_LIST__}.
6895
6896 Each list always begins with an ignored function pointer (which may hold
6897 0, @minus{}1, or a count of the function pointers after it, depending on
6898 the environment).  This is followed by a series of zero or more function
6899 pointers to constructors (or destructors), followed by a function
6900 pointer containing zero.
6901
6902 Depending on the operating system and its executable file format, either
6903 @file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup
6904 time and exit time.  Constructors are called in reverse order of the
6905 list; destructors in forward order.
6906
6907 The best way to handle static constructors works only for object file
6908 formats which provide arbitrarily-named sections.  A section is set
6909 aside for a list of constructors, and another for a list of destructors.
6910 Traditionally these are called @samp{.ctors} and @samp{.dtors}.  Each
6911 object file that defines an initialization function also puts a word in
6912 the constructor section to point to that function.  The linker
6913 accumulates all these words into one contiguous @samp{.ctors} section.
6914 Termination functions are handled similarly.
6915
6916 This method will be chosen as the default by @file{target-def.h} if
6917 @code{TARGET_ASM_NAMED_SECTION} is defined.  A target that does not
6918 support arbitrary sections, but does support special designated
6919 constructor and destructor sections may define @code{CTORS_SECTION_ASM_OP}
6920 and @code{DTORS_SECTION_ASM_OP} to achieve the same effect.
6921
6922 When arbitrary sections are available, there are two variants, depending
6923 upon how the code in @file{crtstuff.c} is called.  On systems that
6924 support a @dfn{.init} section which is executed at program startup,
6925 parts of @file{crtstuff.c} are compiled into that section.  The
6926 program is linked by the @code{gcc} driver like this:
6927
6928 @example
6929 ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o
6930 @end example
6931
6932 The prologue of a function (@code{__init}) appears in the @code{.init}
6933 section of @file{crti.o}; the epilogue appears in @file{crtn.o}.  Likewise
6934 for the function @code{__fini} in the @dfn{.fini} section.  Normally these
6935 files are provided by the operating system or by the GNU C library, but
6936 are provided by GCC for a few targets.
6937
6938 The objects @file{crtbegin.o} and @file{crtend.o} are (for most targets)
6939 compiled from @file{crtstuff.c}.  They contain, among other things, code
6940 fragments within the @code{.init} and @code{.fini} sections that branch
6941 to routines in the @code{.text} section.  The linker will pull all parts
6942 of a section together, which results in a complete @code{__init} function
6943 that invokes the routines we need at startup.
6944
6945 To use this variant, you must define the @code{INIT_SECTION_ASM_OP}
6946 macro properly.
6947
6948 If no init section is available, when GCC compiles any function called
6949 @code{main} (or more accurately, any function designated as a program
6950 entry point by the language front end calling @code{expand_main_function}),
6951 it inserts a procedure call to @code{__main} as the first executable code
6952 after the function prologue.  The @code{__main} function is defined
6953 in @file{libgcc2.c} and runs the global constructors.
6954
6955 In file formats that don't support arbitrary sections, there are again
6956 two variants.  In the simplest variant, the GNU linker (GNU @code{ld})
6957 and an `a.out' format must be used.  In this case,
6958 @code{TARGET_ASM_CONSTRUCTOR} is defined to produce a @code{.stabs}
6959 entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__},
6960 and with the address of the void function containing the initialization
6961 code as its value.  The GNU linker recognizes this as a request to add
6962 the value to a @dfn{set}; the values are accumulated, and are eventually
6963 placed in the executable as a vector in the format described above, with
6964 a leading (ignored) count and a trailing zero element.
6965 @code{TARGET_ASM_DESTRUCTOR} is handled similarly.  Since no init
6966 section is available, the absence of @code{INIT_SECTION_ASM_OP} causes
6967 the compilation of @code{main} to call @code{__main} as above, starting
6968 the initialization process.
6969
6970 The last variant uses neither arbitrary sections nor the GNU linker.
6971 This is preferable when you want to do dynamic linking and when using
6972 file formats which the GNU linker does not support, such as `ECOFF'@.  In
6973 this case, @code{TARGET_HAVE_CTORS_DTORS} is false, initialization and
6974 termination functions are recognized simply by their names.  This requires
6975 an extra program in the linkage step, called @command{collect2}.  This program
6976 pretends to be the linker, for use with GCC; it does its job by running
6977 the ordinary linker, but also arranges to include the vectors of
6978 initialization and termination functions.  These functions are called
6979 via @code{__main} as described above.  In order to use this method,
6980 @code{use_collect2} must be defined in the target in @file{config.gcc}.
6981
6982 @ifinfo
6983 The following section describes the specific macros that control and
6984 customize the handling of initialization and termination functions.
6985 @end ifinfo
6986
6987 @node Macros for Initialization
6988 @subsection Macros Controlling Initialization Routines
6989
6990 Here are the macros that control how the compiler handles initialization
6991 and termination functions:
6992
6993 @table @code
6994 @findex INIT_SECTION_ASM_OP
6995 @item INIT_SECTION_ASM_OP
6996 If defined, a C string constant, including spacing, for the assembler
6997 operation to identify the following data as initialization code.  If not
6998 defined, GCC will assume such a section does not exist.  When you are
6999 using special sections for initialization and termination functions, this
7000 macro also controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to
7001 run the initialization functions.
7002
7003 @item HAS_INIT_SECTION
7004 @findex HAS_INIT_SECTION
7005 If defined, @code{main} will not call @code{__main} as described above.
7006 This macro should be defined for systems that control start-up code
7007 on a symbol-by-symbol basis, such as OSF/1, and should not
7008 be defined explicitly for systems that support @code{INIT_SECTION_ASM_OP}.
7009
7010 @item LD_INIT_SWITCH
7011 @findex LD_INIT_SWITCH
7012 If defined, a C string constant for a switch that tells the linker that
7013 the following symbol is an initialization routine.
7014
7015 @item LD_FINI_SWITCH
7016 @findex LD_FINI_SWITCH
7017 If defined, a C string constant for a switch that tells the linker that
7018 the following symbol is a finalization routine.
7019
7020 @item COLLECT_SHARED_INIT_FUNC (@var{stream}, @var{func})
7021 If defined, a C statement that will write a function that can be
7022 automatically called when a shared library is loaded.  The function
7023 should call @var{func}, which takes no arguments.  If not defined, and
7024 the object format requires an explicit initialization function, then a
7025 function called @code{_GLOBAL__DI} will be generated.
7026
7027 This function and the following one are used by collect2 when linking a
7028 shared library that needs constructors or destructors, or has DWARF2
7029 exception tables embedded in the code.
7030
7031 @item COLLECT_SHARED_FINI_FUNC (@var{stream}, @var{func})
7032 If defined, a C statement that will write a function that can be
7033 automatically called when a shared library is unloaded.  The function
7034 should call @var{func}, which takes no arguments.  If not defined, and
7035 the object format requires an explicit finalization function, then a
7036 function called @code{_GLOBAL__DD} will be generated.
7037
7038 @item INVOKE__main
7039 @findex INVOKE__main
7040 If defined, @code{main} will call @code{__main} despite the presence of
7041 @code{INIT_SECTION_ASM_OP}.  This macro should be defined for systems
7042 where the init section is not actually run automatically, but is still
7043 useful for collecting the lists of constructors and destructors.
7044
7045 @item SUPPORTS_INIT_PRIORITY
7046 @findex SUPPORTS_INIT_PRIORITY
7047 If nonzero, the C++ @code{init_priority} attribute is supported and the
7048 compiler should emit instructions to control the order of initialization
7049 of objects.  If zero, the compiler will issue an error message upon
7050 encountering an @code{init_priority} attribute.
7051 @end table
7052
7053 @deftypefn {Target Hook} bool TARGET_HAVE_CTORS_DTORS
7054 This value is true if the target supports some ``native'' method of
7055 collecting constructors and destructors to be run at startup and exit.
7056 It is false if we must use @command{collect2}.
7057 @end deftypefn
7058
7059 @deftypefn {Target Hook} void TARGET_ASM_CONSTRUCTOR (rtx @var{symbol}, int @var{priority})
7060 If defined, a function that outputs assembler code to arrange to call
7061 the function referenced by @var{symbol} at initialization time.
7062
7063 Assume that @var{symbol} is a @code{SYMBOL_REF} for a function taking
7064 no arguments and with no return value.  If the target supports initialization
7065 priorities, @var{priority} is a value between 0 and @code{MAX_INIT_PRIORITY};
7066 otherwise it must be @code{DEFAULT_INIT_PRIORITY}.
7067
7068 If this macro is not defined by the target, a suitable default will
7069 be chosen if (1) the target supports arbitrary section names, (2) the
7070 target defines @code{CTORS_SECTION_ASM_OP}, or (3) @code{USE_COLLECT2}
7071 is not defined.
7072 @end deftypefn
7073
7074 @deftypefn {Target Hook} void TARGET_ASM_DESTRUCTOR (rtx @var{symbol}, int @var{priority})
7075 This is like @code{TARGET_ASM_CONSTRUCTOR} but used for termination
7076 functions rather than initialization functions.
7077 @end deftypefn
7078
7079 If @code{TARGET_HAVE_CTORS_DTORS} is true, the initialization routine
7080 generated for the generated object file will have static linkage.
7081
7082 If your system uses @command{collect2} as the means of processing
7083 constructors, then that program normally uses @command{nm} to scan
7084 an object file for constructor functions to be called.
7085
7086 On certain kinds of systems, you can define these macros to make
7087 @command{collect2} work faster (and, in some cases, make it work at all):
7088
7089 @table @code
7090 @findex OBJECT_FORMAT_COFF
7091 @item OBJECT_FORMAT_COFF
7092 Define this macro if the system uses COFF (Common Object File Format)
7093 object files, so that @command{collect2} can assume this format and scan
7094 object files directly for dynamic constructor/destructor functions.
7095
7096 @findex OBJECT_FORMAT_ROSE
7097 @item OBJECT_FORMAT_ROSE
7098 Define this macro if the system uses ROSE format object files, so that
7099 @command{collect2} can assume this format and scan object files directly
7100 for dynamic constructor/destructor functions.
7101
7102 These macros are effective only in a native compiler; @command{collect2} as
7103 part of a cross compiler always uses @command{nm} for the target machine.
7104
7105 @findex REAL_NM_FILE_NAME
7106 @item REAL_NM_FILE_NAME
7107 Define this macro as a C string constant containing the file name to use
7108 to execute @command{nm}.  The default is to search the path normally for
7109 @command{nm}.
7110
7111 If your system supports shared libraries and has a program to list the
7112 dynamic dependencies of a given library or executable, you can define
7113 these macros to enable support for running initialization and
7114 termination functions in shared libraries:
7115
7116 @findex LDD_SUFFIX
7117 @item LDD_SUFFIX
7118 Define this macro to a C string constant containing the name of the program
7119 which lists dynamic dependencies, like @command{"ldd"} under SunOS 4.
7120
7121 @findex PARSE_LDD_OUTPUT
7122 @item PARSE_LDD_OUTPUT (@var{ptr})
7123 Define this macro to be C code that extracts filenames from the output
7124 of the program denoted by @code{LDD_SUFFIX}.  @var{ptr} is a variable
7125 of type @code{char *} that points to the beginning of a line of output
7126 from @code{LDD_SUFFIX}.  If the line lists a dynamic dependency, the
7127 code must advance @var{ptr} to the beginning of the filename on that
7128 line.  Otherwise, it must set @var{ptr} to @code{NULL}.
7129 @end table
7130
7131 @node Instruction Output
7132 @subsection Output of Assembler Instructions
7133
7134 @c prevent bad page break with this line
7135 This describes assembler instruction output.
7136
7137 @table @code
7138 @findex REGISTER_NAMES
7139 @item REGISTER_NAMES
7140 A C initializer containing the assembler's names for the machine
7141 registers, each one as a C string constant.  This is what translates
7142 register numbers in the compiler into assembler language.
7143
7144 @findex ADDITIONAL_REGISTER_NAMES
7145 @item ADDITIONAL_REGISTER_NAMES
7146 If defined, a C initializer for an array of structures containing a name
7147 and a register number.  This macro defines additional names for hard
7148 registers, thus allowing the @code{asm} option in declarations to refer
7149 to registers using alternate names.
7150
7151 @findex ASM_OUTPUT_OPCODE
7152 @item ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
7153 Define this macro if you are using an unusual assembler that
7154 requires different names for the machine instructions.
7155
7156 The definition is a C statement or statements which output an
7157 assembler instruction opcode to the stdio stream @var{stream}.  The
7158 macro-operand @var{ptr} is a variable of type @code{char *} which
7159 points to the opcode name in its ``internal'' form---the form that is
7160 written in the machine description.  The definition should output the
7161 opcode name to @var{stream}, performing any translation you desire, and
7162 increment the variable @var{ptr} to point at the end of the opcode
7163 so that it will not be output twice.
7164
7165 In fact, your macro definition may process less than the entire opcode
7166 name, or more than the opcode name; but if you want to process text
7167 that includes @samp{%}-sequences to substitute operands, you must take
7168 care of the substitution yourself.  Just be sure to increment
7169 @var{ptr} over whatever text should not be output normally.
7170
7171 @findex recog_data.operand
7172 If you need to look at the operand values, they can be found as the
7173 elements of @code{recog_data.operand}.
7174
7175 If the macro definition does nothing, the instruction is output
7176 in the usual way.
7177
7178 @findex FINAL_PRESCAN_INSN
7179 @item FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands})
7180 If defined, a C statement to be executed just prior to the output of
7181 assembler code for @var{insn}, to modify the extracted operands so
7182 they will be output differently.
7183
7184 Here the argument @var{opvec} is the vector containing the operands
7185 extracted from @var{insn}, and @var{noperands} is the number of
7186 elements of the vector which contain meaningful data for this insn.
7187 The contents of this vector are what will be used to convert the insn
7188 template into assembler code, so you can change the assembler output
7189 by changing the contents of the vector.
7190
7191 This macro is useful when various assembler syntaxes share a single
7192 file of instruction patterns; by defining this macro differently, you
7193 can cause a large class of instructions to be output differently (such
7194 as with rearranged operands).  Naturally, variations in assembler
7195 syntax affecting individual insn patterns ought to be handled by
7196 writing conditional output routines in those patterns.
7197
7198 If this macro is not defined, it is equivalent to a null statement.
7199
7200 @findex FINAL_PRESCAN_LABEL
7201 @item FINAL_PRESCAN_LABEL
7202 If defined, @code{FINAL_PRESCAN_INSN} will be called on each
7203 @code{CODE_LABEL}.  In that case, @var{opvec} will be a null pointer and
7204 @var{noperands} will be zero.
7205
7206 @findex PRINT_OPERAND
7207 @item PRINT_OPERAND (@var{stream}, @var{x}, @var{code})
7208 A C compound statement to output to stdio stream @var{stream} the
7209 assembler syntax for an instruction operand @var{x}.  @var{x} is an
7210 RTL expression.
7211
7212 @var{code} is a value that can be used to specify one of several ways
7213 of printing the operand.  It is used when identical operands must be
7214 printed differently depending on the context.  @var{code} comes from
7215 the @samp{%} specification that was used to request printing of the
7216 operand.  If the specification was just @samp{%@var{digit}} then
7217 @var{code} is 0; if the specification was @samp{%@var{ltr}
7218 @var{digit}} then @var{code} is the ASCII code for @var{ltr}.
7219
7220 @findex reg_names
7221 If @var{x} is a register, this macro should print the register's name.
7222 The names can be found in an array @code{reg_names} whose type is
7223 @code{char *[]}.  @code{reg_names} is initialized from
7224 @code{REGISTER_NAMES}.
7225
7226 When the machine description has a specification @samp{%@var{punct}}
7227 (a @samp{%} followed by a punctuation character), this macro is called
7228 with a null pointer for @var{x} and the punctuation character for
7229 @var{code}.
7230
7231 @findex PRINT_OPERAND_PUNCT_VALID_P
7232 @item PRINT_OPERAND_PUNCT_VALID_P (@var{code})
7233 A C expression which evaluates to true if @var{code} is a valid
7234 punctuation character for use in the @code{PRINT_OPERAND} macro.  If
7235 @code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no
7236 punctuation characters (except for the standard one, @samp{%}) are used
7237 in this way.
7238
7239 @findex PRINT_OPERAND_ADDRESS
7240 @item PRINT_OPERAND_ADDRESS (@var{stream}, @var{x})
7241 A C compound statement to output to stdio stream @var{stream} the
7242 assembler syntax for an instruction operand that is a memory reference
7243 whose address is @var{x}.  @var{x} is an RTL expression.
7244
7245 @cindex @code{TARGET_ENCODE_SECTION_INFO} usage
7246 On some machines, the syntax for a symbolic address depends on the
7247 section that the address refers to.  On these machines, define the hook
7248 @code{TARGET_ENCODE_SECTION_INFO} to store the information into the
7249 @code{symbol_ref}, and then check for it here.  @xref{Assembler Format}.
7250
7251 @findex DBR_OUTPUT_SEQEND
7252 @findex dbr_sequence_length
7253 @item DBR_OUTPUT_SEQEND(@var{file})
7254 A C statement, to be executed after all slot-filler instructions have
7255 been output.  If necessary, call @code{dbr_sequence_length} to
7256 determine the number of slots filled in a sequence (zero if not
7257 currently outputting a sequence), to decide how many no-ops to output,
7258 or whatever.
7259
7260 Don't define this macro if it has nothing to do, but it is helpful in
7261 reading assembly output if the extent of the delay sequence is made
7262 explicit (e.g.@: with white space).
7263
7264 @findex final_sequence
7265 Note that output routines for instructions with delay slots must be
7266 prepared to deal with not being output as part of a sequence
7267 (i.e.@: when the scheduling pass is not run, or when no slot fillers could be
7268 found.)  The variable @code{final_sequence} is null when not
7269 processing a sequence, otherwise it contains the @code{sequence} rtx
7270 being output.
7271
7272 @findex REGISTER_PREFIX
7273 @findex LOCAL_LABEL_PREFIX
7274 @findex USER_LABEL_PREFIX
7275 @findex IMMEDIATE_PREFIX
7276 @findex asm_fprintf
7277 @item REGISTER_PREFIX
7278 @itemx LOCAL_LABEL_PREFIX
7279 @itemx USER_LABEL_PREFIX
7280 @itemx IMMEDIATE_PREFIX
7281 If defined, C string expressions to be used for the @samp{%R}, @samp{%L},
7282 @samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see
7283 @file{final.c}).  These are useful when a single @file{md} file must
7284 support multiple assembler formats.  In that case, the various @file{tm.h}
7285 files can define these macros differently.
7286
7287 @item ASM_FPRINTF_EXTENSIONS(@var{file}, @var{argptr}, @var{format})
7288 @findex ASM_FPRINTF_EXTENSIONS
7289 If defined this macro should expand to a series of @code{case}
7290 statements which will be parsed inside the @code{switch} statement of
7291 the @code{asm_fprintf} function.  This allows targets to define extra
7292 printf formats which may useful when generating their assembler
7293 statements.  Note that upper case letters are reserved for future
7294 generic extensions to asm_fprintf, and so are not available to target
7295 specific code.  The output file is given by the parameter @var{file}.
7296 The varargs input pointer is @var{argptr} and the rest of the format
7297 string, starting the character after the one that is being switched
7298 upon, is pointed to by @var{format}.
7299
7300 @findex ASSEMBLER_DIALECT
7301 @item ASSEMBLER_DIALECT
7302 If your target supports multiple dialects of assembler language (such as
7303 different opcodes), define this macro as a C expression that gives the
7304 numeric index of the assembler language dialect to use, with zero as the
7305 first variant.
7306
7307 If this macro is defined, you may use constructs of the form
7308 @smallexample
7309 @samp{@{option0|option1|option2@dots{}@}}
7310 @end smallexample
7311 @noindent
7312 in the output templates of patterns (@pxref{Output Template}) or in the
7313 first argument of @code{asm_fprintf}.  This construct outputs
7314 @samp{option0}, @samp{option1}, @samp{option2}, etc., if the value of
7315 @code{ASSEMBLER_DIALECT} is zero, one, two, etc.  Any special characters
7316 within these strings retain their usual meaning.  If there are fewer
7317 alternatives within the braces than the value of
7318 @code{ASSEMBLER_DIALECT}, the construct outputs nothing.
7319
7320 If you do not define this macro, the characters @samp{@{}, @samp{|} and
7321 @samp{@}} do not have any special meaning when used in templates or
7322 operands to @code{asm_fprintf}.
7323
7324 Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX},
7325 @code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express
7326 the variations in assembler language syntax with that mechanism.  Define
7327 @code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax
7328 if the syntax variant are larger and involve such things as different
7329 opcodes or operand order.
7330
7331 @findex ASM_OUTPUT_REG_PUSH
7332 @item ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno})
7333 A C expression to output to @var{stream} some assembler code
7334 which will push hard register number @var{regno} onto the stack.
7335 The code need not be optimal, since this macro is used only when
7336 profiling.
7337
7338 @findex ASM_OUTPUT_REG_POP
7339 @item ASM_OUTPUT_REG_POP (@var{stream}, @var{regno})
7340 A C expression to output to @var{stream} some assembler code
7341 which will pop hard register number @var{regno} off of the stack.
7342 The code need not be optimal, since this macro is used only when
7343 profiling.
7344 @end table
7345
7346 @node Dispatch Tables
7347 @subsection Output of Dispatch Tables
7348
7349 @c prevent bad page break with this line
7350 This concerns dispatch tables.
7351
7352 @table @code
7353 @cindex dispatch table
7354 @findex ASM_OUTPUT_ADDR_DIFF_ELT
7355 @item ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{body}, @var{value}, @var{rel})
7356 A C statement to output to the stdio stream @var{stream} an assembler
7357 pseudo-instruction to generate a difference between two labels.
7358 @var{value} and @var{rel} are the numbers of two internal labels.  The
7359 definitions of these labels are output using
7360 @code{ASM_OUTPUT_INTERNAL_LABEL}, and they must be printed in the same
7361 way here.  For example,
7362
7363 @example
7364 fprintf (@var{stream}, "\t.word L%d-L%d\n",
7365          @var{value}, @var{rel})
7366 @end example
7367
7368 You must provide this macro on machines where the addresses in a
7369 dispatch table are relative to the table's own address.  If defined, GCC
7370 will also use this macro on all machines when producing PIC@.
7371 @var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the
7372 mode and flags can be read.
7373
7374 @findex ASM_OUTPUT_ADDR_VEC_ELT
7375 @item ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value})
7376 This macro should be provided on machines where the addresses
7377 in a dispatch table are absolute.
7378
7379 The definition should be a C statement to output to the stdio stream
7380 @var{stream} an assembler pseudo-instruction to generate a reference to
7381 a label.  @var{value} is the number of an internal label whose
7382 definition is output using @code{ASM_OUTPUT_INTERNAL_LABEL}.
7383 For example,
7384
7385 @example
7386 fprintf (@var{stream}, "\t.word L%d\n", @var{value})
7387 @end example
7388
7389 @findex ASM_OUTPUT_CASE_LABEL
7390 @item ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
7391 Define this if the label before a jump-table needs to be output
7392 specially.  The first three arguments are the same as for
7393 @code{ASM_OUTPUT_INTERNAL_LABEL}; the fourth argument is the
7394 jump-table which follows (a @code{jump_insn} containing an
7395 @code{addr_vec} or @code{addr_diff_vec}).
7396
7397 This feature is used on system V to output a @code{swbeg} statement
7398 for the table.
7399
7400 If this macro is not defined, these labels are output with
7401 @code{ASM_OUTPUT_INTERNAL_LABEL}.
7402
7403 @findex ASM_OUTPUT_CASE_END
7404 @item ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table})
7405 Define this if something special must be output at the end of a
7406 jump-table.  The definition should be a C statement to be executed
7407 after the assembler code for the table is written.  It should write
7408 the appropriate code to stdio stream @var{stream}.  The argument
7409 @var{table} is the jump-table insn, and @var{num} is the label-number
7410 of the preceding label.
7411
7412 If this macro is not defined, nothing special is output at the end of
7413 the jump-table.
7414 @end table
7415
7416 @node Exception Region Output
7417 @subsection Assembler Commands for Exception Regions
7418
7419 @c prevent bad page break with this line
7420
7421 This describes commands marking the start and the end of an exception
7422 region.
7423
7424 @table @code
7425 @findex EH_FRAME_SECTION_NAME
7426 @item EH_FRAME_SECTION_NAME
7427 If defined, a C string constant for the name of the section containing
7428 exception handling frame unwind information.  If not defined, GCC will
7429 provide a default definition if the target supports named sections.
7430 @file{crtstuff.c} uses this macro to switch to the appropriate section.
7431
7432 You should define this symbol if your target supports DWARF 2 frame
7433 unwind information and the default definition does not work.
7434
7435 @findex EH_FRAME_IN_DATA_SECTION
7436 @item EH_FRAME_IN_DATA_SECTION
7437 If defined, DWARF 2 frame unwind information will be placed in the
7438 data section even though the target supports named sections.  This
7439 might be necessary, for instance, if the system linker does garbage
7440 collection and sections cannot be marked as not to be collected.
7441
7442 Do not define this macro unless @code{TARGET_ASM_NAMED_SECTION} is
7443 also defined.
7444
7445 @findex MASK_RETURN_ADDR
7446 @item MASK_RETURN_ADDR
7447 An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so
7448 that it does not contain any extraneous set bits in it.
7449
7450 @findex DWARF2_UNWIND_INFO
7451 @item DWARF2_UNWIND_INFO
7452 Define this macro to 0 if your target supports DWARF 2 frame unwind
7453 information, but it does not yet work with exception handling.
7454 Otherwise, if your target supports this information (if it defines
7455 @samp{INCOMING_RETURN_ADDR_RTX} and either @samp{UNALIGNED_INT_ASM_OP}
7456 or @samp{OBJECT_FORMAT_ELF}), GCC will provide a default definition of
7457 1.
7458
7459 If this macro is defined to 1, the DWARF 2 unwinder will be the default
7460 exception handling mechanism; otherwise, @code{setjmp}/@code{longjmp} will be used by
7461 default.
7462
7463 If this macro is defined to anything, the DWARF 2 unwinder will be used
7464 instead of inline unwinders and @code{__unwind_function} in the non-@code{setjmp} case.
7465
7466 @findex DWARF_CIE_DATA_ALIGNMENT
7467 @item DWARF_CIE_DATA_ALIGNMENT
7468 This macro need only be defined if the target might save registers in the
7469 function prologue at an offset to the stack pointer that is not aligned to
7470 @code{UNITS_PER_WORD}.  The definition should be the negative minimum
7471 alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive
7472 minimum alignment otherwise.  @xref{SDB and DWARF}.  Only applicable if
7473 the target supports DWARF 2 frame unwind information.
7474
7475 @end table
7476
7477 @deftypefn {Target Hook} void TARGET_ASM_EXCEPTION_SECTION ()
7478 If defined, a function that switches to the section in which the main
7479 exception table is to be placed (@pxref{Sections}).  The default is a
7480 function that switches to a section named @code{.gcc_except_table} on
7481 machines that support named sections via
7482 @code{TARGET_ASM_NAMED_SECTION}, otherwise if @option{-fpic} or
7483 @option{-fPIC} is in effect, the @code{data_section}, otherwise the
7484 @code{readonly_data_section}.
7485 @end deftypefn
7486
7487 @deftypefn {Target Hook} void TARGET_ASM_EH_FRAME_SECTION ()
7488 If defined, a function that switches to the section in which the DWARF 2
7489 frame unwind information to be placed (@pxref{Sections}).  The default
7490 is a function that outputs a standard GAS section directive, if
7491 @code{EH_FRAME_SECTION_NAME} is defined, or else a data section
7492 directive followed by a synthetic label.
7493 @end deftypefn
7494
7495 @deftypevar {Target Hook} bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
7496 Contains the value true if the target should add a zero word onto the
7497 end of a Dwarf-2 frame info section when used for exception handling.
7498 Default value is false if @code{EH_FRAME_SECTION_NAME} is defined, and
7499 true otherwise.
7500 @end deftypevar
7501
7502 @node Alignment Output
7503 @subsection Assembler Commands for Alignment
7504
7505 @c prevent bad page break with this line
7506 This describes commands for alignment.
7507
7508 @table @code
7509 @findex JUMP_ALIGN
7510 @item JUMP_ALIGN (@var{label})
7511 The alignment (log base 2) to put in front of @var{label}, which is
7512 a common destination of jumps and has no fallthru incoming edge.
7513
7514 This macro need not be defined if you don't want any special alignment
7515 to be done at such a time.  Most machine descriptions do not currently
7516 define the macro.
7517
7518 Unless it's necessary to inspect the @var{label} parameter, it is better
7519 to set the variable @var{align_jumps} in the target's
7520 @code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honor the user's
7521 selection in @var{align_jumps} in a @code{JUMP_ALIGN} implementation.
7522
7523 @findex LABEL_ALIGN_AFTER_BARRIER
7524 @item LABEL_ALIGN_AFTER_BARRIER (@var{label})
7525 The alignment (log base 2) to put in front of @var{label}, which follows
7526 a @code{BARRIER}.
7527
7528 This macro need not be defined if you don't want any special alignment
7529 to be done at such a time.  Most machine descriptions do not currently
7530 define the macro.
7531
7532 @findex LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
7533 @item LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
7534 The maximum number of bytes to skip when applying
7535 @code{LABEL_ALIGN_AFTER_BARRIER}.  This works only if
7536 @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
7537
7538 @findex LOOP_ALIGN
7539 @item LOOP_ALIGN (@var{label})
7540 The alignment (log base 2) to put in front of @var{label}, which follows
7541 a @code{NOTE_INSN_LOOP_BEG} note.
7542
7543 This macro need not be defined if you don't want any special alignment
7544 to be done at such a time.  Most machine descriptions do not currently
7545 define the macro.
7546
7547 Unless it's necessary to inspect the @var{label} parameter, it is better
7548 to set the variable @code{align_loops} in the target's
7549 @code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honor the user's
7550 selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation.
7551
7552 @findex LOOP_ALIGN_MAX_SKIP
7553 @item LOOP_ALIGN_MAX_SKIP
7554 The maximum number of bytes to skip when applying @code{LOOP_ALIGN}.
7555 This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
7556
7557 @findex LABEL_ALIGN
7558 @item LABEL_ALIGN (@var{label})
7559 The alignment (log base 2) to put in front of @var{label}.
7560 If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment,
7561 the maximum of the specified values is used.
7562
7563 Unless it's necessary to inspect the @var{label} parameter, it is better
7564 to set the variable @code{align_labels} in the target's
7565 @code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honor the user's
7566 selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation.
7567
7568 @findex LABEL_ALIGN_MAX_SKIP
7569 @item LABEL_ALIGN_MAX_SKIP
7570 The maximum number of bytes to skip when applying @code{LABEL_ALIGN}.
7571 This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
7572
7573 @findex ASM_OUTPUT_SKIP
7574 @item ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
7575 A C statement to output to the stdio stream @var{stream} an assembler
7576 instruction to advance the location counter by @var{nbytes} bytes.
7577 Those bytes should be zero when loaded.  @var{nbytes} will be a C
7578 expression of type @code{int}.
7579
7580 @findex ASM_NO_SKIP_IN_TEXT
7581 @item ASM_NO_SKIP_IN_TEXT
7582 Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the
7583 text section because it fails to put zeros in the bytes that are skipped.
7584 This is true on many Unix systems, where the pseudo--op to skip bytes
7585 produces no-op instructions rather than zeros when used in the text
7586 section.
7587
7588 @findex ASM_OUTPUT_ALIGN
7589 @item ASM_OUTPUT_ALIGN (@var{stream}, @var{power})
7590 A C statement to output to the stdio stream @var{stream} an assembler
7591 command to advance the location counter to a multiple of 2 to the
7592 @var{power} bytes.  @var{power} will be a C expression of type @code{int}.
7593
7594 @findex ASM_OUTPUT_ALIGN_WITH_NOP
7595 @item ASM_OUTPUT_ALIGN_WITH_NOP (@var{stream}, @var{power})
7596 Like @code{ASM_OUTPUT_ALIGN}, except that the ``nop'' instruction is used
7597 for padding, if necessary.
7598
7599 @findex ASM_OUTPUT_MAX_SKIP_ALIGN
7600 @item ASM_OUTPUT_MAX_SKIP_ALIGN (@var{stream}, @var{power}, @var{max_skip})
7601 A C statement to output to the stdio stream @var{stream} an assembler
7602 command to advance the location counter to a multiple of 2 to the
7603 @var{power} bytes, but only if @var{max_skip} or fewer bytes are needed to
7604 satisfy the alignment request.  @var{power} and @var{max_skip} will be
7605 a C expression of type @code{int}.
7606 @end table
7607
7608 @need 3000
7609 @node Debugging Info
7610 @section Controlling Debugging Information Format
7611
7612 @c prevent bad page break with this line
7613 This describes how to specify debugging information.
7614
7615 @menu
7616 * All Debuggers::      Macros that affect all debugging formats uniformly.
7617 * DBX Options::        Macros enabling specific options in DBX format.
7618 * DBX Hooks::          Hook macros for varying DBX format.
7619 * File Names and DBX:: Macros controlling output of file names in DBX format.
7620 * SDB and DWARF::      Macros for SDB (COFF) and DWARF formats.
7621 * VMS Debug::          Macros for VMS debug format.
7622 @end menu
7623
7624 @node All Debuggers
7625 @subsection Macros Affecting All Debugging Formats
7626
7627 @c prevent bad page break with this line
7628 These macros affect all debugging formats.
7629
7630 @table @code
7631 @findex DBX_REGISTER_NUMBER
7632 @item DBX_REGISTER_NUMBER (@var{regno})
7633 A C expression that returns the DBX register number for the compiler
7634 register number @var{regno}.  In the default macro provided, the value
7635 of this expression will be @var{regno} itself.  But sometimes there are
7636 some registers that the compiler knows about and DBX does not, or vice
7637 versa.  In such cases, some register may need to have one number in the
7638 compiler and another for DBX@.
7639
7640 If two registers have consecutive numbers inside GCC, and they can be
7641 used as a pair to hold a multiword value, then they @emph{must} have
7642 consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}.
7643 Otherwise, debuggers will be unable to access such a pair, because they
7644 expect register pairs to be consecutive in their own numbering scheme.
7645
7646 If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that
7647 does not preserve register pairs, then what you must do instead is
7648 redefine the actual register numbering scheme.
7649
7650 @findex DEBUGGER_AUTO_OFFSET
7651 @item DEBUGGER_AUTO_OFFSET (@var{x})
7652 A C expression that returns the integer offset value for an automatic
7653 variable having address @var{x} (an RTL expression).  The default
7654 computation assumes that @var{x} is based on the frame-pointer and
7655 gives the offset from the frame-pointer.  This is required for targets
7656 that produce debugging output for DBX or COFF-style debugging output
7657 for SDB and allow the frame-pointer to be eliminated when the
7658 @option{-g} options is used.
7659
7660 @findex DEBUGGER_ARG_OFFSET
7661 @item DEBUGGER_ARG_OFFSET (@var{offset}, @var{x})
7662 A C expression that returns the integer offset value for an argument
7663 having address @var{x} (an RTL expression).  The nominal offset is
7664 @var{offset}.
7665
7666 @findex PREFERRED_DEBUGGING_TYPE
7667 @item PREFERRED_DEBUGGING_TYPE
7668 A C expression that returns the type of debugging output GCC should
7669 produce when the user specifies just @option{-g}.  Define
7670 this if you have arranged for GCC to support more than one format of
7671 debugging output.  Currently, the allowable values are @code{DBX_DEBUG},
7672 @code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG},
7673 @code{XCOFF_DEBUG}, @code{VMS_DEBUG}, and @code{VMS_AND_DWARF2_DEBUG}.
7674
7675 When the user specifies @option{-ggdb}, GCC normally also uses the
7676 value of this macro to select the debugging output format, but with two
7677 exceptions.  If @code{DWARF2_DEBUGGING_INFO} is defined and
7678 @code{LINKER_DOES_NOT_WORK_WITH_DWARF2} is not defined, GCC uses the
7679 value @code{DWARF2_DEBUG}.  Otherwise, if @code{DBX_DEBUGGING_INFO} is
7680 defined, GCC uses @code{DBX_DEBUG}.
7681
7682 The value of this macro only affects the default debugging output; the
7683 user can always get a specific type of output by using @option{-gstabs},
7684 @option{-gcoff}, @option{-gdwarf-1}, @option{-gdwarf-2}, @option{-gxcoff},
7685 or @option{-gvms}.
7686 @end table
7687
7688 @node DBX Options
7689 @subsection Specific Options for DBX Output
7690
7691 @c prevent bad page break with this line
7692 These are specific options for DBX output.
7693
7694 @table @code
7695 @findex DBX_DEBUGGING_INFO
7696 @item DBX_DEBUGGING_INFO
7697 Define this macro if GCC should produce debugging output for DBX
7698 in response to the @option{-g} option.
7699
7700 @findex XCOFF_DEBUGGING_INFO
7701 @item XCOFF_DEBUGGING_INFO
7702 Define this macro if GCC should produce XCOFF format debugging output
7703 in response to the @option{-g} option.  This is a variant of DBX format.
7704
7705 @findex DEFAULT_GDB_EXTENSIONS
7706 @item DEFAULT_GDB_EXTENSIONS
7707 Define this macro to control whether GCC should by default generate
7708 GDB's extended version of DBX debugging information (assuming DBX-format
7709 debugging information is enabled at all).  If you don't define the
7710 macro, the default is 1: always generate the extended information
7711 if there is any occasion to.
7712
7713 @findex DEBUG_SYMS_TEXT
7714 @item DEBUG_SYMS_TEXT
7715 Define this macro if all @code{.stabs} commands should be output while
7716 in the text section.
7717
7718 @findex ASM_STABS_OP
7719 @item ASM_STABS_OP
7720 A C string constant, including spacing, naming the assembler pseudo op to
7721 use instead of @code{"\t.stabs\t"} to define an ordinary debugging symbol.
7722 If you don't define this macro, @code{"\t.stabs\t"} is used.  This macro
7723 applies only to DBX debugging information format.
7724
7725 @findex ASM_STABD_OP
7726 @item ASM_STABD_OP
7727 A C string constant, including spacing, naming the assembler pseudo op to
7728 use instead of @code{"\t.stabd\t"} to define a debugging symbol whose
7729 value is the current location.  If you don't define this macro,
7730 @code{"\t.stabd\t"} is used.  This macro applies only to DBX debugging
7731 information format.
7732
7733 @findex ASM_STABN_OP
7734 @item ASM_STABN_OP
7735 A C string constant, including spacing, naming the assembler pseudo op to
7736 use instead of @code{"\t.stabn\t"} to define a debugging symbol with no
7737 name.  If you don't define this macro, @code{"\t.stabn\t"} is used.  This
7738 macro applies only to DBX debugging information format.
7739
7740 @findex DBX_NO_XREFS
7741 @item DBX_NO_XREFS
7742 Define this macro if DBX on your system does not support the construct
7743 @samp{xs@var{tagname}}.  On some systems, this construct is used to
7744 describe a forward reference to a structure named @var{tagname}.
7745 On other systems, this construct is not supported at all.
7746
7747 @findex DBX_CONTIN_LENGTH
7748 @item DBX_CONTIN_LENGTH
7749 A symbol name in DBX-format debugging information is normally
7750 continued (split into two separate @code{.stabs} directives) when it
7751 exceeds a certain length (by default, 80 characters).  On some
7752 operating systems, DBX requires this splitting; on others, splitting
7753 must not be done.  You can inhibit splitting by defining this macro
7754 with the value zero.  You can override the default splitting-length by
7755 defining this macro as an expression for the length you desire.
7756
7757 @findex DBX_CONTIN_CHAR
7758 @item DBX_CONTIN_CHAR
7759 Normally continuation is indicated by adding a @samp{\} character to
7760 the end of a @code{.stabs} string when a continuation follows.  To use
7761 a different character instead, define this macro as a character
7762 constant for the character you want to use.  Do not define this macro
7763 if backslash is correct for your system.
7764
7765 @findex DBX_STATIC_STAB_DATA_SECTION
7766 @item DBX_STATIC_STAB_DATA_SECTION
7767 Define this macro if it is necessary to go to the data section before
7768 outputting the @samp{.stabs} pseudo-op for a non-global static
7769 variable.
7770
7771 @findex DBX_TYPE_DECL_STABS_CODE
7772 @item DBX_TYPE_DECL_STABS_CODE
7773 The value to use in the ``code'' field of the @code{.stabs} directive
7774 for a typedef.  The default is @code{N_LSYM}.
7775
7776 @findex DBX_STATIC_CONST_VAR_CODE
7777 @item DBX_STATIC_CONST_VAR_CODE
7778 The value to use in the ``code'' field of the @code{.stabs} directive
7779 for a static variable located in the text section.  DBX format does not
7780 provide any ``right'' way to do this.  The default is @code{N_FUN}.
7781
7782 @findex DBX_REGPARM_STABS_CODE
7783 @item DBX_REGPARM_STABS_CODE
7784 The value to use in the ``code'' field of the @code{.stabs} directive
7785 for a parameter passed in registers.  DBX format does not provide any
7786 ``right'' way to do this.  The default is @code{N_RSYM}.
7787
7788 @findex DBX_REGPARM_STABS_LETTER
7789 @item DBX_REGPARM_STABS_LETTER
7790 The letter to use in DBX symbol data to identify a symbol as a parameter
7791 passed in registers.  DBX format does not customarily provide any way to
7792 do this.  The default is @code{'P'}.
7793
7794 @findex DBX_MEMPARM_STABS_LETTER
7795 @item DBX_MEMPARM_STABS_LETTER
7796 The letter to use in DBX symbol data to identify a symbol as a stack
7797 parameter.  The default is @code{'p'}.
7798
7799 @findex DBX_FUNCTION_FIRST
7800 @item DBX_FUNCTION_FIRST
7801 Define this macro if the DBX information for a function and its
7802 arguments should precede the assembler code for the function.  Normally,
7803 in DBX format, the debugging information entirely follows the assembler
7804 code.
7805
7806 @findex DBX_LBRAC_FIRST
7807 @item DBX_LBRAC_FIRST
7808 Define this macro if the @code{N_LBRAC} symbol for a block should
7809 precede the debugging information for variables and functions defined in
7810 that block.  Normally, in DBX format, the @code{N_LBRAC} symbol comes
7811 first.
7812
7813 @findex DBX_BLOCKS_FUNCTION_RELATIVE
7814 @item DBX_BLOCKS_FUNCTION_RELATIVE
7815 Define this macro if the value of a symbol describing the scope of a
7816 block (@code{N_LBRAC} or @code{N_RBRAC}) should be relative to the start
7817 of the enclosing function.  Normally, GCC uses an absolute address.
7818
7819 @findex DBX_USE_BINCL
7820 @item DBX_USE_BINCL
7821 Define this macro if GCC should generate @code{N_BINCL} and
7822 @code{N_EINCL} stabs for included header files, as on Sun systems.  This
7823 macro also directs GCC to output a type number as a pair of a file
7824 number and a type number within the file.  Normally, GCC does not
7825 generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single
7826 number for a type number.
7827 @end table
7828
7829 @node DBX Hooks
7830 @subsection Open-Ended Hooks for DBX Format
7831
7832 @c prevent bad page break with this line
7833 These are hooks for DBX format.
7834
7835 @table @code
7836 @findex DBX_OUTPUT_LBRAC
7837 @item DBX_OUTPUT_LBRAC (@var{stream}, @var{name})
7838 Define this macro to say how to output to @var{stream} the debugging
7839 information for the start of a scope level for variable names.  The
7840 argument @var{name} is the name of an assembler symbol (for use with
7841 @code{assemble_name}) whose value is the address where the scope begins.
7842
7843 @findex DBX_OUTPUT_RBRAC
7844 @item DBX_OUTPUT_RBRAC (@var{stream}, @var{name})
7845 Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level.
7846
7847 @findex DBX_OUTPUT_NFUN
7848 @item DBX_OUTPUT_NFUN (@var{stream}, @var{lscope_label}, @var{decl})
7849 Define this macro if the target machine requires special handling to
7850 output an @code{N_FUN} entry for the function @var{decl}.
7851
7852 @findex DBX_OUTPUT_ENUM
7853 @item DBX_OUTPUT_ENUM (@var{stream}, @var{type})
7854 Define this macro if the target machine requires special handling to
7855 output an enumeration type.  The definition should be a C statement
7856 (sans semicolon) to output the appropriate information to @var{stream}
7857 for the type @var{type}.
7858
7859 @findex DBX_OUTPUT_FUNCTION_END
7860 @item DBX_OUTPUT_FUNCTION_END (@var{stream}, @var{function})
7861 Define this macro if the target machine requires special output at the
7862 end of the debugging information for a function.  The definition should
7863 be a C statement (sans semicolon) to output the appropriate information
7864 to @var{stream}.  @var{function} is the @code{FUNCTION_DECL} node for
7865 the function.
7866
7867 @findex DBX_OUTPUT_STANDARD_TYPES
7868 @item DBX_OUTPUT_STANDARD_TYPES (@var{syms})
7869 Define this macro if you need to control the order of output of the
7870 standard data types at the beginning of compilation.  The argument
7871 @var{syms} is a @code{tree} which is a chain of all the predefined
7872 global symbols, including names of data types.
7873
7874 Normally, DBX output starts with definitions of the types for integers
7875 and characters, followed by all the other predefined types of the
7876 particular language in no particular order.
7877
7878 On some machines, it is necessary to output different particular types
7879 first.  To do this, define @code{DBX_OUTPUT_STANDARD_TYPES} to output
7880 those symbols in the necessary order.  Any predefined types that you
7881 don't explicitly output will be output afterward in no particular order.
7882
7883 Be careful not to define this macro so that it works only for C@.  There
7884 are no global variables to access most of the built-in types, because
7885 another language may have another set of types.  The way to output a
7886 particular type is to look through @var{syms} to see if you can find it.
7887 Here is an example:
7888
7889 @smallexample
7890 @{
7891   tree decl;
7892   for (decl = syms; decl; decl = TREE_CHAIN (decl))
7893     if (!strcmp (IDENTIFIER_POINTER (DECL_NAME (decl)),
7894                  "long int"))
7895       dbxout_symbol (decl);
7896   @dots{}
7897 @}
7898 @end smallexample
7899
7900 @noindent
7901 This does nothing if the expected type does not exist.
7902
7903 See the function @code{init_decl_processing} in @file{c-decl.c} to find
7904 the names to use for all the built-in C types.
7905
7906 Here is another way of finding a particular type:
7907
7908 @c this is still overfull.  --mew 10feb93
7909 @smallexample
7910 @{
7911   tree decl;
7912   for (decl = syms; decl; decl = TREE_CHAIN (decl))
7913     if (TREE_CODE (decl) == TYPE_DECL
7914         && (TREE_CODE (TREE_TYPE (decl))
7915             == INTEGER_CST)
7916         && TYPE_PRECISION (TREE_TYPE (decl)) == 16
7917         && TYPE_UNSIGNED (TREE_TYPE (decl)))
7918 @group
7919       /* @r{This must be @code{unsigned short}.}  */
7920       dbxout_symbol (decl);
7921   @dots{}
7922 @}
7923 @end group
7924 @end smallexample
7925
7926 @findex NO_DBX_FUNCTION_END
7927 @item NO_DBX_FUNCTION_END
7928 Some stabs encapsulation formats (in particular ECOFF), cannot handle the
7929 @code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extension construct.
7930 On those machines, define this macro to turn this feature off without
7931 disturbing the rest of the gdb extensions.
7932
7933 @end table
7934
7935 @node File Names and DBX
7936 @subsection File Names in DBX Format
7937
7938 @c prevent bad page break with this line
7939 This describes file names in DBX format.
7940
7941 @table @code
7942 @findex DBX_WORKING_DIRECTORY
7943 @item DBX_WORKING_DIRECTORY
7944 Define this if DBX wants to have the current directory recorded in each
7945 object file.
7946
7947 Note that the working directory is always recorded if GDB extensions are
7948 enabled.
7949
7950 @findex DBX_OUTPUT_MAIN_SOURCE_FILENAME
7951 @item DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
7952 A C statement to output DBX debugging information to the stdio stream
7953 @var{stream} which indicates that file @var{name} is the main source
7954 file---the file specified as the input file for compilation.
7955 This macro is called only once, at the beginning of compilation.
7956
7957 This macro need not be defined if the standard form of output
7958 for DBX debugging information is appropriate.
7959
7960 @findex DBX_OUTPUT_MAIN_SOURCE_DIRECTORY
7961 @item DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (@var{stream}, @var{name})
7962 A C statement to output DBX debugging information to the stdio stream
7963 @var{stream} which indicates that the current directory during
7964 compilation is named @var{name}.
7965
7966 This macro need not be defined if the standard form of output
7967 for DBX debugging information is appropriate.
7968
7969 @findex DBX_OUTPUT_MAIN_SOURCE_FILE_END
7970 @item DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
7971 A C statement to output DBX debugging information at the end of
7972 compilation of the main source file @var{name}.
7973
7974 If you don't define this macro, nothing special is output at the end
7975 of compilation, which is correct for most machines.
7976
7977 @findex DBX_OUTPUT_SOURCE_FILENAME
7978 @item DBX_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
7979 A C statement to output DBX debugging information to the stdio stream
7980 @var{stream} which indicates that file @var{name} is the current source
7981 file.  This output is generated each time input shifts to a different
7982 source file as a result of @samp{#include}, the end of an included file,
7983 or a @samp{#line} command.
7984
7985 This macro need not be defined if the standard form of output
7986 for DBX debugging information is appropriate.
7987 @end table
7988
7989 @need 2000
7990 @node SDB and DWARF
7991 @subsection Macros for SDB and DWARF Output
7992
7993 @c prevent bad page break with this line
7994 Here are macros for SDB and DWARF output.
7995
7996 @table @code
7997 @findex SDB_DEBUGGING_INFO
7998 @item SDB_DEBUGGING_INFO
7999 Define this macro if GCC should produce COFF-style debugging output
8000 for SDB in response to the @option{-g} option.
8001
8002 @findex DWARF_DEBUGGING_INFO
8003 @item DWARF_DEBUGGING_INFO
8004 Define this macro if GCC should produce dwarf format debugging output
8005 in response to the @option{-g} option.
8006
8007 @findex DWARF2_DEBUGGING_INFO
8008 @item DWARF2_DEBUGGING_INFO
8009 Define this macro if GCC should produce dwarf version 2 format
8010 debugging output in response to the @option{-g} option.
8011
8012 To support optional call frame debugging information, you must also
8013 define @code{INCOMING_RETURN_ADDR_RTX} and either set
8014 @code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
8015 prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
8016 as appropriate from @code{TARGET_ASM_FUNCTION_PROLOGUE} if you don't.
8017
8018 @findex DWARF2_FRAME_INFO
8019 @item DWARF2_FRAME_INFO
8020 Define this macro to a nonzero value if GCC should always output
8021 Dwarf 2 frame information.  If @code{DWARF2_UNWIND_INFO}
8022 (@pxref{Exception Region Output} is nonzero, GCC will output this
8023 information not matter how you define @code{DWARF2_FRAME_INFO}.
8024
8025 @findex LINKER_DOES_NOT_WORK_WITH_DWARF2
8026 @item LINKER_DOES_NOT_WORK_WITH_DWARF2
8027 Define this macro if the linker does not work with Dwarf version 2.
8028 Normally, if the user specifies only @option{-ggdb} GCC will use Dwarf
8029 version 2 if available; this macro disables this.  See the description
8030 of the @code{PREFERRED_DEBUGGING_TYPE} macro for more details.
8031
8032 @findex DWARF2_GENERATE_TEXT_SECTION_LABEL
8033 @item DWARF2_GENERATE_TEXT_SECTION_LABEL
8034 By default, the Dwarf 2 debugging information generator will generate a
8035 label to mark the beginning of the text section.  If it is better simply
8036 to use the name of the text section itself, rather than an explicit label,
8037 to indicate the beginning of the text section, define this macro to zero.
8038
8039 @findex DWARF2_ASM_LINE_DEBUG_INFO
8040 @item DWARF2_ASM_LINE_DEBUG_INFO
8041 Define this macro to be a nonzero value if the assembler can generate Dwarf 2
8042 line debug info sections.  This will result in much more compact line number
8043 tables, and hence is desirable if it works.
8044
8045 @findex ASM_OUTPUT_DWARF_DELTA
8046 @item ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2})
8047 A C statement to issue assembly directives that create a difference
8048 between the two given labels, using an integer of the given size.
8049
8050 @findex ASM_OUTPUT_DWARF_OFFSET
8051 @item ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label})
8052 A C statement to issue assembly directives that create a
8053 section-relative reference to the given label, using an integer of the
8054 given size.
8055
8056 @findex ASM_OUTPUT_DWARF_PCREL
8057 @item ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label})
8058 A C statement to issue assembly directives that create a self-relative
8059 reference to the given label, using an integer of the given size.
8060
8061 @findex PUT_SDB_@dots{}
8062 @item PUT_SDB_@dots{}
8063 Define these macros to override the assembler syntax for the special
8064 SDB assembler directives.  See @file{sdbout.c} for a list of these
8065 macros and their arguments.  If the standard syntax is used, you need
8066 not define them yourself.
8067
8068 @findex SDB_DELIM
8069 @item SDB_DELIM
8070 Some assemblers do not support a semicolon as a delimiter, even between
8071 SDB assembler directives.  In that case, define this macro to be the
8072 delimiter to use (usually @samp{\n}).  It is not necessary to define
8073 a new set of @code{PUT_SDB_@var{op}} macros if this is the only change
8074 required.
8075
8076 @findex SDB_GENERATE_FAKE
8077 @item SDB_GENERATE_FAKE
8078 Define this macro to override the usual method of constructing a dummy
8079 name for anonymous structure and union types.  See @file{sdbout.c} for
8080 more information.
8081
8082 @findex SDB_ALLOW_UNKNOWN_REFERENCES
8083 @item SDB_ALLOW_UNKNOWN_REFERENCES
8084 Define this macro to allow references to unknown structure,
8085 union, or enumeration tags to be emitted.  Standard COFF does not
8086 allow handling of unknown references, MIPS ECOFF has support for
8087 it.
8088
8089 @findex SDB_ALLOW_FORWARD_REFERENCES
8090 @item SDB_ALLOW_FORWARD_REFERENCES
8091 Define this macro to allow references to structure, union, or
8092 enumeration tags that have not yet been seen to be handled.  Some
8093 assemblers choke if forward tags are used, while some require it.
8094 @end table
8095
8096 @need 2000
8097 @node VMS Debug
8098 @subsection Macros for VMS Debug Format
8099
8100 @c prevent bad page break with this line
8101 Here are macros for VMS debug format.
8102
8103 @table @code
8104 @findex VMS_DEBUGGING_INFO
8105 @item VMS_DEBUGGING_INFO
8106 Define this macro if GCC should produce debugging output for VMS
8107 in response to the @option{-g} option.  The default behavior for VMS
8108 is to generate minimal debug info for a traceback in the absence of
8109 @option{-g} unless explicitly overridden with @option{-g0}.  This
8110 behavior is controlled by @code{OPTIMIZATION_OPTIONS} and
8111 @code{OVERRIDE_OPTIONS}.
8112 @end table
8113
8114 @node Floating Point
8115 @section Cross Compilation and Floating Point
8116 @cindex cross compilation and floating point
8117 @cindex floating point and cross compilation
8118
8119 While all modern machines use twos-complement representation for integers,
8120 there are a variety of representations for floating point numbers.  This
8121 means that in a cross-compiler the representation of floating point numbers
8122 in the compiled program may be different from that used in the machine
8123 doing the compilation.
8124
8125 Because different representation systems may offer different amounts of
8126 range and precision, all floating point constants must be represented in
8127 the target machine's format.  Therefore, the cross compiler cannot
8128 safely use the host machine's floating point arithmetic; it must emulate
8129 the target's arithmetic.  To ensure consistency, GCC always uses
8130 emulation to work with floating point values, even when the host and
8131 target floating point formats are identical.
8132
8133 The following macros are provided by @file{real.h} for the compiler to
8134 use.  All parts of the compiler which generate or optimize
8135 floating-point calculations must use these macros.  They may evaluate
8136 their operands more than once, so operands must not have side effects.
8137
8138 @defmac REAL_VALUE_TYPE
8139 The C data type to be used to hold a floating point value in the target
8140 machine's format.  Typically this is a @code{struct} containing an
8141 array of @code{HOST_WIDE_INT}, but all code should treat it as an opaque
8142 quantity.
8143 @end defmac
8144
8145 @deftypefn Macro int REAL_VALUES_EQUAL (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8146 Compares for equality the two values, @var{x} and @var{y}.  If the target
8147 floating point format supports negative zeroes and/or NaNs,
8148 @samp{REAL_VALUES_EQUAL (-0.0, 0.0)} is true, and
8149 @samp{REAL_VALUES_EQUAL (NaN, NaN)} is false.
8150 @end deftypefn
8151
8152 @deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8153 Tests whether @var{x} is less than @var{y}.
8154 @end deftypefn
8155
8156 @deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x})
8157 Truncates @var{x} to a signed integer, rounding toward zero.
8158 @end deftypefn
8159
8160 @deftypefn Macro {unsigned HOST_WIDE_INT} REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE @var{x})
8161 Truncates @var{x} to an unsigned integer, rounding toward zero.  If
8162 @var{x} is negative, returns zero.
8163 @end deftypefn
8164
8165 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *@var{string}, enum machine_mode @var{mode})
8166 Converts @var{string} into a floating point number in the target machine's
8167 representation for mode @var{mode}.  This routine can handle both
8168 decimal and hexadecimal floating point constants, using the syntax
8169 defined by the C language for both.
8170 @end deftypefn
8171
8172 @deftypefn Macro int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE @var{x})
8173 Returns 1 if @var{x} is negative (including negative zero), 0 otherwise.
8174 @end deftypefn
8175
8176 @deftypefn Macro int REAL_VALUE_ISINF (REAL_VALUE_TYPE @var{x})
8177 Determines whether @var{x} represents infinity (positive or negative).
8178 @end deftypefn
8179
8180 @deftypefn Macro int REAL_VALUE_ISNAN (REAL_VALUE_TYPE @var{x})
8181 Determines whether @var{x} represents a ``NaN'' (not-a-number).
8182 @end deftypefn
8183
8184 @deftypefn Macro void REAL_ARITHMETIC (REAL_VALUE_TYPE @var{output}, enum tree_code @var{code}, REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8185 Calculates an arithmetic operation on the two floating point values
8186 @var{x} and @var{y}, storing the result in @var{output} (which must be a
8187 variable).
8188
8189 The operation to be performed is specified by @var{code}.  Only the
8190 following codes are supported: @code{PLUS_EXPR}, @code{MINUS_EXPR},
8191 @code{MULT_EXPR}, @code{RDIV_EXPR}, @code{MAX_EXPR}, @code{MIN_EXPR}.
8192
8193 If @code{REAL_ARITHMETIC} is asked to evaluate division by zero and the
8194 target's floating point format cannot represent infinity, it will call
8195 @code{abort}.  Callers should check for this situation first, using
8196 @code{MODE_HAS_INFINITIES}.  @xref{Storage Layout}.
8197 @end deftypefn
8198
8199 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x})
8200 Returns the negative of the floating point value @var{x}.
8201 @end deftypefn
8202
8203 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x})
8204 Returns the absolute value of @var{x}.
8205 @end deftypefn
8206
8207 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE @var{mode}, enum machine_mode @var{x})
8208 Truncates the floating point value @var{x} to fit in @var{mode}.  The
8209 return value is still a full-size @code{REAL_VALUE_TYPE}, but it has an
8210 appropriate bit pattern to be output asa floating constant whose
8211 precision accords with mode @var{mode}.
8212 @end deftypefn
8213
8214 @deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT @var{high}, REAL_VALUE_TYPE @var{x})
8215 Converts a floating point value @var{x} into a double-precision integer
8216 which is then stored into @var{low} and @var{high}.  If the value is not
8217 integral, it is truncated.
8218 @end deftypefn
8219
8220 @deftypefn Macro void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE @var{x}, HOST_WIDE_INT @var{low}, HOST_WIDE_INT @var{high}, enum machine_mode @var{mode})
8221 @findex REAL_VALUE_FROM_INT
8222 Converts a double-precision integer found in @var{low} and @var{high},
8223 into a floating point value which is then stored into @var{x}.  The
8224 value is truncated to fit in mode @var{mode}.
8225 @end deftypefn
8226
8227 @node Mode Switching
8228 @section Mode Switching Instructions
8229 @cindex mode switching
8230 The following macros control mode switching optimizations:
8231
8232 @table @code
8233 @findex OPTIMIZE_MODE_SWITCHING
8234 @item OPTIMIZE_MODE_SWITCHING (@var{entity})
8235 Define this macro if the port needs extra instructions inserted for mode
8236 switching in an optimizing compilation.
8237
8238 For an example, the SH4 can perform both single and double precision
8239 floating point operations, but to perform a single precision operation,
8240 the FPSCR PR bit has to be cleared, while for a double precision
8241 operation, this bit has to be set.  Changing the PR bit requires a general
8242 purpose register as a scratch register, hence these FPSCR sets have to
8243 be inserted before reload, i.e.@: you can't put this into instruction emitting
8244 or @code{MACHINE_DEPENDENT_REORG}.
8245
8246 You can have multiple entities that are mode-switched, and select at run time
8247 which entities actually need it.  @code{OPTIMIZE_MODE_SWITCHING} should
8248 return nonzero for any @var{entity} that needs mode-switching.
8249 If you define this macro, you also have to define
8250 @code{NUM_MODES_FOR_MODE_SWITCHING}, @code{MODE_NEEDED},
8251 @code{MODE_PRIORITY_TO_MODE} and @code{EMIT_MODE_SET}.
8252 @code{NORMAL_MODE} is optional.
8253
8254 @findex NUM_MODES_FOR_MODE_SWITCHING
8255 @item NUM_MODES_FOR_MODE_SWITCHING
8256 If you define @code{OPTIMIZE_MODE_SWITCHING}, you have to define this as
8257 initializer for an array of integers.  Each initializer element
8258 N refers to an entity that needs mode switching, and specifies the number
8259 of different modes that might need to be set for this entity.
8260 The position of the initializer in the initializer - starting counting at
8261 zero - determines the integer that is used to refer to the mode-switched
8262 entity in question.
8263 In macros that take mode arguments / yield a mode result, modes are
8264 represented as numbers 0 @dots{} N @minus{} 1.  N is used to specify that no mode
8265 switch is needed / supplied.
8266
8267 @findex MODE_NEEDED
8268 @item MODE_NEEDED (@var{entity}, @var{insn})
8269 @var{entity} is an integer specifying a mode-switched entity.  If
8270 @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to
8271 return an integer value not larger than the corresponding element in
8272 @code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must
8273 be switched into prior to the execution of @var{insn}.
8274
8275 @findex NORMAL_MODE
8276 @item NORMAL_MODE (@var{entity})
8277 If this macro is defined, it is evaluated for every @var{entity} that needs
8278 mode switching.  It should evaluate to an integer, which is a mode that
8279 @var{entity} is assumed to be switched to at function entry and exit.
8280
8281 @findex MODE_PRIORITY_TO_MODE
8282 @item MODE_PRIORITY_TO_MODE (@var{entity}, @var{n})
8283 This macro specifies the order in which modes for @var{entity} are processed.
8284 0 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the
8285 lowest.  The value of the macro should be an integer designating a mode
8286 for @var{entity}.  For any fixed @var{entity}, @code{mode_priority_to_mode}
8287 (@var{entity}, @var{n}) shall be a bijection in 0 @dots{}
8288 @code{num_modes_for_mode_switching[@var{entity}] - 1}.
8289
8290 @findex EMIT_MODE_SET
8291 @item EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live})
8292 Generate one or more insns to set @var{entity} to @var{mode}.
8293 @var{hard_reg_live} is the set of hard registers live at the point where
8294 the insn(s) are to be inserted.
8295 @end table
8296
8297 @node Target Attributes
8298 @section Defining target-specific uses of @code{__attribute__}
8299 @cindex target attributes
8300 @cindex machine attributes
8301 @cindex attributes, target-specific
8302
8303 Target-specific attributes may be defined for functions, data and types.
8304 These are described using the following target hooks; they also need to
8305 be documented in @file{extend.texi}.
8306
8307 @deftypevr {Target Hook} {const struct attribute_spec *} TARGET_ATTRIBUTE_TABLE
8308 If defined, this target hook points to an array of @samp{struct
8309 attribute_spec} (defined in @file{tree.h}) specifying the machine
8310 specific attributes for this target and some of the restrictions on the
8311 entities to which these attributes are applied and the arguments they
8312 take.
8313 @end deftypevr
8314
8315 @deftypefn {Target Hook} int TARGET_COMP_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
8316 If defined, this target hook is a function which returns zero if the attributes on
8317 @var{type1} and @var{type2} are incompatible, one if they are compatible,
8318 and two if they are nearly compatible (which causes a warning to be
8319 generated).  If this is not defined, machine-specific attributes are
8320 supposed always to be compatible.
8321 @end deftypefn
8322
8323 @deftypefn {Target Hook} void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree @var{type})
8324 If defined, this target hook is a function which assigns default attributes to
8325 newly defined @var{type}.
8326 @end deftypefn
8327
8328 @deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
8329 Define this target hook if the merging of type attributes needs special
8330 handling.  If defined, the result is a list of the combined
8331 @code{TYPE_ATTRIBUTES} of @var{type1} and @var{type2}.  It is assumed
8332 that @code{comptypes} has already been called and returned 1.  This
8333 function may call @code{merge_attributes} to handle machine-independent
8334 merging.
8335 @end deftypefn
8336
8337 @deftypefn {Target Hook} tree TARGET_MERGE_DECL_ATTRIBUTES (tree @var{olddecl}, tree @var{newdecl})
8338 Define this target hook if the merging of decl attributes needs special
8339 handling.  If defined, the result is a list of the combined
8340 @code{DECL_ATTRIBUTES} of @var{olddecl} and @var{newdecl}.
8341 @var{newdecl} is a duplicate declaration of @var{olddecl}.  Examples of
8342 when this is needed are when one attribute overrides another, or when an
8343 attribute is nullified by a subsequent definition.  This function may
8344 call @code{merge_attributes} to handle machine-independent merging.
8345
8346 @findex TARGET_DLLIMPORT_DECL_ATTRIBUTES
8347 If the only target-specific handling you require is @samp{dllimport} for
8348 Windows targets, you should define the macro
8349 @code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}.  This links in a function
8350 called @code{merge_dllimport_decl_attributes} which can then be defined
8351 as the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}.  This is done
8352 in @file{i386/cygwin.h} and @file{i386/i386.c}, for example.
8353 @end deftypefn
8354
8355 @deftypefn {Target Hook} void TARGET_INSERT_ATTRIBUTES (tree @var{node}, tree *@var{attr_ptr})
8356 Define this target hook if you want to be able to add attributes to a decl
8357 when it is being created.  This is normally useful for back ends which
8358 wish to implement a pragma by using the attributes which correspond to
8359 the pragma's effect.  The @var{node} argument is the decl which is being
8360 created.  The @var{attr_ptr} argument is a pointer to the attribute list
8361 for this decl.  The list itself should not be modified, since it may be
8362 shared with other decls, but attributes may be chained on the head of
8363 the list and @code{*@var{attr_ptr}} modified to point to the new
8364 attributes, or a copy of the list may be made if further changes are
8365 needed.
8366 @end deftypefn
8367
8368 @deftypefn {Target Hook} bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree @var{fndecl})
8369 @cindex inlining
8370 This target hook returns @code{true} if it is ok to inline @var{fndecl}
8371 into the current function, despite its having target-specific
8372 attributes, @code{false} otherwise.  By default, if a function has a
8373 target specific attribute attached to it, it will not be inlined.
8374 @end deftypefn
8375
8376 @node MIPS Coprocessors
8377 @section Defining coprocessor specifics for MIPS targets.
8378 @cindex MIPS coprocessor-definition macros
8379
8380 The MIPS specification allows MIPS implementations to have as many as 4
8381 coprocessors, each with as many as 32 private registers.  gcc supports
8382 accessing these registers and transferring values between the registers
8383 and memory using asm-ized variables.  For example:
8384
8385 @smallexample
8386   register unsigned int cp0count asm ("c0r1");
8387   unsigned int d;
8388
8389   d = cp0count + 3;
8390 @end smallexample
8391
8392 (``c0r1'' is the default name of register 1 in coprocessor 0; alternate
8393 names may be added as described below, or the default names may be
8394 overridden entirely in @code{SUBTARGET_CONDITIONAL_REGISTER_USAGE}.)
8395
8396 Coprocessor registers are assumed to be epilogue-used; sets to them will
8397 be preserved even if it does not appear that the register is used again
8398 later in the function.
8399
8400 Another note: according to the MIPS spec, coprocessor 1 (if present) is
8401 the FPU.  One accesses COP1 registers through standard mips
8402 floating-point support; they are not included in this mechanism.
8403
8404 There is one macro used in defining the MIPS coprocessor interface which
8405 you may want to override in subtargets; it is described below.
8406
8407 @table @code
8408
8409 @item ALL_COP_ADDITIONAL_REGISTER_NAMES
8410 @findex ALL_COP_ADDITIONAL_REGISTER_NAMES
8411 A comma-separated list (with leading comma) of pairs describing the
8412 alternate names of coprocessor registers.  The format of each entry should be
8413 @smallexample
8414 @{ @var{alternatename}, @var{register_number}@}
8415 @end smallexample
8416 Default: empty.
8417
8418 @end table
8419
8420 @node Misc
8421 @section Miscellaneous Parameters
8422 @cindex parameters, miscellaneous
8423
8424 @c prevent bad page break with this line
8425 Here are several miscellaneous parameters.
8426
8427 @table @code
8428 @item PREDICATE_CODES
8429 @findex PREDICATE_CODES
8430 Define this if you have defined special-purpose predicates in the file
8431 @file{@var{machine}.c}.  This macro is called within an initializer of an
8432 array of structures.  The first field in the structure is the name of a
8433 predicate and the second field is an array of rtl codes.  For each
8434 predicate, list all rtl codes that can be in expressions matched by the
8435 predicate.  The list should have a trailing comma.  Here is an example
8436 of two entries in the list for a typical RISC machine:
8437
8438 @smallexample
8439 #define PREDICATE_CODES \
8440   @{"gen_reg_rtx_operand", @{SUBREG, REG@}@},  \
8441   @{"reg_or_short_cint_operand", @{SUBREG, REG, CONST_INT@}@},
8442 @end smallexample
8443
8444 Defining this macro does not affect the generated code (however,
8445 incorrect definitions that omit an rtl code that may be matched by the
8446 predicate can cause the compiler to malfunction).  Instead, it allows
8447 the table built by @file{genrecog} to be more compact and efficient,
8448 thus speeding up the compiler.  The most important predicates to include
8449 in the list specified by this macro are those used in the most insn
8450 patterns.
8451
8452 For each predicate function named in @code{PREDICATE_CODES}, a
8453 declaration will be generated in @file{insn-codes.h}.
8454
8455 @item SPECIAL_MODE_PREDICATES
8456 @findex SPECIAL_MODE_PREDICATES
8457 Define this if you have special predicates that know special things
8458 about modes.  Genrecog will warn about certain forms of
8459 @code{match_operand} without a mode; if the operand predicate is
8460 listed in @code{SPECIAL_MODE_PREDICATES}, the warning will be
8461 suppressed.
8462
8463 Here is an example from the IA-32 port (@code{ext_register_operand}
8464 specially checks for @code{HImode} or @code{SImode} in preparation
8465 for a byte extraction from @code{%ah} etc.).
8466
8467 @smallexample
8468 #define SPECIAL_MODE_PREDICATES \
8469   "ext_register_operand",
8470 @end smallexample
8471
8472 @findex CASE_VECTOR_MODE
8473 @item CASE_VECTOR_MODE
8474 An alias for a machine mode name.  This is the machine mode that
8475 elements of a jump-table should have.
8476
8477 @findex CASE_VECTOR_SHORTEN_MODE
8478 @item CASE_VECTOR_SHORTEN_MODE (@var{min_offset}, @var{max_offset}, @var{body})
8479 Optional: return the preferred mode for an @code{addr_diff_vec}
8480 when the minimum and maximum offset are known.  If you define this,
8481 it enables extra code in branch shortening to deal with @code{addr_diff_vec}.
8482 To make this work, you also have to define @code{INSN_ALIGN} and
8483 make the alignment for @code{addr_diff_vec} explicit.
8484 The @var{body} argument is provided so that the offset_unsigned and scale
8485 flags can be updated.
8486
8487 @findex CASE_VECTOR_PC_RELATIVE
8488 @item CASE_VECTOR_PC_RELATIVE
8489 Define this macro to be a C expression to indicate when jump-tables
8490 should contain relative addresses.  If jump-tables never contain
8491 relative addresses, then you need not define this macro.
8492
8493 @findex CASE_DROPS_THROUGH
8494 @item CASE_DROPS_THROUGH
8495 Define this if control falls through a @code{case} insn when the index
8496 value is out of range.  This means the specified default-label is
8497 actually ignored by the @code{case} insn proper.
8498
8499 @findex CASE_VALUES_THRESHOLD
8500 @item CASE_VALUES_THRESHOLD
8501 Define this to be the smallest number of different values for which it
8502 is best to use a jump-table instead of a tree of conditional branches.
8503 The default is four for machines with a @code{casesi} instruction and
8504 five otherwise.  This is best for most machines.
8505
8506 @findex WORD_REGISTER_OPERATIONS
8507 @item WORD_REGISTER_OPERATIONS
8508 Define this macro if operations between registers with integral mode
8509 smaller than a word are always performed on the entire register.
8510 Most RISC machines have this property and most CISC machines do not.
8511
8512 @findex LOAD_EXTEND_OP
8513 @item LOAD_EXTEND_OP (@var{mode})
8514 Define this macro to be a C expression indicating when insns that read
8515 memory in @var{mode}, an integral mode narrower than a word, set the
8516 bits outside of @var{mode} to be either the sign-extension or the
8517 zero-extension of the data read.  Return @code{SIGN_EXTEND} for values
8518 of @var{mode} for which the
8519 insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
8520 @code{NIL} for other modes.
8521
8522 This macro is not called with @var{mode} non-integral or with a width
8523 greater than or equal to @code{BITS_PER_WORD}, so you may return any
8524 value in this case.  Do not define this macro if it would always return
8525 @code{NIL}.  On machines where this macro is defined, you will normally
8526 define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
8527
8528 @findex SHORT_IMMEDIATES_SIGN_EXTEND
8529 @item SHORT_IMMEDIATES_SIGN_EXTEND
8530 Define this macro if loading short immediate values into registers sign
8531 extends.
8532
8533 @findex FIXUNS_TRUNC_LIKE_FIX_TRUNC
8534 @item FIXUNS_TRUNC_LIKE_FIX_TRUNC
8535 Define this macro if the same instructions that convert a floating
8536 point number to a signed fixed point number also convert validly to an
8537 unsigned one.
8538
8539 @findex MOVE_MAX
8540 @item MOVE_MAX
8541 The maximum number of bytes that a single instruction can move quickly
8542 between memory and registers or between two memory locations.
8543
8544 @findex MAX_MOVE_MAX
8545 @item MAX_MOVE_MAX
8546 The maximum number of bytes that a single instruction can move quickly
8547 between memory and registers or between two memory locations.  If this
8548 is undefined, the default is @code{MOVE_MAX}.  Otherwise, it is the
8549 constant value that is the largest value that @code{MOVE_MAX} can have
8550 at run-time.
8551
8552 @findex SHIFT_COUNT_TRUNCATED
8553 @item SHIFT_COUNT_TRUNCATED
8554 A C expression that is nonzero if on this machine the number of bits
8555 actually used for the count of a shift operation is equal to the number
8556 of bits needed to represent the size of the object being shifted.  When
8557 this macro is nonzero, the compiler will assume that it is safe to omit
8558 a sign-extend, zero-extend, and certain bitwise `and' instructions that
8559 truncates the count of a shift operation.  On machines that have
8560 instructions that act on bit-fields at variable positions, which may
8561 include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED}
8562 also enables deletion of truncations of the values that serve as
8563 arguments to bit-field instructions.
8564
8565 If both types of instructions truncate the count (for shifts) and
8566 position (for bit-field operations), or if no variable-position bit-field
8567 instructions exist, you should define this macro.
8568
8569 However, on some machines, such as the 80386 and the 680x0, truncation
8570 only applies to shift operations and not the (real or pretended)
8571 bit-field operations.  Define @code{SHIFT_COUNT_TRUNCATED} to be zero on
8572 such machines.  Instead, add patterns to the @file{md} file that include
8573 the implied truncation of the shift instructions.
8574
8575 You need not define this macro if it would always have the value of zero.
8576
8577 @findex TRULY_NOOP_TRUNCATION
8578 @item TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec})
8579 A C expression which is nonzero if on this machine it is safe to
8580 ``convert'' an integer of @var{inprec} bits to one of @var{outprec}
8581 bits (where @var{outprec} is smaller than @var{inprec}) by merely
8582 operating on it as if it had only @var{outprec} bits.
8583
8584 On many machines, this expression can be 1.
8585
8586 @c rearranged this, removed the phrase "it is reported that".  this was
8587 @c to fix an overfull hbox.  --mew 10feb93
8588 When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for
8589 modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result.
8590 If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in
8591 such cases may improve things.
8592
8593 @findex STORE_FLAG_VALUE
8594 @item STORE_FLAG_VALUE
8595 A C expression describing the value returned by a comparison operator
8596 with an integral mode and stored by a store-flag instruction
8597 (@samp{s@var{cond}}) when the condition is true.  This description must
8598 apply to @emph{all} the @samp{s@var{cond}} patterns and all the
8599 comparison operators whose results have a @code{MODE_INT} mode.
8600
8601 A value of 1 or @minus{}1 means that the instruction implementing the
8602 comparison operator returns exactly 1 or @minus{}1 when the comparison is true
8603 and 0 when the comparison is false.  Otherwise, the value indicates
8604 which bits of the result are guaranteed to be 1 when the comparison is
8605 true.  This value is interpreted in the mode of the comparison
8606 operation, which is given by the mode of the first operand in the
8607 @samp{s@var{cond}} pattern.  Either the low bit or the sign bit of
8608 @code{STORE_FLAG_VALUE} be on.  Presently, only those bits are used by
8609 the compiler.
8610
8611 If @code{STORE_FLAG_VALUE} is neither 1 or @minus{}1, the compiler will
8612 generate code that depends only on the specified bits.  It can also
8613 replace comparison operators with equivalent operations if they cause
8614 the required bits to be set, even if the remaining bits are undefined.
8615 For example, on a machine whose comparison operators return an
8616 @code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as
8617 @samp{0x80000000}, saying that just the sign bit is relevant, the
8618 expression
8619
8620 @smallexample
8621 (ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0))
8622 @end smallexample
8623
8624 @noindent
8625 can be converted to
8626
8627 @smallexample
8628 (ashift:SI @var{x} (const_int @var{n}))
8629 @end smallexample
8630
8631 @noindent
8632 where @var{n} is the appropriate shift count to move the bit being
8633 tested into the sign bit.
8634
8635 There is no way to describe a machine that always sets the low-order bit
8636 for a true value, but does not guarantee the value of any other bits,
8637 but we do not know of any machine that has such an instruction.  If you
8638 are trying to port GCC to such a machine, include an instruction to
8639 perform a logical-and of the result with 1 in the pattern for the
8640 comparison operators and let us know at @email{gcc@@gcc.gnu.org}.
8641
8642 Often, a machine will have multiple instructions that obtain a value
8643 from a comparison (or the condition codes).  Here are rules to guide the
8644 choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions
8645 to be used:
8646
8647 @itemize @bullet
8648 @item
8649 Use the shortest sequence that yields a valid definition for
8650 @code{STORE_FLAG_VALUE}.  It is more efficient for the compiler to
8651 ``normalize'' the value (convert it to, e.g., 1 or 0) than for the
8652 comparison operators to do so because there may be opportunities to
8653 combine the normalization with other operations.
8654
8655 @item
8656 For equal-length sequences, use a value of 1 or @minus{}1, with @minus{}1 being
8657 slightly preferred on machines with expensive jumps and 1 preferred on
8658 other machines.
8659
8660 @item
8661 As a second choice, choose a value of @samp{0x80000001} if instructions
8662 exist that set both the sign and low-order bits but do not define the
8663 others.
8664
8665 @item
8666 Otherwise, use a value of @samp{0x80000000}.
8667 @end itemize
8668
8669 Many machines can produce both the value chosen for
8670 @code{STORE_FLAG_VALUE} and its negation in the same number of
8671 instructions.  On those machines, you should also define a pattern for
8672 those cases, e.g., one matching
8673
8674 @smallexample
8675 (set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C})))
8676 @end smallexample
8677
8678 Some machines can also perform @code{and} or @code{plus} operations on
8679 condition code values with less instructions than the corresponding
8680 @samp{s@var{cond}} insn followed by @code{and} or @code{plus}.  On those
8681 machines, define the appropriate patterns.  Use the names @code{incscc}
8682 and @code{decscc}, respectively, for the patterns which perform
8683 @code{plus} or @code{minus} operations on condition code values.  See
8684 @file{rs6000.md} for some examples.  The GNU Superoptizer can be used to
8685 find such instruction sequences on other machines.
8686
8687 You need not define @code{STORE_FLAG_VALUE} if the machine has no store-flag
8688 instructions.
8689
8690 @findex FLOAT_STORE_FLAG_VALUE
8691 @item FLOAT_STORE_FLAG_VALUE (@var{mode})
8692 A C expression that gives a nonzero @code{REAL_VALUE_TYPE} value that is
8693 returned when comparison operators with floating-point results are true.
8694 Define this macro on machine that have comparison operations that return
8695 floating-point values.  If there are no such operations, do not define
8696 this macro.
8697
8698 @findex Pmode
8699 @item Pmode
8700 An alias for the machine mode for pointers.  On most machines, define
8701 this to be the integer mode corresponding to the width of a hardware
8702 pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines.
8703 On some machines you must define this to be one of the partial integer
8704 modes, such as @code{PSImode}.
8705
8706 The width of @code{Pmode} must be at least as large as the value of
8707 @code{POINTER_SIZE}.  If it is not equal, you must define the macro
8708 @code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended
8709 to @code{Pmode}.
8710
8711 @findex FUNCTION_MODE
8712 @item FUNCTION_MODE
8713 An alias for the machine mode used for memory references to functions
8714 being called, in @code{call} RTL expressions.  On most machines this
8715 should be @code{QImode}.
8716
8717 @findex INTEGRATE_THRESHOLD
8718 @item INTEGRATE_THRESHOLD (@var{decl})
8719 A C expression for the maximum number of instructions above which the
8720 function @var{decl} should not be inlined.  @var{decl} is a
8721 @code{FUNCTION_DECL} node.
8722
8723 The default definition of this macro is 64 plus 8 times the number of
8724 arguments that the function accepts.  Some people think a larger
8725 threshold should be used on RISC machines.
8726
8727 @findex STDC_0_IN_SYSTEM_HEADERS
8728 @item STDC_0_IN_SYSTEM_HEADERS
8729 In normal operation, the preprocessor expands @code{__STDC__} to the
8730 constant 1, to signify that GCC conforms to ISO Standard C@.  On some
8731 hosts, like Solaris, the system compiler uses a different convention,
8732 where @code{__STDC__} is normally 0, but is 1 if the user specifies
8733 strict conformance to the C Standard.
8734
8735 Defining @code{STDC_0_IN_SYSTEM_HEADERS} makes GNU CPP follows the host
8736 convention when processing system header files, but when processing user
8737 files @code{__STDC__} will always expand to 1.
8738
8739 @findex NO_IMPLICIT_EXTERN_C
8740 @item NO_IMPLICIT_EXTERN_C
8741 Define this macro if the system header files support C++ as well as C@.
8742 This macro inhibits the usual method of using system header files in
8743 C++, which is to pretend that the file's contents are enclosed in
8744 @samp{extern "C" @{@dots{}@}}.
8745
8746 @findex HANDLE_PRAGMA
8747 @item HANDLE_PRAGMA (@var{getc}, @var{ungetc}, @var{name})
8748 This macro is no longer supported.  You must use
8749 @code{REGISTER_TARGET_PRAGMAS} instead.
8750
8751 @findex REGISTER_TARGET_PRAGMAS
8752 @findex #pragma
8753 @findex pragma
8754 @item REGISTER_TARGET_PRAGMAS (@var{pfile})
8755 Define this macro if you want to implement any target-specific pragmas.
8756 If defined, it is a C expression which makes a series of calls to
8757 @code{cpp_register_pragma} for each pragma, with @var{pfile} passed as
8758 the first argument to to these functions.  The macro may also do any
8759 setup required for the pragmas.
8760
8761 The primary reason to define this macro is to provide compatibility with
8762 other compilers for the same target.  In general, we discourage
8763 definition of target-specific pragmas for GCC@.
8764
8765 If the pragma can be implemented by attributes then you should consider
8766 defining the target hook @samp{TARGET_INSERT_ATTRIBUTES} as well.
8767
8768 Preprocessor macros that appear on pragma lines are not expanded.  All
8769 @samp{#pragma} directives that do not match any registered pragma are
8770 silently ignored, unless the user specifies @option{-Wunknown-pragmas}.
8771
8772 @deftypefun void cpp_register_pragma (cpp_reader *@var{pfile}, const char *@var{space}, const char *@var{name}, void (*@var{callback}) (cpp_reader *))
8773
8774 Each call to @code{cpp_register_pragma} establishes one pragma.  The
8775 @var{callback} routine will be called when the preprocessor encounters a
8776 pragma of the form
8777
8778 @smallexample
8779 #pragma [@var{space}] @var{name} @dots{}
8780 @end smallexample
8781
8782 @var{space} is the case-sensitive namespace of the pragma, or
8783 @code{NULL} to put the pragma in the global namespace.  The callback
8784 routine receives @var{pfile} as its first argument, which can be passed
8785 on to cpplib's functions if necessary.  You can lex tokens after the
8786 @var{name} by calling @code{c_lex}.  Tokens that are not read by the
8787 callback will be silently ignored.  The end of the line is indicated by
8788 a token of type @code{CPP_EOF}.
8789
8790 For an example use of this routine, see @file{c4x.h} and the callback
8791 routines defined in @file{c4x-c.c}.
8792
8793 Note that the use of @code{c_lex} is specific to the C and C++
8794 compilers.  It will not work in the Java or Fortran compilers, or any
8795 other language compilers for that matter.  Thus if @code{c_lex} is going
8796 to be called from target-specific code, it must only be done so when
8797 building the C and C++ compilers.  This can be done by defining the
8798 variables @code{c_target_objs} and @code{cxx_target_objs} in the
8799 target entry in the @file{config.gcc} file.  These variables should name
8800 the target-specific, language-specific object file which contains the
8801 code that uses @code{c_lex}.  Note it will also be necessary to add a
8802 rule to the makefile fragment pointed to by @code{tmake_file} that shows
8803 how to build this object file.
8804 @end deftypefun
8805
8806 @findex HANDLE_SYSV_PRAGMA
8807 @findex #pragma
8808 @findex pragma
8809 @item HANDLE_SYSV_PRAGMA
8810 Define this macro (to a value of 1) if you want the System V style
8811 pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
8812 [=<value>]} to be supported by gcc.
8813
8814 The pack pragma specifies the maximum alignment (in bytes) of fields
8815 within a structure, in much the same way as the @samp{__aligned__} and
8816 @samp{__packed__} @code{__attribute__}s do.  A pack value of zero resets
8817 the behavior to the default.
8818
8819 A subtlety for Microsoft Visual C/C++ style bit-field packing
8820 (e.g. -mms-bitfields) for targets that support it:
8821 When a bit-field is inserted into a packed record, the whole size
8822 of the underlying type is used by one or more same-size adjacent
8823 bit-fields (that is, if its long:3, 32 bits is used in the record,
8824 and any additional adjacent long bit-fields are packed into the same
8825 chunk of 32 bits. However, if the size changes, a new field of that
8826 size is allocated).
8827
8828 If both MS bit-fields and @samp{__attribute__((packed))} are used,
8829 the latter will take precedence. If @samp{__attribute__((packed))} is
8830 used on a single field when MS bit-fields are in use, it will take
8831 precedence for that field, but the alignment of the rest of the structure
8832 may affect its placement.
8833
8834 The weak pragma only works if @code{SUPPORTS_WEAK} and
8835 @code{ASM_WEAKEN_LABEL} are defined.  If enabled it allows the creation
8836 of specifically named weak labels, optionally with a value.
8837
8838 @findex HANDLE_PRAGMA_PACK_PUSH_POP
8839 @findex #pragma
8840 @findex pragma
8841 @item HANDLE_PRAGMA_PACK_PUSH_POP
8842 Define this macro (to a value of 1) if you want to support the Win32
8843 style pragmas @samp{#pragma pack(push,@var{n})} and @samp{#pragma
8844 pack(pop)}.  The @samp{pack(push,@var{n})} pragma specifies the maximum alignment
8845 (in bytes) of fields within a structure, in much the same way as the
8846 @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do.  A
8847 pack value of zero resets the behavior to the default.  Successive
8848 invocations of this pragma cause the previous values to be stacked, so
8849 that invocations of @samp{#pragma pack(pop)} will return to the previous
8850 value.
8851
8852 @findex DOLLARS_IN_IDENTIFIERS
8853 @item DOLLARS_IN_IDENTIFIERS
8854 Define this macro to control use of the character @samp{$} in identifier
8855 names.  0 means @samp{$} is not allowed by default; 1 means it is allowed.
8856 1 is the default; there is no need to define this macro in that case.
8857 This macro controls the compiler proper; it does not affect the preprocessor.
8858
8859 @findex NO_DOLLAR_IN_LABEL
8860 @item NO_DOLLAR_IN_LABEL
8861 Define this macro if the assembler does not accept the character
8862 @samp{$} in label names.  By default constructors and destructors in
8863 G++ have @samp{$} in the identifiers.  If this macro is defined,
8864 @samp{.} is used instead.
8865
8866 @findex NO_DOT_IN_LABEL
8867 @item NO_DOT_IN_LABEL
8868 Define this macro if the assembler does not accept the character
8869 @samp{.} in label names.  By default constructors and destructors in G++
8870 have names that use @samp{.}.  If this macro is defined, these names
8871 are rewritten to avoid @samp{.}.
8872
8873 @findex DEFAULT_MAIN_RETURN
8874 @item DEFAULT_MAIN_RETURN
8875 Define this macro if the target system expects every program's @code{main}
8876 function to return a standard ``success'' value by default (if no other
8877 value is explicitly returned).
8878
8879 The definition should be a C statement (sans semicolon) to generate the
8880 appropriate rtl instructions.  It is used only when compiling the end of
8881 @code{main}.
8882
8883 @item NEED_ATEXIT
8884 @findex NEED_ATEXIT
8885 Define this if the target system lacks the function @code{atexit}
8886 from the ISO C standard.  If this macro is defined, a default definition
8887 will be provided to support C++.  If @code{ON_EXIT} is not defined,
8888 a default @code{exit} function will also be provided.
8889
8890 @item ON_EXIT
8891 @findex ON_EXIT
8892 Define this macro if the target has another way to implement atexit
8893 functionality without replacing @code{exit}.  For instance, SunOS 4 has
8894 a similar @code{on_exit} library function.
8895
8896 The definition should be a functional macro which can be used just like
8897 the @code{atexit} function.
8898
8899 @item EXIT_BODY
8900 @findex EXIT_BODY
8901 Define this if your @code{exit} function needs to do something
8902 besides calling an external function @code{_cleanup} before
8903 terminating with @code{_exit}.  The @code{EXIT_BODY} macro is
8904 only needed if @code{NEED_ATEXIT} is defined and @code{ON_EXIT} is not
8905 defined.
8906
8907 @findex INSN_SETS_ARE_DELAYED
8908 @item INSN_SETS_ARE_DELAYED (@var{insn})
8909 Define this macro as a C expression that is nonzero if it is safe for the
8910 delay slot scheduler to place instructions in the delay slot of @var{insn},
8911 even if they appear to use a resource set or clobbered in @var{insn}.
8912 @var{insn} is always a @code{jump_insn} or an @code{insn}; GCC knows that
8913 every @code{call_insn} has this behavior.  On machines where some @code{insn}
8914 or @code{jump_insn} is really a function call and hence has this behavior,
8915 you should define this macro.
8916
8917 You need not define this macro if it would always return zero.
8918
8919 @findex INSN_REFERENCES_ARE_DELAYED
8920 @item INSN_REFERENCES_ARE_DELAYED (@var{insn})
8921 Define this macro as a C expression that is nonzero if it is safe for the
8922 delay slot scheduler to place instructions in the delay slot of @var{insn},
8923 even if they appear to set or clobber a resource referenced in @var{insn}.
8924 @var{insn} is always a @code{jump_insn} or an @code{insn}.  On machines where
8925 some @code{insn} or @code{jump_insn} is really a function call and its operands
8926 are registers whose use is actually in the subroutine it calls, you should
8927 define this macro.  Doing so allows the delay slot scheduler to move
8928 instructions which copy arguments into the argument registers into the delay
8929 slot of @var{insn}.
8930
8931 You need not define this macro if it would always return zero.
8932
8933 @findex MACHINE_DEPENDENT_REORG
8934 @item MACHINE_DEPENDENT_REORG (@var{insn})
8935 In rare cases, correct code generation requires extra machine
8936 dependent processing between the second jump optimization pass and
8937 delayed branch scheduling.  On those machines, define this macro as a C
8938 statement to act on the code starting at @var{insn}.
8939
8940 @findex MULTIPLE_SYMBOL_SPACES
8941 @item MULTIPLE_SYMBOL_SPACES
8942 Define this macro if in some cases global symbols from one translation
8943 unit may not be bound to undefined symbols in another translation unit
8944 without user intervention.  For instance, under Microsoft Windows
8945 symbols must be explicitly imported from shared libraries (DLLs).
8946
8947 @findex MD_ASM_CLOBBERS
8948 @item MD_ASM_CLOBBERS (@var{clobbers})
8949 A C statement that adds to @var{clobbers} @code{STRING_CST} trees for
8950 any hard regs the port wishes to automatically clobber for all asms.
8951
8952 @findex MAX_INTEGER_COMPUTATION_MODE
8953 @item MAX_INTEGER_COMPUTATION_MODE
8954 Define this to the largest integer machine mode which can be used for
8955 operations other than load, store and copy operations.
8956
8957 You need only define this macro if the target holds values larger than
8958 @code{word_mode} in general purpose registers.  Most targets should not define
8959 this macro.
8960
8961 @findex MATH_LIBRARY
8962 @item MATH_LIBRARY
8963 Define this macro as a C string constant for the linker argument to link
8964 in the system math library, or @samp{""} if the target does not have a
8965 separate math library.
8966
8967 You need only define this macro if the default of @samp{"-lm"} is wrong.
8968
8969 @findex LIBRARY_PATH_ENV
8970 @item LIBRARY_PATH_ENV
8971 Define this macro as a C string constant for the environment variable that
8972 specifies where the linker should look for libraries.
8973
8974 You need only define this macro if the default of @samp{"LIBRARY_PATH"}
8975 is wrong.
8976
8977 @findex TARGET_HAS_F_SETLKW
8978 @item TARGET_HAS_F_SETLKW
8979 Define this macro if the target supports file locking with fcntl / F_SETLKW@.
8980 Note that this functionality is part of POSIX@.
8981 Defining @code{TARGET_HAS_F_SETLKW} will enable the test coverage code
8982 to use file locking when exiting a program, which avoids race conditions
8983 if the program has forked.
8984
8985 @findex MAX_CONDITIONAL_EXECUTE
8986 @item MAX_CONDITIONAL_EXECUTE
8987
8988 A C expression for the maximum number of instructions to execute via
8989 conditional execution instructions instead of a branch.  A value of
8990 @code{BRANCH_COST}+1 is the default if the machine does not use cc0, and
8991 1 if it does use cc0.
8992
8993 @findex IFCVT_MODIFY_TESTS
8994 @item IFCVT_MODIFY_TESTS(@var{ce_info}, @var{true_expr}, @var{false_expr})
8995 Used if the target needs to perform machine-dependent modifications on the
8996 conditionals used for turning basic blocks into conditionally executed code.
8997 @var{ce_info} points to a data structure, @code{struct ce_if_block}, which
8998 contains information about the currently processed blocks.  @var{true_expr}
8999 and @var{false_expr} are the tests that are used for converting the
9000 then-block and the else-block, respectively.  Set either @var{true_expr} or
9001 @var{false_expr} to a null pointer if the tests cannot be converted.
9002
9003 @findex IFCVT_MODIFY_MULTIPLE_TESTS
9004 @item IFCVT_MODIFY_MULTIPLE_TESTS(@var{ce_info}, @var{bb}, @var{true_expr}, @var{false_expr})
9005 Like @code{IFCVT_MODIFY_TESTS}, but used when converting more complicated
9006 if-statements into conditions combined by @code{and} and @code{or} operations.
9007 @var{bb} contains the basic block that contains the test that is currently
9008 being processed and about to be turned into a condition.
9009
9010 @findex IFCVT_MODIFY_INSN
9011 @item IFCVT_MODIFY_INSN(@var{ce_info}, @var{pattern}, @var{insn})
9012 A C expression to modify the @var{PATTERN} of an @var{INSN} that is to
9013 be converted to conditional execution format.  @var{ce_info} points to
9014 a data structure, @code{struct ce_if_block}, which contains information
9015 about the currently processed blocks.
9016
9017 @findex IFCVT_MODIFY_FINAL
9018 @item IFCVT_MODIFY_FINAL(@var{ce_info})
9019 A C expression to perform any final machine dependent modifications in
9020 converting code to conditional execution.  The involved basic blocks
9021 can be found in the @code{struct ce_if_block} structure that is pointed
9022 to by @var{ce_info}.
9023
9024 @findex IFCVT_MODIFY_CANCEL
9025 @item IFCVT_MODIFY_CANCEL(@var{ce_info})
9026 A C expression to cancel any machine dependent modifications in
9027 converting code to conditional execution.  The involved basic blocks
9028 can be found in the @code{struct ce_if_block} structure that is pointed
9029 to by @var{ce_info}.
9030
9031 @findex IFCVT_INIT_EXTRA_FIELDS
9032 @item IFCVT_INIT_EXTRA_FIELDS(@var{ce_info})
9033 A C expression to initialize any extra fields in a @code{struct ce_if_block}
9034 structure, which are defined by the @code{IFCVT_EXTRA_FIELDS} macro.
9035
9036 @findex IFCVT_EXTRA_FIELDS
9037 @item IFCVT_EXTRA_FIELDS
9038 If defined, it should expand to a set of field declarations that will be
9039 added to the @code{struct ce_if_block} structure.  These should be intialized
9040 by the @code{IFCVT_INIT_EXTRA_FIELDS} macro.
9041
9042 @end table
9043
9044 @deftypefn {Target Hook} void TARGET_INIT_BUILTINS ()
9045 Define this hook if you have any machine-specific built-in functions
9046 that need to be defined.  It should be a function that performs the
9047 necessary setup.
9048
9049 Machine specific built-in functions can be useful to expand special machine
9050 instructions that would otherwise not normally be generated because
9051 they have no equivalent in the source language (for example, SIMD vector
9052 instructions or prefetch instructions).
9053
9054 To create a built-in function, call the function @code{builtin_function}
9055 which is defined by the language front end.  You can use any type nodes set
9056 up by @code{build_common_tree_nodes} and @code{build_common_tree_nodes_2};
9057 only language front ends that use those two functions will call
9058 @samp{TARGET_INIT_BUILTINS}.
9059 @end deftypefn
9060
9061 @deftypefn {Target Hook} rtx TARGET_EXPAND_BUILTIN (tree @var{exp}, rtx @var{target}, rtx @var{subtarget}, enum machine_mode @var{mode}, int @var{ignore})
9062
9063 Expand a call to a machine specific built-in function that was set up by
9064 @samp{TARGET_INIT_BUILTINS}.  @var{exp} is the expression for the
9065 function call; the result should go to @var{target} if that is
9066 convenient, and have mode @var{mode} if that is convenient.
9067 @var{subtarget} may be used as the target for computing one of
9068 @var{exp}'s operands.  @var{ignore} is nonzero if the value is to be
9069 ignored.  This function should return the result of the call to the
9070 built-in function.
9071 @end deftypefn
9072
9073 @table @code
9074 @findex MD_CAN_REDIRECT_BRANCH
9075 @item MD_CAN_REDIRECT_BRANCH(@var{branch1}, @var{branch2})
9076
9077 Take a branch insn in @var{branch1} and another in @var{branch2}.
9078 Return true if redirecting @var{branch1} to the destination of
9079 @var{branch2} is possible.
9080
9081 On some targets, branches may have a limited range.  Optimizing the
9082 filling of delay slots can result in branches being redirected, and this
9083 may in turn cause a branch offset to overflow.
9084
9085 @findex ALLOCATE_INITIAL_VALUE
9086 @item ALLOCATE_INITIAL_VALUE(@var{hard_reg})
9087
9088 When the initial value of a hard register has been copied in a pseudo
9089 register, it is often not necessary to actually allocate another register
9090 to this pseudo register, because the original hard register or a stack slot
9091 it has been saved into can be used.  @code{ALLOCATE_INITIAL_VALUE}, if
9092 defined, is called at the start of register allocation once for each
9093 hard register that had its initial value copied by using
9094 @code{get_func_hard_reg_initial_val} or @code{get_hard_reg_initial_val}.
9095 Possible values are @code{NULL_RTX}, if you don't want
9096 to do any special allocation, a @code{REG} rtx---that would typically be
9097 the hard register itself, if it is known not to be clobbered---or a
9098 @code{MEM}.
9099 If you are returning a @code{MEM}, this is only a hint for the allocator;
9100 it might decide to use another register anyways.
9101 You may use @code{current_function_leaf_function} in the definition of the
9102 macro, functions that use @code{REG_N_SETS}, to determine if the hard
9103 register in question will not be clobbered.
9104
9105 @findex TARGET_OBJECT_SUFFIX
9106 @item TARGET_OBJECT_SUFFIX
9107 Define this macro to be a C string representing the suffix for object
9108 files on your target machine.  If you do not define this macro, GCC will
9109 use @samp{.o} as the suffix for object files.
9110
9111 @findex TARGET_EXECUTABLE_SUFFIX
9112 @item TARGET_EXECUTABLE_SUFFIX
9113 Define this macro to be a C string representing the suffix to be
9114 automatically added to executable files on your target machine.  If you
9115 do not define this macro, GCC will use the null string as the suffix for
9116 executable files.
9117
9118 @findex COLLECT_EXPORT_LIST
9119 @item COLLECT_EXPORT_LIST
9120 If defined, @code{collect2} will scan the individual object files
9121 specified on its command line and create an export list for the linker.
9122 Define this macro for systems like AIX, where the linker discards
9123 object files that are not referenced from @code{main} and uses export
9124 lists.
9125
9126 @end table
9127
9128 @deftypefn {Target Hook} bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
9129 This target hook returns @code{true} past the point in which new jump
9130 instructions could be created.  On machines that require a register for
9131 every jump such as the SHmedia ISA of SH5, this point would typically be
9132 reload, so this target hook should be defined to a function such as:
9133
9134 @smallexample
9135 static bool
9136 cannot_modify_jumps_past_reload_p ()
9137 @{
9138   return (reload_completed || reload_in_progress);
9139 @}
9140 @end smallexample
9141 @end deftypefn