]> gcc.gnu.org Git - gcc.git/blame - gcc/doc/tm.texi
c-decl.c, [...]: Don't check TARGET_MEM_FUNCTIONS.
[gcc.git] / gcc / doc / tm.texi
CommitLineData
c58b209a 1@c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,
3ab51846 2@c 2002, 2003, 2004 Free Software Foundation, Inc.
feca2ed3
JW
3@c This is part of the GCC manual.
4@c For copying conditions, see the file gcc.texi.
5
6@node Target Macros
672a6f42 7@chapter Target Description Macros and Functions
feca2ed3
JW
8@cindex machine description macros
9@cindex target description macros
10@cindex macros, target description
11@cindex @file{tm.h} macros
12
13In addition to the file @file{@var{machine}.md}, a machine description
14includes a C header file conventionally given the name
672a6f42
NB
15@file{@var{machine}.h} and a C source file named @file{@var{machine}.c}.
16The header file defines numerous macros that convey the information
17about 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
648c546a 21source file defines a variable @code{targetm}, which is a structure
672a6f42
NB
22containing pointers to functions and data relating to the target
23machine. @file{@var{machine}.c} should also contain their definitions,
24if they are not defined elsewhere in GCC, and other functions called
25through the macros defined in the @file{.h} file.
feca2ed3
JW
26
27@menu
648c546a 28* Target Structure:: The @code{targetm} variable.
feca2ed3 29* Driver:: Controlling how the driver runs the compilation passes.
630d3d5a 30* Run-time Target:: Defining @samp{-m} options like @option{-m68000} and @option{-m68020}.
414c4dc4 31* Per-Function Data:: Defining data structures for per-function information.
feca2ed3
JW
32* Storage Layout:: Defining sizes and alignments of data.
33* Type Layout:: Defining sizes and properties of basic user data types.
b2b263e1 34* Escape Sequences:: Defining the value of target character escape sequences
feca2ed3
JW
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.
c237e94a 44* Scheduling:: Adjusting the behavior of the instruction scheduler.
feca2ed3
JW
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.
b216cd4a 49* Floating Point:: Handling floating point for cross-compilers.
9f09b1f2 50* Mode Switching:: Insertion of mode-switching instructions.
91d231cb 51* Target Attributes:: Defining target-specific uses of @code{__attribute__}.
d604bca3 52* MIPS Coprocessors:: MIPS coprocessor support and how to customize it.
7bb1ad93 53* PCH Target:: Validity checking for precompiled headers.
4185ae53 54* C++ ABI:: Controlling C++ ABI changes.
feca2ed3
JW
55* Misc:: Everything else.
56@end menu
57
672a6f42 58@node Target Structure
648c546a 59@section The Global @code{targetm} Variable
672a6f42
NB
60@cindex target hooks
61@cindex target functions
62
f6897b10
SS
63@deftypevar {struct gcc_target} targetm
64The target @file{.c} file must define the global @code{targetm} variable
672a6f42
NB
65which contains pointers to functions and data relating to the target
66machine. The variable is declared in @file{target.h};
67@file{target-def.h} defines the macro @code{TARGET_INITIALIZER} which is
68used to initialize the variable, and macros for the default initializers
69for elements of the structure. The @file{.c} file should override those
70macros for which the default definition is inappropriate. For example:
71@smallexample
72#include "target.h"
73#include "target-def.h"
74
75/* @r{Initialize the GCC target structure.} */
76
91d231cb
JM
77#undef TARGET_COMP_TYPE_ATTRIBUTES
78#define TARGET_COMP_TYPE_ATTRIBUTES @var{machine}_comp_type_attributes
672a6f42 79
f6897b10 80struct gcc_target targetm = TARGET_INITIALIZER;
672a6f42
NB
81@end smallexample
82@end deftypevar
83
84Where a macro should be defined in the @file{.c} file in this manner to
648c546a 85form part of the @code{targetm} structure, it is documented below as a
672a6f42
NB
86``Target Hook'' with a prototype. Many macros will change in future
87from being defined in the @file{.h} file to being part of the
648c546a 88@code{targetm} structure.
672a6f42 89
feca2ed3
JW
90@node Driver
91@section Controlling the Compilation Driver, @file{gcc}
92@cindex driver
93@cindex controlling the compilation driver
94
95@c prevent bad page break with this line
96You can control the compilation driver.
97
a2c4f8e0 98@defmac SWITCH_TAKES_ARG (@var{char})
630d3d5a 99A C expression which determines whether the option @option{-@var{char}}
feca2ed3
JW
100takes arguments. The value should be the number of arguments that
101option takes--zero, for many options.
102
103By default, this macro is defined as
104@code{DEFAULT_SWITCH_TAKES_ARG}, which handles the standard options
105properly. You need not define @code{SWITCH_TAKES_ARG} unless you
106wish to add additional options which take arguments. Any redefinition
107should call @code{DEFAULT_SWITCH_TAKES_ARG} and then check for
108additional options.
a2c4f8e0 109@end defmac
feca2ed3 110
a2c4f8e0 111@defmac WORD_SWITCH_TAKES_ARG (@var{name})
630d3d5a 112A C expression which determines whether the option @option{-@var{name}}
feca2ed3
JW
113takes arguments. The value should be the number of arguments that
114option takes--zero, for many options. This macro rather than
115@code{SWITCH_TAKES_ARG} is used for multi-character option names.
116
117By default, this macro is defined as
118@code{DEFAULT_WORD_SWITCH_TAKES_ARG}, which handles the standard options
119properly. You need not define @code{WORD_SWITCH_TAKES_ARG} unless you
120wish to add additional options which take arguments. Any redefinition
121should call @code{DEFAULT_WORD_SWITCH_TAKES_ARG} and then check for
122additional options.
a2c4f8e0 123@end defmac
feca2ed3 124
a2c4f8e0 125@defmac SWITCH_CURTAILS_COMPILATION (@var{char})
630d3d5a 126A C expression which determines whether the option @option{-@var{char}}
88117d44 127stops compilation before the generation of an executable. The value is
df2a54e9 128boolean, nonzero if the option does stop an executable from being
88117d44
NC
129generated, zero otherwise.
130
131By default, this macro is defined as
132@code{DEFAULT_SWITCH_CURTAILS_COMPILATION}, which handles the standard
133options properly. You need not define
134@code{SWITCH_CURTAILS_COMPILATION} unless you wish to add additional
135options which affect the generation of an executable. Any redefinition
136should call @code{DEFAULT_SWITCH_CURTAILS_COMPILATION} and then check
137for additional options.
a2c4f8e0 138@end defmac
88117d44 139
a2c4f8e0 140@defmac SWITCHES_NEED_SPACES
feca2ed3
JW
141A string-valued C expression which enumerates the options for which
142the linker needs a space between the option and its argument.
143
144If this macro is not defined, the default value is @code{""}.
a2c4f8e0 145@end defmac
feca2ed3 146
a2c4f8e0 147@defmac TARGET_OPTION_TRANSLATE_TABLE
0259b07a
DD
148If defined, a list of pairs of strings, the first of which is a
149potential command line target to the @file{gcc} driver program, and the
150second of which is a space-separated (tabs and other whitespace are not
151supported) list of options with which to replace the first option. The
152target defining this list is responsible for assuring that the results
153are valid. Replacement options may not be the @code{--opt} style, they
154must be the @code{-opt} style. It is the intention of this macro to
155provide a mechanism for substitution that affects the multilibs chosen,
156such as one option that enables many options, some of which select
157multilibs. Example nonsensical definition, where @code{-malt-abi},
158@code{-EB}, and @code{-mspoo} cause different multilibs to be chosen:
159
478c9e72 160@smallexample
0259b07a
DD
161#define TARGET_OPTION_TRANSLATE_TABLE \
162@{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \
163@{ "-compat", "-EB -malign=4 -mspoo" @}
478c9e72 164@end smallexample
a2c4f8e0 165@end defmac
0259b07a 166
a2c4f8e0 167@defmac DRIVER_SELF_SPECS
db36994b
RS
168A list of specs for the driver itself. It should be a suitable
169initializer for an array of strings, with no surrounding braces.
170
3bd6d4c4
AO
171The driver applies these specs to its own command line between loading
172default @file{specs} files (but not command-line specified ones) and
173choosing the multilib directory or running any subcommands. It
174applies them in the order given, so each spec can depend on the
175options added by earlier ones. It is also possible to remove options
176using @samp{%<@var{option}} in the usual way.
db36994b
RS
177
178This macro can be useful when a port has several interdependent target
179options. It provides a way of standardizing the command line so
180that the other specs are easier to write.
181
182Do not define this macro if it does not need to do anything.
a2c4f8e0 183@end defmac
db36994b 184
a2c4f8e0 185@defmac OPTION_DEFAULT_SPECS
7816bea0
DJ
186A list of specs used to support configure-time default options (i.e.@:
187@option{--with} options) in the driver. It should be a suitable initializer
188for an array of structures, each containing two strings, without the
189outermost pair of surrounding braces.
190
191The first item in the pair is the name of the default. This must match
192the code in @file{config.gcc} for the target. The second item is a spec
193to apply if a default with this name was specified. The string
194@samp{%(VALUE)} in the spec will be replaced by the value of the default
195everywhere it occurs.
196
197The driver will apply these specs to its own command line between loading
198default @file{specs} files and processing @code{DRIVER_SELF_SPECS}, using
199the same mechanism as @code{DRIVER_SELF_SPECS}.
200
201Do not define this macro if it does not need to do anything.
a2c4f8e0 202@end defmac
7816bea0 203
a2c4f8e0 204@defmac CPP_SPEC
a3a15b4d 205A C string constant that tells the GCC driver program options to
161d7b59
JM
206pass to CPP@. It can also specify how to translate options you
207give to GCC into options for GCC to pass to the CPP@.
feca2ed3
JW
208
209Do not define this macro if it does not need to do anything.
a2c4f8e0 210@end defmac
feca2ed3 211
a2c4f8e0 212@defmac CPLUSPLUS_CPP_SPEC
a9374841 213This macro is just like @code{CPP_SPEC}, but is used for C++, rather
161d7b59 214than C@. If you do not define this macro, then the value of
a9374841 215@code{CPP_SPEC} (if any) will be used instead.
a2c4f8e0 216@end defmac
a9374841 217
a2c4f8e0 218@defmac CC1_SPEC
a3a15b4d 219A C string constant that tells the GCC driver program options to
66519c70
JL
220pass to @code{cc1}, @code{cc1plus}, @code{f771}, and the other language
221front ends.
a3a15b4d 222It can also specify how to translate options you give to GCC into options
630d3d5a 223for GCC to pass to front ends.
feca2ed3
JW
224
225Do not define this macro if it does not need to do anything.
a2c4f8e0 226@end defmac
feca2ed3 227
a2c4f8e0 228@defmac CC1PLUS_SPEC
a3a15b4d 229A C string constant that tells the GCC driver program options to
feca2ed3 230pass to @code{cc1plus}. It can also specify how to translate options you
a3a15b4d 231give to GCC into options for GCC to pass to the @code{cc1plus}.
feca2ed3
JW
232
233Do not define this macro if it does not need to do anything.
1d96e5b4
FF
234Note that everything defined in CC1_SPEC is already passed to
235@code{cc1plus} so there is no need to duplicate the contents of
161d7b59 236CC1_SPEC in CC1PLUS_SPEC@.
a2c4f8e0 237@end defmac
feca2ed3 238
a2c4f8e0 239@defmac ASM_SPEC
a3a15b4d 240A C string constant that tells the GCC driver program options to
feca2ed3 241pass to the assembler. It can also specify how to translate options
a3a15b4d 242you give to GCC into options for GCC to pass to the assembler.
feca2ed3
JW
243See the file @file{sun3.h} for an example of this.
244
245Do not define this macro if it does not need to do anything.
a2c4f8e0 246@end defmac
feca2ed3 247
a2c4f8e0 248@defmac ASM_FINAL_SPEC
a3a15b4d 249A C string constant that tells the GCC driver program how to
feca2ed3
JW
250run any programs which cleanup after the normal assembler.
251Normally, this is not needed. See the file @file{mips.h} for
252an example of this.
253
254Do not define this macro if it does not need to do anything.
a2c4f8e0 255@end defmac
feca2ed3 256
a2c4f8e0 257@defmac AS_NEEDS_DASH_FOR_PIPED_INPUT
4977bab6
ZW
258Define this macro, with no value, if the driver should give the assembler
259an argument consisting of a single dash, @option{-}, to instruct it to
260read from its standard input (which will be a pipe connected to the
261output of the compiler proper). This argument is given after any
262@option{-o} option specifying the name of the output file.
263
264If you do not define this macro, the assembler is assumed to read its
265standard input if given no non-option arguments. If your assembler
266cannot read standard input at all, use a @samp{%@{pipe:%e@}} construct;
267see @file{mips.h} for instance.
a2c4f8e0 268@end defmac
4977bab6 269
a2c4f8e0 270@defmac LINK_SPEC
a3a15b4d 271A C string constant that tells the GCC driver program options to
feca2ed3 272pass to the linker. It can also specify how to translate options you
a3a15b4d 273give to GCC into options for GCC to pass to the linker.
feca2ed3
JW
274
275Do not define this macro if it does not need to do anything.
a2c4f8e0 276@end defmac
feca2ed3 277
a2c4f8e0 278@defmac LIB_SPEC
feca2ed3
JW
279Another C string constant used much like @code{LINK_SPEC}. The difference
280between the two is that @code{LIB_SPEC} is used at the end of the
281command given to the linker.
282
283If this macro is not defined, a default is provided that
284loads the standard C library from the usual place. See @file{gcc.c}.
a2c4f8e0 285@end defmac
feca2ed3 286
a2c4f8e0 287@defmac LIBGCC_SPEC
a3a15b4d 288Another C string constant that tells the GCC driver program
feca2ed3
JW
289how and when to place a reference to @file{libgcc.a} into the
290linker command line. This constant is placed both before and after
291the value of @code{LIB_SPEC}.
292
a3a15b4d 293If this macro is not defined, the GCC driver provides a default that
630d3d5a 294passes the string @option{-lgcc} to the linker.
a2c4f8e0 295@end defmac
feca2ed3 296
328163dc
MA
297@defmac REAL_LIBGCC_SPEC
298By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
299@code{LIBGCC_SPEC} is not directly used by the driver program but is
300instead modified to refer to different versions of @file{libgcc.a}
301depending on the values of the command line flags @code{-static},
302@code{-shared}, @code{-static-libgcc}, and @code{-shared-libgcc}. On
303targets where these modifications are inappropriate, define
304@code{REAL_LIBGCC_SPEC} instead. @code{REAL_LIBGCC_SPEC} tells the
305driver how to place a reference to @file{libgcc} on the link command
306line, but, unlike @code{LIBGCC_SPEC}, it is used unmodified.
307@end defmac
308
a2c4f8e0 309@defmac STARTFILE_SPEC
feca2ed3
JW
310Another C string constant used much like @code{LINK_SPEC}. The
311difference between the two is that @code{STARTFILE_SPEC} is used at
312the very beginning of the command given to the linker.
313
314If this macro is not defined, a default is provided that loads the
315standard C startup file from the usual place. See @file{gcc.c}.
a2c4f8e0 316@end defmac
feca2ed3 317
a2c4f8e0 318@defmac ENDFILE_SPEC
feca2ed3
JW
319Another C string constant used much like @code{LINK_SPEC}. The
320difference between the two is that @code{ENDFILE_SPEC} is used at
321the very end of the command given to the linker.
322
323Do not define this macro if it does not need to do anything.
a2c4f8e0 324@end defmac
feca2ed3 325
a2c4f8e0 326@defmac THREAD_MODEL_SPEC
008355a6
AO
327GCC @code{-v} will print the thread model GCC was configured to use.
328However, this doesn't work on platforms that are multilibbed on thread
329models, such as AIX 4.3. On such platforms, define
330@code{THREAD_MODEL_SPEC} such that it evaluates to a string without
331blanks that names one of the recognized thread models. @code{%*}, the
332default value of this macro, will expand to the value of
333@code{thread_file} set in @file{config.gcc}.
a2c4f8e0 334@end defmac
008355a6 335
a2c4f8e0 336@defmac SYSROOT_SUFFIX_SPEC
73774972
EC
337Define this macro to add a suffix to the target sysroot when GCC is
338configured with a sysroot. This will cause GCC to search for usr/lib,
339et al, within sysroot+suffix.
a2c4f8e0 340@end defmac
e7f13528 341
a2c4f8e0 342@defmac SYSROOT_HEADERS_SUFFIX_SPEC
73774972
EC
343Define this macro to add a headers_suffix to the target sysroot when
344GCC is configured with a sysroot. This will cause GCC to pass the
f4314bb6 345updated sysroot+headers_suffix to CPP, causing it to search for
e7f13528 346usr/include, et al, within sysroot+headers_suffix.
a2c4f8e0 347@end defmac
e7f13528 348
a2c4f8e0 349@defmac EXTRA_SPECS
feca2ed3
JW
350Define this macro to provide additional specifications to put in the
351@file{specs} file that can be used in various specifications like
352@code{CC1_SPEC}.
353
354The definition should be an initializer for an array of structures,
355containing a string constant, that defines the specification name, and a
356string constant that provides the specification.
357
358Do not define this macro if it does not need to do anything.
359
360@code{EXTRA_SPECS} is useful when an architecture contains several
630d3d5a 361related targets, which have various @code{@dots{}_SPECS} which are similar
feca2ed3
JW
362to each other, and the maintainer would like one central place to keep
363these definitions.
364
365For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to
366define either @code{_CALL_SYSV} when the System V calling sequence is
367used or @code{_CALL_AIX} when the older AIX-based calling sequence is
368used.
369
370The @file{config/rs6000/rs6000.h} target file defines:
371
3ab51846 372@smallexample
feca2ed3
JW
373#define EXTRA_SPECS \
374 @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @},
375
376#define CPP_SYS_DEFAULT ""
3ab51846 377@end smallexample
feca2ed3
JW
378
379The @file{config/rs6000/sysv.h} target file defines:
380@smallexample
381#undef CPP_SPEC
382#define CPP_SPEC \
383"%@{posix: -D_POSIX_SOURCE @} \
50d440bc
NC
384%@{mcall-sysv: -D_CALL_SYSV @} \
385%@{!mcall-sysv: %(cpp_sysv_default) @} \
feca2ed3
JW
386%@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}"
387
388#undef CPP_SYSV_DEFAULT
389#define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
390@end smallexample
391
392while the @file{config/rs6000/eabiaix.h} target file defines
393@code{CPP_SYSV_DEFAULT} as:
394
395@smallexample
396#undef CPP_SYSV_DEFAULT
397#define CPP_SYSV_DEFAULT "-D_CALL_AIX"
398@end smallexample
a2c4f8e0 399@end defmac
feca2ed3 400
a2c4f8e0 401@defmac LINK_LIBGCC_SPECIAL
feca2ed3 402Define this macro if the driver program should find the library
630d3d5a 403@file{libgcc.a} itself and should not pass @option{-L} options to the
feca2ed3 404linker. If you do not define this macro, the driver program will pass
630d3d5a
JM
405the argument @option{-lgcc} to tell the linker to do the search and will
406pass @option{-L} options to it.
a2c4f8e0 407@end defmac
feca2ed3 408
a2c4f8e0 409@defmac LINK_LIBGCC_SPECIAL_1
feca2ed3
JW
410Define this macro if the driver program should find the library
411@file{libgcc.a}. If you do not define this macro, the driver program will pass
630d3d5a 412the argument @option{-lgcc} to tell the linker to do the search.
feca2ed3 413This macro is similar to @code{LINK_LIBGCC_SPECIAL}, except that it does
630d3d5a 414not affect @option{-L} options.
a2c4f8e0 415@end defmac
feca2ed3 416
a2c4f8e0 417@defmac LINK_GCC_C_SEQUENCE_SPEC
bbd7687d
DM
418The sequence in which libgcc and libc are specified to the linker.
419By default this is @code{%G %L %G}.
a2c4f8e0 420@end defmac
bbd7687d 421
a2c4f8e0 422@defmac LINK_COMMAND_SPEC
9ec36da5
JL
423A C string constant giving the complete command line need to execute the
424linker. When you do this, you will need to update your port each time a
425change is made to the link command line within @file{gcc.c}. Therefore,
426define this macro only if you need to completely redefine the command
427line for invoking the linker and there is no other way to accomplish
bbd7687d
DM
428the effect you need. Overriding this macro may be avoidable by overriding
429@code{LINK_GCC_C_SEQUENCE_SPEC} instead.
a2c4f8e0 430@end defmac
9ec36da5 431
a2c4f8e0 432@defmac LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
2cc07db4 433A nonzero value causes @command{collect2} to remove duplicate @option{-L@var{directory}} search
5897739e
JO
434directories from linking commands. Do not give it a nonzero value if
435removing duplicate search directories changes the linker's semantics.
a2c4f8e0 436@end defmac
5897739e 437
a2c4f8e0 438@defmac MULTILIB_DEFAULTS
feca2ed3
JW
439Define this macro as a C expression for the initializer of an array of
440string to tell the driver program which options are defaults for this
441target and thus do not need to be handled specially when using
442@code{MULTILIB_OPTIONS}.
443
444Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in
445the target makefile fragment or if none of the options listed in
446@code{MULTILIB_OPTIONS} are set by default.
447@xref{Target Fragment}.
a2c4f8e0 448@end defmac
feca2ed3 449
a2c4f8e0 450@defmac RELATIVE_PREFIX_NOT_LINKDIR
05739753 451Define this macro to tell @command{gcc} that it should only translate
630d3d5a 452a @option{-B} prefix into a @option{-L} linker option if the prefix
feca2ed3 453indicates an absolute file name.
a2c4f8e0 454@end defmac
feca2ed3 455
a2c4f8e0 456@defmac MD_EXEC_PREFIX
feca2ed3
JW
457If defined, this macro is an additional prefix to try after
458@code{STANDARD_EXEC_PREFIX}. @code{MD_EXEC_PREFIX} is not searched
630d3d5a 459when the @option{-b} option is used, or the compiler is built as a cross
5505263f
JL
460compiler. If you define @code{MD_EXEC_PREFIX}, then be sure to add it
461to the list of directories used to find the assembler in @file{configure.in}.
a2c4f8e0 462@end defmac
feca2ed3 463
a2c4f8e0 464@defmac STANDARD_STARTFILE_PREFIX
feca2ed3 465Define this macro as a C string constant if you wish to override the
0d037580 466standard choice of @code{libdir} as the default prefix to
feca2ed3 467try when searching for startup files such as @file{crt0.o}.
0d037580
DJ
468@code{STANDARD_STARTFILE_PREFIX} is not searched when the compiler
469is built as a cross compiler.
a2c4f8e0 470@end defmac
feca2ed3 471
656c7a3a
AL
472@defmac STANDARD_STARTFILE_PREFIX_1
473Define this macro as a C string constant if you wish to override the
474standard choice of @code{/lib} as a prefix to try after the default prefix
475when searching for startup files such as @file{crt0.o}.
476@code{STANDARD_STARTFILE_PREFIX_1} is not searched when the compiler
477is built as a cross compiler.
478@end defmac
479
480@defmac STANDARD_STARTFILE_PREFIX_2
481Define this macro as a C string constant if you wish to override the
482standard choice of @code{/lib} as yet another prefix to try after the
483default prefix when searching for startup files such as @file{crt0.o}.
484@code{STANDARD_STARTFILE_PREFIX_2} is not searched when the compiler
485is built as a cross compiler.
486@end defmac
487
a2c4f8e0 488@defmac MD_STARTFILE_PREFIX
feca2ed3
JW
489If defined, this macro supplies an additional prefix to try after the
490standard prefixes. @code{MD_EXEC_PREFIX} is not searched when the
630d3d5a 491@option{-b} option is used, or when the compiler is built as a cross
feca2ed3 492compiler.
a2c4f8e0 493@end defmac
feca2ed3 494
a2c4f8e0 495@defmac MD_STARTFILE_PREFIX_1
feca2ed3 496If defined, this macro supplies yet another prefix to try after the
630d3d5a 497standard prefixes. It is not searched when the @option{-b} option is
feca2ed3 498used, or when the compiler is built as a cross compiler.
a2c4f8e0 499@end defmac
feca2ed3 500
a2c4f8e0 501@defmac INIT_ENVIRONMENT
e9a25f70 502Define this macro as a C string constant if you wish to set environment
feca2ed3
JW
503variables for programs called by the driver, such as the assembler and
504loader. The driver passes the value of this macro to @code{putenv} to
505initialize the necessary environment variables.
a2c4f8e0 506@end defmac
feca2ed3 507
a2c4f8e0 508@defmac LOCAL_INCLUDE_DIR
feca2ed3
JW
509Define this macro as a C string constant if you wish to override the
510standard choice of @file{/usr/local/include} as the default prefix to
511try when searching for local header files. @code{LOCAL_INCLUDE_DIR}
512comes before @code{SYSTEM_INCLUDE_DIR} in the search order.
513
c237e94a
ZW
514Cross compilers do not search either @file{/usr/local/include} or its
515replacement.
a2c4f8e0 516@end defmac
feca2ed3 517
a2c4f8e0
ZW
518@defmac MODIFY_TARGET_NAME
519Define this macro if you wish to define command-line switches that
520modify the default target name.
dc36ec2c
RK
521
522For each switch, you can include a string to be appended to the first
523part of the configuration name or a string to be deleted from the
524configuration name, if present. The definition should be an initializer
525for an array of structures. Each array element should have three
526elements: the switch name (a string constant, including the initial
527dash), one of the enumeration codes @code{ADD} or @code{DELETE} to
528indicate whether the string should be inserted or deleted, and the string
529to be inserted or deleted (a string constant).
530
531For example, on a machine where @samp{64} at the end of the
630d3d5a
JM
532configuration name denotes a 64-bit target and you want the @option{-32}
533and @option{-64} switches to select between 32- and 64-bit targets, you would
dc36ec2c
RK
534code
535
536@smallexample
537#define MODIFY_TARGET_NAME \
538 @{ @{ "-32", DELETE, "64"@}, \
539 @{"-64", ADD, "64"@}@}
540@end smallexample
a2c4f8e0 541@end defmac
dc36ec2c 542
a2c4f8e0 543@defmac SYSTEM_INCLUDE_DIR
feca2ed3
JW
544Define this macro as a C string constant if you wish to specify a
545system-specific directory to search for header files before the standard
546directory. @code{SYSTEM_INCLUDE_DIR} comes before
547@code{STANDARD_INCLUDE_DIR} in the search order.
548
549Cross compilers do not use this macro and do not search the directory
550specified.
a2c4f8e0 551@end defmac
feca2ed3 552
a2c4f8e0 553@defmac STANDARD_INCLUDE_DIR
feca2ed3
JW
554Define this macro as a C string constant if you wish to override the
555standard choice of @file{/usr/include} as the default prefix to
556try when searching for header files.
557
a2c4f8e0 558Cross compilers ignore this macro and do not search either
feca2ed3 559@file{/usr/include} or its replacement.
a2c4f8e0 560@end defmac
feca2ed3 561
a2c4f8e0 562@defmac STANDARD_INCLUDE_COMPONENT
e9a25f70
JL
563The ``component'' corresponding to @code{STANDARD_INCLUDE_DIR}.
564See @code{INCLUDE_DEFAULTS}, below, for the description of components.
565If you do not define this macro, no component is used.
a2c4f8e0 566@end defmac
e9a25f70 567
a2c4f8e0 568@defmac INCLUDE_DEFAULTS
feca2ed3 569Define this macro if you wish to override the entire default search path
e9a25f70
JL
570for include files. For a native compiler, the default search path
571usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR},
feca2ed3
JW
572@code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
573@code{STANDARD_INCLUDE_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR}
574and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
161d7b59 575and specify private search areas for GCC@. The directory
feca2ed3
JW
576@code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
577
578The definition should be an initializer for an array of structures.
e9a25f70 579Each array element should have four elements: the directory name (a
9f6dc500
HPN
580string constant), the component name (also a string constant), a flag
581for C++-only directories,
e9a25f70
JL
582and a flag showing that the includes in the directory don't need to be
583wrapped in @code{extern @samp{C}} when compiling C++. Mark the end of
584the array with a null element.
585
586The component name denotes what GNU package the include file is part of,
4bd0bee9 587if any, in all uppercase letters. For example, it might be @samp{GCC}
9f6dc500 588or @samp{BINUTILS}. If the package is part of a vendor-supplied
e9a25f70
JL
589operating system, code the component name as @samp{0}.
590
e9a25f70 591For example, here is the definition used for VAX/VMS:
feca2ed3 592
3ab51846 593@smallexample
feca2ed3
JW
594#define INCLUDE_DEFAULTS \
595@{ \
e9a25f70
JL
596 @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@}, \
597 @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@}, \
598 @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@}, \
599 @{ ".", 0, 0, 0@}, \
600 @{ 0, 0, 0, 0@} \
feca2ed3 601@}
3ab51846 602@end smallexample
a2c4f8e0 603@end defmac
feca2ed3
JW
604
605Here is the order of prefixes tried for exec files:
606
607@enumerate
608@item
630d3d5a 609Any prefixes specified by the user with @option{-B}.
feca2ed3
JW
610
611@item
612The environment variable @code{GCC_EXEC_PREFIX}, if any.
613
614@item
615The directories specified by the environment variable @code{COMPILER_PATH}.
616
617@item
618The macro @code{STANDARD_EXEC_PREFIX}.
619
620@item
621@file{/usr/lib/gcc/}.
622
623@item
624The macro @code{MD_EXEC_PREFIX}, if any.
625@end enumerate
626
627Here is the order of prefixes tried for startfiles:
628
629@enumerate
630@item
630d3d5a 631Any prefixes specified by the user with @option{-B}.
feca2ed3
JW
632
633@item
634The environment variable @code{GCC_EXEC_PREFIX}, if any.
635
636@item
637The directories specified by the environment variable @code{LIBRARY_PATH}
512b62fb 638(or port-specific name; native only, cross compilers do not use this).
feca2ed3
JW
639
640@item
641The macro @code{STANDARD_EXEC_PREFIX}.
642
643@item
644@file{/usr/lib/gcc/}.
645
646@item
647The macro @code{MD_EXEC_PREFIX}, if any.
648
649@item
650The macro @code{MD_STARTFILE_PREFIX}, if any.
651
652@item
653The macro @code{STANDARD_STARTFILE_PREFIX}.
654
655@item
656@file{/lib/}.
657
658@item
659@file{/usr/lib/}.
660@end enumerate
661
662@node Run-time Target
663@section Run-time Target Specification
664@cindex run-time target specification
665@cindex predefined macros
666@cindex target specifications
667
668@c prevent bad page break with this line
669Here are run-time target specifications.
670
a2c4f8e0 671@defmac TARGET_CPU_CPP_BUILTINS ()
12a41c22
NB
672This function-like macro expands to a block of code that defines
673built-in preprocessor macros and assertions for the target cpu, using
1f95326c 674the functions @code{builtin_define}, @code{builtin_define_std} and
cb60f38d 675@code{builtin_assert}. When the front end
12a41c22
NB
676calls this macro it provides a trailing semicolon, and since it has
677finished command line option processing your code can use those
678results freely.
3df89291
NB
679
680@code{builtin_assert} takes a string in the form you pass to the
681command-line option @option{-A}, such as @code{cpu=mips}, and creates
d90a95fb 682the assertion. @code{builtin_define} takes a string in the form
3df89291
NB
683accepted by option @option{-D} and unconditionally defines the macro.
684
d90a95fb 685@code{builtin_define_std} takes a string representing the name of an
3df89291 686object-like macro. If it doesn't lie in the user's namespace,
d90a95fb 687@code{builtin_define_std} defines it unconditionally. Otherwise, it
3df89291
NB
688defines a version with two leading underscores, and another version
689with two leading and trailing underscores, and defines the original
690only if an ISO standard was not requested on the command line. For
691example, passing @code{unix} defines @code{__unix}, @code{__unix__}
692and possibly @code{unix}; passing @code{_mips} defines @code{__mips},
693@code{__mips__} and possibly @code{_mips}, and passing @code{_ABI64}
694defines only @code{_ABI64}.
695
e0322d5c
NB
696You can also test for the C dialect being compiled. The variable
697@code{c_language} is set to one of @code{clk_c}, @code{clk_cplusplus}
698or @code{clk_objective_c}. Note that if we are preprocessing
699assembler, this variable will be @code{clk_c} but the function-like
700macro @code{preprocessing_asm_p()} will return true, so you might want
ce3649d2 701to check for that first. If you need to check for strict ANSI, the
c219e1da
JDA
702variable @code{flag_iso} can be used. The function-like macro
703@code{preprocessing_trad_p()} can be used to check for traditional
704preprocessing.
a2c4f8e0 705@end defmac
e0322d5c 706
a2c4f8e0 707@defmac TARGET_OS_CPP_BUILTINS ()
12a41c22
NB
708Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
709and is used for the target operating system instead.
a2c4f8e0 710@end defmac
12a41c22 711
a2c4f8e0 712@defmac TARGET_OBJFMT_CPP_BUILTINS ()
4e2e315f
NB
713Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
714and is used for the target object format. @file{elfos.h} uses this
715macro to define @code{__ELF__}, so you probably do not need to define
716it yourself.
a2c4f8e0 717@end defmac
4e2e315f 718
a2c4f8e0 719@deftypevar {extern int} target_flags
feca2ed3 720This declaration should be present.
a2c4f8e0 721@end deftypevar
feca2ed3
JW
722
723@cindex optional hardware or system features
724@cindex features, optional, in system conventions
a2c4f8e0
ZW
725
726@defmac TARGET_@var{featurename}
feca2ed3
JW
727This series of macros is to allow compiler command arguments to
728enable or disable the use of optional features of the target machine.
729For example, one machine description serves both the 68000 and
730the 68020; a command argument tells the compiler whether it should
731use 68020-only instructions or not. This command argument works
732by means of a macro @code{TARGET_68020} that tests a bit in
733@code{target_flags}.
734
735Define a macro @code{TARGET_@var{featurename}} for each such option.
9f6dc500 736Its definition should test a bit in @code{target_flags}. It is
a2c4f8e0 737recommended that a helper macro @code{MASK_@var{featurename}}
9f6dc500
HPN
738is defined for each bit-value to test, and used in
739@code{TARGET_@var{featurename}} and @code{TARGET_SWITCHES}. For
740example:
feca2ed3
JW
741
742@smallexample
9f6dc500 743#define TARGET_MASK_68020 1
a2c4f8e0 744#define TARGET_68020 (target_flags & MASK_68020)
feca2ed3
JW
745@end smallexample
746
747One place where these macros are used is in the condition-expressions
748of instruction patterns. Note how @code{TARGET_68020} appears
749frequently in the 68000 machine description file, @file{m68k.md}.
750Another place they are used is in the definitions of the other
751macros in the @file{@var{machine}.h} file.
a2c4f8e0 752@end defmac
feca2ed3 753
a2c4f8e0 754@defmac TARGET_SWITCHES
feca2ed3
JW
755This macro defines names of command options to set and clear
756bits in @code{target_flags}. Its definition is an initializer
757with a subgrouping for each command option.
758
759Each subgrouping contains a string constant, that defines the option
b8468bc7
NC
760name, a number, which contains the bits to set in
761@code{target_flags}, and a second string which is the description
561c1ae1 762displayed by @option{--help}. If the number is negative then the bits specified
b8468bc7
NC
763by the number are cleared instead of being set. If the description
764string is present but empty, then no help information will be displayed
765for that option, but it will not count as an undocumented option. The
766actual option name is made by appending @samp{-m} to the specified name.
561c1ae1 767Non-empty description strings should be marked with @code{N_(@dots{})} for
404ae494
PT
768@command{xgettext}. Please do not mark empty strings because the empty
769string is reserved by GNU gettext. @code{gettext("")} returns the header entry
770of the message catalog with meta information, not the empty string.
771
772In addition to the description for @option{--help},
561c1ae1
JM
773more detailed documentation for each option should be added to
774@file{invoke.texi}.
feca2ed3
JW
775
776One of the subgroupings should have a null string. The number in
777this grouping is the default value for @code{target_flags}. Any
778target options act starting with that value.
779
630d3d5a 780Here is an example which defines @option{-m68000} and @option{-m68020}
feca2ed3
JW
781with opposite meanings, and picks the latter as the default:
782
783@smallexample
784#define TARGET_SWITCHES \
a2c4f8e0
ZW
785 @{ @{ "68020", MASK_68020, "" @}, \
786 @{ "68000", -MASK_68020, \
561c1ae1 787 N_("Compile for the 68000") @}, \
a2c4f8e0
ZW
788 @{ "", MASK_68020, "" @}, \
789 @}
feca2ed3 790@end smallexample
a2c4f8e0 791@end defmac
feca2ed3 792
a2c4f8e0 793@defmac TARGET_OPTIONS
feca2ed3
JW
794This macro is similar to @code{TARGET_SWITCHES} but defines names of command
795options that have values. Its definition is an initializer with a
796subgrouping for each command option.
797
c409ea0d
DD
798Each subgrouping contains a string constant, that defines the option
799name, the address of a variable, a description string, and a value.
800Non-empty description strings should be marked with @code{N_(@dots{})}
801for @command{xgettext}. Please do not mark empty strings because the
802empty string is reserved by GNU gettext. @code{gettext("")} returns the
803header entry of the message catalog with meta information, not the empty
804string.
805
806If the value listed in the table is @code{NULL}, then the variable, type
807@code{char *}, is set to the variable part of the given option if the
808fixed part matches. In other words, if the first part of the option
809matches what's in the table, the variable will be set to point to the
810rest of the option. This allows the user to specify a value for that
811option. The actual option name is made by appending @samp{-m} to the
812specified name. Again, each option should also be documented in
813@file{invoke.texi}.
404ae494 814
c409ea0d
DD
815If the value listed in the table is non-@code{NULL}, then the option
816must match the option in the table exactly (with @samp{-m}), and the
817variable is set to point to the value listed in the table.
feca2ed3 818
630d3d5a
JM
819Here is an example which defines @option{-mshort-data-@var{number}}. If the
820given option is @option{-mshort-data-512}, the variable @code{m88k_short_data}
feca2ed3
JW
821will be set to the string @code{"512"}.
822
823@smallexample
824extern char *m88k_short_data;
825#define TARGET_OPTIONS \
561c1ae1 826 @{ @{ "short-data-", &m88k_short_data, \
c409ea0d
DD
827 N_("Specify the size of the short data section"), 0 @} @}
828@end smallexample
829
63519d23 830Here is a variant of the above that allows the user to also specify
c409ea0d
DD
831just @option{-mshort-data} where a default of @code{"64"} is used.
832
833@smallexample
834extern char *m88k_short_data;
835#define TARGET_OPTIONS \
836 @{ @{ "short-data-", &m88k_short_data, \
837 N_("Specify the size of the short data section"), 0 @} \
838 @{ "short-data", &m88k_short_data, "", "64" @},
839 @}
840@end smallexample
841
842Here is an example which defines @option{-mno-alu}, @option{-malu1}, and
843@option{-malu2} as a three-state switch, along with suitable macros for
844checking the state of the option (documentation is elided for brevity).
845
846@smallexample
847[chip.c]
848char *chip_alu = ""; /* Specify default here. */
849
850[chip.h]
851extern char *chip_alu;
852#define TARGET_OPTIONS \
853 @{ @{ "no-alu", &chip_alu, "", "" @}, \
854 @{ "alu1", &chip_alu, "", "1" @}, \
855 @{ "alu2", &chip_alu, "", "2" @}, @}
856#define TARGET_ALU (chip_alu[0] != '\0')
857#define TARGET_ALU1 (chip_alu[0] == '1')
858#define TARGET_ALU2 (chip_alu[0] == '2')
feca2ed3 859@end smallexample
a2c4f8e0 860@end defmac
feca2ed3 861
a2c4f8e0 862@defmac TARGET_VERSION
feca2ed3
JW
863This macro is a C statement to print on @code{stderr} a string
864describing the particular machine description choice. Every machine
865description should define @code{TARGET_VERSION}. For example:
866
867@smallexample
868#ifdef MOTOROLA
869#define TARGET_VERSION \
870 fprintf (stderr, " (68k, Motorola syntax)");
871#else
872#define TARGET_VERSION \
873 fprintf (stderr, " (68k, MIT syntax)");
874#endif
875@end smallexample
a2c4f8e0 876@end defmac
feca2ed3 877
a2c4f8e0 878@defmac OVERRIDE_OPTIONS
feca2ed3
JW
879Sometimes certain combinations of command options do not make sense on
880a particular target machine. You can define a macro
881@code{OVERRIDE_OPTIONS} to take account of this. This macro, if
882defined, is executed once just after all the command options have been
883parsed.
884
885Don't use this macro to turn on various extra optimizations for
630d3d5a 886@option{-O}. That is what @code{OPTIMIZATION_OPTIONS} is for.
a2c4f8e0 887@end defmac
feca2ed3 888
a2c4f8e0 889@defmac OPTIMIZATION_OPTIONS (@var{level}, @var{size})
feca2ed3
JW
890Some machines may desire to change what optimizations are performed for
891various optimization levels. This macro, if defined, is executed once
892just after the optimization level is determined and before the remainder
893of the command options have been parsed. Values set in this macro are
894used as the default values for the other command line options.
895
630d3d5a
JM
896@var{level} is the optimization level specified; 2 if @option{-O2} is
897specified, 1 if @option{-O} is specified, and 0 if neither is specified.
feca2ed3 898
df2a54e9 899@var{size} is nonzero if @option{-Os} is specified and zero otherwise.
c6aded7c 900
feca2ed3
JW
901You should not use this macro to change options that are not
902machine-specific. These should uniformly selected by the same
903optimization level on all supported machines. Use this macro to enable
904machine-specific optimizations.
905
906@strong{Do not examine @code{write_symbols} in
907this macro!} The debugging options are not supposed to alter the
908generated code.
a2c4f8e0 909@end defmac
feca2ed3 910
a2c4f8e0 911@defmac CAN_DEBUG_WITHOUT_FP
feca2ed3 912Define this macro if debugging can be performed even without a frame
a3a15b4d 913pointer. If this macro is defined, GCC will turn on the
630d3d5a 914@option{-fomit-frame-pointer} option whenever @option{-O} is specified.
a2c4f8e0 915@end defmac
feca2ed3 916
414c4dc4
NC
917@node Per-Function Data
918@section Defining data structures for per-function information.
919@cindex per-function data
920@cindex data structures
921
922If the target needs to store information on a per-function basis, GCC
923provides a macro and a couple of variables to allow this. Note, just
924using statics to store the information is a bad idea, since GCC supports
925nested functions, so you can be halfway through encoding one function
926when another one comes along.
927
928GCC defines a data structure called @code{struct function} which
929contains all of the data specific to an individual function. This
930structure contains a field called @code{machine} whose type is
931@code{struct machine_function *}, which can be used by targets to point
932to their own specific data.
933
934If a target needs per-function specific data it should define the type
e2500fed
GK
935@code{struct machine_function} and also the macro @code{INIT_EXPANDERS}.
936This macro should be used to initialize the function pointer
937@code{init_machine_status}. This pointer is explained below.
414c4dc4
NC
938
939One typical use of per-function, target specific data is to create an
940RTX to hold the register containing the function's return address. This
941RTX can then be used to implement the @code{__builtin_return_address}
942function, for level 0.
943
aee96fe9 944Note---earlier implementations of GCC used a single data area to hold
414c4dc4
NC
945all of the per-function information. Thus when processing of a nested
946function began the old per-function data had to be pushed onto a
947stack, and when the processing was finished, it had to be popped off the
948stack. GCC used to provide function pointers called
02f52e19 949@code{save_machine_status} and @code{restore_machine_status} to handle
414c4dc4
NC
950the saving and restoring of the target specific information. Since the
951single data area approach is no longer used, these pointers are no
952longer supported.
953
a2c4f8e0 954@defmac INIT_EXPANDERS
c21cd8b1 955Macro called to initialize any target specific information. This macro
414c4dc4 956is called once per function, before generation of any RTL has begun.
c21cd8b1 957The intention of this macro is to allow the initialization of the
a2c4f8e0
ZW
958function pointer @code{init_machine_status}.
959@end defmac
414c4dc4 960
a2c4f8e0
ZW
961@deftypevar {void (*)(struct function *)} init_machine_status
962If this function pointer is non-@code{NULL} it will be called once per
963function, before function compilation starts, in order to allow the
964target to perform any target specific initialization of the
965@code{struct function} structure. It is intended that this would be
966used to initialize the @code{machine} of that structure.
414c4dc4 967
e2500fed
GK
968@code{struct machine_function} structures are expected to be freed by GC.
969Generally, any memory that they reference must be allocated by using
970@code{ggc_alloc}, including the structure itself.
a2c4f8e0 971@end deftypevar
414c4dc4 972
feca2ed3
JW
973@node Storage Layout
974@section Storage Layout
975@cindex storage layout
976
977Note that the definitions of the macros in this table which are sizes or
978alignments measured in bits do not need to be constant. They can be C
979expressions that refer to static variables, such as the @code{target_flags}.
980@xref{Run-time Target}.
981
a2c4f8e0 982@defmac BITS_BIG_ENDIAN
feca2ed3
JW
983Define this macro to have the value 1 if the most significant bit in a
984byte has the lowest number; otherwise define it to have the value zero.
985This means that bit-field instructions count from the most significant
986bit. If the machine has no bit-field instructions, then this must still
987be defined, but it doesn't matter which value it is defined to. This
988macro need not be a constant.
989
990This macro does not affect the way structure fields are packed into
991bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}.
a2c4f8e0 992@end defmac
feca2ed3 993
a2c4f8e0 994@defmac BYTES_BIG_ENDIAN
feca2ed3
JW
995Define this macro to have the value 1 if the most significant byte in a
996word has the lowest number. This macro need not be a constant.
a2c4f8e0 997@end defmac
feca2ed3 998
a2c4f8e0 999@defmac WORDS_BIG_ENDIAN
feca2ed3
JW
1000Define this macro to have the value 1 if, in a multiword object, the
1001most significant word has the lowest number. This applies to both
a3a15b4d 1002memory locations and registers; GCC fundamentally assumes that the
feca2ed3
JW
1003order of words in memory is the same as the order in registers. This
1004macro need not be a constant.
a2c4f8e0 1005@end defmac
feca2ed3 1006
a2c4f8e0 1007@defmac LIBGCC2_WORDS_BIG_ENDIAN
aee96fe9
JM
1008Define this macro if @code{WORDS_BIG_ENDIAN} is not constant. This must be a
1009constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be
1010used only when compiling @file{libgcc2.c}. Typically the value will be set
feca2ed3 1011based on preprocessor defines.
a2c4f8e0 1012@end defmac
feca2ed3 1013
a2c4f8e0 1014@defmac FLOAT_WORDS_BIG_ENDIAN
feca2ed3
JW
1015Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
1016@code{TFmode} floating point numbers are stored in memory with the word
1017containing the sign bit at the lowest address; otherwise define it to
1018have the value 0. This macro need not be a constant.
1019
1020You need not define this macro if the ordering is the same as for
1021multi-word integers.
a2c4f8e0 1022@end defmac
feca2ed3 1023
a2c4f8e0 1024@defmac BITS_PER_UNIT
feca2ed3 1025Define this macro to be the number of bits in an addressable storage
5c60f03d 1026unit (byte). If you do not define this macro the default is 8.
a2c4f8e0 1027@end defmac
feca2ed3 1028
a2c4f8e0 1029@defmac BITS_PER_WORD
e81dd381
KG
1030Number of bits in a word. If you do not define this macro, the default
1031is @code{BITS_PER_UNIT * UNITS_PER_WORD}.
a2c4f8e0 1032@end defmac
feca2ed3 1033
a2c4f8e0 1034@defmac MAX_BITS_PER_WORD
feca2ed3
JW
1035Maximum number of bits in a word. If this is undefined, the default is
1036@code{BITS_PER_WORD}. Otherwise, it is the constant value that is the
1037largest value that @code{BITS_PER_WORD} can have at run-time.
a2c4f8e0 1038@end defmac
feca2ed3 1039
a2c4f8e0 1040@defmac UNITS_PER_WORD
feca2ed3 1041Number of storage units in a word; normally 4.
a2c4f8e0 1042@end defmac
feca2ed3 1043
a2c4f8e0 1044@defmac MIN_UNITS_PER_WORD
feca2ed3
JW
1045Minimum number of units in a word. If this is undefined, the default is
1046@code{UNITS_PER_WORD}. Otherwise, it is the constant value that is the
1047smallest value that @code{UNITS_PER_WORD} can have at run-time.
a2c4f8e0 1048@end defmac
feca2ed3 1049
a2c4f8e0 1050@defmac POINTER_SIZE
feca2ed3
JW
1051Width of a pointer, in bits. You must specify a value no wider than the
1052width of @code{Pmode}. If it is not equal to the width of @code{Pmode},
2465bf76
KG
1053you must define @code{POINTERS_EXTEND_UNSIGNED}. If you do not specify
1054a value the default is @code{BITS_PER_WORD}.
a2c4f8e0 1055@end defmac
feca2ed3 1056
a2c4f8e0 1057@defmac POINTERS_EXTEND_UNSIGNED
6dd12198 1058A C expression whose value is greater than zero if pointers that need to be
f5963e61 1059extended from being @code{POINTER_SIZE} bits wide to @code{Pmode} are to
6dd12198
SE
1060be zero-extended and zero if they are to be sign-extended. If the value
1061is less then zero then there must be an "ptr_extend" instruction that
1062extends a pointer from @code{POINTER_SIZE} to @code{Pmode}.
feca2ed3
JW
1063
1064You need not define this macro if the @code{POINTER_SIZE} is equal
1065to the width of @code{Pmode}.
a2c4f8e0 1066@end defmac
feca2ed3 1067
a2c4f8e0 1068@defmac PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type})
feca2ed3
JW
1069A macro to update @var{m} and @var{unsignedp} when an object whose type
1070is @var{type} and which has the specified mode and signedness is to be
1071stored in a register. This macro is only called when @var{type} is a
1072scalar type.
1073
1074On most RISC machines, which only have operations that operate on a full
1075register, define this macro to set @var{m} to @code{word_mode} if
1076@var{m} is an integer mode narrower than @code{BITS_PER_WORD}. In most
1077cases, only integer modes should be widened because wider-precision
1078floating-point operations are usually more expensive than their narrower
1079counterparts.
1080
1081For most machines, the macro definition does not change @var{unsignedp}.
1082However, some machines, have instructions that preferentially handle
1083either signed or unsigned quantities of certain modes. For example, on
1084the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
1085sign-extend the result to 64 bits. On such machines, set
1086@var{unsignedp} according to which kind of extension is more efficient.
1087
1088Do not define this macro if it would never modify @var{m}.
a2c4f8e0 1089@end defmac
feca2ed3 1090
d4453b7a
PB
1091@defmac PROMOTE_FUNCTION_MODE
1092Like @code{PROMOTE_MODE}, but is applied to outgoing function arguments or
1093function return values, as specified by @code{TARGET_PROMOTE_FUNCTION_ARGS}
1094and @code{TARGET_PROMOTE_FUNCTION_RETURN}, respectively.
1095
1096The default is @code{PROMOTE_MODE}.
1097@end defmac
1098
61f71b34
DD
1099@deftypefn {Target Hook} bool TARGET_PROMOTE_FUNCTION_ARGS (tree @var{fntype})
1100This target hook should return @code{true} if the promotion described by
d4453b7a
PB
1101@code{PROMOTE_FUNCTION_MODE} should be done for outgoing function
1102arguments.
61f71b34 1103@end deftypefn
feca2ed3 1104
61f71b34
DD
1105@deftypefn {Target Hook} bool TARGET_PROMOTE_FUNCTION_RETURN (tree @var{fntype})
1106This target hook should return @code{true} if the promotion described by
d4453b7a 1107@code{PROMOTE_FUNCTION_MODE} should be done for the return value of
61f71b34 1108functions.
feca2ed3 1109
61f71b34 1110If this target hook returns @code{true}, @code{FUNCTION_VALUE} must
d4453b7a 1111perform the same promotions done by @code{PROMOTE_FUNCTON_MODE}.
61f71b34 1112@end deftypefn
feca2ed3 1113
a2c4f8e0 1114@defmac PARM_BOUNDARY
feca2ed3
JW
1115Normal alignment required for function parameters on the stack, in
1116bits. All stack parameters receive at least this much alignment
1117regardless of data type. On most machines, this is the same as the
1118size of an integer.
a2c4f8e0 1119@end defmac
feca2ed3 1120
a2c4f8e0 1121@defmac STACK_BOUNDARY
31cdd499
ZW
1122Define this macro to the minimum alignment enforced by hardware for the
1123stack pointer on this machine. The definition is a C expression for the
1124desired alignment (measured in bits). This value is used as a default
1125if @code{PREFERRED_STACK_BOUNDARY} is not defined. On most machines,
1126this should be the same as @code{PARM_BOUNDARY}.
a2c4f8e0 1127@end defmac
c795bca9 1128
a2c4f8e0 1129@defmac PREFERRED_STACK_BOUNDARY
31cdd499
ZW
1130Define this macro if you wish to preserve a certain alignment for the
1131stack pointer, greater than what the hardware enforces. The definition
1132is a C expression for the desired alignment (measured in bits). This
1133macro must evaluate to a value equal to or larger than
1134@code{STACK_BOUNDARY}.
a2c4f8e0 1135@end defmac
feca2ed3 1136
a2c4f8e0 1137@defmac FORCE_PREFERRED_STACK_BOUNDARY_IN_MAIN
1d482056
RH
1138A C expression that evaluates true if @code{PREFERRED_STACK_BOUNDARY} is
1139not guaranteed by the runtime and we should emit code to align the stack
1140at the beginning of @code{main}.
1141
c795bca9 1142@cindex @code{PUSH_ROUNDING}, interaction with @code{PREFERRED_STACK_BOUNDARY}
feca2ed3 1143If @code{PUSH_ROUNDING} is not defined, the stack will always be aligned
c795bca9
BS
1144to the specified boundary. If @code{PUSH_ROUNDING} is defined and specifies
1145a less strict alignment than @code{PREFERRED_STACK_BOUNDARY}, the stack may
1146be momentarily unaligned while pushing arguments.
a2c4f8e0 1147@end defmac
feca2ed3 1148
a2c4f8e0 1149@defmac FUNCTION_BOUNDARY
feca2ed3 1150Alignment required for a function entry point, in bits.
a2c4f8e0 1151@end defmac
feca2ed3 1152
a2c4f8e0 1153@defmac BIGGEST_ALIGNMENT
feca2ed3 1154Biggest alignment that any data type can require on this machine, in bits.
a2c4f8e0 1155@end defmac
feca2ed3 1156
a2c4f8e0 1157@defmac MINIMUM_ATOMIC_ALIGNMENT
861bb6c1
JL
1158If defined, the smallest alignment, in bits, that can be given to an
1159object that can be referenced in one operation, without disturbing any
1160nearby object. Normally, this is @code{BITS_PER_UNIT}, but may be larger
1161on machines that don't have byte or half-word store operations.
a2c4f8e0 1162@end defmac
861bb6c1 1163
a2c4f8e0 1164@defmac BIGGEST_FIELD_ALIGNMENT
11cf4d18
JJ
1165Biggest alignment that any structure or union field can require on this
1166machine, in bits. If defined, this overrides @code{BIGGEST_ALIGNMENT} for
1167structure and union fields only, unless the field alignment has been set
1168by the @code{__attribute__ ((aligned (@var{n})))} construct.
a2c4f8e0 1169@end defmac
feca2ed3 1170
a2c4f8e0 1171@defmac ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
feca2ed3 1172An expression for the alignment of a structure field @var{field} if the
ad9335eb
JJ
1173alignment computed in the usual way (including applying of
1174@code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the
1175alignment) is @var{computed}. It overrides alignment only if the
1176field alignment has not been set by the
1177@code{__attribute__ ((aligned (@var{n})))} construct.
a2c4f8e0 1178@end defmac
feca2ed3 1179
a2c4f8e0 1180@defmac MAX_OFILE_ALIGNMENT
feca2ed3
JW
1181Biggest alignment supported by the object file format of this machine.
1182Use this macro to limit the alignment which can be specified using the
1183@code{__attribute__ ((aligned (@var{n})))} construct. If not defined,
1184the default value is @code{BIGGEST_ALIGNMENT}.
a2c4f8e0 1185@end defmac
feca2ed3 1186
a2c4f8e0 1187@defmac DATA_ALIGNMENT (@var{type}, @var{basic-align})
a8d1550a 1188If defined, a C expression to compute the alignment for a variable in
8a198bd2
JW
1189the static store. @var{type} is the data type, and @var{basic-align} is
1190the alignment that the object would ordinarily have. The value of this
feca2ed3
JW
1191macro is used instead of that alignment to align the object.
1192
1193If this macro is not defined, then @var{basic-align} is used.
1194
1195@findex strcpy
1196One use of this macro is to increase alignment of medium-size data to
1197make it all fit in fewer cache lines. Another is to cause character
1198arrays to be word-aligned so that @code{strcpy} calls that copy
1199constants to character arrays can be done inline.
a2c4f8e0 1200@end defmac
feca2ed3 1201
a2c4f8e0 1202@defmac CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
feca2ed3
JW
1203If defined, a C expression to compute the alignment given to a constant
1204that is being placed in memory. @var{constant} is the constant and
1205@var{basic-align} is the alignment that the object would ordinarily
1206have. The value of this macro is used instead of that alignment to
1207align the object.
1208
1209If this macro is not defined, then @var{basic-align} is used.
1210
1211The typical use of this macro is to increase alignment for string
1212constants to be word aligned so that @code{strcpy} calls that copy
1213constants can be done inline.
a2c4f8e0 1214@end defmac
feca2ed3 1215
a2c4f8e0 1216@defmac LOCAL_ALIGNMENT (@var{type}, @var{basic-align})
a8d1550a 1217If defined, a C expression to compute the alignment for a variable in
d16790f2
JW
1218the local store. @var{type} is the data type, and @var{basic-align} is
1219the alignment that the object would ordinarily have. The value of this
1220macro is used instead of that alignment to align the object.
1221
1222If this macro is not defined, then @var{basic-align} is used.
1223
1224One use of this macro is to increase alignment of medium-size data to
1225make it all fit in fewer cache lines.
a2c4f8e0 1226@end defmac
d16790f2 1227
a2c4f8e0 1228@defmac EMPTY_FIELD_BOUNDARY
c771326b 1229Alignment in bits to be given to a structure bit-field that follows an
feca2ed3
JW
1230empty field such as @code{int : 0;}.
1231
78d55cc8 1232If @code{PCC_BITFIELD_TYPE_MATTERS} is true, it overrides this macro.
a2c4f8e0 1233@end defmac
feca2ed3 1234
a2c4f8e0 1235@defmac STRUCTURE_SIZE_BOUNDARY
feca2ed3
JW
1236Number of bits which any structure or union's size must be a multiple of.
1237Each structure or union's size is rounded up to a multiple of this.
1238
1239If you do not define this macro, the default is the same as
1240@code{BITS_PER_UNIT}.
a2c4f8e0 1241@end defmac
feca2ed3 1242
a2c4f8e0 1243@defmac STRICT_ALIGNMENT
feca2ed3
JW
1244Define this macro to be the value 1 if instructions will fail to work
1245if given data not on the nominal alignment. If instructions will merely
1246go slower in that case, define this macro as 0.
a2c4f8e0 1247@end defmac
feca2ed3 1248
a2c4f8e0 1249@defmac PCC_BITFIELD_TYPE_MATTERS
feca2ed3 1250Define this if you wish to imitate the way many other C compilers handle
c771326b 1251alignment of bit-fields and the structures that contain them.
feca2ed3 1252
8dc65b6e
MM
1253The behavior is that the type written for a named bit-field (@code{int},
1254@code{short}, or other integer type) imposes an alignment for the entire
1255structure, as if the structure really did contain an ordinary field of
1256that type. In addition, the bit-field is placed within the structure so
1257that it would fit within such a field, not crossing a boundary for it.
1258
1259Thus, on most machines, a named bit-field whose type is written as
1260@code{int} would not cross a four-byte boundary, and would force
1261four-byte alignment for the whole structure. (The alignment used may
1262not be four bytes; it is controlled by the other alignment parameters.)
1263
1264An unnamed bit-field will not affect the alignment of the containing
1265structure.
feca2ed3
JW
1266
1267If the macro is defined, its definition should be a C expression;
1268a nonzero value for the expression enables this behavior.
1269
1270Note that if this macro is not defined, or its value is zero, some
c771326b 1271bit-fields may cross more than one alignment boundary. The compiler can
feca2ed3
JW
1272support such references if there are @samp{insv}, @samp{extv}, and
1273@samp{extzv} insns that can directly reference memory.
1274
c771326b 1275The other known way of making bit-fields work is to define
feca2ed3
JW
1276@code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}.
1277Then every structure can be accessed with fullwords.
1278
c771326b 1279Unless the machine has bit-field instructions or you define
feca2ed3
JW
1280@code{STRUCTURE_SIZE_BOUNDARY} that way, you must define
1281@code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value.
1282
a3a15b4d 1283If your aim is to make GCC use the same conventions for laying out
c771326b 1284bit-fields as are used by another compiler, here is how to investigate
feca2ed3
JW
1285what the other compiler does. Compile and run this program:
1286
3ab51846 1287@smallexample
feca2ed3
JW
1288struct foo1
1289@{
1290 char x;
1291 char :0;
1292 char y;
1293@};
1294
1295struct foo2
1296@{
1297 char x;
1298 int :0;
1299 char y;
1300@};
1301
1302main ()
1303@{
1304 printf ("Size of foo1 is %d\n",
1305 sizeof (struct foo1));
1306 printf ("Size of foo2 is %d\n",
1307 sizeof (struct foo2));
1308 exit (0);
1309@}
3ab51846 1310@end smallexample
feca2ed3
JW
1311
1312If this prints 2 and 5, then the compiler's behavior is what you would
1313get from @code{PCC_BITFIELD_TYPE_MATTERS}.
a2c4f8e0 1314@end defmac
feca2ed3 1315
a2c4f8e0 1316@defmac BITFIELD_NBYTES_LIMITED
f913c102
AO
1317Like @code{PCC_BITFIELD_TYPE_MATTERS} except that its effect is limited
1318to aligning a bit-field within the structure.
a2c4f8e0 1319@end defmac
feca2ed3 1320
13c1cd82
PB
1321@deftypefn {Target Hook} bool TARGET_ALIGN_ANON_BITFIELDS (void)
1322When @code{PCC_BITFIELD_TYPE_MATTERS} is true this hook will determine
1323whether unnamed bitfields affect the alignment of the containing
1324structure. The hook should return true if the structure should inherit
1325the alignment requirements of an unnamed bitfield's type.
1326@end deftypefn
1327
a2c4f8e0 1328@defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode})
31a02448 1329Return 1 if a structure or array containing @var{field} should be accessed using
9f6dc500
HPN
1330@code{BLKMODE}.
1331
182e515e
AH
1332If @var{field} is the only field in the structure, @var{mode} is its
1333mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the
1334case where structures of one field would require the structure's mode to
1335retain the field's mode.
1336
9f6dc500
HPN
1337Normally, this is not needed. See the file @file{c4x.h} for an example
1338of how to use this macro to prevent a structure having a floating point
1339field from being accessed in an integer mode.
a2c4f8e0 1340@end defmac
9f6dc500 1341
a2c4f8e0 1342@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
0003feb2
VM
1343Define this macro as an expression for the alignment of a type (given
1344by @var{type} as a tree node) if the alignment computed in the usual
1345way is @var{computed} and the alignment explicitly specified was
feca2ed3
JW
1346@var{specified}.
1347
1348The default is to use @var{specified} if it is larger; otherwise, use
1349the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT}
a2c4f8e0 1350@end defmac
feca2ed3 1351
a2c4f8e0 1352@defmac MAX_FIXED_MODE_SIZE
feca2ed3
JW
1353An integer expression for the size in bits of the largest integer
1354machine mode that should actually be used. All integer machine modes of
1355this size or smaller can be used for structures and unions with the
1356appropriate sizes. If this macro is undefined, @code{GET_MODE_BITSIZE
1357(DImode)} is assumed.
a2c4f8e0 1358@end defmac
feca2ed3 1359
a2c4f8e0 1360@defmac VECTOR_MODE_SUPPORTED_P (@var{mode})
4061f623
BS
1361Define this macro to be nonzero if the port is prepared to handle insns
1362involving vector mode @var{mode}. At the very least, it must have move
1363patterns for this mode.
a2c4f8e0 1364@end defmac
4061f623 1365
a2c4f8e0 1366@defmac STACK_SAVEAREA_MODE (@var{save_level})
73c8090f 1367If defined, an expression of type @code{enum machine_mode} that
39403d82
DE
1368specifies the mode of the save area operand of a
1369@code{save_stack_@var{level}} named pattern (@pxref{Standard Names}).
1370@var{save_level} is one of @code{SAVE_BLOCK}, @code{SAVE_FUNCTION}, or
1371@code{SAVE_NONLOCAL} and selects which of the three named patterns is
1372having its mode specified.
73c8090f
DE
1373
1374You need not define this macro if it always returns @code{Pmode}. You
1375would most commonly define this macro if the
1376@code{save_stack_@var{level}} patterns need to support both a 32- and a
137764-bit mode.
a2c4f8e0 1378@end defmac
73c8090f 1379
a2c4f8e0 1380@defmac STACK_SIZE_MODE
39403d82
DE
1381If defined, an expression of type @code{enum machine_mode} that
1382specifies the mode of the size increment operand of an
1383@code{allocate_stack} named pattern (@pxref{Standard Names}).
1384
1385You need not define this macro if it always returns @code{word_mode}.
1386You would most commonly define this macro if the @code{allocate_stack}
1387pattern needs to support both a 32- and a 64-bit mode.
a2c4f8e0 1388@end defmac
39403d82 1389
a2c4f8e0 1390@defmac TARGET_FLOAT_FORMAT
feca2ed3 1391A code distinguishing the floating point format of the target machine.
a2c4f8e0 1392There are four defined values:
feca2ed3 1393
a2c4f8e0 1394@ftable @code
feca2ed3
JW
1395@item IEEE_FLOAT_FORMAT
1396This code indicates IEEE floating point. It is the default; there is no
a2c4f8e0 1397need to define @code{TARGET_FLOAT_FORMAT} when the format is IEEE@.
feca2ed3 1398
feca2ed3 1399@item VAX_FLOAT_FORMAT
4226378a
PK
1400This code indicates the ``F float'' (for @code{float}) and ``D float''
1401or ``G float'' formats (for @code{double}) used on the VAX and PDP-11@.
feca2ed3 1402
68eb4fb9
LB
1403@item IBM_FLOAT_FORMAT
1404This code indicates the format used on the IBM System/370.
1405
68eb4fb9
LB
1406@item C4X_FLOAT_FORMAT
1407This code indicates the format used on the TMS320C3x/C4x.
a2c4f8e0 1408@end ftable
68eb4fb9 1409
a2c4f8e0
ZW
1410If your target uses a floating point format other than these, you must
1411define a new @var{name}_FLOAT_FORMAT code for it, and add support for
1412it to @file{real.c}.
feca2ed3
JW
1413
1414The ordering of the component words of floating point values stored in
807633e5 1415memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN}.
a2c4f8e0 1416@end defmac
e9a25f70 1417
a2c4f8e0 1418@defmac MODE_HAS_NANS (@var{mode})
71925bc0
RS
1419When defined, this macro should be true if @var{mode} has a NaN
1420representation. The compiler assumes that NaNs are not equal to
1421anything (including themselves) and that addition, subtraction,
1422multiplication and division all return NaNs when one operand is
1423NaN@.
1424
1425By default, this macro is true if @var{mode} is a floating-point
1426mode and the target floating-point format is IEEE@.
a2c4f8e0 1427@end defmac
71925bc0 1428
a2c4f8e0 1429@defmac MODE_HAS_INFINITIES (@var{mode})
71925bc0
RS
1430This macro should be true if @var{mode} can represent infinity. At
1431present, the compiler uses this macro to decide whether @samp{x - x}
1432is always defined. By default, the macro is true when @var{mode}
1433is a floating-point mode and the target format is IEEE@.
a2c4f8e0 1434@end defmac
71925bc0 1435
a2c4f8e0 1436@defmac MODE_HAS_SIGNED_ZEROS (@var{mode})
71925bc0
RS
1437True if @var{mode} distinguishes between positive and negative zero.
1438The rules are expected to follow the IEEE standard:
1439
1440@itemize @bullet
1441@item
1442@samp{x + x} has the same sign as @samp{x}.
1443
1444@item
1445If the sum of two values with opposite sign is zero, the result is
1446positive for all rounding modes expect towards @minus{}infinity, for
1447which it is negative.
1448
1449@item
1450The sign of a product or quotient is negative when exactly one
1451of the operands is negative.
1452@end itemize
1453
1454The default definition is true if @var{mode} is a floating-point
1455mode and the target format is IEEE@.
a2c4f8e0 1456@end defmac
71925bc0 1457
a2c4f8e0 1458@defmac MODE_HAS_SIGN_DEPENDENT_ROUNDING (@var{mode})
71925bc0
RS
1459If defined, this macro should be true for @var{mode} if it has at
1460least one rounding mode in which @samp{x} and @samp{-x} can be
1461rounded to numbers of different magnitude. Two such modes are
1462towards @minus{}infinity and towards +infinity.
1463
1464The default definition of this macro is true if @var{mode} is
1465a floating-point mode and the target format is IEEE@.
a2c4f8e0 1466@end defmac
3fcaac1d 1467
a2c4f8e0 1468@defmac ROUND_TOWARDS_ZERO
3fcaac1d
RS
1469If defined, this macro should be true if the prevailing rounding
1470mode is towards zero. A true value has the following effects:
1471
1472@itemize @bullet
1473@item
1474@code{MODE_HAS_SIGN_DEPENDENT_ROUNDING} will be false for all modes.
1475
1476@item
1477@file{libgcc.a}'s floating-point emulator will round towards zero
1478rather than towards nearest.
1479
1480@item
1481The compiler's floating-point emulator will round towards zero after
1482doing arithmetic, and when converting from the internal float format to
1483the target format.
1484@end itemize
1485
1486The macro does not affect the parsing of string literals. When the
1487primary rounding mode is towards zero, library functions like
1488@code{strtod} might still round towards nearest, and the compiler's
1489parser should behave like the target's @code{strtod} where possible.
1490
1491Not defining this macro is equivalent to returning zero.
a2c4f8e0 1492@end defmac
3fcaac1d 1493
a2c4f8e0 1494@defmac LARGEST_EXPONENT_IS_NORMAL (@var{size})
4226378a 1495This macro should return true if floats with @var{size}
3fcaac1d
RS
1496bits do not have a NaN or infinity representation, but use the largest
1497exponent for normal numbers instead.
1498
1499Defining this macro to true for @var{size} causes @code{MODE_HAS_NANS}
1500and @code{MODE_HAS_INFINITIES} to be false for @var{size}-bit modes.
1501It also affects the way @file{libgcc.a} and @file{real.c} emulate
1502floating-point arithmetic.
1503
1504The default definition of this macro returns false for all sizes.
a2c4f8e0 1505@end defmac
feca2ed3 1506
c8e4f0e9
AH
1507@deftypefn {Target Hook} bool TARGET_VECTOR_OPAQUE_P (tree @var{type})
1508This target hook should return @code{true} a vector is opaque. That
1509is, if no cast is needed when copying a vector value of type
1510@var{type} into another vector lvalue of the same size. Vector opaque
1511types cannot be initialized. The default is that there are no such
1512types.
62e1dfcf
NC
1513@end deftypefn
1514
f913c102
AO
1515@deftypefn {Target Hook} bool TARGET_MS_BITFIELD_LAYOUT_P (tree @var{record_type})
1516This target hook returns @code{true} if bit-fields in the given
1517@var{record_type} are to be laid out following the rules of Microsoft
1518Visual C/C++, namely: (i) a bit-field won't share the same storage
1519unit with the previous bit-field if their underlying types have
1520different sizes, and the bit-field will be aligned to the highest
1521alignment of the underlying types of itself and of the previous
1522bit-field; (ii) a zero-sized bit-field will affect the alignment of
1523the whole enclosing structure, even if it is unnamed; except that
1524(iii) a zero-sized bit-field will be disregarded unless it follows
6335b0aa 1525another bit-field of nonzero size. If this hook returns @code{true},
f913c102 1526other macros that control bit-field layout are ignored.
e4850f36
DR
1527
1528When a bit-field is inserted into a packed record, the whole size
1529of the underlying type is used by one or more same-size adjacent
1530bit-fields (that is, if its long:3, 32 bits is used in the record,
1531and any additional adjacent long bit-fields are packed into the same
1532chunk of 32 bits. However, if the size changes, a new field of that
1533size is allocated). In an unpacked record, this is the same as using
1534alignment, but not equivalent when packing.
1535
1536If both MS bit-fields and @samp{__attribute__((packed))} are used,
1537the latter will take precedence. If @samp{__attribute__((packed))} is
1538used on a single field when MS bit-fields are in use, it will take
1539precedence for that field, but the alignment of the rest of the structure
1540may affect its placement.
f913c102
AO
1541@end deftypefn
1542
f18eca82
ZL
1543@deftypefn {Target Hook} {const char *} TARGET_MANGLE_FUNDAMENTAL_TYPE (tree @var{type})
1544If your target defines any fundamental types, define this hook to
1545return the appropriate encoding for these types as part of a C++
1546mangled name. The @var{type} argument is the tree structure
1547representing the type to be mangled. The hook may be applied to trees
1548which are not target-specific fundamental types; it should return
1549@code{NULL} for all such types, as well as arguments it does not
1550recognize. If the return value is not @code{NULL}, it must point to
1551a statically-allocated string constant.
1552
1553Target-specific fundamental types might be new fundamental types or
1554qualified versions of ordinary fundamental types. Encode new
1555fundamental types as @samp{@w{u @var{n} @var{name}}}, where @var{name}
1556is the name used for the type in source code, and @var{n} is the
1557length of @var{name} in decimal. Encode qualified versions of
1558ordinary types as @samp{@w{U @var{n} @var{name} @var{code}}}, where
1559@var{name} is the name used for the type qualifier in source code,
1560@var{n} is the length of @var{name} as above, and @var{code} is the
1561code used to represent the unqualified version of this type. (See
1562@code{write_builtin_type} in @file{cp/mangle.c} for the list of
1563codes.) In both cases the spaces are for clarity; do not include any
1564spaces in your string.
1565
1566The default version of this hook always returns @code{NULL}, which is
1567appropriate for a target that does not define any new fundamental
1568types.
1569@end deftypefn
1570
feca2ed3
JW
1571@node Type Layout
1572@section Layout of Source Language Data Types
1573
1574These macros define the sizes and other characteristics of the standard
1575basic data types used in programs being compiled. Unlike the macros in
1576the previous section, these apply to specific features of C and related
1577languages, rather than to fundamental aspects of storage layout.
1578
a2c4f8e0 1579@defmac INT_TYPE_SIZE
feca2ed3
JW
1580A C expression for the size in bits of the type @code{int} on the
1581target machine. If you don't define this, the default is one word.
a2c4f8e0 1582@end defmac
feca2ed3 1583
a2c4f8e0 1584@defmac SHORT_TYPE_SIZE
feca2ed3
JW
1585A C expression for the size in bits of the type @code{short} on the
1586target machine. If you don't define this, the default is half a word.
1587(If this would be less than one storage unit, it is rounded up to one
1588unit.)
a2c4f8e0 1589@end defmac
feca2ed3 1590
a2c4f8e0 1591@defmac LONG_TYPE_SIZE
feca2ed3
JW
1592A C expression for the size in bits of the type @code{long} on the
1593target machine. If you don't define this, the default is one word.
a2c4f8e0 1594@end defmac
feca2ed3 1595
a2c4f8e0 1596@defmac ADA_LONG_TYPE_SIZE
1615c261
RK
1597On some machines, the size used for the Ada equivalent of the type
1598@code{long} by a native Ada compiler differs from that used by C. In
1599that situation, define this macro to be a C expression to be used for
1600the size of that type. If you don't define this, the default is the
1601value of @code{LONG_TYPE_SIZE}.
a2c4f8e0 1602@end defmac
1615c261 1603
a2c4f8e0 1604@defmac LONG_LONG_TYPE_SIZE
feca2ed3
JW
1605A C expression for the size in bits of the type @code{long long} on the
1606target machine. If you don't define this, the default is two
047c1c92 1607words. If you want to support GNU Ada on your machine, the value of this
feca2ed3 1608macro must be at least 64.
a2c4f8e0 1609@end defmac
feca2ed3 1610
a2c4f8e0 1611@defmac CHAR_TYPE_SIZE
feca2ed3 1612A C expression for the size in bits of the type @code{char} on the
c294bd99
HPN
1613target machine. If you don't define this, the default is
1614@code{BITS_PER_UNIT}.
a2c4f8e0 1615@end defmac
feca2ed3 1616
a2c4f8e0 1617@defmac BOOL_TYPE_SIZE
3d1ad9e5
JM
1618A C expression for the size in bits of the C++ type @code{bool} and
1619C99 type @code{_Bool} on the target machine. If you don't define
1620this, and you probably shouldn't, the default is @code{CHAR_TYPE_SIZE}.
a2c4f8e0 1621@end defmac
68eb4fb9 1622
a2c4f8e0 1623@defmac FLOAT_TYPE_SIZE
feca2ed3
JW
1624A C expression for the size in bits of the type @code{float} on the
1625target machine. If you don't define this, the default is one word.
a2c4f8e0 1626@end defmac
feca2ed3 1627
a2c4f8e0 1628@defmac DOUBLE_TYPE_SIZE
feca2ed3
JW
1629A C expression for the size in bits of the type @code{double} on the
1630target machine. If you don't define this, the default is two
1631words.
a2c4f8e0 1632@end defmac
feca2ed3 1633
a2c4f8e0 1634@defmac LONG_DOUBLE_TYPE_SIZE
feca2ed3
JW
1635A C expression for the size in bits of the type @code{long double} on
1636the target machine. If you don't define this, the default is two
1637words.
a2c4f8e0 1638@end defmac
feca2ed3 1639
a2c4f8e0 1640@defmac TARGET_FLT_EVAL_METHOD
d57a4b98
RH
1641A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h},
1642assuming, if applicable, that the floating-point control word is in its
1643default state. If you do not define this macro the value of
1644@code{FLT_EVAL_METHOD} will be zero.
a2c4f8e0 1645@end defmac
aaa2e8ef 1646
a2c4f8e0 1647@defmac WIDEST_HARDWARE_FP_SIZE
e9a25f70
JL
1648A C expression for the size in bits of the widest floating-point format
1649supported by the hardware. If you define this macro, you must specify a
1650value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}.
1651If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE}
1652is the default.
a2c4f8e0 1653@end defmac
e9a25f70 1654
a2c4f8e0 1655@defmac DEFAULT_SIGNED_CHAR
feca2ed3
JW
1656An expression whose value is 1 or 0, according to whether the type
1657@code{char} should be signed or unsigned by default. The user can
630d3d5a
JM
1658always override this default with the options @option{-fsigned-char}
1659and @option{-funsigned-char}.
a2c4f8e0 1660@end defmac
feca2ed3 1661
221ee7c9
KH
1662@deftypefn {Target Hook} bool TARGET_DEFAULT_SHORT_ENUMS (void)
1663This target hook should return true if the compiler should give an
1664@code{enum} type only as many bytes as it takes to represent the range
1665of possible values of that type. It should return false if all
35afa569
KH
1666@code{enum} types should be allocated like @code{int}.
1667
221ee7c9
KH
1668The default is to return false.
1669@end deftypefn
35afa569 1670
a2c4f8e0 1671@defmac SIZE_TYPE
feca2ed3
JW
1672A C expression for a string describing the name of the data type to use
1673for size values. The typedef name @code{size_t} is defined using the
1674contents of the string.
1675
1676The string can contain more than one keyword. If so, separate them with
1677spaces, and write first any length keyword, then @code{unsigned} if
1678appropriate, and finally @code{int}. The string must exactly match one
1679of the data type names defined in the function
1680@code{init_decl_processing} in the file @file{c-decl.c}. You may not
1681omit @code{int} or change the order---that would cause the compiler to
1682crash on startup.
1683
1684If you don't define this macro, the default is @code{"long unsigned
1685int"}.
a2c4f8e0 1686@end defmac
feca2ed3 1687
a2c4f8e0 1688@defmac PTRDIFF_TYPE
feca2ed3
JW
1689A C expression for a string describing the name of the data type to use
1690for the result of subtracting two pointers. The typedef name
1691@code{ptrdiff_t} is defined using the contents of the string. See
1692@code{SIZE_TYPE} above for more information.
1693
1694If you don't define this macro, the default is @code{"long int"}.
a2c4f8e0 1695@end defmac
feca2ed3 1696
a2c4f8e0 1697@defmac WCHAR_TYPE
feca2ed3
JW
1698A C expression for a string describing the name of the data type to use
1699for wide characters. The typedef name @code{wchar_t} is defined using
1700the contents of the string. See @code{SIZE_TYPE} above for more
1701information.
1702
1703If you don't define this macro, the default is @code{"int"}.
a2c4f8e0 1704@end defmac
feca2ed3 1705
a2c4f8e0 1706@defmac WCHAR_TYPE_SIZE
feca2ed3
JW
1707A C expression for the size in bits of the data type for wide
1708characters. This is used in @code{cpp}, which cannot make use of
1709@code{WCHAR_TYPE}.
a2c4f8e0 1710@end defmac
feca2ed3 1711
a2c4f8e0 1712@defmac WINT_TYPE
1a67c7d3
JL
1713A C expression for a string describing the name of the data type to
1714use for wide characters passed to @code{printf} and returned from
1715@code{getwc}. The typedef name @code{wint_t} is defined using the
1716contents of the string. See @code{SIZE_TYPE} above for more
1717information.
1718
1719If you don't define this macro, the default is @code{"unsigned int"}.
a2c4f8e0 1720@end defmac
1a67c7d3 1721
a2c4f8e0 1722@defmac INTMAX_TYPE
b15ad712
JM
1723A C expression for a string describing the name of the data type that
1724can represent any value of any standard or extended signed integer type.
1725The typedef name @code{intmax_t} is defined using the contents of the
1726string. See @code{SIZE_TYPE} above for more information.
1727
1728If you don't define this macro, the default is the first of
1729@code{"int"}, @code{"long int"}, or @code{"long long int"} that has as
1730much precision as @code{long long int}.
a2c4f8e0 1731@end defmac
b15ad712 1732
a2c4f8e0 1733@defmac UINTMAX_TYPE
b15ad712
JM
1734A C expression for a string describing the name of the data type that
1735can represent any value of any standard or extended unsigned integer
1736type. The typedef name @code{uintmax_t} is defined using the contents
1737of the string. See @code{SIZE_TYPE} above for more information.
1738
1739If you don't define this macro, the default is the first of
1740@code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long
1741unsigned int"} that has as much precision as @code{long long unsigned
1742int}.
a2c4f8e0 1743@end defmac
b15ad712 1744
a2c4f8e0 1745@defmac TARGET_PTRMEMFUNC_VBIT_LOCATION
f3c55c97
AO
1746The C++ compiler represents a pointer-to-member-function with a struct
1747that looks like:
1748
3ab51846 1749@smallexample
f3c55c97
AO
1750 struct @{
1751 union @{
1752 void (*fn)();
1753 ptrdiff_t vtable_index;
1754 @};
1755 ptrdiff_t delta;
1756 @};
3ab51846 1757@end smallexample
f3c55c97
AO
1758
1759@noindent
1760The C++ compiler must use one bit to indicate whether the function that
1761will be called through a pointer-to-member-function is virtual.
1762Normally, we assume that the low-order bit of a function pointer must
1763always be zero. Then, by ensuring that the vtable_index is odd, we can
1764distinguish which variant of the union is in use. But, on some
1765platforms function pointers can be odd, and so this doesn't work. In
1766that case, we use the low-order bit of the @code{delta} field, and shift
1767the remainder of the @code{delta} field to the left.
1768
1769GCC will automatically make the right selection about where to store
1770this bit using the @code{FUNCTION_BOUNDARY} setting for your platform.
1771However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY}
1772set such that functions always start at even addresses, but the lowest
1773bit of pointers to functions indicate whether the function at that
1774address is in ARM or Thumb mode. If this is the case of your
1775architecture, you should define this macro to
1776@code{ptrmemfunc_vbit_in_delta}.
1777
1778In general, you should not have to define this macro. On architectures
1779in which function addresses are always even, according to
1780@code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to
1781@code{ptrmemfunc_vbit_in_pfn}.
a2c4f8e0 1782@end defmac
67231816 1783
a2c4f8e0 1784@defmac TARGET_VTABLE_USES_DESCRIPTORS
67231816 1785Normally, the C++ compiler uses function pointers in vtables. This
f282ffb3 1786macro allows the target to change to use ``function descriptors''
67231816
RH
1787instead. Function descriptors are found on targets for whom a
1788function pointer is actually a small data structure. Normally the
f282ffb3 1789data structure consists of the actual code address plus a data
67231816
RH
1790pointer to which the function's data is relative.
1791
1792If vtables are used, the value of this macro should be the number
1793of words that the function descriptor occupies.
a2c4f8e0 1794@end defmac
a6f5e048 1795
a2c4f8e0 1796@defmac TARGET_VTABLE_ENTRY_ALIGN
a6f5e048
RH
1797By default, the vtable entries are void pointers, the so the alignment
1798is the same as pointer alignment. The value of this macro specifies
1799the alignment of the vtable entry in bits. It should be defined only
1800when special alignment is necessary. */
a2c4f8e0 1801@end defmac
a6f5e048 1802
a2c4f8e0 1803@defmac TARGET_VTABLE_DATA_ENTRY_DISTANCE
a6f5e048
RH
1804There are a few non-descriptor entries in the vtable at offsets below
1805zero. If these entries must be padded (say, to preserve the alignment
1806specified by @code{TARGET_VTABLE_ENTRY_ALIGN}), set this to the number
1807of words in each data entry.
a2c4f8e0 1808@end defmac
b2b263e1
NB
1809
1810@node Escape Sequences
1811@section Target Character Escape Sequences
1812@cindex escape sequences
f3c55c97 1813
61218d19
KG
1814By default, GCC assumes that the C character escape sequences and other
1815characters take on their ASCII values for the target. If this is not
1816correct, you must explicitly define all of the macros below. All of
1817them must evaluate to constants; they are used in @code{case}
1818statements.
b2b263e1 1819
feca2ed3 1820@findex TARGET_BELL
61218d19 1821@findex TARGET_BS
a2c4f8e0 1822@findex TARGET_CR
61218d19 1823@findex TARGET_DIGIT0
501990bb 1824@findex TARGET_ESC
a2c4f8e0 1825@findex TARGET_FF
feca2ed3 1826@findex TARGET_NEWLINE
a2c4f8e0 1827@findex TARGET_TAB
feca2ed3 1828@findex TARGET_VT
a2c4f8e0
ZW
1829@multitable {@code{TARGET_NEWLINE}} {Escape} {ASCII character}
1830@item Macro @tab Escape @tab ASCII character
1831@item @code{TARGET_BELL} @tab @kbd{\a} @tab @code{07}, @code{BEL}
61218d19 1832@item @code{TARGET_BS} @tab @kbd{\b} @tab @code{08}, @code{BS}
a2c4f8e0 1833@item @code{TARGET_CR} @tab @kbd{\r} @tab @code{0D}, @code{CR}
61218d19 1834@item @code{TARGET_DIGIT0} @tab @kbd{0} @tab @code{30}, @code{ZERO}
a2c4f8e0
ZW
1835@item @code{TARGET_ESC} @tab @kbd{\e}, @kbd{\E} @tab @code{1B}, @code{ESC}
1836@item @code{TARGET_FF} @tab @kbd{\f} @tab @code{0C}, @code{FF}
1837@item @code{TARGET_NEWLINE} @tab @kbd{\n} @tab @code{0A}, @code{LF}
1838@item @code{TARGET_TAB} @tab @kbd{\t} @tab @code{09}, @code{HT}
1839@item @code{TARGET_VT} @tab @kbd{\v} @tab @code{0B}, @code{VT}
1840@end multitable
1841
1842@noindent
1843Note that the @kbd{\e} and @kbd{\E} escapes are GNU extensions, not
1844part of the C standard.
feca2ed3
JW
1845
1846@node Registers
1847@section Register Usage
1848@cindex register usage
1849
1850This section explains how to describe what registers the target machine
1851has, and how (in general) they can be used.
1852
1853The description of which registers a specific instruction can use is
1854done with register classes; see @ref{Register Classes}. For information
1855on using registers to access a stack frame, see @ref{Frame Registers}.
1856For passing values in registers, see @ref{Register Arguments}.
1857For returning values in registers, see @ref{Scalar Return}.
1858
1859@menu
1860* Register Basics:: Number and kinds of registers.
1861* Allocation Order:: Order in which registers are allocated.
1862* Values in Registers:: What kinds of values each reg can hold.
1863* Leaf Functions:: Renumbering registers for leaf functions.
1864* Stack Registers:: Handling a register stack such as 80387.
feca2ed3
JW
1865@end menu
1866
1867@node Register Basics
1868@subsection Basic Characteristics of Registers
1869
1870@c prevent bad page break with this line
1871Registers have various characteristics.
1872
a2c4f8e0 1873@defmac FIRST_PSEUDO_REGISTER
feca2ed3
JW
1874Number of hardware registers known to the compiler. They receive
1875numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
1876pseudo register's number really is assigned the number
1877@code{FIRST_PSEUDO_REGISTER}.
a2c4f8e0 1878@end defmac
feca2ed3 1879
a2c4f8e0 1880@defmac FIXED_REGISTERS
feca2ed3
JW
1881@cindex fixed register
1882An initializer that says which registers are used for fixed purposes
1883all throughout the compiled code and are therefore not available for
1884general allocation. These would include the stack pointer, the frame
1885pointer (except on machines where that can be used as a general
1886register when no frame pointer is needed), the program counter on
1887machines where that is considered one of the addressable registers,
1888and any other numbered register with a standard use.
1889
1890This information is expressed as a sequence of numbers, separated by
1891commas and surrounded by braces. The @var{n}th number is 1 if
1892register @var{n} is fixed, 0 otherwise.
1893
1894The table initialized from this macro, and the table initialized by
1895the following one, may be overridden at run time either automatically,
1896by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
630d3d5a
JM
1897the user with the command options @option{-ffixed-@var{reg}},
1898@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}.
a2c4f8e0 1899@end defmac
feca2ed3 1900
a2c4f8e0 1901@defmac CALL_USED_REGISTERS
feca2ed3
JW
1902@cindex call-used register
1903@cindex call-clobbered register
1904@cindex call-saved register
1905Like @code{FIXED_REGISTERS} but has 1 for each register that is
1906clobbered (in general) by function calls as well as for fixed
1907registers. This macro therefore identifies the registers that are not
1908available for general allocation of values that must live across
1909function calls.
1910
1911If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler
1912automatically saves it on function entry and restores it on function
1913exit, if the register is used within the function.
a2c4f8e0 1914@end defmac
feca2ed3 1915
a2c4f8e0 1916@defmac CALL_REALLY_USED_REGISTERS
fc1296b7
AM
1917@cindex call-used register
1918@cindex call-clobbered register
1919@cindex call-saved register
f282ffb3
JM
1920Like @code{CALL_USED_REGISTERS} except this macro doesn't require
1921that the entire set of @code{FIXED_REGISTERS} be included.
fc1296b7 1922(@code{CALL_USED_REGISTERS} must be a superset of @code{FIXED_REGISTERS}).
f282ffb3 1923This macro is optional. If not specified, it defaults to the value
fc1296b7 1924of @code{CALL_USED_REGISTERS}.
a2c4f8e0 1925@end defmac
fc1296b7 1926
a2c4f8e0 1927@defmac HARD_REGNO_CALL_PART_CLOBBERED (@var{regno}, @var{mode})
1e326708
MH
1928@cindex call-used register
1929@cindex call-clobbered register
1930@cindex call-saved register
df2a54e9 1931A C expression that is nonzero if it is not permissible to store a
1e326708
MH
1932value of mode @var{mode} in hard register number @var{regno} across a
1933call without some part of it being clobbered. For most machines this
1934macro need not be defined. It is only required for machines that do not
1935preserve the entire contents of a register across a call.
a2c4f8e0 1936@end defmac
1e326708 1937
feca2ed3
JW
1938@findex fixed_regs
1939@findex call_used_regs
a2c4f8e0
ZW
1940@findex global_regs
1941@findex reg_names
1942@findex reg_class_contents
1943@defmac CONDITIONAL_REGISTER_USAGE
055177dc
NC
1944Zero or more C statements that may conditionally modify five variables
1945@code{fixed_regs}, @code{call_used_regs}, @code{global_regs},
c237e94a
ZW
1946@code{reg_names}, and @code{reg_class_contents}, to take into account
1947any dependence of these register sets on target flags. The first three
1948of these are of type @code{char []} (interpreted as Boolean vectors).
1949@code{global_regs} is a @code{const char *[]}, and
1950@code{reg_class_contents} is a @code{HARD_REG_SET}. Before the macro is
1951called, @code{fixed_regs}, @code{call_used_regs},
1952@code{reg_class_contents}, and @code{reg_names} have been initialized
055177dc 1953from @code{FIXED_REGISTERS}, @code{CALL_USED_REGISTERS},
c237e94a 1954@code{REG_CLASS_CONTENTS}, and @code{REGISTER_NAMES}, respectively.
630d3d5a 1955@code{global_regs} has been cleared, and any @option{-ffixed-@var{reg}},
c237e94a
ZW
1956@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}
1957command options have been applied.
feca2ed3
JW
1958
1959You need not define this macro if it has no work to do.
1960
1961@cindex disabling certain registers
1962@cindex controlling register usage
1963If the usage of an entire class of registers depends on the target
1964flags, you may indicate this to GCC by using this macro to modify
1965@code{fixed_regs} and @code{call_used_regs} to 1 for each of the
161d7b59 1966registers in the classes which should not be used by GCC@. Also define
97488870
R
1967the macro @code{REG_CLASS_FROM_LETTER} / @code{REG_CLASS_FROM_CONSTRAINT}
1968to return @code{NO_REGS} if it
feca2ed3
JW
1969is called with a letter for a class that shouldn't be used.
1970
1971(However, if this class is not included in @code{GENERAL_REGS} and all
1972of the insn patterns whose constraints permit this class are
1973controlled by target switches, then GCC will automatically avoid using
1974these registers when the target switches are opposed to them.)
a2c4f8e0 1975@end defmac
feca2ed3 1976
a2c4f8e0 1977@defmac NON_SAVING_SETJMP
feca2ed3
JW
1978If this macro is defined and has a nonzero value, it means that
1979@code{setjmp} and related functions fail to save the registers, or that
1980@code{longjmp} fails to restore them. To compensate, the compiler
1981avoids putting variables in registers in functions that use
1982@code{setjmp}.
a2c4f8e0 1983@end defmac
feca2ed3 1984
a2c4f8e0 1985@defmac INCOMING_REGNO (@var{out})
feca2ed3
JW
1986Define this macro if the target machine has register windows. This C
1987expression returns the register number as seen by the called function
1988corresponding to the register number @var{out} as seen by the calling
1989function. Return @var{out} if register number @var{out} is not an
1990outbound register.
a2c4f8e0 1991@end defmac
feca2ed3 1992
a2c4f8e0 1993@defmac OUTGOING_REGNO (@var{in})
feca2ed3
JW
1994Define this macro if the target machine has register windows. This C
1995expression returns the register number as seen by the calling function
1996corresponding to the register number @var{in} as seen by the called
1997function. Return @var{in} if register number @var{in} is not an inbound
1998register.
a2c4f8e0 1999@end defmac
feca2ed3 2000
a2c4f8e0 2001@defmac LOCAL_REGNO (@var{regno})
fa80e43d
JL
2002Define this macro if the target machine has register windows. This C
2003expression returns true if the register is call-saved but is in the
2004register window. Unlike most call-saved registers, such registers
2005need not be explicitly restored on function exit or during non-local
2006gotos.
a2c4f8e0 2007@end defmac
fa80e43d 2008
a2c4f8e0 2009@defmac PC_REGNUM
feca2ed3
JW
2010If the program counter has a register number, define this as that
2011register number. Otherwise, do not define it.
a2c4f8e0 2012@end defmac
feca2ed3
JW
2013
2014@node Allocation Order
2015@subsection Order of Allocation of Registers
2016@cindex order of register allocation
2017@cindex register allocation order
2018
2019@c prevent bad page break with this line
2020Registers are allocated in order.
2021
a2c4f8e0 2022@defmac REG_ALLOC_ORDER
feca2ed3 2023If defined, an initializer for a vector of integers, containing the
a3a15b4d 2024numbers of hard registers in the order in which GCC should prefer
feca2ed3
JW
2025to use them (from most preferred to least).
2026
2027If this macro is not defined, registers are used lowest numbered first
2028(all else being equal).
2029
2030One use of this macro is on machines where the highest numbered
2031registers must always be saved and the save-multiple-registers
2032instruction supports only sequences of consecutive registers. On such
2033machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists
956d6950 2034the highest numbered allocable register first.
a2c4f8e0 2035@end defmac
feca2ed3 2036
a2c4f8e0 2037@defmac ORDER_REGS_FOR_LOCAL_ALLOC
feca2ed3
JW
2038A C statement (sans semicolon) to choose the order in which to allocate
2039hard registers for pseudo-registers local to a basic block.
2040
2041Store the desired register order in the array @code{reg_alloc_order}.
2042Element 0 should be the register to allocate first; element 1, the next
2043register; and so on.
2044
2045The macro body should not assume anything about the contents of
2046@code{reg_alloc_order} before execution of the macro.
2047
2048On most machines, it is not necessary to define this macro.
a2c4f8e0 2049@end defmac
feca2ed3
JW
2050
2051@node Values in Registers
2052@subsection How Values Fit in Registers
2053
2054This section discusses the macros that describe which kinds of values
2055(specifically, which machine modes) each register can hold, and how many
2056consecutive registers are needed for a given mode.
2057
a2c4f8e0 2058@defmac HARD_REGNO_NREGS (@var{regno}, @var{mode})
feca2ed3
JW
2059A C expression for the number of consecutive hard registers, starting
2060at register number @var{regno}, required to hold a value of mode
2061@var{mode}.
2062
2063On a machine where all registers are exactly one word, a suitable
2064definition of this macro is
2065
2066@smallexample
2067#define HARD_REGNO_NREGS(REGNO, MODE) \
2068 ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \
32bd3974 2069 / UNITS_PER_WORD)
feca2ed3 2070@end smallexample
a2c4f8e0 2071@end defmac
feca2ed3 2072
ca0b6e3b
EB
2073@defmac REGMODE_NATURAL_SIZE (@var{mode})
2074Define this macro if the natural size of registers that hold values
2075of mode @var{mode} is not the word size. It is a C expression that
2076should give the natural size in bytes for the specified mode. It is
2077used by the register allocator to try to optimize its results. This
2078happens for example on SPARC 64-bit where the natural size of
2079floating-point registers is still 32-bit.
2080@end defmac
2081
a2c4f8e0 2082@defmac HARD_REGNO_MODE_OK (@var{regno}, @var{mode})
feca2ed3
JW
2083A C expression that is nonzero if it is permissible to store a value
2084of mode @var{mode} in hard register number @var{regno} (or in several
2085registers starting with that one). For a machine where all registers
2086are equivalent, a suitable definition is
2087
2088@smallexample
2089#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
2090@end smallexample
2091
e9a25f70
JL
2092You need not include code to check for the numbers of fixed registers,
2093because the allocation mechanism considers them to be always occupied.
feca2ed3
JW
2094
2095@cindex register pairs
2096On some machines, double-precision values must be kept in even/odd
e9a25f70
JL
2097register pairs. You can implement that by defining this macro to reject
2098odd register numbers for such modes.
feca2ed3
JW
2099
2100The minimum requirement for a mode to be OK in a register is that the
2101@samp{mov@var{mode}} instruction pattern support moves between the
e9a25f70
JL
2102register and other hard register in the same class and that moving a
2103value into the register and back out not alter it.
feca2ed3 2104
e9a25f70
JL
2105Since the same instruction used to move @code{word_mode} will work for
2106all narrower integer modes, it is not necessary on any machine for
feca2ed3
JW
2107@code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided
2108you define patterns @samp{movhi}, etc., to take advantage of this. This
2109is useful because of the interaction between @code{HARD_REGNO_MODE_OK}
2110and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes
2111to be tieable.
2112
2113Many machines have special registers for floating point arithmetic.
2114Often people assume that floating point machine modes are allowed only
2115in floating point registers. This is not true. Any registers that
2116can hold integers can safely @emph{hold} a floating point machine
2117mode, whether or not floating arithmetic can be done on it in those
2118registers. Integer move instructions can be used to move the values.
2119
2120On some machines, though, the converse is true: fixed-point machine
2121modes may not go in floating registers. This is true if the floating
2122registers normalize any value stored in them, because storing a
2123non-floating value there would garble it. In this case,
2124@code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in
2125floating registers. But if the floating registers do not automatically
2126normalize, if you can store any bit pattern in one and retrieve it
2127unchanged without a trap, then any machine mode may go in a floating
2128register, so you can define this macro to say so.
2129
2130The primary significance of special floating registers is rather that
2131they are the registers acceptable in floating point arithmetic
2132instructions. However, this is of no concern to
2133@code{HARD_REGNO_MODE_OK}. You handle it by writing the proper
2134constraints for those instructions.
2135
2136On some machines, the floating registers are especially slow to access,
2137so that it is better to store a value in a stack frame than in such a
2138register if floating point arithmetic is not being done. As long as the
2139floating registers are not in class @code{GENERAL_REGS}, they will not
2140be used unless some pattern's constraint asks for one.
a2c4f8e0 2141@end defmac
feca2ed3 2142
150c9fe8
KH
2143@defmac HARD_REGNO_RENAME_OK (@var{from}, @var{to})
2144A C expression that is nonzero if it is OK to rename a hard register
2145@var{from} to another hard register @var{to}.
2146
2147One common use of this macro is to prevent renaming of a register to
2148another register that is not saved by a prologue in an interrupt
2149handler.
2150
2151The default is always nonzero.
2152@end defmac
2153
a2c4f8e0 2154@defmac MODES_TIEABLE_P (@var{mode1}, @var{mode2})
e9a25f70 2155A C expression that is nonzero if a value of mode
956d6950 2156@var{mode1} is accessible in mode @var{mode2} without copying.
feca2ed3
JW
2157
2158If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and
e9a25f70
JL
2159@code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are always the same for
2160any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1}, @var{mode2})}
2161should be nonzero. If they differ for any @var{r}, you should define
2162this macro to return zero unless some other mechanism ensures the
956d6950 2163accessibility of the value in a narrower mode.
e9a25f70
JL
2164
2165You should define this macro to return nonzero in as many cases as
a3a15b4d 2166possible since doing so will allow GCC to perform better register
e9a25f70 2167allocation.
a2c4f8e0 2168@end defmac
7506f491 2169
a2c4f8e0 2170@defmac AVOID_CCMODE_COPIES
7506f491 2171Define this macro if the compiler should avoid copies to/from @code{CCmode}
a89608cb 2172registers. You should only define this macro if support for copying to/from
7506f491 2173@code{CCmode} is incomplete.
a2c4f8e0 2174@end defmac
feca2ed3
JW
2175
2176@node Leaf Functions
2177@subsection Handling Leaf Functions
2178
2179@cindex leaf functions
2180@cindex functions, leaf
2181On some machines, a leaf function (i.e., one which makes no calls) can run
2182more efficiently if it does not make its own register window. Often this
2183means it is required to receive its arguments in the registers where they
2184are passed by the caller, instead of the registers where they would
2185normally arrive.
2186
2187The special treatment for leaf functions generally applies only when
2188other conditions are met; for example, often they may use only those
2189registers for its own variables and temporaries. We use the term ``leaf
2190function'' to mean a function that is suitable for this special
2191handling, so that functions with no calls are not necessarily ``leaf
2192functions''.
2193
a3a15b4d 2194GCC assigns register numbers before it knows whether the function is
feca2ed3
JW
2195suitable for leaf function treatment. So it needs to renumber the
2196registers in order to output a leaf function. The following macros
2197accomplish this.
2198
a2c4f8e0 2199@defmac LEAF_REGISTERS
7d167afd 2200Name of a char vector, indexed by hard register number, which
feca2ed3
JW
2201contains 1 for a register that is allowable in a candidate for leaf
2202function treatment.
2203
2204If leaf function treatment involves renumbering the registers, then the
2205registers marked here should be the ones before renumbering---those that
a3a15b4d 2206GCC would ordinarily allocate. The registers which will actually be
feca2ed3
JW
2207used in the assembler code, after renumbering, should not be marked with 1
2208in this vector.
2209
2210Define this macro only if the target machine offers a way to optimize
2211the treatment of leaf functions.
a2c4f8e0 2212@end defmac
feca2ed3 2213
a2c4f8e0 2214@defmac LEAF_REG_REMAP (@var{regno})
feca2ed3
JW
2215A C expression whose value is the register number to which @var{regno}
2216should be renumbered, when a function is treated as a leaf function.
2217
2218If @var{regno} is a register number which should not appear in a leaf
630d3d5a 2219function before renumbering, then the expression should yield @minus{}1, which
feca2ed3
JW
2220will cause the compiler to abort.
2221
2222Define this macro only if the target machine offers a way to optimize the
2223treatment of leaf functions, and registers need to be renumbered to do
2224this.
a2c4f8e0 2225@end defmac
feca2ed3 2226
54ff41b7
JW
2227@findex current_function_is_leaf
2228@findex current_function_uses_only_leaf_regs
c237e94a
ZW
2229@code{TARGET_ASM_FUNCTION_PROLOGUE} and
2230@code{TARGET_ASM_FUNCTION_EPILOGUE} must usually treat leaf functions
2231specially. They can test the C variable @code{current_function_is_leaf}
2232which is nonzero for leaf functions. @code{current_function_is_leaf} is
2233set prior to local register allocation and is valid for the remaining
08c148a8
NB
2234compiler passes. They can also test the C variable
2235@code{current_function_uses_only_leaf_regs} which is nonzero for leaf
2236functions which only use leaf registers.
9ac617d4
EB
2237@code{current_function_uses_only_leaf_regs} is valid after all passes
2238that modify the instructions have been run and is only useful if
2239@code{LEAF_REGISTERS} is defined.
feca2ed3
JW
2240@c changed this to fix overfull. ALSO: why the "it" at the beginning
2241@c of the next paragraph?! --mew 2feb93
2242
2243@node Stack Registers
2244@subsection Registers That Form a Stack
2245
2246There are special features to handle computers where some of the
a2c4f8e0
ZW
2247``registers'' form a stack. Stack registers are normally written by
2248pushing onto the stack, and are numbered relative to the top of the
2249stack.
feca2ed3 2250
a3a15b4d 2251Currently, GCC can only handle one group of stack-like registers, and
a2c4f8e0
ZW
2252they must be consecutively numbered. Furthermore, the existing
2253support for stack-like registers is specific to the 80387 floating
2254point coprocessor. If you have a new architecture that uses
2255stack-like registers, you will need to do substantial work on
2256@file{reg-stack.c} and write your machine description to cooperate
2257with it, as well as defining these macros.
2258
2259@defmac STACK_REGS
feca2ed3 2260Define this if the machine has any stack-like registers.
a2c4f8e0 2261@end defmac
feca2ed3 2262
a2c4f8e0 2263@defmac FIRST_STACK_REG
feca2ed3
JW
2264The number of the first stack-like register. This one is the top
2265of the stack.
a2c4f8e0 2266@end defmac
feca2ed3 2267
a2c4f8e0 2268@defmac LAST_STACK_REG
feca2ed3
JW
2269The number of the last stack-like register. This one is the bottom of
2270the stack.
a2c4f8e0 2271@end defmac
feca2ed3 2272
feca2ed3
JW
2273@node Register Classes
2274@section Register Classes
2275@cindex register class definitions
2276@cindex class definitions, register
2277
2278On many machines, the numbered registers are not all equivalent.
2279For example, certain registers may not be allowed for indexed addressing;
2280certain registers may not be allowed in some instructions. These machine
2281restrictions are described to the compiler using @dfn{register classes}.
2282
2283You define a number of register classes, giving each one a name and saying
2284which of the registers belong to it. Then you can specify register classes
2285that are allowed as operands to particular instruction patterns.
2286
2287@findex ALL_REGS
2288@findex NO_REGS
2289In general, each register will belong to several classes. In fact, one
2290class must be named @code{ALL_REGS} and contain all the registers. Another
2291class must be named @code{NO_REGS} and contain no registers. Often the
2292union of two classes will be another class; however, this is not required.
2293
2294@findex GENERAL_REGS
2295One of the classes must be named @code{GENERAL_REGS}. There is nothing
2296terribly special about the name, but the operand constraint letters
2297@samp{r} and @samp{g} specify this class. If @code{GENERAL_REGS} is
2298the same as @code{ALL_REGS}, just define it as a macro which expands
2299to @code{ALL_REGS}.
2300
2301Order the classes so that if class @var{x} is contained in class @var{y}
2302then @var{x} has a lower class number than @var{y}.
2303
2304The way classes other than @code{GENERAL_REGS} are specified in operand
2305constraints is through machine-dependent operand constraint letters.
2306You can define such letters to correspond to various classes, then use
2307them in operand constraints.
2308
2309You should define a class for the union of two classes whenever some
2310instruction allows both classes. For example, if an instruction allows
2311either a floating point (coprocessor) register or a general register for a
2312certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS}
2313which includes both of them. Otherwise you will get suboptimal code.
2314
2315You must also specify certain redundant information about the register
2316classes: for each class, which classes contain it and which ones are
2317contained in it; for each pair of classes, the largest class contained
2318in their union.
2319
2320When a value occupying several consecutive registers is expected in a
2321certain class, all the registers used must belong to that class.
2322Therefore, register classes cannot be used to enforce a requirement for
2323a register pair to start with an even-numbered register. The way to
2324specify this requirement is with @code{HARD_REGNO_MODE_OK}.
2325
2326Register classes used for input-operands of bitwise-and or shift
2327instructions have a special requirement: each such class must have, for
2328each fixed-point machine mode, a subclass whose registers can transfer that
2329mode to or from memory. For example, on some machines, the operations for
2330single-byte values (@code{QImode}) are limited to certain registers. When
2331this is so, each register class that is used in a bitwise-and or shift
2332instruction must have a subclass consisting of registers from which
2333single-byte values can be loaded or stored. This is so that
2334@code{PREFERRED_RELOAD_CLASS} can always have a possible value to return.
2335
a2c4f8e0 2336@deftp {Data type} {enum reg_class}
2eac577f
JM
2337An enumerated type that must be defined with all the register class names
2338as enumerated values. @code{NO_REGS} must be first. @code{ALL_REGS}
2339must be the last register class, followed by one more enumerated value,
feca2ed3
JW
2340@code{LIM_REG_CLASSES}, which is not a register class but rather
2341tells how many classes there are.
2342
2343Each register class has a number, which is the value of casting
2344the class name to type @code{int}. The number serves as an index
2345in many of the tables described below.
a2c4f8e0 2346@end deftp
feca2ed3 2347
a2c4f8e0 2348@defmac N_REG_CLASSES
feca2ed3
JW
2349The number of distinct register classes, defined as follows:
2350
3ab51846 2351@smallexample
feca2ed3 2352#define N_REG_CLASSES (int) LIM_REG_CLASSES
3ab51846 2353@end smallexample
a2c4f8e0 2354@end defmac
feca2ed3 2355
a2c4f8e0 2356@defmac REG_CLASS_NAMES
feca2ed3
JW
2357An initializer containing the names of the register classes as C string
2358constants. These names are used in writing some of the debugging dumps.
a2c4f8e0 2359@end defmac
feca2ed3 2360
a2c4f8e0 2361@defmac REG_CLASS_CONTENTS
feca2ed3
JW
2362An initializer containing the contents of the register classes, as integers
2363which are bit masks. The @var{n}th integer specifies the contents of class
2364@var{n}. The way the integer @var{mask} is interpreted is that
2365register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1.
2366
2367When the machine has more than 32 registers, an integer does not suffice.
2368Then the integers are replaced by sub-initializers, braced groupings containing
2369several integers. Each sub-initializer must be suitable as an initializer
2370for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}.
7c272079
MP
2371In this situation, the first integer in each sub-initializer corresponds to
2372registers 0 through 31, the second integer to registers 32 through 63, and
2373so on.
a2c4f8e0 2374@end defmac
feca2ed3 2375
a2c4f8e0 2376@defmac REGNO_REG_CLASS (@var{regno})
feca2ed3
JW
2377A C expression whose value is a register class containing hard register
2378@var{regno}. In general there is more than one such class; choose a class
2379which is @dfn{minimal}, meaning that no smaller class also contains the
2380register.
a2c4f8e0 2381@end defmac
feca2ed3 2382
a2c4f8e0 2383@defmac BASE_REG_CLASS
feca2ed3
JW
2384A macro whose definition is the name of the class to which a valid
2385base register must belong. A base register is one used in an address
2386which is the register value plus a displacement.
a2c4f8e0 2387@end defmac
feca2ed3 2388
a2c4f8e0 2389@defmac MODE_BASE_REG_CLASS (@var{mode})
3dcc68a4 2390This is a variation of the @code{BASE_REG_CLASS} macro which allows
c0478a66 2391the selection of a base register in a mode dependent manner. If
3dcc68a4
NC
2392@var{mode} is VOIDmode then it should return the same value as
2393@code{BASE_REG_CLASS}.
a2c4f8e0 2394@end defmac
3dcc68a4 2395
a2c4f8e0 2396@defmac INDEX_REG_CLASS
feca2ed3
JW
2397A macro whose definition is the name of the class to which a valid
2398index register must belong. An index register is one used in an
2399address where its value is either multiplied by a scale factor or
2400added to another register (as well as added to a displacement).
a2c4f8e0 2401@end defmac
feca2ed3 2402
a2c4f8e0 2403@defmac CONSTRAINT_LEN (@var{char}, @var{str})
97488870
R
2404For the constraint at the start of @var{str}, which starts with the letter
2405@var{c}, return the length. This allows you to have register class /
2406constant / extra constraints that are longer than a single letter;
2407you don't need to define this macro if you can do with single-letter
2408constraints only. The definition of this macro should use
2409DEFAULT_CONSTRAINT_LEN for all the characters that you don't want
2410to handle specially.
2411There are some sanity checks in genoutput.c that check the constraint lengths
2412for the md file, so you can also use this macro to help you while you are
2413transitioning from a byzantine single-letter-constraint scheme: when you
2414return a negative length for a constraint you want to re-use, genoutput
2415will complain about every instance where it is used in the md file.
a2c4f8e0 2416@end defmac
97488870 2417
a2c4f8e0 2418@defmac REG_CLASS_FROM_LETTER (@var{char})
feca2ed3
JW
2419A C expression which defines the machine-dependent operand constraint
2420letters for register classes. If @var{char} is such a letter, the
2421value should be the register class corresponding to it. Otherwise,
2422the value should be @code{NO_REGS}. The register letter @samp{r},
2423corresponding to class @code{GENERAL_REGS}, will not be passed
2424to this macro; you do not need to handle it.
a2c4f8e0 2425@end defmac
feca2ed3 2426
a2c4f8e0 2427@defmac REG_CLASS_FROM_CONSTRAINT (@var{char}, @var{str})
97488870
R
2428Like @code{REG_CLASS_FROM_LETTER}, but you also get the constraint string
2429passed in @var{str}, so that you can use suffixes to distinguish between
2430different variants.
a2c4f8e0 2431@end defmac
97488870 2432
a2c4f8e0 2433@defmac REGNO_OK_FOR_BASE_P (@var{num})
feca2ed3
JW
2434A C expression which is nonzero if register number @var{num} is
2435suitable for use as a base register in operand addresses. It may be
2436either a suitable hard register or a pseudo register that has been
2437allocated such a hard register.
a2c4f8e0 2438@end defmac
feca2ed3 2439
a2c4f8e0 2440@defmac REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
861bb6c1
JL
2441A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
2442that expression may examine the mode of the memory reference in
2443@var{mode}. You should define this macro if the mode of the memory
2444reference affects whether a register may be used as a base register. If
2445you define this macro, the compiler will use it instead of
2446@code{REGNO_OK_FOR_BASE_P}.
a2c4f8e0 2447@end defmac
861bb6c1 2448
a2c4f8e0 2449@defmac REGNO_OK_FOR_INDEX_P (@var{num})
feca2ed3
JW
2450A C expression which is nonzero if register number @var{num} is
2451suitable for use as an index register in operand addresses. It may be
2452either a suitable hard register or a pseudo register that has been
2453allocated such a hard register.
2454
2455The difference between an index register and a base register is that
2456the index register may be scaled. If an address involves the sum of
2457two registers, neither one of them scaled, then either one may be
2458labeled the ``base'' and the other the ``index''; but whichever
2459labeling is used must fit the machine's constraints of which registers
2460may serve in each capacity. The compiler will try both labelings,
2461looking for one that is valid, and will reload one or both registers
2462only if neither labeling works.
a2c4f8e0 2463@end defmac
feca2ed3 2464
a2c4f8e0 2465@defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class})
feca2ed3
JW
2466A C expression that places additional restrictions on the register class
2467to use when it is necessary to copy value @var{x} into a register in class
2468@var{class}. The value is a register class; perhaps @var{class}, or perhaps
2469another, smaller class. On many machines, the following definition is
2470safe:
2471
3ab51846 2472@smallexample
feca2ed3 2473#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
3ab51846 2474@end smallexample
feca2ed3
JW
2475
2476Sometimes returning a more restrictive class makes better code. For
2477example, on the 68000, when @var{x} is an integer constant that is in range
2478for a @samp{moveq} instruction, the value of this macro is always
2479@code{DATA_REGS} as long as @var{class} includes the data registers.
2480Requiring a data register guarantees that a @samp{moveq} will be used.
2481
222a2f1a
GK
2482One case where @code{PREFERRED_RELOAD_CLASS} must not return
2483@var{class} is if @var{x} is a legitimate constant which cannot be
2484loaded into some register class. By returning @code{NO_REGS} you can
2485force @var{x} into a memory location. For example, rs6000 can load
2486immediate values into general-purpose registers, but does not have an
2487instruction for loading an immediate value into a floating-point
2488register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
2489@var{x} is a floating-point constant. If the constant can't be loaded
2490into any kind of register, code generation will be better if
2491@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
2492of using @code{PREFERRED_RELOAD_CLASS}.
a2c4f8e0 2493@end defmac
feca2ed3 2494
a2c4f8e0 2495@defmac PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class})
feca2ed3
JW
2496Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of
2497input reloads. If you don't define this macro, the default is to use
2498@var{class}, unchanged.
a2c4f8e0 2499@end defmac
feca2ed3 2500
a2c4f8e0 2501@defmac LIMIT_RELOAD_CLASS (@var{mode}, @var{class})
feca2ed3
JW
2502A C expression that places additional restrictions on the register class
2503to use when it is necessary to be able to hold a value of mode
2504@var{mode} in a reload register for which class @var{class} would
2505ordinarily be used.
2506
2507Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when
2508there are certain modes that simply can't go in certain reload classes.
2509
2510The value is a register class; perhaps @var{class}, or perhaps another,
2511smaller class.
2512
2513Don't define this macro unless the target machine has limitations which
2514require the macro to do something nontrivial.
a2c4f8e0 2515@end defmac
feca2ed3 2516
a2c4f8e0
ZW
2517@defmac SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2518@defmacx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2519@defmacx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
feca2ed3
JW
2520Many machines have some registers that cannot be copied directly to or
2521from memory or even from other types of registers. An example is the
2522@samp{MQ} register, which on most machines, can only be copied to or
2523from general registers, but not memory. Some machines allow copying all
2524registers to and from memory, but require a scratch register for stores
2525to some memory locations (e.g., those with symbolic address on the RT,
981f6289 2526and those with certain symbolic address on the SPARC when compiling
161d7b59 2527PIC)@. In some cases, both an intermediate and a scratch register are
feca2ed3
JW
2528required.
2529
2530You should define these macros to indicate to the reload phase that it may
2531need to allocate at least one register for a reload in addition to the
2532register to contain the data. Specifically, if copying @var{x} to a
2533register @var{class} in @var{mode} requires an intermediate register,
2534you should define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the
2535largest register class all of whose registers can be used as
2536intermediate registers or scratch registers.
2537
2538If copying a register @var{class} in @var{mode} to @var{x} requires an
2539intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS}
2540should be defined to return the largest register class required. If the
2541requirements for input and output reloads are the same, the macro
2542@code{SECONDARY_RELOAD_CLASS} should be used instead of defining both
2543macros identically.
2544
2545The values returned by these macros are often @code{GENERAL_REGS}.
2546Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x}
2547can be directly copied to or from a register of @var{class} in
2548@var{mode} without requiring a scratch register. Do not define this
2549macro if it would always return @code{NO_REGS}.
2550
2551If a scratch register is required (either with or without an
2552intermediate register), you should define patterns for
2553@samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required
2554(@pxref{Standard Names}. These patterns, which will normally be
2555implemented with a @code{define_expand}, should be similar to the
2556@samp{mov@var{m}} patterns, except that operand 2 is the scratch
2557register.
2558
2559Define constraints for the reload register and scratch register that
2560contain a single register class. If the original reload register (whose
2561class is @var{class}) can meet the constraint given in the pattern, the
2562value returned by these macros is used for the class of the scratch
2563register. Otherwise, two additional reload registers are required.
2564Their classes are obtained from the constraints in the insn pattern.
2565
2566@var{x} might be a pseudo-register or a @code{subreg} of a
2567pseudo-register, which could either be in a hard register or in memory.
630d3d5a 2568Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is
feca2ed3
JW
2569in memory and the hard register number if it is in a register.
2570
2571These macros should not be used in the case where a particular class of
2572registers can only be copied to memory and not to another class of
2573registers. In that case, secondary reload registers are not needed and
2574would not be helpful. Instead, a stack location must be used to perform
a8154559 2575the copy and the @code{mov@var{m}} pattern should use memory as an
feca2ed3
JW
2576intermediate storage. This case often occurs between floating-point and
2577general registers.
a2c4f8e0 2578@end defmac
feca2ed3 2579
a2c4f8e0 2580@defmac SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m})
feca2ed3
JW
2581Certain machines have the property that some registers cannot be copied
2582to some other registers without using memory. Define this macro on
df2a54e9 2583those machines to be a C expression that is nonzero if objects of mode
feca2ed3
JW
2584@var{m} in registers of @var{class1} can only be copied to registers of
2585class @var{class2} by storing a register of @var{class1} into memory
2586and loading that memory location into a register of @var{class2}.
2587
2588Do not define this macro if its value would always be zero.
a2c4f8e0 2589@end defmac
feca2ed3 2590
a2c4f8e0 2591@defmac SECONDARY_MEMORY_NEEDED_RTX (@var{mode})
feca2ed3
JW
2592Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler
2593allocates a stack slot for a memory location needed for register copies.
2594If this macro is defined, the compiler instead uses the memory location
2595defined by this macro.
2596
2597Do not define this macro if you do not define
2598@code{SECONDARY_MEMORY_NEEDED}.
a2c4f8e0 2599@end defmac
feca2ed3 2600
a2c4f8e0 2601@defmac SECONDARY_MEMORY_NEEDED_MODE (@var{mode})
feca2ed3
JW
2602When the compiler needs a secondary memory location to copy between two
2603registers of mode @var{mode}, it normally allocates sufficient memory to
2604hold a quantity of @code{BITS_PER_WORD} bits and performs the store and
2605load operations in a mode that many bits wide and whose class is the
2606same as that of @var{mode}.
2607
2608This is right thing to do on most machines because it ensures that all
2609bits of the register are copied and prevents accesses to the registers
2610in a narrower mode, which some machines prohibit for floating-point
2611registers.
2612
2613However, this default behavior is not correct on some machines, such as
2614the DEC Alpha, that store short integers in floating-point registers
2615differently than in integer registers. On those machines, the default
2616widening will not work correctly and you must define this macro to
2617suppress that widening in some cases. See the file @file{alpha.h} for
2618details.
2619
2620Do not define this macro if you do not define
2621@code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that
2622is @code{BITS_PER_WORD} bits wide is correct for your machine.
a2c4f8e0 2623@end defmac
feca2ed3 2624
a2c4f8e0 2625@defmac SMALL_REGISTER_CLASSES
faa9eb19
BS
2626On some machines, it is risky to let hard registers live across arbitrary
2627insns. Typically, these machines have instructions that require values
2628to be in specific registers (like an accumulator), and reload will fail
2629if the required hard register is used for another purpose across such an
2630insn.
feca2ed3 2631
df2a54e9
JM
2632Define @code{SMALL_REGISTER_CLASSES} to be an expression with a nonzero
2633value on these machines. When this macro has a nonzero value, the
faa9eb19 2634compiler will try to minimize the lifetime of hard registers.
feca2ed3 2635
df2a54e9 2636It is always safe to define this macro with a nonzero value, but if you
861bb6c1
JL
2637unnecessarily define it, you will reduce the amount of optimizations
2638that can be performed in some cases. If you do not define this macro
df2a54e9 2639with a nonzero value when it is required, the compiler will run out of
861bb6c1
JL
2640spill registers and print a fatal error message. For most machines, you
2641should not define this macro at all.
a2c4f8e0 2642@end defmac
feca2ed3 2643
a2c4f8e0 2644@defmac CLASS_LIKELY_SPILLED_P (@var{class})
feca2ed3
JW
2645A C expression whose value is nonzero if pseudos that have been assigned
2646to registers of class @var{class} would likely be spilled because
2647registers of @var{class} are needed for spill registers.
2648
2649The default value of this macro returns 1 if @var{class} has exactly one
2650register and zero otherwise. On most machines, this default should be
40687a9e 2651used. Only define this macro to some other expression if pseudos
feca2ed3
JW
2652allocated by @file{local-alloc.c} end up in memory because their hard
2653registers were needed for spill registers. If this macro returns nonzero
2654for those classes, those pseudos will only be allocated by
2655@file{global.c}, which knows how to reallocate the pseudo to another
2656register. If there would not be another register available for
2657reallocation, you should not change the definition of this macro since
2658the only effect of such a definition would be to slow down register
2659allocation.
a2c4f8e0 2660@end defmac
feca2ed3 2661
a2c4f8e0 2662@defmac CLASS_MAX_NREGS (@var{class}, @var{mode})
feca2ed3
JW
2663A C expression for the maximum number of consecutive registers
2664of class @var{class} needed to hold a value of mode @var{mode}.
2665
2666This is closely related to the macro @code{HARD_REGNO_NREGS}. In fact,
2667the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})}
2668should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno},
2669@var{mode})} for all @var{regno} values in the class @var{class}.
2670
2671This macro helps control the handling of multiple-word values
2672in the reload pass.
a2c4f8e0 2673@end defmac
feca2ed3 2674
a2c4f8e0 2675@defmac CANNOT_CHANGE_MODE_CLASS (@var{from}, @var{to}, @var{class})
b0c42aed
JH
2676If defined, a C expression that returns nonzero for a @var{class} for which
2677a change from mode @var{from} to mode @var{to} is invalid.
feca2ed3
JW
2678
2679For the example, loading 32-bit integer or floating-point objects into
57694e40 2680floating-point registers on the Alpha extends them to 64 bits.
feca2ed3 2681Therefore loading a 64-bit object and then storing it as a 32-bit object
57694e40 2682does not store the low-order 32 bits, as would be the case for a normal
cff9f8d5
AH
2683register. Therefore, @file{alpha.h} defines @code{CANNOT_CHANGE_MODE_CLASS}
2684as below:
02188693 2685
3ab51846 2686@smallexample
b0c42aed
JH
2687#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
2688 (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
2689 ? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0)
3ab51846 2690@end smallexample
a2c4f8e0 2691@end defmac
feca2ed3
JW
2692
2693Three other special macros describe which operands fit which constraint
2694letters.
2695
a2c4f8e0 2696@defmac CONST_OK_FOR_LETTER_P (@var{value}, @var{c})
e119b68c
MM
2697A C expression that defines the machine-dependent operand constraint
2698letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify
2699particular ranges of integer values. If @var{c} is one of those
2700letters, the expression should check that @var{value}, an integer, is in
2701the appropriate range and return 1 if so, 0 otherwise. If @var{c} is
2702not one of those letters, the value should be 0 regardless of
2703@var{value}.
a2c4f8e0 2704@end defmac
feca2ed3 2705
a2c4f8e0 2706@defmac CONST_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str})
97488870
R
2707Like @code{CONST_OK_FOR_LETTER_P}, but you also get the constraint
2708string passed in @var{str}, so that you can use suffixes to distinguish
2709between different variants.
a2c4f8e0 2710@end defmac
97488870 2711
a2c4f8e0 2712@defmac CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c})
feca2ed3 2713A C expression that defines the machine-dependent operand constraint
e119b68c
MM
2714letters that specify particular ranges of @code{const_double} values
2715(@samp{G} or @samp{H}).
feca2ed3
JW
2716
2717If @var{c} is one of those letters, the expression should check that
2718@var{value}, an RTX of code @code{const_double}, is in the appropriate
2719range and return 1 if so, 0 otherwise. If @var{c} is not one of those
2720letters, the value should be 0 regardless of @var{value}.
2721
2722@code{const_double} is used for all floating-point constants and for
2723@code{DImode} fixed-point constants. A given letter can accept either
2724or both kinds of values. It can use @code{GET_MODE} to distinguish
2725between these kinds.
a2c4f8e0 2726@end defmac
feca2ed3 2727
a2c4f8e0 2728@defmac CONST_DOUBLE_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str})
97488870
R
2729Like @code{CONST_DOUBLE_OK_FOR_LETTER_P}, but you also get the constraint
2730string passed in @var{str}, so that you can use suffixes to distinguish
2731between different variants.
a2c4f8e0 2732@end defmac
97488870 2733
a2c4f8e0 2734@defmac EXTRA_CONSTRAINT (@var{value}, @var{c})
feca2ed3 2735A C expression that defines the optional machine-dependent constraint
c2cba7a9
RH
2736letters that can be used to segregate specific types of operands, usually
2737memory references, for the target machine. Any letter that is not
97488870
R
2738elsewhere defined and not matched by @code{REG_CLASS_FROM_LETTER} /
2739@code{REG_CLASS_FROM_CONSTRAINT}
c2cba7a9
RH
2740may be used. Normally this macro will not be defined.
2741
2742If it is required for a particular target machine, it should return 1
2743if @var{value} corresponds to the operand type represented by the
2744constraint letter @var{c}. If @var{c} is not defined as an extra
e119b68c 2745constraint, the value returned should be 0 regardless of @var{value}.
feca2ed3 2746
c2cba7a9
RH
2747For example, on the ROMP, load instructions cannot have their output
2748in r0 if the memory reference contains a symbolic address. Constraint
2749letter @samp{Q} is defined as representing a memory address that does
feca2ed3
JW
2750@emph{not} contain a symbolic address. An alternative is specified with
2751a @samp{Q} constraint on the input and @samp{r} on the output. The next
2752alternative specifies @samp{m} on the input and a register class that
2753does not include r0 on the output.
a2c4f8e0 2754@end defmac
ccfc6cc8 2755
a2c4f8e0 2756@defmac EXTRA_CONSTRAINT_STR (@var{value}, @var{c}, @var{str})
97488870
R
2757Like @code{EXTRA_CONSTRAINT}, but you also get the constraint string passed
2758in @var{str}, so that you can use suffixes to distinguish between different
2759variants.
a2c4f8e0 2760@end defmac
97488870 2761
a2c4f8e0 2762@defmac EXTRA_MEMORY_CONSTRAINT (@var{c}, @var{str})
ccfc6cc8
UW
2763A C expression that defines the optional machine-dependent constraint
2764letters, amongst those accepted by @code{EXTRA_CONSTRAINT}, that should
2765be treated like memory constraints by the reload pass.
2766
73774972 2767It should return 1 if the operand type represented by the constraint
97488870
R
2768at the start of @var{str}, the first letter of which is the letter @var{c},
2769 comprises a subset of all memory references including
73774972
EC
2770all those whose address is simply a base register. This allows the reload
2771pass to reload an operand, if it does not directly correspond to the operand
ccfc6cc8
UW
2772type of @var{c}, by copying its address into a base register.
2773
2774For example, on the S/390, some instructions do not accept arbitrary
2775memory references, but only those that do not make use of an index
2776register. The constraint letter @samp{Q} is defined via
2777@code{EXTRA_CONSTRAINT} as representing a memory address of this type.
2778If the letter @samp{Q} is marked as @code{EXTRA_MEMORY_CONSTRAINT},
2779a @samp{Q} constraint can handle any memory operand, because the
2780reload pass knows it can be reloaded by copying the memory address
2781into a base register if required. This is analogous to the way
2782a @samp{o} constraint can handle any memory operand.
a2c4f8e0 2783@end defmac
ccfc6cc8 2784
a2c4f8e0 2785@defmac EXTRA_ADDRESS_CONSTRAINT (@var{c}, @var{str})
ccfc6cc8 2786A C expression that defines the optional machine-dependent constraint
97488870
R
2787letters, amongst those accepted by @code{EXTRA_CONSTRAINT} /
2788@code{EXTRA_CONSTRAINT_STR}, that should
ccfc6cc8
UW
2789be treated like address constraints by the reload pass.
2790
73774972 2791It should return 1 if the operand type represented by the constraint
3a6e2189 2792at the start of @var{str}, which starts with the letter @var{c}, comprises
97488870 2793a subset of all memory addresses including
73774972
EC
2794all those that consist of just a base register. This allows the reload
2795pass to reload an operand, if it does not directly correspond to the operand
97488870 2796type of @var{str}, by copying it into a base register.
ccfc6cc8
UW
2797
2798Any constraint marked as @code{EXTRA_ADDRESS_CONSTRAINT} can only
73774972 2799be used with the @code{address_operand} predicate. It is treated
ccfc6cc8 2800analogously to the @samp{p} constraint.
a2c4f8e0 2801@end defmac
feca2ed3
JW
2802
2803@node Stack and Calling
2804@section Stack Layout and Calling Conventions
2805@cindex calling conventions
2806
2807@c prevent bad page break with this line
2808This describes the stack layout and calling conventions.
2809
2810@menu
2811* Frame Layout::
7c16328b 2812* Exception Handling::
861bb6c1 2813* Stack Checking::
feca2ed3
JW
2814* Frame Registers::
2815* Elimination::
2816* Stack Arguments::
2817* Register Arguments::
2818* Scalar Return::
2819* Aggregate Return::
2820* Caller Saves::
2821* Function Entry::
2822* Profiling::
91d231cb 2823* Tail Calls::
feca2ed3
JW
2824@end menu
2825
2826@node Frame Layout
2827@subsection Basic Stack Layout
2828@cindex stack frame layout
2829@cindex frame layout
2830
2831@c prevent bad page break with this line
2832Here is the basic stack layout.
2833
a2c4f8e0 2834@defmac STACK_GROWS_DOWNWARD
feca2ed3
JW
2835Define this macro if pushing a word onto the stack moves the stack
2836pointer to a smaller address.
2837
2838When we say, ``define this macro if @dots{},'' it means that the
2839compiler checks this macro only with @code{#ifdef} so the precise
2840definition used does not matter.
a2c4f8e0 2841@end defmac
feca2ed3 2842
a2c4f8e0 2843@defmac STACK_PUSH_CODE
918a6124
GK
2844This macro defines the operation used when something is pushed
2845on the stack. In RTL, a push operation will be
04a5176a 2846@code{(set (mem (STACK_PUSH_CODE (reg sp))) @dots{})}
918a6124
GK
2847
2848The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC},
2849and @code{POST_INC}. Which of these is correct depends on
2850the stack direction and on whether the stack pointer points
2851to the last item on the stack or whether it points to the
2852space for the next item on the stack.
2853
2854The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is
2855defined, which is almost always right, and @code{PRE_INC} otherwise,
2856which is often wrong.
a2c4f8e0 2857@end defmac
918a6124 2858
a2c4f8e0 2859@defmac FRAME_GROWS_DOWNWARD
feca2ed3
JW
2860Define this macro if the addresses of local variable slots are at negative
2861offsets from the frame pointer.
a2c4f8e0 2862@end defmac
feca2ed3 2863
a2c4f8e0 2864@defmac ARGS_GROW_DOWNWARD
feca2ed3
JW
2865Define this macro if successive arguments to a function occupy decreasing
2866addresses on the stack.
a2c4f8e0 2867@end defmac
feca2ed3 2868
a2c4f8e0 2869@defmac STARTING_FRAME_OFFSET
feca2ed3
JW
2870Offset from the frame pointer to the first local variable slot to be allocated.
2871
2872If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by
2873subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}.
2874Otherwise, it is found by adding the length of the first slot to the
2875value @code{STARTING_FRAME_OFFSET}.
2876@c i'm not sure if the above is still correct.. had to change it to get
2877@c rid of an overfull. --mew 2feb93
a2c4f8e0 2878@end defmac
feca2ed3 2879
a2c4f8e0 2880@defmac STACK_ALIGNMENT_NEEDED
95f3f59e 2881Define to zero to disable final alignment of the stack during reload.
0b4be7de 2882The nonzero default for this macro is suitable for most ports.
95f3f59e 2883
0b4be7de 2884On ports where @code{STARTING_FRAME_OFFSET} is nonzero or where there
95f3f59e
JDA
2885is a register save block following the local block that doesn't require
2886alignment to @code{STACK_BOUNDARY}, it may be beneficial to disable
2887stack alignment and do it in the backend.
a2c4f8e0 2888@end defmac
95f3f59e 2889
a2c4f8e0 2890@defmac STACK_POINTER_OFFSET
feca2ed3
JW
2891Offset from the stack pointer register to the first location at which
2892outgoing arguments are placed. If not specified, the default value of
2893zero is used. This is the proper value for most machines.
2894
2895If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2896the first location at which outgoing arguments are placed.
a2c4f8e0 2897@end defmac
feca2ed3 2898
a2c4f8e0 2899@defmac FIRST_PARM_OFFSET (@var{fundecl})
feca2ed3
JW
2900Offset from the argument pointer register to the first argument's
2901address. On some machines it may depend on the data type of the
2902function.
2903
2904If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2905the first argument's address.
a2c4f8e0 2906@end defmac
feca2ed3 2907
a2c4f8e0 2908@defmac STACK_DYNAMIC_OFFSET (@var{fundecl})
feca2ed3
JW
2909Offset from the stack pointer register to an item dynamically allocated
2910on the stack, e.g., by @code{alloca}.
2911
2912The default value for this macro is @code{STACK_POINTER_OFFSET} plus the
2913length of the outgoing arguments. The default is correct for most
2914machines. See @file{function.c} for details.
a2c4f8e0 2915@end defmac
feca2ed3 2916
a2c4f8e0 2917@defmac DYNAMIC_CHAIN_ADDRESS (@var{frameaddr})
feca2ed3
JW
2918A C expression whose value is RTL representing the address in a stack
2919frame where the pointer to the caller's frame is stored. Assume that
2920@var{frameaddr} is an RTL expression for the address of the stack frame
2921itself.
2922
2923If you don't define this macro, the default is to return the value
2924of @var{frameaddr}---that is, the stack frame address is also the
2925address of the stack word that points to the previous frame.
a2c4f8e0 2926@end defmac
feca2ed3 2927
a2c4f8e0 2928@defmac SETUP_FRAME_ADDRESSES
feca2ed3
JW
2929If defined, a C expression that produces the machine-specific code to
2930setup the stack so that arbitrary frames can be accessed. For example,
981f6289 2931on the SPARC, we must flush all of the register windows to the stack
0bc02db4
MS
2932before we can access arbitrary stack frames. You will seldom need to
2933define this macro.
a2c4f8e0 2934@end defmac
0bc02db4 2935
d6da68b9
KH
2936@deftypefn {Target Hook} bool TARGET_BUILTIN_SETJMP_FRAME_VALUE ()
2937This target hook should return an rtx that is used to store
0bc02db4
MS
2938the address of the current frame into the built in @code{setjmp} buffer.
2939The default value, @code{virtual_stack_vars_rtx}, is correct for most
d6da68b9 2940machines. One reason you may need to define this target hook is if
0bc02db4 2941@code{hard_frame_pointer_rtx} is the appropriate value on your machine.
d6da68b9 2942@end deftypefn
feca2ed3 2943
a2c4f8e0 2944@defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
feca2ed3 2945A C expression whose value is RTL representing the value of the return
861bb6c1
JL
2946address for the frame @var{count} steps up from the current frame, after
2947the prologue. @var{frameaddr} is the frame pointer of the @var{count}
2948frame, or the frame pointer of the @var{count} @minus{} 1 frame if
feca2ed3
JW
2949@code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
2950
e9a25f70
JL
2951The value of the expression must always be the correct address when
2952@var{count} is zero, but may be @code{NULL_RTX} if there is not way to
2953determine the return address of other frames.
a2c4f8e0 2954@end defmac
e9a25f70 2955
a2c4f8e0 2956@defmac RETURN_ADDR_IN_PREVIOUS_FRAME
feca2ed3
JW
2957Define this if the return address of a particular stack frame is accessed
2958from the frame pointer of the previous stack frame.
a2c4f8e0 2959@end defmac
861bb6c1 2960
a2c4f8e0 2961@defmac INCOMING_RETURN_ADDR_RTX
861bb6c1
JL
2962A C expression whose value is RTL representing the location of the
2963incoming return address at the beginning of any function, before the
2964prologue. This RTL is either a @code{REG}, indicating that the return
2965value is saved in @samp{REG}, or a @code{MEM} representing a location in
2966the stack.
2967
2968You only need to define this macro if you want to support call frame
2969debugging information like that provided by DWARF 2.
2970
2c849145 2971If this RTL is a @code{REG}, you should also define
aee96fe9 2972@code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}.
a2c4f8e0 2973@end defmac
2c849145 2974
ed80cd68 2975@defmac DWARF_ALT_FRAME_RETURN_COLUMN
73774972 2976A C expression whose value is an integer giving a DWARF 2 column
ed80cd68 2977number that may be used as an alternate return column. This should
73774972 2978be defined only if @code{DWARF_FRAME_RETURN_COLUMN} is set to a
ed80cd68
RH
2979general register, but an alternate column needs to be used for
2980signal frames.
2981@end defmac
2982
a2c4f8e0 2983@defmac INCOMING_FRAME_SP_OFFSET
861bb6c1
JL
2984A C expression whose value is an integer giving the offset, in bytes,
2985from the value of the stack pointer register to the top of the stack
2986frame at the beginning of any function, before the prologue. The top of
2987the frame is defined to be the value of the stack pointer in the
2988previous frame, just before the call instruction.
2989
71038426
RH
2990You only need to define this macro if you want to support call frame
2991debugging information like that provided by DWARF 2.
a2c4f8e0 2992@end defmac
71038426 2993
a2c4f8e0 2994@defmac ARG_POINTER_CFA_OFFSET (@var{fundecl})
71038426
RH
2995A C expression whose value is an integer giving the offset, in bytes,
2996from the argument pointer to the canonical frame address (cfa). The
02f52e19 2997final value should coincide with that calculated by
71038426
RH
2998@code{INCOMING_FRAME_SP_OFFSET}. Which is unfortunately not usable
2999during virtual register instantiation.
3000
2c849145
JM
3001The default value for this macro is @code{FIRST_PARM_OFFSET (fundecl)},
3002which is correct for most machines; in general, the arguments are found
208e52d9
JM
3003immediately before the stack frame. Note that this is not the case on
3004some targets that save registers into the caller's frame, such as SPARC
3005and rs6000, and so such targets need to define this macro.
2c849145 3006
208e52d9 3007You only need to define this macro if the default is incorrect, and you
2c849145
JM
3008want to support call frame debugging information like that provided by
3009DWARF 2.
a2c4f8e0 3010@end defmac
512b62fb 3011
7c16328b
RH
3012@node Exception Handling
3013@subsection Exception Handling Support
3014@cindex exception handling
3015
a2c4f8e0 3016@defmac EH_RETURN_DATA_REGNO (@var{N})
52a11cbf
RH
3017A C expression whose value is the @var{N}th register number used for
3018data by exception handlers, or @code{INVALID_REGNUM} if fewer than
3019@var{N} registers are usable.
3020
3021The exception handling library routines communicate with the exception
3022handlers via a set of agreed upon registers. Ideally these registers
3023should be call-clobbered; it is possible to use call-saved registers,
3024but may negatively impact code size. The target must support at least
30252 data registers, but should define 4 if there are enough free registers.
3026
3027You must define this macro if you want to support call frame exception
3028handling like that provided by DWARF 2.
a2c4f8e0 3029@end defmac
52a11cbf 3030
a2c4f8e0 3031@defmac EH_RETURN_STACKADJ_RTX
52a11cbf
RH
3032A C expression whose value is RTL representing a location in which
3033to store a stack adjustment to be applied before function return.
3034This is used to unwind the stack to an exception handler's call frame.
3035It will be assigned zero on code paths that return normally.
3036
02f52e19 3037Typically this is a call-clobbered hard register that is otherwise
52a11cbf
RH
3038untouched by the epilogue, but could also be a stack slot.
3039
34dc173c 3040Do not define this macro if the stack pointer is saved and restored
73774972
EC
3041by the regular prolog and epilog code in the call frame itself; in
3042this case, the exception handling library routines will update the
3043stack location to be restored in place. Otherwise, you must define
3044this macro if you want to support call frame exception handling like
34dc173c 3045that provided by DWARF 2.
a2c4f8e0 3046@end defmac
52a11cbf 3047
a2c4f8e0 3048@defmac EH_RETURN_HANDLER_RTX
52a11cbf 3049A C expression whose value is RTL representing a location in which
02f52e19 3050to store the address of an exception handler to which we should
52a11cbf
RH
3051return. It will not be assigned on code paths that return normally.
3052
3053Typically this is the location in the call frame at which the normal
02f52e19
AJ
3054return address is stored. For targets that return by popping an
3055address off the stack, this might be a memory address just below
52a11cbf 3056the @emph{target} call frame rather than inside the current call
73774972
EC
3057frame. If defined, @code{EH_RETURN_STACKADJ_RTX} will have already
3058been assigned, so it may be used to calculate the location of the
34dc173c 3059target call frame.
52a11cbf
RH
3060
3061Some targets have more complex requirements than storing to an
3062address calculable during initial code generation. In that case
3063the @code{eh_return} instruction pattern should be used instead.
3064
3065If you want to support call frame exception handling, you must
3066define either this macro or the @code{eh_return} instruction pattern.
a2c4f8e0 3067@end defmac
52a11cbf 3068
1e60c057
R
3069@defmac RETURN_ADDR_OFFSET
3070If defined, an integer-valued C expression for which rtl will be generated
3071to add it to the exception handler address before it is searched in the
3072exception handling tables, and to subtract it again from the address before
3073using it to return to the exception handler.
3074@end defmac
3075
a2c4f8e0 3076@defmac ASM_PREFERRED_EH_DATA_FORMAT (@var{code}, @var{global})
2a1ee410
RH
3077This macro chooses the encoding of pointers embedded in the exception
3078handling sections. If at all possible, this should be defined such
3079that the exception handling section will not require dynamic relocations,
3080and so may be read-only.
3081
aee96fe9
JM
3082@var{code} is 0 for data, 1 for code labels, 2 for function pointers.
3083@var{global} is true if the symbol may be affected by dynamic relocations.
2a1ee410
RH
3084The macro should return a combination of the @code{DW_EH_PE_*} defines
3085as found in @file{dwarf2.h}.
3086
ebb48a4d 3087If this macro is not defined, pointers will not be encoded but
2a1ee410 3088represented directly.
a2c4f8e0 3089@end defmac
2a1ee410 3090
a2c4f8e0 3091@defmac ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done})
2a1ee410
RH
3092This macro allows the target to emit whatever special magic is required
3093to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}.
3094Generic code takes care of pc-relative and indirect encodings; this must
3095be defined if the target uses text-relative or data-relative encodings.
3096
aee96fe9
JM
3097This is a C statement that branches to @var{done} if the format was
3098handled. @var{encoding} is the format chosen, @var{size} is the number
3099of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF}
2a1ee410 3100to be emitted.
a2c4f8e0 3101@end defmac
2a1ee410 3102
a2c4f8e0 3103@defmac MD_FALLBACK_FRAME_STATE_FOR (@var{context}, @var{fs}, @var{success})
7c16328b
RH
3104This macro allows the target to add cpu and operating system specific
3105code to the call-frame unwinder for use when there is no unwind data
3106available. The most common reason to implement this macro is to unwind
3107through signal frames.
3108
3109This macro is called from @code{uw_frame_state_for} in @file{unwind-dw2.c}
3110and @file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context};
3111@var{fs} is an @code{_Unwind_FrameState}. Examine @code{context->ra}
3112for the address of the code being executed and @code{context->cfa} for
3113the stack pointer value. If the frame can be decoded, the register save
3114addresses should be updated in @var{fs} and the macro should branch to
f282ffb3 3115@var{success}. If the frame cannot be decoded, the macro should do
7c16328b 3116nothing.
8207b189
FS
3117
3118For proper signal handling in Java this macro is accompanied by
3119@code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers.
a2c4f8e0 3120@end defmac
861bb6c1 3121
3950dcdf
JJ
3122@defmac MD_HANDLE_UNWABI (@var{context}, @var{fs})
3123This macro allows the target to add operating system specific code to the
3124call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive,
3125usually used for signal or interrupt frames.
3126
3127This macro is called from @code{uw_update_context} in @file{unwind-ia64.c}.
3128@var{context} is an @code{_Unwind_Context};
3129@var{fs} is an @code{_Unwind_FrameState}. Examine @code{fs->unwabi}
3130for the abi and context in the @code{.unwabi} directive. If the
3131@code{.unwabi} directive can be handled, the register save addresses should
3132be updated in @var{fs}.
3133@end defmac
3134
4746cf84
MA
3135@defmac TARGET_USES_WEAK_UNWIND_INFO
3136A C expression that evaluates to true if the target requires unwind
3137info to be given comdat linkage. Define it to be @code{1} if comdat
3138linkage is necessary. The default is @code{0}.
3139@end defmac
3140
861bb6c1
JL
3141@node Stack Checking
3142@subsection Specifying How Stack Checking is Done
3143
a3a15b4d 3144GCC will check that stack references are within the boundaries of
630d3d5a 3145the stack, if the @option{-fstack-check} is specified, in one of three ways:
861bb6c1
JL
3146
3147@enumerate
3148@item
a3a15b4d 3149If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GCC
861bb6c1
JL
3150will assume that you have arranged for stack checking to be done at
3151appropriate places in the configuration files, e.g., in
08c148a8
NB
3152@code{TARGET_ASM_FUNCTION_PROLOGUE}. GCC will do not other special
3153processing.
861bb6c1
JL
3154
3155@item
3156If @code{STACK_CHECK_BUILTIN} is zero and you defined a named pattern
a3a15b4d 3157called @code{check_stack} in your @file{md} file, GCC will call that
861bb6c1
JL
3158pattern with one argument which is the address to compare the stack
3159value against. You must arrange for this pattern to report an error if
3160the stack pointer is out of range.
3161
3162@item
a3a15b4d 3163If neither of the above are true, GCC will generate code to periodically
861bb6c1
JL
3164``probe'' the stack pointer using the values of the macros defined below.
3165@end enumerate
3166
a3a15b4d 3167Normally, you will use the default values of these macros, so GCC
861bb6c1
JL
3168will use the third approach.
3169
a2c4f8e0 3170@defmac STACK_CHECK_BUILTIN
861bb6c1 3171A nonzero value if stack checking is done by the configuration files in a
02f52e19
AJ
3172machine-dependent manner. You should define this macro if stack checking
3173is require by the ABI of your machine or if you would like to have to stack
a3a15b4d 3174checking in some more efficient way than GCC's portable approach.
861bb6c1 3175The default value of this macro is zero.
a2c4f8e0 3176@end defmac
861bb6c1 3177
a2c4f8e0 3178@defmac STACK_CHECK_PROBE_INTERVAL
a3a15b4d 3179An integer representing the interval at which GCC must generate stack
861bb6c1
JL
3180probe instructions. You will normally define this macro to be no larger
3181than the size of the ``guard pages'' at the end of a stack area. The
3182default value of 4096 is suitable for most systems.
a2c4f8e0 3183@end defmac
861bb6c1 3184
a2c4f8e0 3185@defmac STACK_CHECK_PROBE_LOAD
02f52e19 3186A integer which is nonzero if GCC should perform the stack probe
a3a15b4d 3187as a load instruction and zero if GCC should use a store instruction.
861bb6c1 3188The default is zero, which is the most efficient choice on most systems.
a2c4f8e0 3189@end defmac
861bb6c1 3190
a2c4f8e0 3191@defmac STACK_CHECK_PROTECT
861bb6c1
JL
3192The number of bytes of stack needed to recover from a stack overflow,
3193for languages where such a recovery is supported. The default value of
319475 words should be adequate for most machines.
a2c4f8e0 3195@end defmac
861bb6c1 3196
a2c4f8e0 3197@defmac STACK_CHECK_MAX_FRAME_SIZE
a3a15b4d 3198The maximum size of a stack frame, in bytes. GCC will generate probe
861bb6c1
JL
3199instructions in non-leaf functions to ensure at least this many bytes of
3200stack are available. If a stack frame is larger than this size, stack
a3a15b4d
JL
3201checking will not be reliable and GCC will issue a warning. The
3202default is chosen so that GCC only generates one instruction on most
861bb6c1 3203systems. You should normally not change the default value of this macro.
a2c4f8e0 3204@end defmac
861bb6c1 3205
a2c4f8e0 3206@defmac STACK_CHECK_FIXED_FRAME_SIZE
a3a15b4d 3207GCC uses this value to generate the above warning message. It
861bb6c1
JL
3208represents the amount of fixed frame used by a function, not including
3209space for any callee-saved registers, temporaries and user variables.
3210You need only specify an upper bound for this amount and will normally
3211use the default of four words.
a2c4f8e0 3212@end defmac
861bb6c1 3213
a2c4f8e0 3214@defmac STACK_CHECK_MAX_VAR_SIZE
a3a15b4d 3215The maximum size, in bytes, of an object that GCC will place in the
861bb6c1 3216fixed area of the stack frame when the user specifies
630d3d5a 3217@option{-fstack-check}.
a3a15b4d 3218GCC computed the default from the values of the above macros and you will
861bb6c1 3219normally not need to override that default.
a2c4f8e0 3220@end defmac
feca2ed3
JW
3221
3222@need 2000
3223@node Frame Registers
3224@subsection Registers That Address the Stack Frame
3225
3226@c prevent bad page break with this line
3227This discusses registers that address the stack frame.
3228
a2c4f8e0 3229@defmac STACK_POINTER_REGNUM
feca2ed3
JW
3230The register number of the stack pointer register, which must also be a
3231fixed register according to @code{FIXED_REGISTERS}. On most machines,
3232the hardware determines which register this is.
a2c4f8e0 3233@end defmac
feca2ed3 3234
a2c4f8e0 3235@defmac FRAME_POINTER_REGNUM
feca2ed3
JW
3236The register number of the frame pointer register, which is used to
3237access automatic variables in the stack frame. On some machines, the
3238hardware determines which register this is. On other machines, you can
3239choose any register you wish for this purpose.
a2c4f8e0 3240@end defmac
feca2ed3 3241
a2c4f8e0 3242@defmac HARD_FRAME_POINTER_REGNUM
feca2ed3
JW
3243On some machines the offset between the frame pointer and starting
3244offset of the automatic variables is not known until after register
3245allocation has been done (for example, because the saved registers are
3246between these two locations). On those machines, define
3247@code{FRAME_POINTER_REGNUM} the number of a special, fixed register to
3248be used internally until the offset is known, and define
556e0f21 3249@code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number
feca2ed3
JW
3250used for the frame pointer.
3251
3252You should define this macro only in the very rare circumstances when it
3253is not possible to calculate the offset between the frame pointer and
3254the automatic variables until after register allocation has been
3255completed. When this macro is defined, you must also indicate in your
3256definition of @code{ELIMINABLE_REGS} how to eliminate
3257@code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM}
3258or @code{STACK_POINTER_REGNUM}.
3259
3260Do not define this macro if it would be the same as
3261@code{FRAME_POINTER_REGNUM}.
a2c4f8e0 3262@end defmac
feca2ed3 3263
a2c4f8e0 3264@defmac ARG_POINTER_REGNUM
feca2ed3
JW
3265The register number of the arg pointer register, which is used to access
3266the function's argument list. On some machines, this is the same as the
3267frame pointer register. On some machines, the hardware determines which
3268register this is. On other machines, you can choose any register you
3269wish for this purpose. If this is not the same register as the frame
3270pointer register, then you must mark it as a fixed register according to
3271@code{FIXED_REGISTERS}, or arrange to be able to eliminate it
3272(@pxref{Elimination}).
a2c4f8e0 3273@end defmac
feca2ed3 3274
a2c4f8e0 3275@defmac RETURN_ADDRESS_POINTER_REGNUM
feca2ed3
JW
3276The register number of the return address pointer register, which is used to
3277access the current function's return address from the stack. On some
3278machines, the return address is not at a fixed offset from the frame
3279pointer or stack pointer or argument pointer. This register can be defined
3280to point to the return address on the stack, and then be converted by
3281@code{ELIMINABLE_REGS} into either the frame pointer or stack pointer.
3282
3283Do not define this macro unless there is no other way to get the return
3284address from the stack.
a2c4f8e0 3285@end defmac
feca2ed3 3286
a2c4f8e0
ZW
3287@defmac STATIC_CHAIN_REGNUM
3288@defmacx STATIC_CHAIN_INCOMING_REGNUM
feca2ed3
JW
3289Register numbers used for passing a function's static chain pointer. If
3290register windows are used, the register number as seen by the called
3291function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register
3292number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}. If
3293these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need
bd819a4a 3294not be defined.
feca2ed3
JW
3295
3296The static chain register need not be a fixed register.
3297
3298If the static chain is passed in memory, these macros should not be
3299defined; instead, the next two macros should be defined.
a2c4f8e0 3300@end defmac
feca2ed3 3301
a2c4f8e0
ZW
3302@defmac STATIC_CHAIN
3303@defmacx STATIC_CHAIN_INCOMING
feca2ed3
JW
3304If the static chain is passed in memory, these macros provide rtx giving
3305@code{mem} expressions that denote where they are stored.
3306@code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations
3307as seen by the calling and called functions, respectively. Often the former
3308will be at an offset from the stack pointer and the latter at an offset from
bd819a4a 3309the frame pointer.
feca2ed3
JW
3310
3311@findex stack_pointer_rtx
3312@findex frame_pointer_rtx
3313@findex arg_pointer_rtx
3314The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and
3315@code{arg_pointer_rtx} will have been initialized prior to the use of these
3316macros and should be used to refer to those items.
3317
3318If the static chain is passed in a register, the two previous macros should
3319be defined instead.
a2c4f8e0 3320@end defmac
919543ab 3321
a2c4f8e0 3322@defmac DWARF_FRAME_REGISTERS
919543ab
AH
3323This macro specifies the maximum number of hard registers that can be
3324saved in a call frame. This is used to size data structures used in
3325DWARF2 exception handling.
3326
3327Prior to GCC 3.0, this macro was needed in order to establish a stable
3328exception handling ABI in the face of adding new hard registers for ISA
3329extensions. In GCC 3.0 and later, the EH ABI is insulated from changes
3330in the number of hard registers. Nevertheless, this macro can still be
3331used to reduce the runtime memory requirements of the exception handling
3332routines, which can be substantial if the ISA contains a lot of
3333registers that are not call-saved.
3334
3335If this macro is not defined, it defaults to
3336@code{FIRST_PSEUDO_REGISTER}.
a2c4f8e0 3337@end defmac
919543ab 3338
a2c4f8e0 3339@defmac PRE_GCC3_DWARF_FRAME_REGISTERS
919543ab
AH
3340
3341This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided
3342for backward compatibility in pre GCC 3.0 compiled code.
3343
3344If this macro is not defined, it defaults to
3345@code{DWARF_FRAME_REGISTERS}.
a2c4f8e0 3346@end defmac
919543ab 3347
a2c4f8e0 3348@defmac DWARF_REG_TO_UNWIND_COLUMN (@var{regno})
41f3a930
AH
3349
3350Define this macro if the target's representation for dwarf registers
3351is different than the internal representation for unwind column.
61aeb06f 3352Given a dwarf register, this macro should return the internal unwind
41f3a930
AH
3353column number to use instead.
3354
73774972 3355See the PowerPC's SPE target for an example.
a2c4f8e0 3356@end defmac
feca2ed3 3357
34c80057
AM
3358@defmac DWARF_FRAME_REGNUM (@var{regno})
3359
3360Define this macro if the target's representation for dwarf registers
3361used in .eh_frame or .debug_frame is different from that used in other
2dd76960 3362debug info sections. Given a GCC hard register number, this macro
34c80057
AM
3363should return the .eh_frame register number. The default is
3364@code{DBX_REGISTER_NUMBER (@var{regno})}.
3365
3366@end defmac
3367
3368@defmac DWARF2_FRAME_REG_OUT (@var{regno}, @var{for_eh})
3369
3370Define this macro to map register numbers held in the call frame info
2dd76960 3371that GCC has collected using @code{DWARF_FRAME_REGNUM} to those that
34c80057 3372should be output in .debug_frame (@code{@var{for_eh}} is zero) and
a451b0bd 3373.eh_frame (@code{@var{for_eh}} is nonzero). The default is to
34c80057
AM
3374return @code{@var{regno}}.
3375
3376@end defmac
3377
feca2ed3
JW
3378@node Elimination
3379@subsection Eliminating Frame Pointer and Arg Pointer
3380
3381@c prevent bad page break with this line
3382This is about eliminating the frame pointer and arg pointer.
3383
a2c4f8e0 3384@defmac FRAME_POINTER_REQUIRED
feca2ed3
JW
3385A C expression which is nonzero if a function must have and use a frame
3386pointer. This expression is evaluated in the reload pass. If its value is
3387nonzero the function will have a frame pointer.
3388
3389The expression can in principle examine the current function and decide
3390according to the facts, but on most machines the constant 0 or the
3391constant 1 suffices. Use 0 when the machine allows code to be generated
3392with no frame pointer, and doing so saves some time or space. Use 1
3393when there is no possible advantage to avoiding a frame pointer.
3394
3395In certain cases, the compiler does not know how to produce valid code
3396without a frame pointer. The compiler recognizes those cases and
3397automatically gives the function a frame pointer regardless of what
3398@code{FRAME_POINTER_REQUIRED} says. You don't need to worry about
bd819a4a 3399them.
feca2ed3
JW
3400
3401In a function that does not require a frame pointer, the frame pointer
3402register can be allocated for ordinary usage, unless you mark it as a
3403fixed register. See @code{FIXED_REGISTERS} for more information.
a2c4f8e0 3404@end defmac
feca2ed3 3405
feca2ed3 3406@findex get_frame_size
a2c4f8e0 3407@defmac INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
feca2ed3
JW
3408A C statement to store in the variable @var{depth-var} the difference
3409between the frame pointer and the stack pointer values immediately after
3410the function prologue. The value would be computed from information
3411such as the result of @code{get_frame_size ()} and the tables of
3412registers @code{regs_ever_live} and @code{call_used_regs}.
3413
3414If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
3415need not be defined. Otherwise, it must be defined even if
3416@code{FRAME_POINTER_REQUIRED} is defined to always be true; in that
3417case, you may set @var{depth-var} to anything.
a2c4f8e0 3418@end defmac
feca2ed3 3419
a2c4f8e0 3420@defmac ELIMINABLE_REGS
feca2ed3
JW
3421If defined, this macro specifies a table of register pairs used to
3422eliminate unneeded registers that point into the stack frame. If it is not
3423defined, the only elimination attempted by the compiler is to replace
3424references to the frame pointer with references to the stack pointer.
3425
3426The definition of this macro is a list of structure initializations, each
3427of which specifies an original and replacement register.
3428
3429On some machines, the position of the argument pointer is not known until
3430the compilation is completed. In such a case, a separate hard register
3431must be used for the argument pointer. This register can be eliminated by
3432replacing it with either the frame pointer or the argument pointer,
3433depending on whether or not the frame pointer has been eliminated.
3434
3435In this case, you might specify:
3ab51846 3436@smallexample
feca2ed3
JW
3437#define ELIMINABLE_REGS \
3438@{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
3439 @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
3440 @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
3ab51846 3441@end smallexample
feca2ed3
JW
3442
3443Note that the elimination of the argument pointer with the stack pointer is
3444specified first since that is the preferred elimination.
a2c4f8e0 3445@end defmac
feca2ed3 3446
a2c4f8e0 3447@defmac CAN_ELIMINATE (@var{from-reg}, @var{to-reg})
df2a54e9 3448A C expression that returns nonzero if the compiler is allowed to try
feca2ed3
JW
3449to replace register number @var{from-reg} with register number
3450@var{to-reg}. This macro need only be defined if @code{ELIMINABLE_REGS}
3451is defined, and will usually be the constant 1, since most of the cases
3452preventing register elimination are things that the compiler already
3453knows about.
a2c4f8e0 3454@end defmac
feca2ed3 3455
a2c4f8e0 3456@defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
feca2ed3
JW
3457This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}. It
3458specifies the initial difference between the specified pair of
3459registers. This macro must be defined if @code{ELIMINABLE_REGS} is
3460defined.
a2c4f8e0 3461@end defmac
feca2ed3
JW
3462
3463@node Stack Arguments
3464@subsection Passing Function Arguments on the Stack
3465@cindex arguments on stack
3466@cindex stack arguments
3467
3468The macros in this section control how arguments are passed
3469on the stack. See the following section for other macros that
3470control passing certain arguments in registers.
3471
61f71b34
DD
3472@deftypefn {Target Hook} bool TARGET_PROMOTE_PROTOTYPES (tree @var{fntype})
3473This target hook returns @code{true} if an argument declared in a
3474prototype as an integral type smaller than @code{int} should actually be
3475passed as an @code{int}. In addition to avoiding errors in certain
3476cases of mismatch, it also makes for better code on certain machines.
3477The default is to not promote prototypes.
3478@end deftypefn
feca2ed3 3479
a2c4f8e0 3480@defmac PUSH_ARGS
767094dd 3481A C expression. If nonzero, push insns will be used to pass
f73ad30e
JH
3482outgoing arguments.
3483If the target machine does not have a push instruction, set it to zero.
3484That directs GCC to use an alternate strategy: to
3485allocate the entire argument block and then store the arguments into
aee96fe9 3486it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too.
a2c4f8e0 3487@end defmac
f73ad30e 3488
9d6bef95
JM
3489@defmac PUSH_ARGS_REVERSED
3490A C expression. If nonzero, function arguments will be evaluated from
3491last to first, rather than from first to last. If this macro is not
3492defined, it defaults to @code{PUSH_ARGS} on targets where the stack
3493and args grow in opposite directions, and 0 otherwise.
3494@end defmac
3495
a2c4f8e0 3496@defmac PUSH_ROUNDING (@var{npushed})
feca2ed3
JW
3497A C expression that is the number of bytes actually pushed onto the
3498stack when an instruction attempts to push @var{npushed} bytes.
feca2ed3
JW
3499
3500On some machines, the definition
3501
3ab51846 3502@smallexample
feca2ed3 3503#define PUSH_ROUNDING(BYTES) (BYTES)
3ab51846 3504@end smallexample
feca2ed3
JW
3505
3506@noindent
3507will suffice. But on other machines, instructions that appear
3508to push one byte actually push two bytes in an attempt to maintain
3509alignment. Then the definition should be
3510
3ab51846 3511@smallexample
feca2ed3 3512#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
3ab51846 3513@end smallexample
a2c4f8e0 3514@end defmac
feca2ed3 3515
feca2ed3 3516@findex current_function_outgoing_args_size
a2c4f8e0 3517@defmac ACCUMULATE_OUTGOING_ARGS
767094dd 3518A C expression. If nonzero, the maximum amount of space required for outgoing arguments
feca2ed3
JW
3519will be computed and placed into the variable
3520@code{current_function_outgoing_args_size}. No space will be pushed
3521onto the stack for each call; instead, the function prologue should
3522increase the stack frame size by this amount.
3523
f73ad30e 3524Setting both @code{PUSH_ARGS} and @code{ACCUMULATE_OUTGOING_ARGS}
feca2ed3 3525is not proper.
a2c4f8e0 3526@end defmac
feca2ed3 3527
a2c4f8e0 3528@defmac REG_PARM_STACK_SPACE (@var{fndecl})
feca2ed3
JW
3529Define this macro if functions should assume that stack space has been
3530allocated for arguments even when their values are passed in
3531registers.
3532
3533The value of this macro is the size, in bytes, of the area reserved for
ab87f8c8 3534arguments passed in registers for the function represented by @var{fndecl},
a3a15b4d 3535which can be zero if GCC is calling a library function.
feca2ed3
JW
3536
3537This space can be allocated by the caller, or be a part of the
3538machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says
3539which.
a2c4f8e0 3540@end defmac
feca2ed3
JW
3541@c above is overfull. not sure what to do. --mew 5feb93 did
3542@c something, not sure if it looks good. --mew 10feb93
3543
a2c4f8e0 3544@defmac OUTGOING_REG_PARM_STACK_SPACE
feca2ed3
JW
3545Define this if it is the responsibility of the caller to allocate the area
3546reserved for arguments passed in registers.
3547
3548If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls
3549whether the space for these arguments counts in the value of
3550@code{current_function_outgoing_args_size}.
a2c4f8e0 3551@end defmac
feca2ed3 3552
a2c4f8e0 3553@defmac STACK_PARMS_IN_REG_PARM_AREA
feca2ed3
JW
3554Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the
3555stack parameters don't skip the area specified by it.
3556@c i changed this, makes more sens and it should have taken care of the
3557@c overfull.. not as specific, tho. --mew 5feb93
3558
3559Normally, when a parameter is not passed in registers, it is placed on the
3560stack beyond the @code{REG_PARM_STACK_SPACE} area. Defining this macro
3561suppresses this behavior and causes the parameter to be passed on the
3562stack in its natural location.
a2c4f8e0 3563@end defmac
feca2ed3 3564
a2c4f8e0 3565@defmac RETURN_POPS_ARGS (@var{fundecl}, @var{funtype}, @var{stack-size})
feca2ed3
JW
3566A C expression that should indicate the number of bytes of its own
3567arguments that a function pops on returning, or 0 if the
3568function pops no arguments and the caller must therefore pop them all
3569after the function returns.
3570
3571@var{fundecl} is a C variable whose value is a tree node that describes
3572the function in question. Normally it is a node of type
3573@code{FUNCTION_DECL} that describes the declaration of the function.
91d231cb 3574From this you can obtain the @code{DECL_ATTRIBUTES} of the function.
feca2ed3
JW
3575
3576@var{funtype} is a C variable whose value is a tree node that
3577describes the function in question. Normally it is a node of type
3578@code{FUNCTION_TYPE} that describes the data type of the function.
3579From this it is possible to obtain the data types of the value and
3580arguments (if known).
3581
861bb6c1 3582When a call to a library function is being considered, @var{fundecl}
feca2ed3
JW
3583will contain an identifier node for the library function. Thus, if
3584you need to distinguish among various library functions, you can do so
3585by their names. Note that ``library function'' in this context means
3586a function used to perform arithmetic, whose name is known specially
3587in the compiler and was not mentioned in the C code being compiled.
3588
3589@var{stack-size} is the number of bytes of arguments passed on the
3590stack. If a variable number of bytes is passed, it is zero, and
3591argument popping will always be the responsibility of the calling function.
3592
8aeea6e6 3593On the VAX, all functions always pop their arguments, so the definition
feca2ed3
JW
3594of this macro is @var{stack-size}. On the 68000, using the standard
3595calling convention, no functions pop their arguments, so the value of
3596the macro is always 0 in this case. But an alternative calling
3597convention is available in which functions that take a fixed number of
3598arguments pop them but other functions (such as @code{printf}) pop
3599nothing (the caller pops all). When this convention is in use,
3600@var{funtype} is examined to determine whether a function takes a fixed
3601number of arguments.
a2c4f8e0 3602@end defmac
fa5322fa 3603
a2c4f8e0 3604@defmac CALL_POPS_ARGS (@var{cum})
fa5322fa
AO
3605A C expression that should indicate the number of bytes a call sequence
3606pops off the stack. It is added to the value of @code{RETURN_POPS_ARGS}
3607when compiling a function call.
3608
3609@var{cum} is the variable in which all arguments to the called function
3610have been accumulated.
3611
3612On certain architectures, such as the SH5, a call trampoline is used
3613that pops certain registers off the stack, depending on the arguments
3614that have been passed to the function. Since this is a property of the
3615call site, not of the called function, @code{RETURN_POPS_ARGS} is not
3616appropriate.
a2c4f8e0 3617@end defmac
feca2ed3
JW
3618
3619@node Register Arguments
3620@subsection Passing Arguments in Registers
3621@cindex arguments in registers
3622@cindex registers arguments
3623
3624This section describes the macros which let you control how various
3625types of arguments are passed in registers or how they are arranged in
3626the stack.
3627
a2c4f8e0 3628@defmac FUNCTION_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3629A C expression that controls whether a function argument is passed
3630in a register, and which register.
3631
3632The arguments are @var{cum}, which summarizes all the previous
3633arguments; @var{mode}, the machine mode of the argument; @var{type},
3634the data type of the argument as a tree node or 0 if that is not known
3635(which happens for C support library functions); and @var{named},
3636which is 1 for an ordinary argument and 0 for nameless arguments that
3637correspond to @samp{@dots{}} in the called function's prototype.
3719d27b
JO
3638@var{type} can be an incomplete type if a syntax error has previously
3639occurred.
feca2ed3
JW
3640
3641The value of the expression is usually either a @code{reg} RTX for the
3642hard register in which to pass the argument, or zero to pass the
3643argument on the stack.
3644
8aeea6e6 3645For machines like the VAX and 68000, where normally all arguments are
feca2ed3
JW
3646pushed, zero suffices as a definition.
3647
161d7b59 3648The value of the expression can also be a @code{parallel} RTX@. This is
feca2ed3 3649used when an argument is passed in multiple locations. The mode of the
ce376beb 3650@code{parallel} should be the mode of the entire argument. The
feca2ed3 3651@code{parallel} holds any number of @code{expr_list} pairs; each one
f797c10b
NC
3652describes where part of the argument is passed. In each
3653@code{expr_list} the first operand must be a @code{reg} RTX for the hard
3654register in which to pass this part of the argument, and the mode of the
3655register RTX indicates how large this part of the argument is. The
3656second operand of the @code{expr_list} is a @code{const_int} which gives
3657the offset in bytes into the entire argument of where this part starts.
02f52e19 3658As a special exception the first @code{expr_list} in the @code{parallel}
c980b85b
NC
3659RTX may have a first operand of zero. This indicates that the entire
3660argument is also stored on the stack.
feca2ed3 3661
1cc5e432
GK
3662The last time this macro is called, it is called with @code{MODE ==
3663VOIDmode}, and its result is passed to the @code{call} or @code{call_value}
3664pattern as operands 2 and 3 respectively.
3665
feca2ed3 3666@cindex @file{stdarg.h} and register arguments
5490d604 3667The usual way to make the ISO library @file{stdarg.h} work on a machine
feca2ed3
JW
3668where some arguments are usually passed in registers, is to cause
3669nameless arguments to be passed on the stack instead. This is done
3670by making @code{FUNCTION_ARG} return 0 whenever @var{named} is 0.
3671
3672@cindex @code{MUST_PASS_IN_STACK}, and @code{FUNCTION_ARG}
3673@cindex @code{REG_PARM_STACK_SPACE}, and @code{FUNCTION_ARG}
3674You may use the macro @code{MUST_PASS_IN_STACK (@var{mode}, @var{type})}
3675in the definition of this macro to determine if this argument is of a
3676type that must be passed in the stack. If @code{REG_PARM_STACK_SPACE}
df2a54e9 3677is not defined and @code{FUNCTION_ARG} returns nonzero for such an
feca2ed3
JW
3678argument, the compiler will abort. If @code{REG_PARM_STACK_SPACE} is
3679defined, the argument will be computed in the stack and then loaded into
3680a register.
a2c4f8e0 3681@end defmac
feca2ed3 3682
a2c4f8e0 3683@defmac MUST_PASS_IN_STACK (@var{mode}, @var{type})
d9a4ee00
JL
3684Define as a C expression that evaluates to nonzero if we do not know how
3685to pass TYPE solely in registers. The file @file{expr.h} defines a
3686definition that is usually appropriate, refer to @file{expr.h} for additional
3687documentation.
a2c4f8e0 3688@end defmac
d9a4ee00 3689
a2c4f8e0 3690@defmac FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3691Define this macro if the target machine has ``register windows'', so
3692that the register in which a function sees an arguments is not
3693necessarily the same as the one in which the caller passed the
3694argument.
3695
3696For such machines, @code{FUNCTION_ARG} computes the register in which
3697the caller passes the value, and @code{FUNCTION_INCOMING_ARG} should
3698be defined in a similar fashion to tell the function being called
3699where the arguments will arrive.
3700
3701If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG}
bd819a4a 3702serves both purposes.
a2c4f8e0 3703@end defmac
feca2ed3 3704
a2c4f8e0 3705@defmac FUNCTION_ARG_PARTIAL_NREGS (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3 3706A C expression for the number of words, at the beginning of an
6b72173a 3707argument, that must be put in registers. The value must be zero for
feca2ed3
JW
3708arguments that are passed entirely in registers or that are entirely
3709pushed on the stack.
3710
3711On some machines, certain arguments must be passed partially in
3712registers and partially in memory. On these machines, typically the
3713first @var{n} words of arguments are passed in registers, and the rest
3714on the stack. If a multi-word argument (a @code{double} or a
3715structure) crosses that boundary, its first few words must be passed
3716in registers and the rest must be pushed. This macro tells the
3717compiler when this occurs, and how many of the words should go in
3718registers.
3719
3720@code{FUNCTION_ARG} for these arguments should return the first
3721register to be used by the caller for this argument; likewise
3722@code{FUNCTION_INCOMING_ARG}, for the called function.
a2c4f8e0 3723@end defmac
feca2ed3 3724
a2c4f8e0 3725@defmac FUNCTION_ARG_PASS_BY_REFERENCE (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3726A C expression that indicates when an argument must be passed by reference.
3727If nonzero for an argument, a copy of that argument is made in memory and a
3728pointer to the argument is passed instead of the argument itself.
3729The pointer is passed in whatever way is appropriate for passing a pointer
3730to that type.
3731
3732On machines where @code{REG_PARM_STACK_SPACE} is not defined, a suitable
3733definition of this macro might be
3734@smallexample
3735#define FUNCTION_ARG_PASS_BY_REFERENCE\
3736(CUM, MODE, TYPE, NAMED) \
3737 MUST_PASS_IN_STACK (MODE, TYPE)
3738@end smallexample
3739@c this is *still* too long. --mew 5feb93
a2c4f8e0 3740@end defmac
feca2ed3 3741
a2c4f8e0 3742@defmac FUNCTION_ARG_CALLEE_COPIES (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3743If defined, a C expression that indicates when it is the called function's
3744responsibility to make a copy of arguments passed by invisible reference.
3745Normally, the caller makes a copy and passes the address of the copy to the
aee96fe9 3746routine being called. When @code{FUNCTION_ARG_CALLEE_COPIES} is defined and is
feca2ed3
JW
3747nonzero, the caller does not make a copy. Instead, it passes a pointer to the
3748``live'' value. The called function must not modify this value. If it can be
3749determined that the value won't be modified, it need not make a copy;
3750otherwise a copy must be made.
a2c4f8e0 3751@end defmac
feca2ed3 3752
a2c4f8e0 3753@defmac CUMULATIVE_ARGS
feca2ed3
JW
3754A C type for declaring a variable that is used as the first argument of
3755@code{FUNCTION_ARG} and other related values. For some target machines,
3756the type @code{int} suffices and can hold the number of bytes of
3757argument so far.
3758
3759There is no need to record in @code{CUMULATIVE_ARGS} anything about the
3760arguments that have been passed on the stack. The compiler has other
3761variables to keep track of that. For target machines on which all
3762arguments are passed on the stack, there is no need to store anything in
3763@code{CUMULATIVE_ARGS}; however, the data structure must exist and
3764should not be empty, so use @code{int}.
a2c4f8e0 3765@end defmac
feca2ed3 3766
0f6937fe 3767@defmac INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{fndecl}, @var{n_named_args})
a2c4f8e0
ZW
3768A C statement (sans semicolon) for initializing the variable
3769@var{cum} for the state at the beginning of the argument list. The
3770variable has type @code{CUMULATIVE_ARGS}. The value of @var{fntype}
3771is the tree node for the data type of the function which will receive
3772the args, or 0 if the args are to a compiler support library function.
3773For direct calls that are not libcalls, @var{fndecl} contain the
3774declaration node of the function. @var{fndecl} is also set when
3775@code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function
0f6937fe
AM
3776being compiled. @var{n_named_args} is set to the number of named
3777arguments, including a structure return address if it is passed as a
3778parameter, when making a call. When processing incoming arguments,
3779@var{n_named_args} is set to -1.
feca2ed3
JW
3780
3781When processing a call to a compiler support library function,
3782@var{libname} identifies which one. It is a @code{symbol_ref} rtx which
3783contains the name of the function, as a string. @var{libname} is 0 when
3784an ordinary C function call is being processed. Thus, each time this
3785macro is called, either @var{libname} or @var{fntype} is nonzero, but
3786never both of them at once.
a2c4f8e0 3787@end defmac
feca2ed3 3788
a2c4f8e0 3789@defmac INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname})
97fc4caf
AO
3790Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls,
3791it gets a @code{MODE} argument instead of @var{fntype}, that would be
3792@code{NULL}. @var{indirect} would always be zero, too. If this macro
3793is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname,
37940)} is used instead.
a2c4f8e0 3795@end defmac
97fc4caf 3796
a2c4f8e0 3797@defmac INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
feca2ed3
JW
3798Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of
3799finding the arguments for the function being compiled. If this macro is
3800undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
3801
3802The value passed for @var{libname} is always 0, since library routines
161d7b59 3803with special calling conventions are never compiled with GCC@. The
feca2ed3
JW
3804argument @var{libname} exists for symmetry with
3805@code{INIT_CUMULATIVE_ARGS}.
3806@c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
3807@c --mew 5feb93 i switched the order of the sentences. --mew 10feb93
a2c4f8e0 3808@end defmac
feca2ed3 3809
a2c4f8e0 3810@defmac FUNCTION_ARG_ADVANCE (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3811A C statement (sans semicolon) to update the summarizer variable
3812@var{cum} to advance past an argument in the argument list. The
3813values @var{mode}, @var{type} and @var{named} describe that argument.
3814Once this is done, the variable @var{cum} is suitable for analyzing
bd819a4a 3815the @emph{following} argument with @code{FUNCTION_ARG}, etc.
feca2ed3
JW
3816
3817This macro need not do anything if the argument in question was passed
3818on the stack. The compiler knows how to track the amount of stack space
3819used for arguments without any special help.
a2c4f8e0 3820@end defmac
feca2ed3 3821
a2c4f8e0 3822@defmac FUNCTION_ARG_PADDING (@var{mode}, @var{type})
feca2ed3
JW
3823If defined, a C expression which determines whether, and in which direction,
3824to pad out an argument with extra space. The value should be of type
3825@code{enum direction}: either @code{upward} to pad above the argument,
3826@code{downward} to pad below, or @code{none} to inhibit padding.
3827
3828The @emph{amount} of padding is always just enough to reach the next
3829multiple of @code{FUNCTION_ARG_BOUNDARY}; this macro does not control
3830it.
3831
3832This macro has a default definition which is right for most systems.
3833For little-endian machines, the default is to pad upward. For
3834big-endian machines, the default is to pad downward for an argument of
3835constant size shorter than an @code{int}, and upward otherwise.
a2c4f8e0 3836@end defmac
feca2ed3 3837
a2c4f8e0 3838@defmac PAD_VARARGS_DOWN
02f52e19
AJ
3839If defined, a C expression which determines whether the default
3840implementation of va_arg will attempt to pad down before reading the
5e4f6244
CP
3841next argument, if that argument is smaller than its aligned space as
3842controlled by @code{PARM_BOUNDARY}. If this macro is not defined, all such
3843arguments are padded down if @code{BYTES_BIG_ENDIAN} is true.
a2c4f8e0 3844@end defmac
5e4f6244 3845
6e985040
AM
3846@defmac BLOCK_REG_PADDING (@var{mode}, @var{type}, @var{first})
3847Specify padding for the last element of a block move between registers and
3848memory. @var{first} is nonzero if this is the only element. Defining this
3849macro allows better control of register function parameters on big-endian
3850machines, without using @code{PARALLEL} rtl. In particular,
3851@code{MUST_PASS_IN_STACK} need not test padding and mode of types in
3852registers, as there is no longer a "wrong" part of a register; For example,
3853a three byte aggregate may be passed in the high part of a register if so
3854required.
3855@end defmac
3856
a2c4f8e0 3857@defmac FUNCTION_ARG_BOUNDARY (@var{mode}, @var{type})
feca2ed3
JW
3858If defined, a C expression that gives the alignment boundary, in bits,
3859of an argument with the specified mode and type. If it is not defined,
3860@code{PARM_BOUNDARY} is used for all arguments.
a2c4f8e0 3861@end defmac
feca2ed3 3862
a2c4f8e0 3863@defmac FUNCTION_ARG_REGNO_P (@var{regno})
feca2ed3
JW
3864A C expression that is nonzero if @var{regno} is the number of a hard
3865register in which function arguments are sometimes passed. This does
3866@emph{not} include implicit arguments such as the static chain and
3867the structure-value address. On many machines, no registers can be
3868used for this purpose since all function arguments are pushed on the
3869stack.
a2c4f8e0 3870@end defmac
bb1b857a 3871
42ba5130
RH
3872@deftypefn {Target Hook} bool TARGET_SPLIT_COMPLEX_ARG (tree @var{type})
3873This hook should return true if parameter of type @var{type} are passed
3874as two scalar parameters. By default, GCC will attempt to pack complex
3875arguments into the target's word size. Some ABIs require complex arguments
3876to be split and treated as their individual components. For example, on
3877AIX64, complex floats should be passed in a pair of floating point
3878registers, even though a complex float would fit in one 64-bit floating
3879point register.
3880
3881The default value of this hook is @code{NULL}, which is treated as always
3882false.
3883@end deftypefn
ded9bf77 3884
23a60a04
JM
3885@deftypefn {Target Hook} tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree @var{valist}, tree @var{type}, tree *@var{pre_p}, tree *@var{post_p})
3886This hook performs target-specific gimplification of
3887@code{VA_ARG_EXPR}. The first two parameters correspond to the
3888arguments to @code{va_arg}; the latter two are as in
3889@code{gimplify.c:gimplify_expr}.
3890
67c605a5 3891You only need to define this hook if you previously defined
23a60a04
JM
3892@code{EXPAND_BUILTIN_VA_ARG}; it is pretty easy to reuse the same code
3893for both. One significant difference is that
3894@code{EXPAND_BUILTIN_VA_ARG} returns an address, whereas this hook
3895produces an expression of type @var{type}, usually an @code{INDIRECT_REF}.
67c605a5
JM
3896
3897Once you define this macro, you can change
3898@code{EXPAND_BUILTIN_VA_ARG} to just abort, as it should never be
3899called.
23a60a04
JM
3900@end deftypefn
3901
feca2ed3
JW
3902@node Scalar Return
3903@subsection How Scalar Function Values Are Returned
3904@cindex return values in registers
3905@cindex values, returned by functions
3906@cindex scalars, returned as values
3907
3908This section discusses the macros that control returning scalars as
3909values---values that can fit in registers.
3910
a2c4f8e0 3911@defmac FUNCTION_VALUE (@var{valtype}, @var{func})
feca2ed3
JW
3912A C expression to create an RTX representing the place where a
3913function returns a value of data type @var{valtype}. @var{valtype} is
3914a tree node representing a data type. Write @code{TYPE_MODE
3915(@var{valtype})} to get the machine mode used to represent that type.
3916On many machines, only the mode is relevant. (Actually, on most
3917machines, scalar values are returned in the same place regardless of
bd819a4a 3918mode).
feca2ed3
JW
3919
3920The value of the expression is usually a @code{reg} RTX for the hard
3921register where the return value is stored. The value can also be a
3922@code{parallel} RTX, if the return value is in multiple places. See
3923@code{FUNCTION_ARG} for an explanation of the @code{parallel} form.
3924
04ab46a4 3925If @code{TARGET_PROMOTE_FUNCTION_RETURN} returns true, you must apply the same
feca2ed3
JW
3926promotion rules specified in @code{PROMOTE_MODE} if @var{valtype} is a
3927scalar type.
3928
3929If the precise function being called is known, @var{func} is a tree
3930node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
3931pointer. This makes it possible to use a different value-returning
3932convention for specific functions when all their calls are
bd819a4a 3933known.
feca2ed3
JW
3934
3935@code{FUNCTION_VALUE} is not used for return vales with aggregate data
3936types, because these are returned in another way. See
cea28603 3937@code{TARGET_STRUCT_VALUE_RTX} and related macros, below.
a2c4f8e0 3938@end defmac
feca2ed3 3939
a2c4f8e0 3940@defmac FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
feca2ed3
JW
3941Define this macro if the target machine has ``register windows''
3942so that the register in which a function returns its value is not
3943the same as the one in which the caller sees the value.
3944
3945For such machines, @code{FUNCTION_VALUE} computes the register in which
3946the caller will see the value. @code{FUNCTION_OUTGOING_VALUE} should be
3947defined in a similar fashion to tell the function where to put the
bd819a4a 3948value.
feca2ed3
JW
3949
3950If @code{FUNCTION_OUTGOING_VALUE} is not defined,
bd819a4a 3951@code{FUNCTION_VALUE} serves both purposes.
feca2ed3
JW
3952
3953@code{FUNCTION_OUTGOING_VALUE} is not used for return vales with
3954aggregate data types, because these are returned in another way. See
cea28603 3955@code{TARGET_STRUCT_VALUE_RTX} and related macros, below.
a2c4f8e0 3956@end defmac
feca2ed3 3957
a2c4f8e0 3958@defmac LIBCALL_VALUE (@var{mode})
feca2ed3
JW
3959A C expression to create an RTX representing the place where a library
3960function returns a value of mode @var{mode}. If the precise function
3961being called is known, @var{func} is a tree node
3962(@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
3963pointer. This makes it possible to use a different value-returning
3964convention for specific functions when all their calls are
bd819a4a 3965known.
feca2ed3
JW
3966
3967Note that ``library function'' in this context means a compiler
3968support routine, used to perform arithmetic, whose name is known
3969specially by the compiler and was not mentioned in the C code being
3970compiled.
3971
3972The definition of @code{LIBRARY_VALUE} need not be concerned aggregate
3973data types, because none of the library functions returns such types.
a2c4f8e0 3974@end defmac
feca2ed3 3975
a2c4f8e0 3976@defmac FUNCTION_VALUE_REGNO_P (@var{regno})
feca2ed3
JW
3977A C expression that is nonzero if @var{regno} is the number of a hard
3978register in which the values of called function may come back.
3979
3980A register whose use for returning values is limited to serving as the
3981second of a pair (for a value of type @code{double}, say) need not be
3982recognized by this macro. So for most machines, this definition
3983suffices:
3984
3ab51846 3985@smallexample
feca2ed3 3986#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
3ab51846 3987@end smallexample
feca2ed3
JW
3988
3989If the machine has register windows, so that the caller and the called
3990function use different registers for the return value, this macro
3991should recognize only the caller's register numbers.
a2c4f8e0 3992@end defmac
feca2ed3 3993
a2c4f8e0 3994@defmac APPLY_RESULT_SIZE
feca2ed3
JW
3995Define this macro if @samp{untyped_call} and @samp{untyped_return}
3996need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for
3997saving and restoring an arbitrary return value.
a2c4f8e0 3998@end defmac
feca2ed3 3999
c988af2b
RS
4000@deftypefn {Target Hook} bool TARGET_RETURN_IN_MSB (tree @var{type})
4001This hook should return true if values of type @var{type} are returned
4002at the most significant end of a register (in other words, if they are
4003padded at the least significant end). You can assume that @var{type}
4004is returned in a register; the caller is required to check this.
4005
4006Note that the register provided by @code{FUNCTION_VALUE} must be able
4007to hold the complete return value. For example, if a 1-, 2- or 3-byte
4008structure is returned at the most significant end of a 4-byte register,
4009@code{FUNCTION_VALUE} should provide an @code{SImode} rtx.
4010@end deftypefn
4011
feca2ed3
JW
4012@node Aggregate Return
4013@subsection How Large Values Are Returned
4014@cindex aggregates as return values
4015@cindex large return values
4016@cindex returning aggregate values
4017@cindex structure value address
4018
4019When a function value's mode is @code{BLKmode} (and in some other
4020cases), the value is not returned according to @code{FUNCTION_VALUE}
4021(@pxref{Scalar Return}). Instead, the caller passes the address of a
4022block of memory in which the value should be stored. This address
4023is called the @dfn{structure value address}.
4024
4025This section describes how to control returning structure values in
4026memory.
4027
d624465f 4028@deftypefn {Target Hook} bool TARGET_RETURN_IN_MEMORY (tree @var{type}, tree @var{fntype})
61f71b34
DD
4029This target hook should return a nonzero value to say to return the
4030function value in memory, just as large structures are always returned.
4031Here @var{type} will be the data type of the value, and @var{fntype}
4032will be the type of the function doing the returning, or @code{NULL} for
4033libcalls.
feca2ed3
JW
4034
4035Note that values of mode @code{BLKmode} must be explicitly handled
61f71b34 4036by this function. Also, the option @option{-fpcc-struct-return}
feca2ed3 4037takes effect regardless of this macro. On most systems, it is
61f71b34 4038possible to leave the hook undefined; this causes a default
feca2ed3
JW
4039definition to be used, whose value is the constant 1 for @code{BLKmode}
4040values, and 0 otherwise.
4041
61f71b34 4042Do not use this hook to indicate that structures and unions should always
feca2ed3
JW
4043be returned in memory. You should instead use @code{DEFAULT_PCC_STRUCT_RETURN}
4044to indicate this.
61f71b34 4045@end deftypefn
feca2ed3 4046
a2c4f8e0 4047@defmac DEFAULT_PCC_STRUCT_RETURN
feca2ed3
JW
4048Define this macro to be 1 if all structure and union return values must be
4049in memory. Since this results in slower code, this should be defined
161d7b59 4050only if needed for compatibility with other compilers or with an ABI@.
feca2ed3 4051If you define this macro to be 0, then the conventions used for structure
d624465f
KH
4052and union return values are decided by the @code{TARGET_RETURN_IN_MEMORY}
4053target hook.
feca2ed3
JW
4054
4055If not defined, this defaults to the value 1.
a2c4f8e0 4056@end defmac
feca2ed3 4057
61f71b34
DD
4058@deftypefn {Target Hook} rtx TARGET_STRUCT_VALUE_RTX (tree @var{fndecl}, int @var{incoming})
4059This target hook should return the location of the structure value
4060address (normally a @code{mem} or @code{reg}), or 0 if the address is
4061passed as an ``invisible'' first argument. Note that @var{fndecl} may
1f6acb82
KH
4062be @code{NULL}, for libcalls. You do not need to define this target
4063hook if the address is always passed as an ``invisible'' first
4064argument.
feca2ed3 4065
feca2ed3
JW
4066On some architectures the place where the structure value address
4067is found by the called function is not the same place that the
4068caller put it. This can be due to register windows, or it could
4069be because the function prologue moves it to a different place.
61f71b34
DD
4070@var{incoming} is @code{true} when the location is needed in
4071the context of the called function, and @code{false} in the context of
4072the caller.
feca2ed3 4073
61f71b34
DD
4074If @var{incoming} is @code{true} and the address is to be found on the
4075stack, return a @code{mem} which refers to the frame pointer.
4076@end deftypefn
feca2ed3 4077
a2c4f8e0 4078@defmac PCC_STATIC_STRUCT_RETURN
feca2ed3
JW
4079Define this macro if the usual system convention on the target machine
4080for returning structures and unions is for the called function to return
4081the address of a static variable containing the value.
4082
4083Do not define this if the usual system convention is for the caller to
4084pass an address to the subroutine.
4085
630d3d5a
JM
4086This macro has effect in @option{-fpcc-struct-return} mode, but it does
4087nothing when you use @option{-freg-struct-return} mode.
a2c4f8e0 4088@end defmac
feca2ed3
JW
4089
4090@node Caller Saves
4091@subsection Caller-Saves Register Allocation
4092
a3a15b4d 4093If you enable it, GCC can save registers around function calls. This
feca2ed3
JW
4094makes it possible to use call-clobbered registers to hold variables that
4095must live across calls.
4096
a2c4f8e0 4097@defmac CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls})
feca2ed3
JW
4098A C expression to determine whether it is worthwhile to consider placing
4099a pseudo-register in a call-clobbered hard register and saving and
4100restoring it around each function call. The expression should be 1 when
4101this is worth doing, and 0 otherwise.
4102
4103If you don't define this macro, a default is used which is good on most
4104machines: @code{4 * @var{calls} < @var{refs}}.
a2c4f8e0 4105@end defmac
8d5c8167 4106
a2c4f8e0 4107@defmac HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs})
8d5c8167
JL
4108A C expression specifying which mode is required for saving @var{nregs}
4109of a pseudo-register in call-clobbered hard register @var{regno}. If
4110@var{regno} is unsuitable for caller save, @code{VOIDmode} should be
4111returned. For most machines this macro need not be defined since GCC
4112will select the smallest suitable mode.
a2c4f8e0 4113@end defmac
feca2ed3
JW
4114
4115@node Function Entry
4116@subsection Function Entry and Exit
4117@cindex function entry and exit
4118@cindex prologue
4119@cindex epilogue
4120
4121This section describes the macros that output function entry
4122(@dfn{prologue}) and exit (@dfn{epilogue}) code.
4123
08c148a8
NB
4124@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_PROLOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
4125If defined, a function that outputs the assembler code for entry to a
feca2ed3
JW
4126function. The prologue is responsible for setting up the stack frame,
4127initializing the frame pointer register, saving registers that must be
4128saved, and allocating @var{size} additional bytes of storage for the
4129local variables. @var{size} is an integer. @var{file} is a stdio
4130stream to which the assembler code should be output.
4131
4132The label for the beginning of the function need not be output by this
4133macro. That has already been done when the macro is run.
4134
4135@findex regs_ever_live
4136To determine which registers to save, the macro can refer to the array
4137@code{regs_ever_live}: element @var{r} is nonzero if hard register
4138@var{r} is used anywhere within the function. This implies the function
4139prologue should save register @var{r}, provided it is not one of the
08c148a8 4140call-used registers. (@code{TARGET_ASM_FUNCTION_EPILOGUE} must likewise use
feca2ed3
JW
4141@code{regs_ever_live}.)
4142
4143On machines that have ``register windows'', the function entry code does
4144not save on the stack the registers that are in the windows, even if
4145they are supposed to be preserved by function calls; instead it takes
4146appropriate steps to ``push'' the register stack, if any non-call-used
4147registers are used in the function.
4148
4149@findex frame_pointer_needed
4150On machines where functions may or may not have frame-pointers, the
4151function entry code must vary accordingly; it must set up the frame
4152pointer if one is wanted, and not otherwise. To determine whether a
4153frame pointer is in wanted, the macro can refer to the variable
4154@code{frame_pointer_needed}. The variable's value will be 1 at run
4155time in a function that needs a frame pointer. @xref{Elimination}.
4156
4157The function entry code is responsible for allocating any stack space
4158required for the function. This stack space consists of the regions
4159listed below. In most cases, these regions are allocated in the
4160order listed, with the last listed region closest to the top of the
4161stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and
4162the highest address if it is not defined). You can use a different order
4163for a machine if doing so is more convenient or required for
4164compatibility reasons. Except in cases where required by standard
4165or by a debugger, there is no reason why the stack layout used by GCC
4166need agree with that used by other compilers for a machine.
08c148a8
NB
4167@end deftypefn
4168
17b53c33
NB
4169@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *@var{file})
4170If defined, a function that outputs assembler code at the end of a
4171prologue. This should be used when the function prologue is being
4172emitted as RTL, and you have some extra assembler that needs to be
4173emitted. @xref{prologue instruction pattern}.
4174@end deftypefn
4175
4176@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *@var{file})
4177If defined, a function that outputs assembler code at the start of an
4178epilogue. This should be used when the function epilogue is being
4179emitted as RTL, and you have some extra assembler that needs to be
4180emitted. @xref{epilogue instruction pattern}.
4181@end deftypefn
4182
08c148a8
NB
4183@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_EPILOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
4184If defined, a function that outputs the assembler code for exit from a
4185function. The epilogue is responsible for restoring the saved
4186registers and stack pointer to their values when the function was
4187called, and returning control to the caller. This macro takes the
4188same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the
4189registers to restore are determined from @code{regs_ever_live} and
4190@code{CALL_USED_REGISTERS} in the same way.
4191
4192On some machines, there is a single instruction that does all the work
4193of returning from the function. On these machines, give that
4194instruction the name @samp{return} and do not define the macro
4195@code{TARGET_ASM_FUNCTION_EPILOGUE} at all.
4196
4197Do not define a pattern named @samp{return} if you want the
4198@code{TARGET_ASM_FUNCTION_EPILOGUE} to be used. If you want the target
4199switches to control whether return instructions or epilogues are used,
4200define a @samp{return} pattern with a validity condition that tests the
4201target switches appropriately. If the @samp{return} pattern's validity
4202condition is false, epilogues will be used.
4203
4204On machines where functions may or may not have frame-pointers, the
4205function exit code must vary accordingly. Sometimes the code for these
4206two cases is completely different. To determine whether a frame pointer
4207is wanted, the macro can refer to the variable
4208@code{frame_pointer_needed}. The variable's value will be 1 when compiling
4209a function that needs a frame pointer.
4210
4211Normally, @code{TARGET_ASM_FUNCTION_PROLOGUE} and
4212@code{TARGET_ASM_FUNCTION_EPILOGUE} must treat leaf functions specially.
4213The C variable @code{current_function_is_leaf} is nonzero for such a
4214function. @xref{Leaf Functions}.
4215
4216On some machines, some functions pop their arguments on exit while
4217others leave that for the caller to do. For example, the 68020 when
4218given @option{-mrtd} pops arguments in functions that take a fixed
4219number of arguments.
4220
4221@findex current_function_pops_args
4222Your definition of the macro @code{RETURN_POPS_ARGS} decides which
4223functions pop their own arguments. @code{TARGET_ASM_FUNCTION_EPILOGUE}
4224needs to know what was decided. The variable that is called
4225@code{current_function_pops_args} is the number of bytes of its
4226arguments that a function should pop. @xref{Scalar Return}.
4227@c what is the "its arguments" in the above sentence referring to, pray
4228@c tell? --mew 5feb93
4229@end deftypefn
4230
9ac617d4
EB
4231@deftypefn {Target Hook} bool TARGET_LATE_RTL_PROLOGUE_EPILOGUE
4232If set to @code{true}, it instructs the compiler to emit the RTL prologue
4233and epilogue later in the game than usual, namely after all passes that
4234modify the instructions (and not merely reorder them) have been run. In
4235particular, the C variable @code{current_function_uses_only_leaf_regs} is
4236valid at that point. This can be used on machines that have "register
4237windows" to optimize away the regular "push" on the register stack.
4238@xref{Leaf Functions}.
4239@end deftypefn
4240
feca2ed3
JW
4241@itemize @bullet
4242@item
4243@findex current_function_pretend_args_size
4244A region of @code{current_function_pretend_args_size} bytes of
4245uninitialized space just underneath the first argument arriving on the
4246stack. (This may not be at the very start of the allocated stack region
4247if the calling sequence has pushed anything else since pushing the stack
4248arguments. But usually, on such machines, nothing else has been pushed
4249yet, because the function prologue itself does all the pushing.) This
4250region is used on machines where an argument may be passed partly in
4251registers and partly in memory, and, in some cases to support the
6c535c69 4252features in @code{<stdarg.h>}.
feca2ed3
JW
4253
4254@item
4255An area of memory used to save certain registers used by the function.
4256The size of this area, which may also include space for such things as
4257the return address and pointers to previous stack frames, is
4258machine-specific and usually depends on which registers have been used
4259in the function. Machines with register windows often do not require
4260a save area.
4261
4262@item
4263A region of at least @var{size} bytes, possibly rounded up to an allocation
4264boundary, to contain the local variables of the function. On some machines,
4265this region and the save area may occur in the opposite order, with the
4266save area closer to the top of the stack.
4267
4268@item
4269@cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
4270Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
4271@code{current_function_outgoing_args_size} bytes to be used for outgoing
4272argument lists of the function. @xref{Stack Arguments}.
4273@end itemize
4274
a2c4f8e0 4275@defmac EXIT_IGNORE_STACK
feca2ed3
JW
4276Define this macro as a C expression that is nonzero if the return
4277instruction or the function epilogue ignores the value of the stack
4278pointer; in other words, if it is safe to delete an instruction to
9d05bbce
KH
4279adjust the stack pointer before a return from the function. The
4280default is 0.
feca2ed3
JW
4281
4282Note that this macro's value is relevant only for functions for which
4283frame pointers are maintained. It is never safe to delete a final
4284stack adjustment in a function that has no frame pointer, and the
4285compiler knows this regardless of @code{EXIT_IGNORE_STACK}.
a2c4f8e0 4286@end defmac
feca2ed3 4287
a2c4f8e0 4288@defmac EPILOGUE_USES (@var{regno})
8760eaae 4289Define this macro as a C expression that is nonzero for registers that are
feca2ed3
JW
4290used by the epilogue or the @samp{return} pattern. The stack and frame
4291pointer registers are already be assumed to be used as needed.
a2c4f8e0 4292@end defmac
feca2ed3 4293
a2c4f8e0 4294@defmac EH_USES (@var{regno})
15b5aef3
RH
4295Define this macro as a C expression that is nonzero for registers that are
4296used by the exception handling mechanism, and so should be considered live
4297on entry to an exception edge.
a2c4f8e0 4298@end defmac
15b5aef3 4299
a2c4f8e0 4300@defmac DELAY_SLOTS_FOR_EPILOGUE
feca2ed3
JW
4301Define this macro if the function epilogue contains delay slots to which
4302instructions from the rest of the function can be ``moved''. The
4303definition should be a C expression whose value is an integer
4304representing the number of delay slots there.
a2c4f8e0 4305@end defmac
feca2ed3 4306
a2c4f8e0 4307@defmac ELIGIBLE_FOR_EPILOGUE_DELAY (@var{insn}, @var{n})
feca2ed3
JW
4308A C expression that returns 1 if @var{insn} can be placed in delay
4309slot number @var{n} of the epilogue.
4310
4311The argument @var{n} is an integer which identifies the delay slot now
4312being considered (since different slots may have different rules of
4313eligibility). It is never negative and is always less than the number
4314of epilogue delay slots (what @code{DELAY_SLOTS_FOR_EPILOGUE} returns).
4315If you reject a particular insn for a given delay slot, in principle, it
4316may be reconsidered for a subsequent delay slot. Also, other insns may
4317(at least in principle) be considered for the so far unfilled delay
4318slot.
4319
4320@findex current_function_epilogue_delay_list
4321@findex final_scan_insn
4322The insns accepted to fill the epilogue delay slots are put in an RTL
4323list made with @code{insn_list} objects, stored in the variable
4324@code{current_function_epilogue_delay_list}. The insn for the first
4325delay slot comes first in the list. Your definition of the macro
08c148a8
NB
4326@code{TARGET_ASM_FUNCTION_EPILOGUE} should fill the delay slots by
4327outputting the insns in this list, usually by calling
4328@code{final_scan_insn}.
feca2ed3
JW
4329
4330You need not define this macro if you did not define
4331@code{DELAY_SLOTS_FOR_EPILOGUE}.
a2c4f8e0 4332@end defmac
feca2ed3 4333
eb0424da 4334@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, tree @var{function})
483ab821 4335A function that outputs the assembler code for a thunk
feca2ed3
JW
4336function, used to implement C++ virtual function calls with multiple
4337inheritance. The thunk acts as a wrapper around a virtual function,
4338adjusting the implicit object parameter before handing control off to
4339the real function.
4340
4341First, emit code to add the integer @var{delta} to the location that
4342contains the incoming first argument. Assume that this argument
4343contains a pointer, and is the one used to pass the @code{this} pointer
4344in C++. This is the incoming argument @emph{before} the function prologue,
e979f9e8 4345e.g.@: @samp{%o0} on a sparc. The addition must preserve the values of
feca2ed3
JW
4346all other incoming arguments.
4347
4348After the addition, emit code to jump to @var{function}, which is a
4349@code{FUNCTION_DECL}. This is a direct pure jump, not a call, and does
4350not touch the return address. Hence returning from @var{FUNCTION} will
4351return to whoever called the current @samp{thunk}.
4352
4353The effect must be as if @var{function} had been called directly with
4354the adjusted first argument. This macro is responsible for emitting all
08c148a8
NB
4355of the code for a thunk function; @code{TARGET_ASM_FUNCTION_PROLOGUE}
4356and @code{TARGET_ASM_FUNCTION_EPILOGUE} are not invoked.
feca2ed3
JW
4357
4358The @var{thunk_fndecl} is redundant. (@var{delta} and @var{function}
4359have already been extracted from it.) It might possibly be useful on
4360some targets, but probably not.
4361
861bb6c1 4362If you do not define this macro, the target-independent code in the C++
c771326b 4363front end will generate a less efficient heavyweight thunk that calls
861bb6c1
JL
4364@var{function} instead of jumping to it. The generic approach does
4365not support varargs.
483ab821
MM
4366@end deftypefn
4367
eb0424da 4368@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_VCALL_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, int @var{vcall_offset}, tree @var{function})
483ab821 4369A function like @code{TARGET_ASM_OUTPUT_MI_THUNK}, except that if
c0478a66 4370@var{vcall_offset} is nonzero, an additional adjustment should be made
483ab821
MM
4371after adding @code{delta}. In particular, if @var{p} is the
4372adjusted pointer, the following adjustment should be made:
4373
3ab51846 4374@smallexample
483ab821 4375p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
3ab51846 4376@end smallexample
483ab821
MM
4377
4378@noindent
4379If this function is defined, it will always be used in place of
4380@code{TARGET_ASM_OUTPUT_MI_THUNK}.
483ab821 4381@end deftypefn
feca2ed3
JW
4382
4383@node Profiling
4384@subsection Generating Code for Profiling
4385@cindex profiling, code generation
4386
4387These macros will help you generate code for profiling.
4388
a2c4f8e0 4389@defmac FUNCTION_PROFILER (@var{file}, @var{labelno})
feca2ed3
JW
4390A C statement or compound statement to output to @var{file} some
4391assembler code to call the profiling subroutine @code{mcount}.
feca2ed3
JW
4392
4393@findex mcount
980e2067 4394The details of how @code{mcount} expects to be called are determined by
161d7b59 4395your operating system environment, not by GCC@. To figure them out,
980e2067
JL
4396compile a small program for profiling using the system's installed C
4397compiler and look at the assembler code that results.
4398
4399Older implementations of @code{mcount} expect the address of a counter
4400variable to be loaded into some register. The name of this variable is
4401@samp{LP} followed by the number @var{labelno}, so you would generate
4402the name using @samp{LP%d} in a @code{fprintf}.
a2c4f8e0 4403@end defmac
980e2067 4404
a2c4f8e0 4405@defmac PROFILE_HOOK
411707f4
CC
4406A C statement or compound statement to output to @var{file} some assembly
4407code to call the profiling subroutine @code{mcount} even the target does
4408not support profiling.
a2c4f8e0 4409@end defmac
411707f4 4410
a2c4f8e0 4411@defmac NO_PROFILE_COUNTERS
980e2067
JL
4412Define this macro if the @code{mcount} subroutine on your system does
4413not need a counter variable allocated for each function. This is true
4414for almost all modern implementations. If you define this macro, you
4415must not use the @var{labelno} argument to @code{FUNCTION_PROFILER}.
a2c4f8e0 4416@end defmac
feca2ed3 4417
a2c4f8e0 4418@defmac PROFILE_BEFORE_PROLOGUE
feca2ed3
JW
4419Define this macro if the code for function profiling should come before
4420the function prologue. Normally, the profiling code comes after.
a2c4f8e0 4421@end defmac
feca2ed3 4422
91d231cb
JM
4423@node Tail Calls
4424@subsection Permitting tail calls
4425@cindex tail calls
b36f4ed3 4426
4977bab6
ZW
4427@deftypefn {Target Hook} bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree @var{decl}, tree @var{exp})
4428True if it is ok to do sibling call optimization for the specified
4429call expression @var{exp}. @var{decl} will be the called function,
4430or @code{NULL} if this is an indirect call.
4cb1433c
RH
4431
4432It is not uncommon for limitations of calling conventions to prevent
4433tail calls to functions outside the current unit of translation, or
4977bab6 4434during PIC compilation. The hook is used to enforce these restrictions,
02f52e19 4435as the @code{sibcall} md pattern can not fail, or fall over to a
4977bab6
ZW
4436``normal'' call. The criteria for successful sibling call optimization
4437may vary greatly between different architectures.
4438@end deftypefn
4cb1433c 4439
feca2ed3
JW
4440@node Varargs
4441@section Implementing the Varargs Macros
4442@cindex varargs implementation
4443
aee96fe9
JM
4444GCC comes with an implementation of @code{<varargs.h>} and
4445@code{<stdarg.h>} that work without change on machines that pass arguments
feca2ed3
JW
4446on the stack. Other machines require their own implementations of
4447varargs, and the two machine independent header files must have
4448conditionals to include it.
4449
aee96fe9 4450ISO @code{<stdarg.h>} differs from traditional @code{<varargs.h>} mainly in
feca2ed3
JW
4451the calling convention for @code{va_start}. The traditional
4452implementation takes just one argument, which is the variable in which
5490d604 4453to store the argument pointer. The ISO implementation of
feca2ed3
JW
4454@code{va_start} takes an additional second argument. The user is
4455supposed to write the last named argument of the function here.
4456
4457However, @code{va_start} should not use this argument. The way to find
4458the end of the named arguments is with the built-in functions described
4459below.
4460
a2c4f8e0 4461@defmac __builtin_saveregs ()
feca2ed3 4462Use this built-in function to save the argument registers in memory so
5490d604 4463that the varargs mechanism can access them. Both ISO and traditional
feca2ed3 4464versions of @code{va_start} must use @code{__builtin_saveregs}, unless
c2379679 4465you use @code{TARGET_SETUP_INCOMING_VARARGS} (see below) instead.
feca2ed3
JW
4466
4467On some machines, @code{__builtin_saveregs} is open-coded under the
f61c92c3
KH
4468control of the target hook @code{TARGET_EXPAND_BUILTIN_SAVEREGS}. On
4469other machines, it calls a routine written in assembler language,
4470found in @file{libgcc2.c}.
feca2ed3
JW
4471
4472Code generated for the call to @code{__builtin_saveregs} appears at the
4473beginning of the function, as opposed to where the call to
4474@code{__builtin_saveregs} is written, regardless of what the code is.
4475This is because the registers must be saved before the function starts
4476to use them for its own purposes.
4477@c i rewrote the first sentence above to fix an overfull hbox. --mew
4478@c 10feb93
a2c4f8e0 4479@end defmac
feca2ed3 4480
a2c4f8e0 4481@defmac __builtin_args_info (@var{category})
feca2ed3
JW
4482Use this built-in function to find the first anonymous arguments in
4483registers.
4484
4485In general, a machine may have several categories of registers used for
4486arguments, each for a particular category of data types. (For example,
4487on some machines, floating-point registers are used for floating-point
4488arguments while other arguments are passed in the general registers.)
4489To make non-varargs functions use the proper calling convention, you
4490have defined the @code{CUMULATIVE_ARGS} data type to record how many
4491registers in each category have been used so far
4492
4493@code{__builtin_args_info} accesses the same data structure of type
4494@code{CUMULATIVE_ARGS} after the ordinary argument layout is finished
4495with it, with @var{category} specifying which word to access. Thus, the
4496value indicates the first unused register in a given category.
4497
4498Normally, you would use @code{__builtin_args_info} in the implementation
4499of @code{va_start}, accessing each category just once and storing the
4500value in the @code{va_list} object. This is because @code{va_list} will
4501have to update the values, and there is no way to alter the
4502values accessed by @code{__builtin_args_info}.
a2c4f8e0 4503@end defmac
feca2ed3 4504
a2c4f8e0 4505@defmac __builtin_next_arg (@var{lastarg})
feca2ed3
JW
4506This is the equivalent of @code{__builtin_args_info}, for stack
4507arguments. It returns the address of the first anonymous stack
767094dd 4508argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it
feca2ed3
JW
4509returns the address of the location above the first anonymous stack
4510argument. Use it in @code{va_start} to initialize the pointer for
4511fetching arguments from the stack. Also use it in @code{va_start} to
4512verify that the second parameter @var{lastarg} is the last named argument
4513of the current function.
a2c4f8e0 4514@end defmac
feca2ed3 4515
a2c4f8e0 4516@defmac __builtin_classify_type (@var{object})
feca2ed3
JW
4517Since each machine has its own conventions for which data types are
4518passed in which kind of register, your implementation of @code{va_arg}
4519has to embody these conventions. The easiest way to categorize the
4520specified data type is to use @code{__builtin_classify_type} together
4521with @code{sizeof} and @code{__alignof__}.
4522
4523@code{__builtin_classify_type} ignores the value of @var{object},
4524considering only its data type. It returns an integer describing what
4525kind of type that is---integer, floating, pointer, structure, and so on.
4526
4527The file @file{typeclass.h} defines an enumeration that you can use to
4528interpret the values of @code{__builtin_classify_type}.
a2c4f8e0 4529@end defmac
feca2ed3
JW
4530
4531These machine description macros help implement varargs:
4532
61f71b34
DD
4533@deftypefn {Target Hook} rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
4534If defined, this hook produces the machine-specific code for a call to
4535@code{__builtin_saveregs}. This code will be moved to the very
4536beginning of the function, before any parameter access are made. The
4537return value of this function should be an RTX that contains the value
4538to use as the return of @code{__builtin_saveregs}.
4539@end deftypefn
feca2ed3 4540
61f71b34
DD
4541@deftypefn {Target Hook} void TARGET_SETUP_INCOMING_VARARGS (CUMULATIVE_ARGS *@var{args_so_far}, enum machine_mode @var{mode}, tree @var{type}, int *@var{pretend_args_size}, int @var{second_time})
4542This target hook offers an alternative to using
4543@code{__builtin_saveregs} and defining the hook
4544@code{TARGET_EXPAND_BUILTIN_SAVEREGS}. Use it to store the anonymous
4545register arguments into the stack so that all the arguments appear to
4546have been passed consecutively on the stack. Once this is done, you can
4547use the standard implementation of varargs that works for machines that
4548pass all their arguments on the stack.
feca2ed3 4549
61f71b34 4550The argument @var{args_so_far} points to the @code{CUMULATIVE_ARGS} data
8760eaae 4551structure, containing the values that are obtained after processing the
feca2ed3
JW
4552named arguments. The arguments @var{mode} and @var{type} describe the
4553last named argument---its machine mode and its data type as a tree node.
4554
61f71b34
DD
4555The target hook should do two things: first, push onto the stack all the
4556argument registers @emph{not} used for the named arguments, and second,
4557store the size of the data thus pushed into the @code{int}-valued
4558variable pointed to by @var{pretend_args_size}. The value that you
4559store here will serve as additional offset for setting up the stack
4560frame.
feca2ed3
JW
4561
4562Because you must generate code to push the anonymous arguments at
4563compile time without knowing their data types,
61f71b34
DD
4564@code{TARGET_SETUP_INCOMING_VARARGS} is only useful on machines that
4565have just a single category of argument register and use it uniformly
4566for all data types.
feca2ed3
JW
4567
4568If the argument @var{second_time} is nonzero, it means that the
4569arguments of the function are being analyzed for the second time. This
4570happens for an inline function, which is not actually compiled until the
61f71b34 4571end of the source file. The hook @code{TARGET_SETUP_INCOMING_VARARGS} should
feca2ed3 4572not generate any instructions in this case.
61f71b34 4573@end deftypefn
feca2ed3 4574
61f71b34
DD
4575@deftypefn {Target Hook} bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS *@var{ca})
4576Define this hook to return @code{true} if the location where a function
e5e809f4 4577argument is passed depends on whether or not it is a named argument.
feca2ed3 4578
61f71b34
DD
4579This hook controls how the @var{named} argument to @code{FUNCTION_ARG}
4580is set for varargs and stdarg functions. If this hook returns
4581@code{true}, the @var{named} argument is always true for named
4582arguments, and false for unnamed arguments. If it returns @code{false},
4583but @code{TARGET_PRETEND_OUTOGOING_VARARGS_NAMED} returns @code{true},
4584then all arguments are treated as named. Otherwise, all named arguments
4585except the last are treated as named.
e5e809f4 4586
61f71b34
DD
4587You need not define this hook if it always returns zero.
4588@end deftypefn
9ab70a9b 4589
61f71b34 4590@deftypefn {Target Hook} bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
9ab70a9b 4591If you need to conditionally change ABIs so that one works with
61f71b34
DD
4592@code{TARGET_SETUP_INCOMING_VARARGS}, but the other works like neither
4593@code{TARGET_SETUP_INCOMING_VARARGS} nor @code{TARGET_STRICT_ARGUMENT_NAMING} was
4594defined, then define this hook to return @code{true} if
c2379679 4595@code{TARGET_SETUP_INCOMING_VARARGS} is used, @code{false} otherwise.
61f71b34
DD
4596Otherwise, you should not define this hook.
4597@end deftypefn
feca2ed3
JW
4598
4599@node Trampolines
4600@section Trampolines for Nested Functions
4601@cindex trampolines for nested functions
4602@cindex nested functions, trampolines for
4603
4604A @dfn{trampoline} is a small piece of code that is created at run time
4605when the address of a nested function is taken. It normally resides on
4606the stack, in the stack frame of the containing function. These macros
a3a15b4d 4607tell GCC how to generate code to allocate and initialize a
feca2ed3
JW
4608trampoline.
4609
4610The instructions in the trampoline must do two things: load a constant
4611address into the static chain register, and jump to the real address of
4612the nested function. On CISC machines such as the m68k, this requires
4613two instructions, a move immediate and a jump. Then the two addresses
4614exist in the trampoline as word-long immediate operands. On RISC
4615machines, it is often necessary to load each address into a register in
4616two parts. Then pieces of each address form separate immediate
4617operands.
4618
4619The code generated to initialize the trampoline must store the variable
4620parts---the static chain value and the function address---into the
4621immediate operands of the instructions. On a CISC machine, this is
4622simply a matter of copying each address to a memory reference at the
4623proper offset from the start of the trampoline. On a RISC machine, it
4624may be necessary to take out pieces of the address and store them
4625separately.
4626
a2c4f8e0 4627@defmac TRAMPOLINE_TEMPLATE (@var{file})
feca2ed3
JW
4628A C statement to output, on the stream @var{file}, assembler code for a
4629block of data that contains the constant parts of a trampoline. This
4630code should not include a label---the label is taken care of
4631automatically.
4632
4633If you do not define this macro, it means no template is needed
4634for the target. Do not define this macro on systems where the block move
4635code to copy the trampoline into place would be larger than the code
4636to generate it on the spot.
a2c4f8e0 4637@end defmac
feca2ed3 4638
a2c4f8e0 4639@defmac TRAMPOLINE_SECTION
feca2ed3
JW
4640The name of a subroutine to switch to the section in which the
4641trampoline template is to be placed (@pxref{Sections}). The default is
4642a value of @samp{readonly_data_section}, which places the trampoline in
4643the section containing read-only data.
a2c4f8e0 4644@end defmac
feca2ed3 4645
a2c4f8e0 4646@defmac TRAMPOLINE_SIZE
feca2ed3 4647A C expression for the size in bytes of the trampoline, as an integer.
a2c4f8e0 4648@end defmac
feca2ed3 4649
a2c4f8e0 4650@defmac TRAMPOLINE_ALIGNMENT
feca2ed3
JW
4651Alignment required for trampolines, in bits.
4652
4653If you don't define this macro, the value of @code{BIGGEST_ALIGNMENT}
4654is used for aligning trampolines.
a2c4f8e0 4655@end defmac
feca2ed3 4656
a2c4f8e0 4657@defmac INITIALIZE_TRAMPOLINE (@var{addr}, @var{fnaddr}, @var{static_chain})
feca2ed3
JW
4658A C statement to initialize the variable parts of a trampoline.
4659@var{addr} is an RTX for the address of the trampoline; @var{fnaddr} is
4660an RTX for the address of the nested function; @var{static_chain} is an
4661RTX for the static chain value that should be passed to the function
4662when it is called.
a2c4f8e0 4663@end defmac
feca2ed3 4664
a2c4f8e0 4665@defmac TRAMPOLINE_ADJUST_ADDRESS (@var{addr})
b33493e3
AO
4666A C statement that should perform any machine-specific adjustment in
4667the address of the trampoline. Its argument contains the address that
4668was passed to @code{INITIALIZE_TRAMPOLINE}. In case the address to be
4669used for a function call should be different from the address in which
4670the template was stored, the different address should be assigned to
4671@var{addr}. If this macro is not defined, @var{addr} will be used for
4672function calls.
4673
08c148a8
NB
4674@cindex @code{TARGET_ASM_FUNCTION_EPILOGUE} and trampolines
4675@cindex @code{TARGET_ASM_FUNCTION_PROLOGUE} and trampolines
feca2ed3
JW
4676If this macro is not defined, by default the trampoline is allocated as
4677a stack slot. This default is right for most machines. The exceptions
4678are machines where it is impossible to execute instructions in the stack
4679area. On such machines, you may have to implement a separate stack,
08c148a8
NB
4680using this macro in conjunction with @code{TARGET_ASM_FUNCTION_PROLOGUE}
4681and @code{TARGET_ASM_FUNCTION_EPILOGUE}.
feca2ed3
JW
4682
4683@var{fp} points to a data structure, a @code{struct function}, which
4684describes the compilation status of the immediate containing function of
0d569849 4685the function which the trampoline is for. The stack slot for the
feca2ed3
JW
4686trampoline is in the stack frame of this containing function. Other
4687allocation strategies probably must do something analogous with this
4688information.
a2c4f8e0 4689@end defmac
feca2ed3
JW
4690
4691Implementing trampolines is difficult on many machines because they have
4692separate instruction and data caches. Writing into a stack location
4693fails to clear the memory in the instruction cache, so when the program
4694jumps to that location, it executes the old contents.
4695
4696Here are two possible solutions. One is to clear the relevant parts of
4697the instruction cache whenever a trampoline is set up. The other is to
4698make all trampolines identical, by having them jump to a standard
4699subroutine. The former technique makes trampoline execution faster; the
4700latter makes initialization faster.
4701
4702To clear the instruction cache when a trampoline is initialized, define
f691dc3b 4703the following macro.
feca2ed3 4704
a2c4f8e0 4705@defmac CLEAR_INSN_CACHE (@var{beg}, @var{end})
feca2ed3 4706If defined, expands to a C expression clearing the @emph{instruction
f691dc3b
AJ
4707cache} in the specified interval. The definition of this macro would
4708typically be a series of @code{asm} statements. Both @var{beg} and
4709@var{end} are both pointer expressions.
a2c4f8e0 4710@end defmac
feca2ed3
JW
4711
4712To use a standard subroutine, define the following macro. In addition,
4713you must make sure that the instructions in a trampoline fill an entire
4714cache line with identical instructions, or else ensure that the
4715beginning of the trampoline code is always aligned at the same point in
4716its cache line. Look in @file{m68k.h} as a guide.
4717
a2c4f8e0 4718@defmac TRANSFER_FROM_TRAMPOLINE
feca2ed3
JW
4719Define this macro if trampolines need a special subroutine to do their
4720work. The macro should expand to a series of @code{asm} statements
161d7b59 4721which will be compiled with GCC@. They go in a library function named
feca2ed3
JW
4722@code{__transfer_from_trampoline}.
4723
4724If you need to avoid executing the ordinary prologue code of a compiled
4725C function when you jump to the subroutine, you can do so by placing a
4726special label of your own in the assembler code. Use one @code{asm}
4727statement to generate an assembler label, and another to make the label
4728global. Then trampolines can use that label to jump directly to your
4729special assembler code.
a2c4f8e0 4730@end defmac
feca2ed3
JW
4731
4732@node Library Calls
4733@section Implicit Calls to Library Routines
4734@cindex library subroutine names
4735@cindex @file{libgcc.a}
4736
4737@c prevent bad page break with this line
4738Here is an explanation of implicit calls to library routines.
4739
a2c4f8e0 4740@defmac DECLARE_LIBRARY_RENAMES
d8088c6f
BS
4741This macro, if defined, should expand to a piece of C code that will get
4742expanded when compiling functions for libgcc.a. It can be used to
2dd76960 4743provide alternate names for GCC's internal library functions if there
d8088c6f 4744are ABI-mandated names that the compiler should provide.
a2c4f8e0 4745@end defmac
d8088c6f 4746
c15c90bb
ZW
4747@findex init_one_libfunc
4748@findex set_optab_libfunc
4749@deftypefn {Target Hook} void TARGET_INIT_LIBFUNCS (void)
4750This hook should declare additional library routines or rename
4751existing ones, using the functions @code{set_optab_libfunc} and
4752@code{init_one_libfunc} defined in @file{optabs.c}.
4753@code{init_optabs} calls this macro after initializing all the normal
4754library routines.
feca2ed3 4755
c15c90bb
ZW
4756The default is to do nothing. Most ports don't need to define this hook.
4757@end deftypefn
c5c60e15 4758
9c917669 4759@defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison})
c15c90bb
ZW
4760This macro should return @code{true} if the library routine that
4761implements the floating point comparison operator @var{comparison} in
4762mode @var{mode} will return a boolean, and @var{false} if it will
4763return a tristate.
4764
4765GCC's own floating point libraries return tristates from the
4766comparison operators, so the default returns false always. Most ports
4767don't need to define this macro.
4768@end defmac
4769
4770@cindex US Software GOFAST, floating point emulation library
4771@cindex floating point emulation library, US Software GOFAST
4772@cindex GOFAST, floating point emulation library
4773@findex gofast_maybe_init_libfuncs
4774@defmac US_SOFTWARE_GOFAST
4775Define this macro if your system C library uses the US Software GOFAST
73774972 4776library to provide floating point emulation.
c15c90bb
ZW
4777
4778In addition to defining this macro, your architecture must set
4779@code{TARGET_INIT_LIBFUNCS} to @code{gofast_maybe_init_libfuncs}, or
4780else call that function from its version of that hook. It is defined
4781in @file{config/gofast.h}, which must be included by your
4782architecture's @file{@var{cpu}.c} file. See @file{sparc/sparc.c} for
4783an example.
4784
4785If this macro is defined, the
4786@code{TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL} target hook must return
4787false for @code{SFmode} and @code{DFmode} comparisons.
a2c4f8e0 4788@end defmac
c5c60e15 4789
feca2ed3 4790@cindex @code{EDOM}, implicit usage
a2c4f8e0
ZW
4791@findex matherr
4792@defmac TARGET_EDOM
feca2ed3 4793The value of @code{EDOM} on the target machine, as a C integer constant
a3a15b4d 4794expression. If you don't define this macro, GCC does not attempt to
feca2ed3
JW
4795deposit the value of @code{EDOM} into @code{errno} directly. Look in
4796@file{/usr/include/errno.h} to find the value of @code{EDOM} on your
4797system.
4798
4799If you do not define @code{TARGET_EDOM}, then compiled code reports
4800domain errors by calling the library function and letting it report the
4801error. If mathematical functions on your system use @code{matherr} when
4802there is an error, then you should leave @code{TARGET_EDOM} undefined so
4803that @code{matherr} is used normally.
a2c4f8e0 4804@end defmac
feca2ed3 4805
feca2ed3 4806@cindex @code{errno}, implicit usage
a2c4f8e0 4807@defmac GEN_ERRNO_RTX
feca2ed3
JW
4808Define this macro as a C expression to create an rtl expression that
4809refers to the global ``variable'' @code{errno}. (On certain systems,
4810@code{errno} may not actually be a variable.) If you don't define this
4811macro, a reasonable default is used.
a2c4f8e0 4812@end defmac
feca2ed3 4813
272f51a3 4814@cindex C99 math functions, implicit usage
a2c4f8e0 4815@defmac TARGET_C99_FUNCTIONS
272f51a3 4816When this macro is nonzero, GCC will implicitly optimize @code{sin} calls into
3bcf1b13 4817@code{sinf} and similarly for other functions defined by C99 standard. The
272f51a3
JH
4818default is nonzero that should be proper value for most modern systems, however
4819number of existing systems lacks support for these functions in the runtime so
4820they needs this macro to be redefined to 0.
a2c4f8e0 4821@end defmac
272f51a3 4822
a2c4f8e0 4823@defmac NEXT_OBJC_RUNTIME
2147b154 4824Define this macro to generate code for Objective-C message sending using
feca2ed3
JW
4825the calling convention of the NeXT system. This calling convention
4826involves passing the object, the selector and the method arguments all
4827at once to the method-lookup library function.
4828
4829The default calling convention passes just the object and the selector
4830to the lookup function, which returns a pointer to the method.
a2c4f8e0 4831@end defmac
feca2ed3
JW
4832
4833@node Addressing Modes
4834@section Addressing Modes
4835@cindex addressing modes
4836
4837@c prevent bad page break with this line
4838This is about addressing modes.
4839
a2c4f8e0
ZW
4840@defmac HAVE_PRE_INCREMENT
4841@defmacx HAVE_PRE_DECREMENT
4842@defmacx HAVE_POST_INCREMENT
4843@defmacx HAVE_POST_DECREMENT
df2a54e9 4844A C expression that is nonzero if the machine supports pre-increment,
7a6bd5ae 4845pre-decrement, post-increment, or post-decrement addressing respectively.
a2c4f8e0 4846@end defmac
feca2ed3 4847
a2c4f8e0
ZW
4848@defmac HAVE_PRE_MODIFY_DISP
4849@defmacx HAVE_POST_MODIFY_DISP
df2a54e9 4850A C expression that is nonzero if the machine supports pre- or
7a6bd5ae
JL
4851post-address side-effect generation involving constants other than
4852the size of the memory operand.
a2c4f8e0 4853@end defmac
864bcaa7 4854
a2c4f8e0
ZW
4855@defmac HAVE_PRE_MODIFY_REG
4856@defmacx HAVE_POST_MODIFY_REG
df2a54e9 4857A C expression that is nonzero if the machine supports pre- or
7a6bd5ae 4858post-address side-effect generation involving a register displacement.
a2c4f8e0 4859@end defmac
864bcaa7 4860
a2c4f8e0 4861@defmac CONSTANT_ADDRESS_P (@var{x})
feca2ed3
JW
4862A C expression that is 1 if the RTX @var{x} is a constant which
4863is a valid address. On most machines, this can be defined as
4864@code{CONSTANT_P (@var{x})}, but a few machines are more restrictive
4865in which constant addresses are supported.
a2c4f8e0 4866@end defmac
feca2ed3 4867
a2c4f8e0
ZW
4868@defmac CONSTANT_P (@var{x})
4869@code{CONSTANT_P}, which is defined by target-independent code,
4870accepts integer-values expressions whose values are not explicitly
4871known, such as @code{symbol_ref}, @code{label_ref}, and @code{high}
4872expressions and @code{const} arithmetic expressions, in addition to
4873@code{const_int} and @code{const_double} expressions.
4874@end defmac
feca2ed3 4875
a2c4f8e0 4876@defmac MAX_REGS_PER_ADDRESS
feca2ed3
JW
4877A number, the maximum number of registers that can appear in a valid
4878memory address. Note that it is up to you to specify a value equal to
4879the maximum number that @code{GO_IF_LEGITIMATE_ADDRESS} would ever
4880accept.
a2c4f8e0 4881@end defmac
feca2ed3 4882
a2c4f8e0 4883@defmac GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label})
feca2ed3
JW
4884A C compound statement with a conditional @code{goto @var{label};}
4885executed if @var{x} (an RTX) is a legitimate memory address on the
4886target machine for a memory operand of mode @var{mode}.
4887
4888It usually pays to define several simpler macros to serve as
4889subroutines for this one. Otherwise it may be too complicated to
4890understand.
4891
4892This macro must exist in two variants: a strict variant and a
4893non-strict one. The strict variant is used in the reload pass. It
4894must be defined so that any pseudo-register that has not been
4895allocated a hard register is considered a memory reference. In
4896contexts where some kind of register is required, a pseudo-register
4897with no hard register must be rejected.
4898
4899The non-strict variant is used in other passes. It must be defined to
4900accept all pseudo-registers in every context where some kind of
4901register is required.
4902
4903@findex REG_OK_STRICT
4904Compiler source files that want to use the strict variant of this
4905macro define the macro @code{REG_OK_STRICT}. You should use an
4906@code{#ifdef REG_OK_STRICT} conditional to define the strict variant
4907in that case and the non-strict variant otherwise.
4908
4909Subroutines to check for acceptable registers for various purposes (one
4910for base registers, one for index registers, and so on) are typically
4911among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}.
4912Then only these subroutine macros need have two variants; the higher
bd819a4a 4913levels of macros may be the same whether strict or not.
feca2ed3
JW
4914
4915Normally, constant addresses which are the sum of a @code{symbol_ref}
4916and an integer are stored inside a @code{const} RTX to mark them as
4917constant. Therefore, there is no need to recognize such sums
4918specifically as legitimate addresses. Normally you would simply
4919recognize any @code{const} as legitimate.
4920
4921Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant
4922sums that are not marked with @code{const}. It assumes that a naked
4923@code{plus} indicates indexing. If so, then you @emph{must} reject such
4924naked constant sums as illegitimate addresses, so that none of them will
4925be given to @code{PRINT_OPERAND_ADDRESS}.
4926
fb49053f 4927@cindex @code{TARGET_ENCODE_SECTION_INFO} and address validation
feca2ed3
JW
4928On some machines, whether a symbolic address is legitimate depends on
4929the section that the address refers to. On these machines, define the
fb49053f
RH
4930target hook @code{TARGET_ENCODE_SECTION_INFO} to store the information
4931into the @code{symbol_ref}, and then check for it here. When you see a
feca2ed3
JW
4932@code{const}, you will have to look inside it to find the
4933@code{symbol_ref} in order to determine the section. @xref{Assembler
4934Format}.
a2c4f8e0 4935@end defmac
feca2ed3 4936
a2c4f8e0 4937@defmac REG_OK_FOR_BASE_P (@var{x})
feca2ed3
JW
4938A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4939RTX) is valid for use as a base register. For hard registers, it
4940should always accept those which the hardware permits and reject the
4941others. Whether the macro accepts or rejects pseudo registers must be
4942controlled by @code{REG_OK_STRICT} as described above. This usually
4943requires two variant definitions, of which @code{REG_OK_STRICT}
4944controls the one actually used.
a2c4f8e0 4945@end defmac
feca2ed3 4946
a2c4f8e0 4947@defmac REG_MODE_OK_FOR_BASE_P (@var{x}, @var{mode})
861bb6c1
JL
4948A C expression that is just like @code{REG_OK_FOR_BASE_P}, except that
4949that expression may examine the mode of the memory reference in
4950@var{mode}. You should define this macro if the mode of the memory
4951reference affects whether a register may be used as a base register. If
4952you define this macro, the compiler will use it instead of
4953@code{REG_OK_FOR_BASE_P}.
a2c4f8e0 4954@end defmac
861bb6c1 4955
a2c4f8e0 4956@defmac REG_OK_FOR_INDEX_P (@var{x})
feca2ed3
JW
4957A C expression that is nonzero if @var{x} (assumed to be a @code{reg}
4958RTX) is valid for use as an index register.
4959
4960The difference between an index register and a base register is that
4961the index register may be scaled. If an address involves the sum of
4962two registers, neither one of them scaled, then either one may be
4963labeled the ``base'' and the other the ``index''; but whichever
4964labeling is used must fit the machine's constraints of which registers
4965may serve in each capacity. The compiler will try both labelings,
4966looking for one that is valid, and will reload one or both registers
4967only if neither labeling works.
a2c4f8e0 4968@end defmac
feca2ed3 4969
a2c4f8e0 4970@defmac FIND_BASE_TERM (@var{x})
b949ea8b
JW
4971A C expression to determine the base term of address @var{x}.
4972This macro is used in only one place: `find_base_term' in alias.c.
4973
4974It is always safe for this macro to not be defined. It exists so
4975that alias analysis can understand machine-dependent addresses.
4976
4977The typical use of this macro is to handle addresses containing
161d7b59 4978a label_ref or symbol_ref within an UNSPEC@.
a2c4f8e0 4979@end defmac
b949ea8b 4980
a2c4f8e0 4981@defmac LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win})
feca2ed3
JW
4982A C compound statement that attempts to replace @var{x} with a valid
4983memory address for an operand of mode @var{mode}. @var{win} will be a
4984C statement label elsewhere in the code; the macro definition may use
4985
3ab51846 4986@smallexample
feca2ed3 4987GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win});
3ab51846 4988@end smallexample
feca2ed3
JW
4989
4990@noindent
4991to avoid further processing if the address has become legitimate.
4992
4993@findex break_out_memory_refs
4994@var{x} will always be the result of a call to @code{break_out_memory_refs},
4995and @var{oldx} will be the operand that was given to that function to produce
4996@var{x}.
4997
4998The code generated by this macro should not alter the substructure of
4999@var{x}. If it transforms @var{x} into a more legitimate form, it
5000should assign @var{x} (which will always be a C variable) a new value.
5001
5002It is not necessary for this macro to come up with a legitimate
5003address. The compiler has standard ways of doing so in all cases. In
3e759eda 5004fact, it is safe to omit this macro. But often a
feca2ed3 5005machine-dependent strategy can generate better code.
a2c4f8e0 5006@end defmac
feca2ed3 5007
a2c4f8e0 5008@defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win})
a9a2595b
JR
5009A C compound statement that attempts to replace @var{x}, which is an address
5010that needs reloading, with a valid memory address for an operand of mode
5011@var{mode}. @var{win} will be a C statement label elsewhere in the code.
5012It is not necessary to define this macro, but it might be useful for
02f52e19 5013performance reasons.
a9a2595b
JR
5014
5015For example, on the i386, it is sometimes possible to use a single
5016reload register instead of two by reloading a sum of two pseudo
5017registers into a register. On the other hand, for number of RISC
5018processors offsets are limited so that often an intermediate address
5019needs to be generated in order to address a stack slot. By defining
aee96fe9 5020@code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses
a9a2595b
JR
5021generated for adjacent some stack slots can be made identical, and thus
5022be shared.
5023
39bdfaa0
RH
5024@emph{Note}: This macro should be used with caution. It is necessary
5025to know something of how reload works in order to effectively use this,
5026and it is quite easy to produce macros that build in too much knowledge
5027of reload internals.
a9a2595b 5028
5f0c590d
JL
5029@emph{Note}: This macro must be able to reload an address created by a
5030previous invocation of this macro. If it fails to handle such addresses
5031then the compiler may generate incorrect code or abort.
5032
a9a2595b 5033@findex push_reload
39bdfaa0
RH
5034The macro definition should use @code{push_reload} to indicate parts that
5035need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually
5036suitable to be passed unaltered to @code{push_reload}.
a9a2595b 5037
39bdfaa0 5038The code generated by this macro must not alter the substructure of
a9a2595b
JR
5039@var{x}. If it transforms @var{x} into a more legitimate form, it
5040should assign @var{x} (which will always be a C variable) a new value.
5041This also applies to parts that you change indirectly by calling
5042@code{push_reload}.
5043
39bdfaa0
RH
5044@findex strict_memory_address_p
5045The macro definition may use @code{strict_memory_address_p} to test if
5046the address has become legitimate.
5047
a9a2595b
JR
5048@findex copy_rtx
5049If you want to change only a part of @var{x}, one standard way of doing
5050this is to use @code{copy_rtx}. Note, however, that is unshares only a
5051single level of rtl. Thus, if the part to be changed is not at the
c771326b 5052top level, you'll need to replace first the top level.
a9a2595b
JR
5053It is not necessary for this macro to come up with a legitimate
5054address; but often a machine-dependent strategy can generate better code.
a2c4f8e0 5055@end defmac
a9a2595b 5056
a2c4f8e0 5057@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
feca2ed3
JW
5058A C statement or compound statement with a conditional @code{goto
5059@var{label};} executed if memory address @var{x} (an RTX) can have
5060different meanings depending on the machine mode of the memory
5061reference it is used for or if the address is valid for some modes
5062but not others.
5063
5064Autoincrement and autodecrement addresses typically have mode-dependent
5065effects because the amount of the increment or decrement is the size
5066of the operand being addressed. Some machines have other mode-dependent
5067addresses. Many RISC machines have no mode-dependent addresses.
5068
5069You may assume that @var{addr} is a valid address for the machine.
a2c4f8e0 5070@end defmac
feca2ed3 5071
a2c4f8e0 5072@defmac LEGITIMATE_CONSTANT_P (@var{x})
feca2ed3
JW
5073A C expression that is nonzero if @var{x} is a legitimate constant for
5074an immediate operand on the target machine. You can assume that
5075@var{x} satisfies @code{CONSTANT_P}, so you need not check this. In fact,
5076@samp{1} is a suitable definition for this macro on machines where
bd819a4a 5077anything @code{CONSTANT_P} is valid.
a2c4f8e0 5078@end defmac
feca2ed3
JW
5079
5080@node Condition Code
5081@section Condition Code Status
5082@cindex condition code status
5083
5084@c prevent bad page break with this line
5085This describes the condition code status.
5086
5087@findex cc_status
5088The file @file{conditions.h} defines a variable @code{cc_status} to
5089describe how the condition code was computed (in case the interpretation of
5090the condition code depends on the instruction that it was set by). This
5091variable contains the RTL expressions on which the condition code is
5092currently based, and several standard flags.
5093
5094Sometimes additional machine-specific flags must be defined in the machine
5095description header file. It can also add additional machine-specific
5096information by defining @code{CC_STATUS_MDEP}.
5097
a2c4f8e0 5098@defmac CC_STATUS_MDEP
feca2ed3
JW
5099C code for a data type which is used for declaring the @code{mdep}
5100component of @code{cc_status}. It defaults to @code{int}.
5101
5102This macro is not used on machines that do not use @code{cc0}.
a2c4f8e0 5103@end defmac
feca2ed3 5104
a2c4f8e0 5105@defmac CC_STATUS_MDEP_INIT
feca2ed3
JW
5106A C expression to initialize the @code{mdep} field to ``empty''.
5107The default definition does nothing, since most machines don't use
5108the field anyway. If you want to use the field, you should probably
5109define this macro to initialize it.
5110
5111This macro is not used on machines that do not use @code{cc0}.
a2c4f8e0 5112@end defmac
feca2ed3 5113
a2c4f8e0 5114@defmac NOTICE_UPDATE_CC (@var{exp}, @var{insn})
feca2ed3
JW
5115A C compound statement to set the components of @code{cc_status}
5116appropriately for an insn @var{insn} whose body is @var{exp}. It is
5117this macro's responsibility to recognize insns that set the condition
5118code as a byproduct of other activity as well as those that explicitly
5119set @code{(cc0)}.
5120
5121This macro is not used on machines that do not use @code{cc0}.
5122
5123If there are insns that do not set the condition code but do alter
5124other machine registers, this macro must check to see whether they
5125invalidate the expressions that the condition code is recorded as
5126reflecting. For example, on the 68000, insns that store in address
5127registers do not set the condition code, which means that usually
5128@code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such
5129insns. But suppose that the previous insn set the condition code
5130based on location @samp{a4@@(102)} and the current insn stores a new
5131value in @samp{a4}. Although the condition code is not changed by
5132this, it will no longer be true that it reflects the contents of
5133@samp{a4@@(102)}. Therefore, @code{NOTICE_UPDATE_CC} must alter
5134@code{cc_status} in this case to say that nothing is known about the
5135condition code value.
5136
5137The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal
5138with the results of peephole optimization: insns whose patterns are
5139@code{parallel} RTXs containing various @code{reg}, @code{mem} or
5140constants which are just the operands. The RTL structure of these
5141insns is not sufficient to indicate what the insns actually do. What
5142@code{NOTICE_UPDATE_CC} should do when it sees one is just to run
5143@code{CC_STATUS_INIT}.
5144
5145A possible definition of @code{NOTICE_UPDATE_CC} is to call a function
5146that looks at an attribute (@pxref{Insn Attributes}) named, for example,
5147@samp{cc}. This avoids having detailed information about patterns in
5148two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}.
a2c4f8e0 5149@end defmac
feca2ed3 5150
a2c4f8e0 5151@defmac SELECT_CC_MODE (@var{op}, @var{x}, @var{y})
feca2ed3
JW
5152Returns a mode from class @code{MODE_CC} to be used when comparison
5153operation code @var{op} is applied to rtx @var{x} and @var{y}. For
981f6289 5154example, on the SPARC, @code{SELECT_CC_MODE} is defined as (see
feca2ed3
JW
5155@pxref{Jump Patterns} for a description of the reason for this
5156definition)
5157
5158@smallexample
5159#define SELECT_CC_MODE(OP,X,Y) \
5160 (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \
5161 ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode) \
5162 : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS \
5163 || GET_CODE (X) == NEG) \
5164 ? CC_NOOVmode : CCmode))
5165@end smallexample
5166
94134f42
ZW
5167You should define this macro if and only if you define extra CC modes
5168in @file{@var{machine}-modes.def}.
a2c4f8e0 5169@end defmac
feca2ed3 5170
a2c4f8e0 5171@defmac CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1})
8760eaae 5172On some machines not all possible comparisons are defined, but you can
feca2ed3
JW
5173convert an invalid comparison into a valid one. For example, the Alpha
5174does not have a @code{GT} comparison, but you can use an @code{LT}
5175comparison instead and swap the order of the operands.
5176
5177On such machines, define this macro to be a C statement to do any
5178required conversions. @var{code} is the initial comparison code
5179and @var{op0} and @var{op1} are the left and right operands of the
5180comparison, respectively. You should modify @var{code}, @var{op0}, and
5181@var{op1} as required.
5182
a3a15b4d 5183GCC will not assume that the comparison resulting from this macro is
feca2ed3
JW
5184valid but will see if the resulting insn matches a pattern in the
5185@file{md} file.
5186
5187You need not define this macro if it would never change the comparison
5188code or operands.
a2c4f8e0 5189@end defmac
feca2ed3 5190
a2c4f8e0 5191@defmac REVERSIBLE_CC_MODE (@var{mode})
feca2ed3
JW
5192A C expression whose value is one if it is always safe to reverse a
5193comparison whose mode is @var{mode}. If @code{SELECT_CC_MODE}
5194can ever return @var{mode} for a floating-point inequality comparison,
5195then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero.
5196
5197You need not define this macro if it would always returns zero or if the
5198floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}.
981f6289 5199For example, here is the definition used on the SPARC, where floating-point
feca2ed3
JW
5200inequality comparisons are always given @code{CCFPEmode}:
5201
5202@smallexample
5203#define REVERSIBLE_CC_MODE(MODE) ((MODE) != CCFPEmode)
5204@end smallexample
a2c4f8e0 5205@end defmac
feca2ed3 5206
a2c4f8e0 5207@defmac REVERSE_CONDITION (@var{code}, @var{mode})
9e7adcb3
JH
5208A C expression whose value is reversed condition code of the @var{code} for
5209comparison done in CC_MODE @var{mode}. The macro is used only in case
5210@code{REVERSIBLE_CC_MODE (@var{mode})} is nonzero. Define this macro in case
5211machine has some non-standard way how to reverse certain conditionals. For
5212instance in case all floating point conditions are non-trapping, compiler may
5213freely convert unordered compares to ordered one. Then definition may look
5214like:
5215
5216@smallexample
5217#define REVERSE_CONDITION(CODE, MODE) \
c771326b 5218 ((MODE) != CCFPmode ? reverse_condition (CODE) \
9e7adcb3
JH
5219 : reverse_condition_maybe_unordered (CODE))
5220@end smallexample
a2c4f8e0 5221@end defmac
9e7adcb3 5222
a2c4f8e0 5223@defmac REVERSE_CONDEXEC_PREDICATES_P (@var{code1}, @var{code2})
7e6d8ba1
AH
5224A C expression that returns true if the conditional execution predicate
5225@var{code1} is the inverse of @var{code2} and vice versa. Define this to
5226return 0 if the target has conditional execution predicates that cannot be
a43f528e
AH
5227reversed safely. If no expansion is specified, this macro is defined as
5228follows:
7e6d8ba1
AH
5229
5230@smallexample
aee96fe9
JM
5231#define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
5232 ((x) == reverse_condition (y))
7e6d8ba1 5233@end smallexample
a2c4f8e0 5234@end defmac
feca2ed3 5235
e129d93a
ILT
5236@deftypefn {Target Hook} bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *, unsigned int *)
5237On targets which do not use @code{(cc0)}, and which use a hard
5238register rather than a pseudo-register to hold condition codes, the
5239regular CSE passes are often not able to identify cases in which the
5240hard register is set to a common value. Use this hook to enable a
5241small pass which optimizes such cases. This hook should return true
5242to enable this pass, and it should set the integers to which its
5243arguments point to the hard register numbers used for condition codes.
5244When there is only one such register, as is true on most systems, the
5245integer pointed to by the second argument should be set to
5246@code{INVALID_REGNUM}.
5247
5248The default version of this hook returns false.
5249@end deftypefn
5250
5251@deftypefn {Target Hook} enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum machine_mode, enum machine_mode)
5252On targets which use multiple condition code modes in class
5253@code{MODE_CC}, it is sometimes the case that a comparison can be
5254validly done in more than one mode. On such a system, define this
5255target hook to take two mode arguments and to return a mode in which
5256both comparisons may be validly done. If there is no such mode,
5257return @code{VOIDmode}.
5258
5259The default version of this hook checks whether the modes are the
5260same. If they are, it returns that mode. If they are different, it
5261returns @code{VOIDmode}.
5262@end deftypefn
5263
feca2ed3
JW
5264@node Costs
5265@section Describing Relative Costs of Operations
5266@cindex costs of instructions
5267@cindex relative costs
5268@cindex speed of instructions
5269
5270These macros let you describe the relative speed of various operations
5271on the target machine.
5272
a2c4f8e0 5273@defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to})
e56b4594
AO
5274A C expression for the cost of moving data of mode @var{mode} from a
5275register in class @var{from} to one in class @var{to}. The classes are
5276expressed using the enumeration values such as @code{GENERAL_REGS}. A
5277value of 2 is the default; other values are interpreted relative to
5278that.
feca2ed3
JW
5279
5280It is not required that the cost always equal 2 when @var{from} is the
5281same as @var{to}; on some machines it is expensive to move between
5282registers if they are not general registers.
5283
5284If reload sees an insn consisting of a single @code{set} between two
5285hard registers, and if @code{REGISTER_MOVE_COST} applied to their
5286classes returns a value of 2, reload does not check to ensure that the
5287constraints of the insn are met. Setting a cost of other than 2 will
5288allow reload to verify that the constraints are met. You should do this
5289if the @samp{mov@var{m}} pattern's constraints do not allow such copying.
a2c4f8e0 5290@end defmac
feca2ed3 5291
a2c4f8e0 5292@defmac MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in})
cbd5b9a2
KR
5293A C expression for the cost of moving data of mode @var{mode} between a
5294register of class @var{class} and memory; @var{in} is zero if the value
df2a54e9 5295is to be written to memory, nonzero if it is to be read in. This cost
473fe49b
KR
5296is relative to those in @code{REGISTER_MOVE_COST}. If moving between
5297registers and memory is more expensive than between two registers, you
5298should define this macro to express the relative cost.
5299
a3a15b4d 5300If you do not define this macro, GCC uses a default cost of 4 plus
38e01259 5301the cost of copying via a secondary reload register, if one is
473fe49b
KR
5302needed. If your machine requires a secondary reload register to copy
5303between memory and a register of @var{class} but the reload mechanism is
5304more complex than copying via an intermediate, define this macro to
5305reflect the actual cost of the move.
5306
a3a15b4d 5307GCC defines the function @code{memory_move_secondary_cost} if
473fe49b
KR
5308secondary reloads are needed. It computes the costs due to copying via
5309a secondary register. If your machine copies from memory using a
5310secondary register in the conventional way but the default base value of
53114 is not correct for your machine, define this macro to add some other
5312value to the result of that function. The arguments to that function
5313are the same as to this macro.
a2c4f8e0 5314@end defmac
cbd5b9a2 5315
a2c4f8e0 5316@defmac BRANCH_COST
feca2ed3
JW
5317A C expression for the cost of a branch instruction. A value of 1 is
5318the default; other values are interpreted relative to that.
a2c4f8e0 5319@end defmac
feca2ed3
JW
5320
5321Here are additional macros which do not specify precise relative costs,
a3a15b4d 5322but only that certain actions are more expensive than GCC would
feca2ed3
JW
5323ordinarily expect.
5324
a2c4f8e0 5325@defmac SLOW_BYTE_ACCESS
feca2ed3 5326Define this macro as a C expression which is nonzero if accessing less
e979f9e8 5327than a word of memory (i.e.@: a @code{char} or a @code{short}) is no
feca2ed3
JW
5328faster than accessing a word of memory, i.e., if such access
5329require more than one instruction or if there is no difference in cost
5330between byte and (aligned) word loads.
5331
5332When this macro is not defined, the compiler will access a field by
5333finding the smallest containing object; when it is defined, a fullword
5334load will be used if alignment permits. Unless bytes accesses are
5335faster than word accesses, using word accesses is preferable since it
5336may eliminate subsequent memory access if subsequent accesses occur to
5337other fields in the same word of the structure, but to different bytes.
a2c4f8e0 5338@end defmac
feca2ed3 5339
a2c4f8e0 5340@defmac SLOW_UNALIGNED_ACCESS (@var{mode}, @var{alignment})
5fad8ebf
DE
5341Define this macro to be the value 1 if memory accesses described by the
5342@var{mode} and @var{alignment} parameters have a cost many times greater
5343than aligned accesses, for example if they are emulated in a trap
5344handler.
feca2ed3 5345
df2a54e9
JM
5346When this macro is nonzero, the compiler will act as if
5347@code{STRICT_ALIGNMENT} were nonzero when generating code for block
feca2ed3 5348moves. This can cause significantly more instructions to be produced.
df2a54e9 5349Therefore, do not set this macro nonzero if unaligned accesses only add a
feca2ed3
JW
5350cycle or two to the time for a memory access.
5351
6be57663 5352If the value of this macro is always zero, it need not be defined. If
df2a54e9
JM
5353this macro is defined, it should produce a nonzero value when
5354@code{STRICT_ALIGNMENT} is nonzero.
a2c4f8e0 5355@end defmac
feca2ed3 5356
a2c4f8e0 5357@defmac MOVE_RATIO
9862dea9 5358The threshold of number of scalar memory-to-memory move insns, @emph{below}
c5c76735 5359which a sequence of insns should be generated instead of a
feca2ed3
JW
5360string move insn or a library call. Increasing the value will always
5361make code faster, but eventually incurs high cost in increased code size.
5362
c5c76735
JL
5363Note that on machines where the corresponding move insn is a
5364@code{define_expand} that emits a sequence of insns, this macro counts
5365the number of such sequences.
9862dea9 5366
feca2ed3 5367If you don't define this, a reasonable default is used.
a2c4f8e0 5368@end defmac
feca2ed3 5369
a2c4f8e0 5370@defmac MOVE_BY_PIECES_P (@var{size}, @var{alignment})
fbe1758d
AM
5371A C expression used to determine whether @code{move_by_pieces} will be used to
5372copy a chunk of memory, or whether some other block move mechanism
6e01bd94 5373will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less
fbe1758d 5374than @code{MOVE_RATIO}.
a2c4f8e0 5375@end defmac
fbe1758d 5376
a2c4f8e0 5377@defmac MOVE_MAX_PIECES
fbe1758d 5378A C expression used by @code{move_by_pieces} to determine the largest unit
6e01bd94 5379a load or store used to copy memory is. Defaults to @code{MOVE_MAX}.
a2c4f8e0 5380@end defmac
fbe1758d 5381
a2c4f8e0 5382@defmac CLEAR_RATIO
78762e3b
RS
5383The threshold of number of scalar move insns, @emph{below} which a sequence
5384of insns should be generated to clear memory instead of a string clear insn
5385or a library call. Increasing the value will always make code faster, but
5386eventually incurs high cost in increased code size.
5387
5388If you don't define this, a reasonable default is used.
a2c4f8e0 5389@end defmac
78762e3b 5390
a2c4f8e0 5391@defmac CLEAR_BY_PIECES_P (@var{size}, @var{alignment})
78762e3b
RS
5392A C expression used to determine whether @code{clear_by_pieces} will be used
5393to clear a chunk of memory, or whether some other block clear mechanism
5394will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less
5395than @code{CLEAR_RATIO}.
a2c4f8e0 5396@end defmac
78762e3b 5397
a2c4f8e0 5398@defmac STORE_BY_PIECES_P (@var{size}, @var{alignment})
4977bab6
ZW
5399A C expression used to determine whether @code{store_by_pieces} will be
5400used to set a chunk of memory to a constant value, or whether some other
5401mechanism will be used. Used by @code{__builtin_memset} when storing
5402values other than constant zero and by @code{__builtin_strcpy} when
5403when called with a constant source string.
5404Defaults to @code{MOVE_BY_PIECES_P}.
a2c4f8e0 5405@end defmac
4977bab6 5406
a2c4f8e0 5407@defmac USE_LOAD_POST_INCREMENT (@var{mode})
6e01bd94
MH
5408A C expression used to determine whether a load postincrement is a good
5409thing to use for a given mode. Defaults to the value of
5410@code{HAVE_POST_INCREMENT}.
a2c4f8e0 5411@end defmac
6e01bd94 5412
a2c4f8e0 5413@defmac USE_LOAD_POST_DECREMENT (@var{mode})
6e01bd94
MH
5414A C expression used to determine whether a load postdecrement is a good
5415thing to use for a given mode. Defaults to the value of
5416@code{HAVE_POST_DECREMENT}.
a2c4f8e0 5417@end defmac
fbe1758d 5418
a2c4f8e0 5419@defmac USE_LOAD_PRE_INCREMENT (@var{mode})
6e01bd94
MH
5420A C expression used to determine whether a load preincrement is a good
5421thing to use for a given mode. Defaults to the value of
5422@code{HAVE_PRE_INCREMENT}.
a2c4f8e0 5423@end defmac
6e01bd94 5424
a2c4f8e0 5425@defmac USE_LOAD_PRE_DECREMENT (@var{mode})
6e01bd94
MH
5426A C expression used to determine whether a load predecrement is a good
5427thing to use for a given mode. Defaults to the value of
5428@code{HAVE_PRE_DECREMENT}.
a2c4f8e0 5429@end defmac
fbe1758d 5430
a2c4f8e0 5431@defmac USE_STORE_POST_INCREMENT (@var{mode})
6e01bd94
MH
5432A C expression used to determine whether a store postincrement is a good
5433thing to use for a given mode. Defaults to the value of
5434@code{HAVE_POST_INCREMENT}.
a2c4f8e0 5435@end defmac
6e01bd94 5436
a2c4f8e0 5437@defmac USE_STORE_POST_DECREMENT (@var{mode})
c771326b 5438A C expression used to determine whether a store postdecrement is a good
6e01bd94
MH
5439thing to use for a given mode. Defaults to the value of
5440@code{HAVE_POST_DECREMENT}.
a2c4f8e0 5441@end defmac
fbe1758d 5442
a2c4f8e0 5443@defmac USE_STORE_PRE_INCREMENT (@var{mode})
6e01bd94
MH
5444This macro is used to determine whether a store preincrement is a good
5445thing to use for a given mode. Defaults to the value of
5446@code{HAVE_PRE_INCREMENT}.
a2c4f8e0 5447@end defmac
6e01bd94 5448
a2c4f8e0 5449@defmac USE_STORE_PRE_DECREMENT (@var{mode})
6e01bd94
MH
5450This macro is used to determine whether a store predecrement is a good
5451thing to use for a given mode. Defaults to the value of
5452@code{HAVE_PRE_DECREMENT}.
a2c4f8e0 5453@end defmac
fbe1758d 5454
a2c4f8e0 5455@defmac NO_FUNCTION_CSE
feca2ed3
JW
5456Define this macro if it is as good or better to call a constant
5457function address than to call an address kept in a register.
a2c4f8e0 5458@end defmac
feca2ed3 5459
a2c4f8e0 5460@defmac RANGE_TEST_NON_SHORT_CIRCUIT
85e50b6b
DE
5461Define this macro if a non-short-circuit operation produced by
5462@samp{fold_range_test ()} is optimal. This macro defaults to true if
5463@code{BRANCH_COST} is greater than or equal to the value 2.
a2c4f8e0 5464@end defmac
feca2ed3 5465
3c50106f
RH
5466@deftypefn {Target Hook} bool TARGET_RTX_COSTS (rtx @var{x}, int @var{code}, int @var{outer_code}, int *@var{total})
5467This target hook describes the relative costs of RTL expressions.
5468
5469The cost may depend on the precise form of the expression, which is
5470available for examination in @var{x}, and the rtx code of the expression
5471in which it is contained, found in @var{outer_code}. @var{code} is the
5472expression code---redundant, since it can be obtained with
5473@code{GET_CODE (@var{x})}.
5474
5475In implementing this hook, you can use the construct
5476@code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast
5477instructions.
5478
5479On entry to the hook, @code{*@var{total}} contains a default estimate
5480for the cost of the expression. The hook should modify this value as
31a52b86
RS
5481necessary. Traditionally, the default costs are @code{COSTS_N_INSNS (5)}
5482for multiplications, @code{COSTS_N_INSNS (7)} for division and modulus
5483operations, and @code{COSTS_N_INSNS (1)} for all other operations.
5484
5485When optimizing for code size, i.e@. when @code{optimize_size} is
5486non-zero, this target hook should be used to estimate the relative
5487size cost of an expression, again relative to @code{COSTS_N_INSNS}.
3c50106f
RH
5488
5489The hook returns true when all subexpressions of @var{x} have been
5490processed, and false when @code{rtx_cost} should recurse.
5491@end deftypefn
5492
10154ff8
RH
5493@deftypefn {Target Hook} int TARGET_ADDRESS_COST (rtx @var{address})
5494This hook computes the cost of an addressing mode that contains
5495@var{address}. If not defined, the cost is computed from
5496the @var{address} expression and the @code{TARGET_RTX_COST} hook.
5497
5498For most CISC machines, the default cost is a good approximation of the
5499true cost of the addressing mode. However, on RISC machines, all
5500instructions normally have the same length and execution time. Hence
5501all addresses will have equal costs.
5502
5503In cases where more than one form of an address is known, the form with
5504the lowest cost will be used. If multiple forms have the same, lowest,
5505cost, the one that is the most complex will be used.
5506
5507For example, suppose an address that is equal to the sum of a register
5508and a constant is used twice in the same basic block. When this macro
5509is not defined, the address will be computed in a register and memory
5510references will be indirect through that register. On machines where
5511the cost of the addressing mode containing the sum is no higher than
5512that of a simple indirect reference, this will produce an additional
5513instruction and possibly require an additional register. Proper
5514specification of this macro eliminates this overhead for such machines.
5515
5516This hook is never called with an invalid address.
5517
5518On machines where an address involving more than one register is as
5519cheap as an address computation involving only one register, defining
5520@code{TARGET_ADDRESS_COST} to reflect this can cause two registers to
5521be live over a region of code where only one would have been if
5522@code{TARGET_ADDRESS_COST} were not defined in that manner. This effect
5523should be considered in the definition of this macro. Equivalent costs
5524should probably only be given to addresses with different numbers of
5525registers on machines with lots of registers.
5526@end deftypefn
5527
c237e94a
ZW
5528@node Scheduling
5529@section Adjusting the Instruction Scheduler
5530
5531The instruction scheduler may need a fair amount of machine-specific
5532adjustment in order to produce good code. GCC provides several target
5533hooks for this purpose. It is usually enough to define just a few of
5534them: try the first ones in this list first.
5535
5536@deftypefn {Target Hook} int TARGET_SCHED_ISSUE_RATE (void)
fae15c93
VM
5537This hook returns the maximum number of instructions that can ever
5538issue at the same time on the target machine. The default is one.
5539Although the insn scheduler can define itself the possibility of issue
5540an insn on the same cycle, the value can serve as an additional
5541constraint to issue insns on the same simulated processor cycle (see
5542hooks @samp{TARGET_SCHED_REORDER} and @samp{TARGET_SCHED_REORDER2}).
5543This value must be constant over the entire compilation. If you need
5544it to vary depending on what the instructions are, you must use
c237e94a 5545@samp{TARGET_SCHED_VARIABLE_ISSUE}.
fae15c93 5546
4226378a
PK
5547For the automaton based pipeline interface, you could define this hook
5548to return the value of the macro @code{MAX_DFA_ISSUE_RATE}.
c237e94a
ZW
5549@end deftypefn
5550
5551@deftypefn {Target Hook} int TARGET_SCHED_VARIABLE_ISSUE (FILE *@var{file}, int @var{verbose}, rtx @var{insn}, int @var{more})
5552This hook is executed by the scheduler after it has scheduled an insn
5553from the ready list. It should return the number of insns which can
3ee04299
DE
5554still be issued in the current cycle. The default is
5555@samp{@w{@var{more} - 1}} for insns other than @code{CLOBBER} and
5556@code{USE}, which normally are not counted against the issue rate.
5557You should define this hook if some insns take more machine resources
5558than others, so that fewer insns can follow them in the same cycle.
5559@var{file} is either a null pointer, or a stdio stream to write any
5560debug output to. @var{verbose} is the verbose level provided by
5561@option{-fsched-verbose-@var{n}}. @var{insn} is the instruction that
5562was scheduled.
c237e94a
ZW
5563@end deftypefn
5564
5565@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_COST (rtx @var{insn}, rtx @var{link}, rtx @var{dep_insn}, int @var{cost})
fae15c93
VM
5566This function corrects the value of @var{cost} based on the
5567relationship between @var{insn} and @var{dep_insn} through the
5568dependence @var{link}. It should return the new value. The default
5569is to make no adjustment to @var{cost}. This can be used for example
5570to specify to the scheduler using the traditional pipeline description
c237e94a 5571that an output- or anti-dependence does not incur the same cost as a
fae15c93
VM
5572data-dependence. If the scheduler using the automaton based pipeline
5573description, the cost of anti-dependence is zero and the cost of
5574output-dependence is maximum of one and the difference of latency
5575times of the first and the second insns. If these values are not
5576acceptable, you could use the hook to modify them too. See also
5577@pxref{Automaton pipeline description}.
c237e94a
ZW
5578@end deftypefn
5579
5580@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_PRIORITY (rtx @var{insn}, int @var{priority})
5581This hook adjusts the integer scheduling priority @var{priority} of
5582@var{insn}. It should return the new priority. Reduce the priority to
5583execute @var{insn} earlier, increase the priority to execute @var{insn}
5584later. Do not define this hook if you do not need to adjust the
5585scheduling priorities of insns.
5586@end deftypefn
5587
5588@deftypefn {Target Hook} int TARGET_SCHED_REORDER (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_readyp}, int @var{clock})
5589This hook is executed by the scheduler after it has scheduled the ready
5590list, to allow the machine description to reorder it (for example to
5591combine two small instructions together on @samp{VLIW} machines).
5592@var{file} is either a null pointer, or a stdio stream to write any
5593debug output to. @var{verbose} is the verbose level provided by
5594@option{-fsched-verbose-@var{n}}. @var{ready} is a pointer to the ready
5595list of instructions that are ready to be scheduled. @var{n_readyp} is
5596a pointer to the number of elements in the ready list. The scheduler
5597reads the ready list in reverse order, starting with
5598@var{ready}[@var{*n_readyp}-1] and going to @var{ready}[0]. @var{clock}
5599is the timer tick of the scheduler. You may modify the ready list and
5600the number of ready insns. The return value is the number of insns that
5601can issue this cycle; normally this is just @code{issue_rate}. See also
5602@samp{TARGET_SCHED_REORDER2}.
5603@end deftypefn
5604
5605@deftypefn {Target Hook} int TARGET_SCHED_REORDER2 (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_ready}, @var{clock})
5606Like @samp{TARGET_SCHED_REORDER}, but called at a different time. That
5607function is called whenever the scheduler starts a new cycle. This one
5608is called once per iteration over a cycle, immediately after
5609@samp{TARGET_SCHED_VARIABLE_ISSUE}; it can reorder the ready list and
5610return the number of insns to be scheduled in the same cycle. Defining
5611this hook can be useful if there are frequent situations where
5612scheduling one insn causes other insns to become ready in the same
5613cycle. These other insns can then be taken into account properly.
5614@end deftypefn
5615
30028c85
VM
5616@deftypefn {Target Hook} void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx @var{head}, rtx @var{tail})
5617This hook is called after evaluation forward dependencies of insns in
5618chain given by two parameter values (@var{head} and @var{tail}
5619correspondingly) but before insns scheduling of the insn chain. For
5620example, it can be used for better insn classification if it requires
5621analysis of dependencies. This hook can use backward and forward
5622dependencies of the insn scheduler because they are already
5623calculated.
5624@end deftypefn
5625
c237e94a
ZW
5626@deftypefn {Target Hook} void TARGET_SCHED_INIT (FILE *@var{file}, int @var{verbose}, int @var{max_ready})
5627This hook is executed by the scheduler at the beginning of each block of
5628instructions that are to be scheduled. @var{file} is either a null
5629pointer, or a stdio stream to write any debug output to. @var{verbose}
5630is the verbose level provided by @option{-fsched-verbose-@var{n}}.
5631@var{max_ready} is the maximum number of insns in the current scheduling
5632region that can be live at the same time. This can be used to allocate
5633scratch space if it is needed, e.g. by @samp{TARGET_SCHED_REORDER}.
5634@end deftypefn
5635
5636@deftypefn {Target Hook} void TARGET_SCHED_FINISH (FILE *@var{file}, int @var{verbose})
5637This hook is executed by the scheduler at the end of each block of
5638instructions that are to be scheduled. It can be used to perform
5639cleanup of any actions done by the other scheduling hooks. @var{file}
5640is either a null pointer, or a stdio stream to write any debug output
5641to. @var{verbose} is the verbose level provided by
5642@option{-fsched-verbose-@var{n}}.
5643@end deftypefn
5644
58565a33
SKG
5645@deftypefn {Target Hook} void TARGET_SCHED_INIT_GLOBAL (FILE *@var{file}, int @var{verbose}, int @var{old_max_uid})
5646This hook is executed by the scheduler after function level initializations.
5647@var{file} is either a null pointer, or a stdio stream to write any debug output to.
5648@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
5649@var{old_max_uid} is the maximum insn uid when scheduling begins.
5650@end deftypefn
5651
5652@deftypefn {Target Hook} void TARGET_SCHED_FINISH_GLOBAL (FILE *@var{file}, int @var{verbose})
5653This is the cleanup hook corresponding to TARGET_SCHED_INIT_GLOBAL.
5654@var{file} is either a null pointer, or a stdio stream to write any debug output to.
5655@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
5656@end deftypefn
5657
fae15c93
VM
5658@deftypefn {Target Hook} int TARGET_SCHED_USE_DFA_PIPELINE_INTERFACE (void)
5659This hook is called many times during insn scheduling. If the hook
5660returns nonzero, the automaton based pipeline description is used for
5661insn scheduling. Otherwise the traditional pipeline description is
5662used. The default is usage of the traditional pipeline description.
5663
5664You should also remember that to simplify the insn scheduler sources
5665an empty traditional pipeline description interface is generated even
5666if there is no a traditional pipeline description in the @file{.md}
5667file. The same is true for the automaton based pipeline description.
5668That means that you should be accurate in defining the hook.
5669@end deftypefn
5670
5671@deftypefn {Target Hook} int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
5672The hook returns an RTL insn. The automaton state used in the
5673pipeline hazard recognizer is changed as if the insn were scheduled
5674when the new simulated processor cycle starts. Usage of the hook may
5675simplify the automaton pipeline description for some @acronym{VLIW}
5676processors. If the hook is defined, it is used only for the automaton
5677based pipeline description. The default is not to change the state
5678when the new simulated processor cycle starts.
5679@end deftypefn
5680
5681@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
5682The hook can be used to initialize data used by the previous hook.
5683@end deftypefn
5684
5685@deftypefn {Target Hook} int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
5686The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
5687to changed the state as if the insn were scheduled when the new
5688simulated processor cycle finishes.
5689@end deftypefn
5690
5691@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
5692The hook is analogous to @samp{TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN} but
5693used to initialize data used by the previous hook.
5694@end deftypefn
5695
5696@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD (void)
5697This hook controls better choosing an insn from the ready insn queue
5698for the @acronym{DFA}-based insn scheduler. Usually the scheduler
5699chooses the first insn from the queue. If the hook returns a positive
5700value, an additional scheduler code tries all permutations of
5701@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()}
5702subsequent ready insns to choose an insn whose issue will result in
5703maximal number of issued insns on the same cycle. For the
5704@acronym{VLIW} processor, the code could actually solve the problem of
5705packing simple insns into the @acronym{VLIW} insn. Of course, if the
5706rules of @acronym{VLIW} packing are described in the automaton.
5707
5708This code also could be used for superscalar @acronym{RISC}
5709processors. Let us consider a superscalar @acronym{RISC} processor
5710with 3 pipelines. Some insns can be executed in pipelines @var{A} or
5711@var{B}, some insns can be executed only in pipelines @var{B} or
5712@var{C}, and one insn can be executed in pipeline @var{B}. The
5713processor may issue the 1st insn into @var{A} and the 2nd one into
5714@var{B}. In this case, the 3rd insn will wait for freeing @var{B}
5715until the next cycle. If the scheduler issues the 3rd insn the first,
5716the processor could issue all 3 insns per cycle.
5717
5718Actually this code demonstrates advantages of the automaton based
5719pipeline hazard recognizer. We try quickly and easy many insn
5720schedules to choose the best one.
5721
5722The default is no multipass scheduling.
5723@end deftypefn
5724
30028c85
VM
5725@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx)
5726
5727This hook controls what insns from the ready insn queue will be
5728considered for the multipass insn scheduling. If the hook returns
5729zero for insn passed as the parameter, the insn will be not chosen to
5730be issued.
5731
62b9c42c 5732The default is that any ready insns can be chosen to be issued.
30028c85
VM
5733@end deftypefn
5734
5735@deftypefn {Target Hook} int TARGET_SCHED_DFA_NEW_CYCLE (FILE *, int, rtx, int, int, int *)
5736
5737This hook is called by the insn scheduler before issuing insn passed
5738as the third parameter on given cycle. If the hook returns nonzero,
5739the insn is not issued on given processors cycle. Instead of that,
5740the processor cycle is advanced. If the value passed through the last
5741parameter is zero, the insn ready queue is not sorted on the new cycle
5742start as usually. The first parameter passes file for debugging
5743output. The second one passes the scheduler verbose level of the
5744debugging output. The forth and the fifth parameter values are
5745correspondingly processor cycle on which the previous insn has been
5746issued and the current processor cycle.
5747@end deftypefn
5748
fae15c93
VM
5749@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_BUBBLES (void)
5750The @acronym{DFA}-based scheduler could take the insertion of nop
5751operations for better insn scheduling into account. It can be done
5752only if the multi-pass insn scheduling works (see hook
5753@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD}).
5754
5755Let us consider a @acronym{VLIW} processor insn with 3 slots. Each
5756insn can be placed only in one of the three slots. We have 3 ready
5757insns @var{A}, @var{B}, and @var{C}. @var{A} and @var{C} can be
5758placed only in the 1st slot, @var{B} can be placed only in the 3rd
5759slot. We described the automaton which does not permit empty slot
5760gaps between insns (usually such description is simpler). Without
5761this code the scheduler would place each insn in 3 separate
5762@acronym{VLIW} insns. If the scheduler places a nop insn into the 2nd
5763slot, it could place the 3 insns into 2 @acronym{VLIW} insns. What is
5764the nop insn is returned by hook @samp{TARGET_SCHED_DFA_BUBBLE}. Hook
5765@samp{TARGET_SCHED_INIT_DFA_BUBBLES} can be used to initialize or
5766create the nop insns.
5767
5768You should remember that the scheduler does not insert the nop insns.
5769It is not wise because of the following optimizations. The scheduler
5770only considers such possibility to improve the result schedule. The
5771nop insns should be inserted lately, e.g. on the final phase.
5772@end deftypefn
5773
5774@deftypefn {Target Hook} rtx TARGET_SCHED_DFA_BUBBLE (int @var{index})
5775This hook @samp{FIRST_CYCLE_MULTIPASS_SCHEDULING} is used to insert
5776nop operations for better insn scheduling when @acronym{DFA}-based
5777scheduler makes multipass insn scheduling (see also description of
5778hook @samp{TARGET_SCHED_INIT_DFA_BUBBLES}). This hook
5779returns a nop insn with given @var{index}. The indexes start with
5780zero. The hook should return @code{NULL} if there are no more nop
5781insns with indexes greater than given index.
5782@end deftypefn
5783
1b2c3767 5784@deftypefn {Target Hook} bool TARGET_SCHED_IS_COSTLY_DEPENDENCE (rtx @var{insn1}, rtx @var{insn2}, rtx @var{dep_link}, int @var{dep_cost}, int @var{distance})
569fa502 5785This hook is used to define which dependences are considered costly by
daf2f129 5786the target, so costly that it is not advisable to schedule the insns that
569fa502 5787are involved in the dependence too close to one another. The parameters
daf2f129
JM
5788to this hook are as follows: The second parameter @var{insn2} is dependent
5789upon the first parameter @var{insn1}. The dependence between @var{insn1}
5790and @var{insn2} is represented by the third parameter @var{dep_link}. The
5791fourth parameter @var{cost} is the cost of the dependence, and the fifth
5792parameter @var{distance} is the distance in cycles between the two insns.
569fa502
DN
5793The hook returns @code{true} if considering the distance between the two
5794insns the dependence between them is considered costly by the target,
5795and @code{false} otherwise.
5796
5797Defining this hook can be useful in multiple-issue out-of-order machines,
daf2f129 5798where (a) it's practically hopeless to predict the actual data/resource
569fa502 5799delays, however: (b) there's a better chance to predict the actual grouping
daf2f129 5800that will be formed, and (c) correctly emulating the grouping can be very
569fa502 5801important. In such targets one may want to allow issuing dependent insns
daf2f129 5802closer to one another - i.e, closer than the dependence distance; however,
569fa502
DN
5803not in cases of "costly dependences", which this hooks allows to define.
5804@end deftypefn
5805
fae15c93
VM
5806Macros in the following table are generated by the program
5807@file{genattr} and can be useful for writing the hooks.
5808
a2c4f8e0 5809@defmac MAX_DFA_ISSUE_RATE
fae15c93
VM
5810The macro definition is generated in the automaton based pipeline
5811description interface. Its value is calculated from the automaton
5812based pipeline description and is equal to maximal number of all insns
5813described in constructions @samp{define_insn_reservation} which can be
5814issued on the same processor cycle.
a2c4f8e0 5815@end defmac
fae15c93 5816
feca2ed3
JW
5817@node Sections
5818@section Dividing the Output into Sections (Texts, Data, @dots{})
5819@c the above section title is WAY too long. maybe cut the part between
5820@c the (...)? --mew 10feb93
5821
5822An object file is divided into sections containing different types of
5823data. In the most common case, there are three sections: the @dfn{text
5824section}, which holds instructions and read-only data; the @dfn{data
5825section}, which holds initialized writable data; and the @dfn{bss
5826section}, which holds uninitialized data. Some systems have other kinds
5827of sections.
5828
5829The compiler must tell the assembler when to switch sections. These
5830macros control what commands to output to tell the assembler this. You
5831can also define additional sections.
5832
a2c4f8e0 5833@defmac TEXT_SECTION_ASM_OP
047c1c92
HPN
5834A C expression whose value is a string, including spacing, containing the
5835assembler operation that should precede instructions and read-only data.
5836Normally @code{"\t.text"} is right.
a2c4f8e0 5837@end defmac
33c09f2f 5838
a2c4f8e0 5839@defmac HOT_TEXT_SECTION_NAME
194734e9
JH
5840If defined, a C string constant for the name of the section containing most
5841frequently executed functions of the program. If not defined, GCC will provide
5842a default definition if the target supports named sections.
a2c4f8e0 5843@end defmac
194734e9 5844
a2c4f8e0 5845@defmac UNLIKELY_EXECUTED_TEXT_SECTION_NAME
194734e9
JH
5846If defined, a C string constant for the name of the section containing unlikely
5847executed functions in the program.
a2c4f8e0 5848@end defmac
194734e9 5849
a2c4f8e0 5850@defmac DATA_SECTION_ASM_OP
047c1c92
HPN
5851A C expression whose value is a string, including spacing, containing the
5852assembler operation to identify the following data as writable initialized
5853data. Normally @code{"\t.data"} is right.
a2c4f8e0 5854@end defmac
feca2ed3 5855
a2c4f8e0 5856@defmac READONLY_DATA_SECTION_ASM_OP
d48bc59a
RH
5857A C expression whose value is a string, including spacing, containing the
5858assembler operation to identify the following data as read-only initialized
5859data.
a2c4f8e0 5860@end defmac
d48bc59a 5861
a2c4f8e0 5862@defmac READONLY_DATA_SECTION
d48bc59a
RH
5863A macro naming a function to call to switch to the proper section for
5864read-only data. The default is to use @code{READONLY_DATA_SECTION_ASM_OP}
5865if defined, else fall back to @code{text_section}.
5866
5867The most common definition will be @code{data_section}, if the target
5868does not have a special read-only data section, and does not put data
5869in the text section.
a2c4f8e0 5870@end defmac
d48bc59a 5871
a2c4f8e0 5872@defmac BSS_SECTION_ASM_OP
047c1c92
HPN
5873If defined, a C expression whose value is a string, including spacing,
5874containing the assembler operation to identify the following data as
5875uninitialized global data. If not defined, and neither
5876@code{ASM_OUTPUT_BSS} nor @code{ASM_OUTPUT_ALIGNED_BSS} are defined,
5877uninitialized global data will be output in the data section if
630d3d5a 5878@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be
047c1c92 5879used.
a2c4f8e0 5880@end defmac
feca2ed3 5881
a2c4f8e0 5882@defmac INIT_SECTION_ASM_OP
047c1c92
HPN
5883If defined, a C expression whose value is a string, including spacing,
5884containing the assembler operation to identify the following data as
5885initialization code. If not defined, GCC will assume such a section does
5886not exist.
a2c4f8e0 5887@end defmac
feca2ed3 5888
a2c4f8e0 5889@defmac FINI_SECTION_ASM_OP
047c1c92
HPN
5890If defined, a C expression whose value is a string, including spacing,
5891containing the assembler operation to identify the following data as
5892finalization code. If not defined, GCC will assume such a section does
5893not exist.
a2c4f8e0 5894@end defmac
750054a2 5895
a2c4f8e0 5896@defmac CRT_CALL_STATIC_FUNCTION (@var{section_op}, @var{function})
cea3bd3e
RH
5897If defined, an ASM statement that switches to a different section
5898via @var{section_op}, calls @var{function}, and switches back to
5899the text section. This is used in @file{crtstuff.c} if
5900@code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls
5901to initialization and finalization functions from the init and fini
5902sections. By default, this macro uses a simple function call. Some
1b2dd04a
AO
5903ports need hand-crafted assembly code to avoid dependencies on
5904registers initialized in the function prologue or to ensure that
5905constant pools don't end up too far way in the text section.
a2c4f8e0 5906@end defmac
1b2dd04a 5907
a2c4f8e0 5908@defmac FORCE_CODE_SECTION_ALIGN
cea3bd3e
RH
5909If defined, an ASM statement that aligns a code section to some
5910arbitrary boundary. This is used to force all fragments of the
5911@code{.init} and @code{.fini} sections to have to same alignment
5912and thus prevent the linker from having to add any padding.
a2c4f8e0 5913@end defmac
cea3bd3e 5914
feca2ed3
JW
5915@findex in_text
5916@findex in_data
a2c4f8e0 5917@defmac EXTRA_SECTIONS
feca2ed3
JW
5918A list of names for sections other than the standard two, which are
5919@code{in_text} and @code{in_data}. You need not define this macro
5920on a system with no other sections (that GCC needs to use).
a2c4f8e0 5921@end defmac
feca2ed3 5922
feca2ed3
JW
5923@findex text_section
5924@findex data_section
a2c4f8e0 5925@defmac EXTRA_SECTION_FUNCTIONS
feca2ed3
JW
5926One or more functions to be defined in @file{varasm.c}. These
5927functions should do jobs analogous to those of @code{text_section} and
5928@code{data_section}, for your additional sections. Do not define this
5929macro if you do not define @code{EXTRA_SECTIONS}.
a2c4f8e0 5930@end defmac
feca2ed3 5931
a2c4f8e0 5932@defmac JUMP_TABLES_IN_TEXT_SECTION
df2a54e9 5933Define this macro to be an expression with a nonzero value if jump
75197b37
BS
5934tables (for @code{tablejump} insns) should be output in the text
5935section, along with the assembler instructions. Otherwise, the
5936readonly data section is used.
feca2ed3
JW
5937
5938This macro is irrelevant if there is no separate readonly data section.
a2c4f8e0 5939@end defmac
feca2ed3 5940
ae46c4e0
RH
5941@deftypefn {Target Hook} void TARGET_ASM_SELECT_SECTION (tree @var{exp}, int @var{reloc}, unsigned HOST_WIDE_INT @var{align})
5942Switches to the appropriate section for output of @var{exp}. You can
5943assume that @var{exp} is either a @code{VAR_DECL} node or a constant of
5944some sort. @var{reloc} indicates whether the initial value of @var{exp}
5945requires link-time relocations. Bit 0 is set when variable contains
5946local relocations only, while bit 1 is set for global relocations.
5947Select the section by calling @code{data_section} or one of the
5948alternatives for other sections. @var{align} is the constant alignment
5949in bits.
5950
5951The default version of this function takes care of putting read-only
5952variables in @code{readonly_data_section}.
5953@end deftypefn
5954
5955@deftypefn {Target Hook} void TARGET_ASM_UNIQUE_SECTION (tree @var{decl}, int @var{reloc})
5956Build up a unique section name, expressed as a @code{STRING_CST} node,
5957and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
5958As with @code{TARGET_ASM_SELECT_SECTION}, @var{reloc} indicates whether
5959the initial value of @var{exp} requires link-time relocations.
5960
5961The default version of this function appends the symbol name to the
5962ELF section name that would normally be used for the symbol. For
5963example, the function @code{foo} would be placed in @code{.text.foo}.
5964Whatever the actual target object format, this is often good enough.
5965@end deftypefn
5966
b64a1b53
RH
5967@deftypefn {Target Hook} void TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode @var{mode}, rtx @var{x}, unsigned HOST_WIDE_INT @var{align})
5968Switches to the appropriate section for output of constant pool entry
5969@var{x} in @var{mode}. You can assume that @var{x} is some kind of
5970constant in RTL@. The argument @var{mode} is redundant except in the
5971case of a @code{const_int} rtx. Select the section by calling
5972@code{readonly_data_section} or one of the alternatives for other
5973sections. @var{align} is the constant alignment in bits.
5974
5975The default version of this function takes care of putting symbolic
5976constants in @code{flag_pic} mode in @code{data_section} and everything
5977else in @code{readonly_data_section}.
5978@end deftypefn
5979
c6a2438a 5980@deftypefn {Target Hook} void TARGET_ENCODE_SECTION_INFO (tree @var{decl}, rtx @var{rtl}, int @var{new_decl_p})
fb49053f
RH
5981Define this hook if references to a symbol or a constant must be
5982treated differently depending on something about the variable or
5983function named by the symbol (such as what section it is in).
5984
c6a2438a
ZW
5985The hook is executed immediately after rtl has been created for
5986@var{decl}, which may be a variable or function declaration or
5987an entry in the constant pool. In either case, @var{rtl} is the
5988rtl in question. Do @emph{not} use @code{DECL_RTL (@var{decl})}
0864034e 5989in this hook; that field may not have been initialized yet.
c6a2438a
ZW
5990
5991In the case of a constant, it is safe to assume that the rtl is
5992a @code{mem} whose address is a @code{symbol_ref}. Most decls
5993will also have this form, but that is not guaranteed. Global
5994register variables, for instance, will have a @code{reg} for their
5995rtl. (Normally the right thing to do with such unusual rtl is
5996leave it alone.)
fb49053f
RH
5997
5998The @var{new_decl_p} argument will be true if this is the first time
c6a2438a 5999that @code{TARGET_ENCODE_SECTION_INFO} has been invoked on this decl. It will
fb49053f
RH
6000be false for subsequent invocations, which will happen for duplicate
6001declarations. Whether or not anything must be done for the duplicate
6002declaration depends on whether the hook examines @code{DECL_ATTRIBUTES}.
c6a2438a 6003@var{new_decl_p} is always true when the hook is called for a constant.
fb49053f
RH
6004
6005@cindex @code{SYMBOL_REF_FLAG}, in @code{TARGET_ENCODE_SECTION_INFO}
c6a2438a
ZW
6006The usual thing for this hook to do is to record flags in the
6007@code{symbol_ref}, using @code{SYMBOL_REF_FLAG} or @code{SYMBOL_REF_FLAGS}.
6008Historically, the name string was modified if it was necessary to
6009encode more than one bit of information, but this practice is now
6010discouraged; use @code{SYMBOL_REF_FLAGS}.
6011
6012The default definition of this hook, @code{default_encode_section_info}
6013in @file{varasm.c}, sets a number of commonly-useful bits in
6014@code{SYMBOL_REF_FLAGS}. Check whether the default does what you need
6015before overriding it.
fb49053f
RH
6016@end deftypefn
6017
772c5265
RH
6018@deftypefn {Target Hook} const char *TARGET_STRIP_NAME_ENCODING (const char *name)
6019Decode @var{name} and return the real name part, sans
6020the characters that @code{TARGET_ENCODE_SECTION_INFO}
6021may have added.
6022@end deftypefn
6023
47754fd5
RH
6024@deftypefn {Target Hook} bool TARGET_IN_SMALL_DATA_P (tree @var{exp})
6025Returns true if @var{exp} should be placed into a ``small data'' section.
6026The default version of this hook always returns false.
6027@end deftypefn
6028
e2a6476e
DE
6029@deftypevar {Target Hook} bool TARGET_HAVE_SRODATA_SECTION
6030Contains the value true if the target places read-only
6031``small data'' into a separate section. The default value is false.
6032@end deftypevar
6033
47754fd5
RH
6034@deftypefn {Target Hook} bool TARGET_BINDS_LOCAL_P (tree @var{exp})
6035Returns true if @var{exp} names an object for which name resolution
6036rules must resolve to the current ``module'' (dynamic shared library
6037or executable image).
6038
6039The default version of this hook implements the name resolution rules
6040for ELF, which has a looser model of global name binding than other
6041currently supported object file formats.
6042@end deftypefn
6043
e2a6476e
DE
6044@deftypevar {Target Hook} bool TARGET_HAVE_TLS
6045Contains the value true if the target supports thread-local storage.
6046The default value is false.
6047@end deftypevar
6048
6049
feca2ed3
JW
6050@node PIC
6051@section Position Independent Code
6052@cindex position independent code
6053@cindex PIC
6054
6055This section describes macros that help implement generation of position
6056independent code. Simply defining these macros is not enough to
6057generate valid PIC; you must also add support to the macros
6058@code{GO_IF_LEGITIMATE_ADDRESS} and @code{PRINT_OPERAND_ADDRESS}, as
6059well as @code{LEGITIMIZE_ADDRESS}. You must modify the definition of
6060@samp{movsi} to do something appropriate when the source operand
6061contains a symbolic address. You may also need to alter the handling of
6062switch statements so that they use relative addresses.
6063@c i rearranged the order of the macros above to try to force one of
6064@c them to the next line, to eliminate an overfull hbox. --mew 10feb93
6065
a2c4f8e0 6066@defmac PIC_OFFSET_TABLE_REGNUM
feca2ed3
JW
6067The register number of the register used to address a table of static
6068data addresses in memory. In some cases this register is defined by a
161d7b59 6069processor's ``application binary interface'' (ABI)@. When this macro
feca2ed3
JW
6070is defined, RTL is generated for this register once, as with the stack
6071pointer and frame pointer registers. If this macro is not defined, it
6072is up to the machine-dependent files to allocate such a register (if
003b9f78 6073necessary). Note that this register must be fixed when in use (e.g.@:
12beba6f 6074when @code{flag_pic} is true).
a2c4f8e0 6075@end defmac
feca2ed3 6076
a2c4f8e0 6077@defmac PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
feca2ed3
JW
6078Define this macro if the register defined by
6079@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls. Do not define
ed4db1ee 6080this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined.
a2c4f8e0 6081@end defmac
feca2ed3 6082
a2c4f8e0 6083@defmac FINALIZE_PIC
feca2ed3
JW
6084By generating position-independent code, when two different programs (A
6085and B) share a common library (libC.a), the text of the library can be
6086shared whether or not the library is linked at the same address for both
6087programs. In some of these environments, position-independent code
6088requires not only the use of different addressing modes, but also
6089special code to enable the use of these addressing modes.
6090
6091The @code{FINALIZE_PIC} macro serves as a hook to emit these special
6092codes once the function is being compiled into assembly code, but not
6093before. (It is not done before, because in the case of compiling an
6094inline function, it would lead to multiple PIC prologues being
6095included in functions which used inline functions and were compiled to
6096assembly language.)
a2c4f8e0 6097@end defmac
feca2ed3 6098
a2c4f8e0 6099@defmac LEGITIMATE_PIC_OPERAND_P (@var{x})
feca2ed3
JW
6100A C expression that is nonzero if @var{x} is a legitimate immediate
6101operand on the target machine when generating position independent code.
6102You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not
6103check this. You can also assume @var{flag_pic} is true, so you need not
6104check it either. You need not define this macro if all constants
6105(including @code{SYMBOL_REF}) can be immediate operands when generating
6106position independent code.
a2c4f8e0 6107@end defmac
feca2ed3
JW
6108
6109@node Assembler Format
6110@section Defining the Output Assembler Language
6111
6112This section describes macros whose principal purpose is to describe how
648c546a 6113to write instructions in assembler language---rather than what the
feca2ed3
JW
6114instructions do.
6115
6116@menu
6117* File Framework:: Structural information for the assembler file.
6118* Data Output:: Output of constants (numbers, strings, addresses).
6119* Uninitialized Data:: Output of uninitialized variables.
6120* Label Output:: Output and generation of labels.
6121* Initialization:: General principles of initialization
6122 and termination routines.
6123* Macros for Initialization::
6124 Specific macros that control the handling of
6125 initialization and termination routines.
6126* Instruction Output:: Output of actual instructions.
6127* Dispatch Tables:: Output of jump tables.
6128* Exception Region Output:: Output of exception region code.
6129* Alignment Output:: Pseudo ops for alignment and skipping data.
6130@end menu
6131
6132@node File Framework
6133@subsection The Overall Framework of an Assembler File
6134@cindex assembler format
6135@cindex output of assembler code
6136
6137@c prevent bad page break with this line
1bc7c5b6
ZW
6138This describes the overall framework of an assembly file.
6139
6140@deftypefn {Target Hook} void TARGET_ASM_FILE_START ()
6141@findex default_file_start
6142Output to @code{asm_out_file} any text which the assembler expects to
6143find at the beginning of a file. The default behavior is controlled
6144by two flags, documented below. Unless your target's assembler is
6145quite unusual, if you override the default, you should call
6146@code{default_file_start} at some point in your target hook. This
6147lets other target files rely on these variables.
6148@end deftypefn
feca2ed3 6149
1bc7c5b6
ZW
6150@deftypevr {Target Hook} bool TARGET_ASM_FILE_START_APP_OFF
6151If this flag is true, the text of the macro @code{ASM_APP_OFF} will be
6152printed as the very first line in the assembly file, unless
6153@option{-fverbose-asm} is in effect. (If that macro has been defined
6154to the empty string, this variable has no effect.) With the normal
6155definition of @code{ASM_APP_OFF}, the effect is to notify the GNU
6156assembler that it need not bother stripping comments or extra
6157whitespace from its input. This allows it to work a bit faster.
6158
6159The default is false. You should not set it to true unless you have
6160verified that your port does not generate any extra whitespace or
6161comments that will cause GAS to issue errors in NO_APP mode.
6162@end deftypevr
6163
6164@deftypevr {Target Hook} bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
6165If this flag is true, @code{output_file_directive} will be called
6166for the primary source file, immediately after printing
6167@code{ASM_APP_OFF} (if that is enabled). Most ELF assemblers expect
6168this to be done. The default is false.
6169@end deftypevr
feca2ed3 6170
a5fe455b
ZW
6171@deftypefn {Target Hook} void TARGET_ASM_FILE_END ()
6172Output to @code{asm_out_file} any text which the assembler expects
6173to find at the end of a file. The default is to output nothing.
6174@end deftypefn
feca2ed3 6175
a5fe455b
ZW
6176@deftypefun void file_end_indicate_exec_stack ()
6177Some systems use a common convention, the @samp{.note.GNU-stack}
6178special section, to indicate whether or not an object file relies on
6179the stack being executable. If your system uses this convention, you
6180should define @code{TARGET_ASM_FILE_END} to this function. If you
6181need to do other things in that hook, have your hook function call
6182this function.
6183@end deftypefun
feca2ed3 6184
a2c4f8e0 6185@defmac ASM_COMMENT_START
feca2ed3
JW
6186A C string constant describing how to begin a comment in the target
6187assembler language. The compiler assumes that the comment will end at
6188the end of the line.
a2c4f8e0 6189@end defmac
feca2ed3 6190
a2c4f8e0 6191@defmac ASM_APP_ON
feca2ed3
JW
6192A C string constant for text to be output before each @code{asm}
6193statement or group of consecutive ones. Normally this is
6194@code{"#APP"}, which is a comment that has no effect on most
6195assemblers but tells the GNU assembler that it must check the lines
6196that follow for all valid assembler constructs.
a2c4f8e0 6197@end defmac
feca2ed3 6198
a2c4f8e0 6199@defmac ASM_APP_OFF
feca2ed3
JW
6200A C string constant for text to be output after each @code{asm}
6201statement or group of consecutive ones. Normally this is
6202@code{"#NO_APP"}, which tells the GNU assembler to resume making the
6203time-saving assumptions that are valid for ordinary compiler output.
a2c4f8e0 6204@end defmac
feca2ed3 6205
a2c4f8e0 6206@defmac ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
feca2ed3
JW
6207A C statement to output COFF information or DWARF debugging information
6208which indicates that filename @var{name} is the current source file to
6209the stdio stream @var{stream}.
6210
6211This macro need not be defined if the standard form of output
6212for the file format in use is appropriate.
a2c4f8e0 6213@end defmac
feca2ed3 6214
a2c4f8e0 6215@defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string})
e9a25f70
JL
6216A C statement to output the string @var{string} to the stdio stream
6217@var{stream}. If you do not call the function @code{output_quoted_string}
a3a15b4d 6218in your config files, GCC will only call it to output filenames to
e9a25f70
JL
6219the assembler source. So you can use it to canonicalize the format
6220of the filename using this macro.
a2c4f8e0 6221@end defmac
e9a25f70 6222
a2c4f8e0 6223@defmac ASM_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter})
feca2ed3
JW
6224A C statement to output DBX or SDB debugging information before code
6225for line number @var{line} of the current source file to the
a8d0467e
EB
6226stdio stream @var{stream}. @var{counter} is the number of time the
6227macro was invoked, including the current invocation; it is intended
6228to generate unique labels in the assembly output.
feca2ed3
JW
6229
6230This macro need not be defined if the standard form of debugging
6231information for the debugger in use is appropriate.
a2c4f8e0 6232@end defmac
feca2ed3 6233
a2c4f8e0 6234@defmac ASM_OUTPUT_IDENT (@var{stream}, @var{string})
feca2ed3
JW
6235A C statement to output something to the assembler file to handle a
6236@samp{#ident} directive containing the text @var{string}. If this
6237macro is not defined, nothing is output for a @samp{#ident} directive.
a2c4f8e0 6238@end defmac
feca2ed3 6239
7c262518
RH
6240@deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name}, unsigned int @var{flags}, unsigned int @var{align})
6241Output assembly directives to switch to section @var{name}. The section
6242should have attributes as specified by @var{flags}, which is a bit mask
6243of the @code{SECTION_*} flags defined in @file{output.h}. If @var{align}
df2a54e9 6244is nonzero, it contains an alignment in bytes to be used for the section,
f282ffb3 6245otherwise some target default should be used. Only targets that must
7c262518
RH
6246specify an alignment within the section directive need pay attention to
6247@var{align} -- we will still use @code{ASM_OUTPUT_ALIGN}.
6248@end deftypefn
6249
6250@deftypefn {Target Hook} bool TARGET_HAVE_NAMED_SECTIONS
6251This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}.
6252@end deftypefn
6253
6254@deftypefn {Target Hook} {unsigned int} TARGET_SECTION_TYPE_FLAGS (tree @var{decl}, const char *@var{name}, int @var{reloc})
6255Choose a set of section attributes for use by @code{TARGET_ASM_NAMED_SECTION}
6256based on a variable or function decl, a section name, and whether or not the
6257declaration's initializer may contain runtime relocations. @var{decl} may be
6258 null, in which case read-write data should be assumed.
6259
6260The default version if this function handles choosing code vs data,
6261read-only vs read-write data, and @code{flag_pic}. You should only
6262need to override this if your target has special flags that might be
6263set via @code{__attribute__}.
6264@end deftypefn
6265
feca2ed3
JW
6266@need 2000
6267@node Data Output
6268@subsection Output of Data
6269
301d03af
RS
6270
6271@deftypevr {Target Hook} {const char *} TARGET_ASM_BYTE_OP
6272@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_HI_OP
6273@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_SI_OP
6274@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_DI_OP
6275@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_TI_OP
6276@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_HI_OP
6277@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_SI_OP
6278@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_DI_OP
6279@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_TI_OP
6280These hooks specify assembly directives for creating certain kinds
6281of integer object. The @code{TARGET_ASM_BYTE_OP} directive creates a
6282byte-sized object, the @code{TARGET_ASM_ALIGNED_HI_OP} one creates an
6283aligned two-byte object, and so on. Any of the hooks may be
6284@code{NULL}, indicating that no suitable directive is available.
6285
6286The compiler will print these strings at the start of a new line,
6287followed immediately by the object's initial value. In most cases,
6288the string should contain a tab, a pseudo-op, and then another tab.
6289@end deftypevr
6290
6291@deftypefn {Target Hook} bool TARGET_ASM_INTEGER (rtx @var{x}, unsigned int @var{size}, int @var{aligned_p})
6292The @code{assemble_integer} function uses this hook to output an
6293integer object. @var{x} is the object's value, @var{size} is its size
6294in bytes and @var{aligned_p} indicates whether it is aligned. The
6295function should return @code{true} if it was able to output the
6296object. If it returns false, @code{assemble_integer} will try to
6297split the object into smaller parts.
6298
6299The default implementation of this hook will use the
6300@code{TARGET_ASM_BYTE_OP} family of strings, returning @code{false}
6301when the relevant string is @code{NULL}.
6302@end deftypefn
feca2ed3 6303
a2c4f8e0 6304@defmac OUTPUT_ADDR_CONST_EXTRA (@var{stream}, @var{x}, @var{fail})
422be3c3
AO
6305A C statement to recognize @var{rtx} patterns that
6306@code{output_addr_const} can't deal with, and output assembly code to
6307@var{stream} corresponding to the pattern @var{x}. This may be used to
6308allow machine-dependent @code{UNSPEC}s to appear within constants.
6309
6310If @code{OUTPUT_ADDR_CONST_EXTRA} fails to recognize a pattern, it must
6311@code{goto fail}, so that a standard error message is printed. If it
6312prints an error message itself, by calling, for example,
6313@code{output_operand_lossage}, it may just complete normally.
a2c4f8e0 6314@end defmac
422be3c3 6315
a2c4f8e0 6316@defmac ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len})
feca2ed3
JW
6317A C statement to output to the stdio stream @var{stream} an assembler
6318instruction to assemble a string constant containing the @var{len}
6319bytes at @var{ptr}. @var{ptr} will be a C expression of type
6320@code{char *} and @var{len} a C expression of type @code{int}.
6321
6322If the assembler has a @code{.ascii} pseudo-op as found in the
6323Berkeley Unix assembler, do not define the macro
6324@code{ASM_OUTPUT_ASCII}.
a2c4f8e0 6325@end defmac
feca2ed3 6326
a2c4f8e0 6327@defmac ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n})
67231816
RH
6328A C statement to output word @var{n} of a function descriptor for
6329@var{decl}. This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS}
6330is defined, and is otherwise unused.
a2c4f8e0 6331@end defmac
67231816 6332
a2c4f8e0 6333@defmac CONSTANT_POOL_BEFORE_FUNCTION
861bb6c1 6334You may define this macro as a C expression. You should define the
df2a54e9 6335expression to have a nonzero value if GCC should output the constant
861bb6c1 6336pool for a function before the code for the function, or a zero value if
a3a15b4d
JL
6337GCC should output the constant pool after the function. If you do
6338not define this macro, the usual case, GCC will output the constant
861bb6c1 6339pool before the function.
a2c4f8e0 6340@end defmac
861bb6c1 6341
a2c4f8e0 6342@defmac ASM_OUTPUT_POOL_PROLOGUE (@var{file}, @var{funname}, @var{fundecl}, @var{size})
feca2ed3
JW
6343A C statement to output assembler commands to define the start of the
6344constant pool for a function. @var{funname} is a string giving
6345the name of the function. Should the return type of the function
6346be required, it can be obtained via @var{fundecl}. @var{size}
6347is the size, in bytes, of the constant pool that will be written
6348immediately after this call.
6349
6350If no constant-pool prefix is required, the usual case, this macro need
6351not be defined.
a2c4f8e0 6352@end defmac
feca2ed3 6353
a2c4f8e0 6354@defmac ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto})
feca2ed3
JW
6355A C statement (with or without semicolon) to output a constant in the
6356constant pool, if it needs special treatment. (This macro need not do
6357anything for RTL expressions that can be output normally.)
6358
6359The argument @var{file} is the standard I/O stream to output the
6360assembler code on. @var{x} is the RTL expression for the constant to
6361output, and @var{mode} is the machine mode (in case @var{x} is a
6362@samp{const_int}). @var{align} is the required alignment for the value
6363@var{x}; you should output an assembler directive to force this much
6364alignment.
6365
6366The argument @var{labelno} is a number to use in an internal label for
6367the address of this pool entry. The definition of this macro is
6368responsible for outputting the label definition at the proper place.
6369Here is how to do this:
6370
3ab51846 6371@smallexample
4977bab6 6372@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno});
3ab51846 6373@end smallexample
feca2ed3
JW
6374
6375When you output a pool entry specially, you should end with a
6376@code{goto} to the label @var{jumpto}. This will prevent the same pool
6377entry from being output a second time in the usual manner.
6378
6379You need not define this macro if it would do nothing.
a2c4f8e0 6380@end defmac
feca2ed3 6381
a2c4f8e0 6382@defmac ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
861bb6c1
JL
6383A C statement to output assembler commands to at the end of the constant
6384pool for a function. @var{funname} is a string giving the name of the
6385function. Should the return type of the function be required, you can
6386obtain it via @var{fundecl}. @var{size} is the size, in bytes, of the
a3a15b4d 6387constant pool that GCC wrote immediately before this call.
861bb6c1
JL
6388
6389If no constant-pool epilogue is required, the usual case, you need not
6390define this macro.
a2c4f8e0 6391@end defmac
861bb6c1 6392
a2c4f8e0 6393@defmac IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C})
feca2ed3
JW
6394Define this macro as a C expression which is nonzero if @var{C} is
6395used as a logical line separator by the assembler.
6396
6397If you do not define this macro, the default is that only
6398the character @samp{;} is treated as a logical line separator.
a2c4f8e0 6399@end defmac
feca2ed3 6400
8ca83838 6401@deftypevr {Target Hook} {const char *} TARGET_ASM_OPEN_PAREN
baed53ac 6402@deftypevrx {Target Hook} {const char *} TARGET_ASM_CLOSE_PAREN
17b53c33
NB
6403These target hooks are C string constants, describing the syntax in the
6404assembler for grouping arithmetic expressions. If not overridden, they
6405default to normal parentheses, which is correct for most assemblers.
8ca83838 6406@end deftypevr
17b53c33 6407
feca2ed3
JW
6408 These macros are provided by @file{real.h} for writing the definitions
6409of @code{ASM_OUTPUT_DOUBLE} and the like:
6410
a2c4f8e0
ZW
6411@defmac REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l})
6412@defmacx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l})
6413@defmacx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l})
feca2ed3 6414These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the target's
b216cd4a
ZW
6415floating point representation, and store its bit pattern in the variable
6416@var{l}. For @code{REAL_VALUE_TO_TARGET_SINGLE}, this variable should
6417be a simple @code{long int}. For the others, it should be an array of
6418@code{long int}. The number of elements in this array is determined by
6419the size of the desired target floating point data type: 32 bits of it
6420go in each @code{long int} array element. Each array element holds 32
6421bits of the result, even if @code{long int} is wider than 32 bits on the
6422host machine.
feca2ed3
JW
6423
6424The array element values are designed so that you can print them out
6425using @code{fprintf} in the order they should appear in the target
6426machine's memory.
a2c4f8e0 6427@end defmac
feca2ed3
JW
6428
6429@node Uninitialized Data
6430@subsection Output of Uninitialized Variables
6431
6432Each of the macros in this section is used to do the whole job of
6433outputting a single uninitialized variable.
6434
a2c4f8e0 6435@defmac ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6436A C statement (sans semicolon) to output to the stdio stream
6437@var{stream} the assembler definition of a common-label named
6438@var{name} whose size is @var{size} bytes. The variable @var{rounded}
6439is the size rounded up to whatever alignment the caller wants.
6440
6441Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6442output the name itself; before and after that, output the additional
6443assembler syntax for defining the name, and a newline.
6444
6445This macro controls how the assembler definitions of uninitialized
6446common global variables are output.
a2c4f8e0 6447@end defmac
feca2ed3 6448
a2c4f8e0 6449@defmac ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment})
feca2ed3
JW
6450Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a
6451separate, explicit argument. If you define this macro, it is used in
6452place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in
6453handling the required alignment of the variable. The alignment is specified
6454as the number of bits.
a2c4f8e0 6455@end defmac
feca2ed3 6456
a2c4f8e0 6457@defmac ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
e9a25f70
JL
6458Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the
6459variable to be output, if there is one, or @code{NULL_TREE} if there
8760eaae 6460is no corresponding variable. If you define this macro, GCC will use it
e9a25f70
JL
6461in place of both @code{ASM_OUTPUT_COMMON} and
6462@code{ASM_OUTPUT_ALIGNED_COMMON}. Define this macro when you need to see
6463the variable's decl in order to chose what to output.
a2c4f8e0 6464@end defmac
e9a25f70 6465
a2c4f8e0 6466@defmac ASM_OUTPUT_SHARED_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6467If defined, it is similar to @code{ASM_OUTPUT_COMMON}, except that it
6468is used when @var{name} is shared. If not defined, @code{ASM_OUTPUT_COMMON}
6469will be used.
a2c4f8e0 6470@end defmac
feca2ed3 6471
a2c4f8e0 6472@defmac ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6473A C statement (sans semicolon) to output to the stdio stream
6474@var{stream} the assembler definition of uninitialized global @var{decl} named
6475@var{name} whose size is @var{size} bytes. The variable @var{rounded}
6476is the size rounded up to whatever alignment the caller wants.
6477
6478Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
6479defining this macro. If unable, use the expression
6480@code{assemble_name (@var{stream}, @var{name})} to output the name itself;
6481before and after that, output the additional assembler syntax for defining
6482the name, and a newline.
6483
6484This macro controls how the assembler definitions of uninitialized global
6485variables are output. This macro exists to properly support languages like
aee96fe9 6486C++ which do not have @code{common} data. However, this macro currently
feca2ed3
JW
6487is not defined for all targets. If this macro and
6488@code{ASM_OUTPUT_ALIGNED_BSS} are not defined then @code{ASM_OUTPUT_COMMON}
e9a25f70
JL
6489or @code{ASM_OUTPUT_ALIGNED_COMMON} or
6490@code{ASM_OUTPUT_ALIGNED_DECL_COMMON} is used.
a2c4f8e0 6491@end defmac
feca2ed3 6492
a2c4f8e0 6493@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
feca2ed3
JW
6494Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
6495separate, explicit argument. If you define this macro, it is used in
6496place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
6497handling the required alignment of the variable. The alignment is specified
6498as the number of bits.
6499
6500Try to use function @code{asm_output_aligned_bss} defined in file
6501@file{varasm.c} when defining this macro.
a2c4f8e0 6502@end defmac
feca2ed3 6503
a2c4f8e0 6504@defmac ASM_OUTPUT_SHARED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6505If defined, it is similar to @code{ASM_OUTPUT_BSS}, except that it
6506is used when @var{name} is shared. If not defined, @code{ASM_OUTPUT_BSS}
6507will be used.
a2c4f8e0 6508@end defmac
feca2ed3 6509
a2c4f8e0 6510@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6511A C statement (sans semicolon) to output to the stdio stream
6512@var{stream} the assembler definition of a local-common-label named
6513@var{name} whose size is @var{size} bytes. The variable @var{rounded}
6514is the size rounded up to whatever alignment the caller wants.
6515
6516Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6517output the name itself; before and after that, output the additional
6518assembler syntax for defining the name, and a newline.
6519
6520This macro controls how the assembler definitions of uninitialized
6521static variables are output.
a2c4f8e0 6522@end defmac
feca2ed3 6523
a2c4f8e0 6524@defmac ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment})
feca2ed3
JW
6525Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a
6526separate, explicit argument. If you define this macro, it is used in
6527place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in
6528handling the required alignment of the variable. The alignment is specified
6529as the number of bits.
a2c4f8e0 6530@end defmac
feca2ed3 6531
a2c4f8e0 6532@defmac ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
e9a25f70
JL
6533Like @code{ASM_OUTPUT_ALIGNED_DECL} except that @var{decl} of the
6534variable to be output, if there is one, or @code{NULL_TREE} if there
8760eaae 6535is no corresponding variable. If you define this macro, GCC will use it
e9a25f70
JL
6536in place of both @code{ASM_OUTPUT_DECL} and
6537@code{ASM_OUTPUT_ALIGNED_DECL}. Define this macro when you need to see
6538the variable's decl in order to chose what to output.
a2c4f8e0 6539@end defmac
e9a25f70 6540
a2c4f8e0 6541@defmac ASM_OUTPUT_SHARED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6542If defined, it is similar to @code{ASM_OUTPUT_LOCAL}, except that it
6543is used when @var{name} is shared. If not defined, @code{ASM_OUTPUT_LOCAL}
6544will be used.
a2c4f8e0 6545@end defmac
feca2ed3
JW
6546
6547@node Label Output
6548@subsection Output and Generation of Labels
6549
6550@c prevent bad page break with this line
6551This is about outputting labels.
6552
feca2ed3 6553@findex assemble_name
a2c4f8e0 6554@defmac ASM_OUTPUT_LABEL (@var{stream}, @var{name})
feca2ed3
JW
6555A C statement (sans semicolon) to output to the stdio stream
6556@var{stream} the assembler definition of a label named @var{name}.
6557Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6558output the name itself; before and after that, output the additional
4ad5e05d
KG
6559assembler syntax for defining the name, and a newline. A default
6560definition of this macro is provided which is correct for most systems.
a2c4f8e0 6561@end defmac
feca2ed3 6562
a2c4f8e0 6563@defmac SIZE_ASM_OP
2be2ac70
ZW
6564A C string containing the appropriate assembler directive to specify the
6565size of a symbol, without any arguments. On systems that use ELF, the
6566default (in @file{config/elfos.h}) is @samp{"\t.size\t"}; on other
6567systems, the default is not to define this macro.
6568
6569Define this macro only if it is correct to use the default definitions
6570of @code{ASM_OUTPUT_SIZE_DIRECTIVE} and @code{ASM_OUTPUT_MEASURED_SIZE}
6571for your system. If you need your own custom definitions of those
6572macros, or if you do not need explicit symbol sizes at all, do not
6573define this macro.
a2c4f8e0 6574@end defmac
2be2ac70 6575
a2c4f8e0 6576@defmac ASM_OUTPUT_SIZE_DIRECTIVE (@var{stream}, @var{name}, @var{size})
2be2ac70
ZW
6577A C statement (sans semicolon) to output to the stdio stream
6578@var{stream} a directive telling the assembler that the size of the
6579symbol @var{name} is @var{size}. @var{size} is a @code{HOST_WIDE_INT}.
6580If you define @code{SIZE_ASM_OP}, a default definition of this macro is
6581provided.
a2c4f8e0 6582@end defmac
2be2ac70 6583
a2c4f8e0 6584@defmac ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name})
2be2ac70
ZW
6585A C statement (sans semicolon) to output to the stdio stream
6586@var{stream} a directive telling the assembler to calculate the size of
99086d59 6587the symbol @var{name} by subtracting its address from the current
73774972 6588address.
99086d59
ZW
6589
6590If you define @code{SIZE_ASM_OP}, a default definition of this macro is
6591provided. The default assumes that the assembler recognizes a special
6592@samp{.} symbol as referring to the current address, and can calculate
6593the difference between this and another symbol. If your assembler does
6594not recognize @samp{.} or cannot do calculations with it, you will need
6595to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
a2c4f8e0 6596@end defmac
2be2ac70 6597
a2c4f8e0 6598@defmac TYPE_ASM_OP
2be2ac70
ZW
6599A C string containing the appropriate assembler directive to specify the
6600type of a symbol, without any arguments. On systems that use ELF, the
6601default (in @file{config/elfos.h}) is @samp{"\t.type\t"}; on other
6602systems, the default is not to define this macro.
6603
6604Define this macro only if it is correct to use the default definition of
6605@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own
6606custom definition of this macro, or if you do not need explicit symbol
6607types at all, do not define this macro.
a2c4f8e0 6608@end defmac
2be2ac70 6609
a2c4f8e0 6610@defmac TYPE_OPERAND_FMT
2be2ac70
ZW
6611A C string which specifies (using @code{printf} syntax) the format of
6612the second operand to @code{TYPE_ASM_OP}. On systems that use ELF, the
6613default (in @file{config/elfos.h}) is @samp{"@@%s"}; on other systems,
6614the default is not to define this macro.
6615
6616Define this macro only if it is correct to use the default definition of
6617@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own
6618custom definition of this macro, or if you do not need explicit symbol
6619types at all, do not define this macro.
a2c4f8e0 6620@end defmac
2be2ac70 6621
a2c4f8e0 6622@defmac ASM_OUTPUT_TYPE_DIRECTIVE (@var{stream}, @var{type})
2be2ac70
ZW
6623A C statement (sans semicolon) to output to the stdio stream
6624@var{stream} a directive telling the assembler that the type of the
6625symbol @var{name} is @var{type}. @var{type} is a C string; currently,
6626that string is always either @samp{"function"} or @samp{"object"}, but
6627you should not count on this.
6628
6629If you define @code{TYPE_ASM_OP} and @code{TYPE_OPERAND_FMT}, a default
6630definition of this macro is provided.
a2c4f8e0 6631@end defmac
2be2ac70 6632
a2c4f8e0 6633@defmac ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl})
feca2ed3
JW
6634A C statement (sans semicolon) to output to the stdio stream
6635@var{stream} any text necessary for declaring the name @var{name} of a
6636function which is being defined. This macro is responsible for
6637outputting the label definition (perhaps using
6638@code{ASM_OUTPUT_LABEL}). The argument @var{decl} is the
6639@code{FUNCTION_DECL} tree node representing the function.
6640
6641If this macro is not defined, then the function name is defined in the
6642usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
6643
2be2ac70
ZW
6644You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
6645of this macro.
a2c4f8e0 6646@end defmac
2be2ac70 6647
a2c4f8e0 6648@defmac ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl})
feca2ed3
JW
6649A C statement (sans semicolon) to output to the stdio stream
6650@var{stream} any text necessary for declaring the size of a function
6651which is being defined. The argument @var{name} is the name of the
6652function. The argument @var{decl} is the @code{FUNCTION_DECL} tree node
6653representing the function.
6654
6655If this macro is not defined, then the function size is not defined.
6656
2be2ac70
ZW
6657You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition
6658of this macro.
a2c4f8e0 6659@end defmac
2be2ac70 6660
a2c4f8e0 6661@defmac ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl})
feca2ed3
JW
6662A C statement (sans semicolon) to output to the stdio stream
6663@var{stream} any text necessary for declaring the name @var{name} of an
6664initialized variable which is being defined. This macro must output the
6665label definition (perhaps using @code{ASM_OUTPUT_LABEL}). The argument
6666@var{decl} is the @code{VAR_DECL} tree node representing the variable.
6667
6668If this macro is not defined, then the variable name is defined in the
6669usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
6670
2be2ac70
ZW
6671You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} and/or
6672@code{ASM_OUTPUT_SIZE_DIRECTIVE} in the definition of this macro.
a2c4f8e0 6673@end defmac
2be2ac70 6674
18f3e349
GK
6675@defmac ASM_DECLARE_CONSTANT_NAME (@var{stream}, @var{name}, @var{exp}, @var{size})
6676A C statement (sans semicolon) to output to the stdio stream
6677@var{stream} any text necessary for declaring the name @var{name} of a
6678constant which is being defined. This macro is responsible for
6679outputting the label definition (perhaps using
6680@code{ASM_OUTPUT_LABEL}). The argument @var{exp} is the
6681value of the constant, and @var{size} is the size of the constant
6682in bytes. @var{name} will be an internal label.
6683
6684If this macro is not defined, then the @var{name} is defined in the
6685usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
6686
6687You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
6688of this macro.
6689@end defmac
6690
a2c4f8e0 6691@defmac ASM_DECLARE_REGISTER_GLOBAL (@var{stream}, @var{decl}, @var{regno}, @var{name})
1cb36a98
RH
6692A C statement (sans semicolon) to output to the stdio stream
6693@var{stream} any text necessary for claiming a register @var{regno}
6694for a global variable @var{decl} with name @var{name}.
6695
6696If you don't define this macro, that is equivalent to defining it to do
6697nothing.
a2c4f8e0 6698@end defmac
1cb36a98 6699
a2c4f8e0 6700@defmac ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend})
feca2ed3
JW
6701A C statement (sans semicolon) to finish up declaring a variable name
6702once the compiler has processed its initializer fully and thus has had a
6703chance to determine the size of an array when controlled by an
6704initializer. This is used on systems where it's necessary to declare
6705something about the size of the object.
6706
6707If you don't define this macro, that is equivalent to defining it to do
6708nothing.
6709
2be2ac70
ZW
6710You may wish to use @code{ASM_OUTPUT_SIZE_DIRECTIVE} and/or
6711@code{ASM_OUTPUT_MEASURED_SIZE} in the definition of this macro.
a2c4f8e0 6712@end defmac
2be2ac70 6713
5eb99654
KG
6714@deftypefn {Target Hook} void TARGET_ASM_GLOBALIZE_LABEL (FILE *@var{stream}, const char *@var{name})
6715This target hook is a function to output to the stdio stream
feca2ed3 6716@var{stream} some commands that will make the label @var{name} global;
5eb99654 6717that is, available for reference from other files.
feca2ed3 6718
5eb99654
KG
6719The default implementation relies on a proper definition of
6720@code{GLOBAL_ASM_OP}.
b65d23aa 6721@end deftypefn
072cdaed 6722
a2c4f8e0 6723@defmac ASM_WEAKEN_LABEL (@var{stream}, @var{name})
feca2ed3
JW
6724A C statement (sans semicolon) to output to the stdio stream
6725@var{stream} some commands that will make the label @var{name} weak;
6726that is, available for reference from other files but only used if
6727no other definition is available. Use the expression
6728@code{assemble_name (@var{stream}, @var{name})} to output the name
6729itself; before and after that, output the additional assembler syntax
6730for making that name weak, and a newline.
6731
79c4e63f
AM
6732If you don't define this macro or @code{ASM_WEAKEN_DECL}, GCC will not
6733support weak symbols and you should not define the @code{SUPPORTS_WEAK}
6734macro.
a2c4f8e0 6735@end defmac
79c4e63f 6736
a2c4f8e0 6737@defmac ASM_WEAKEN_DECL (@var{stream}, @var{decl}, @var{name}, @var{value})
79c4e63f
AM
6738Combines (and replaces) the function of @code{ASM_WEAKEN_LABEL} and
6739@code{ASM_OUTPUT_WEAK_ALIAS}, allowing access to the associated function
6740or variable decl. If @var{value} is not @code{NULL}, this C statement
6741should output to the stdio stream @var{stream} assembler code which
6742defines (equates) the weak symbol @var{name} to have the value
6743@var{value}. If @var{value} is @code{NULL}, it should output commands
6744to make @var{name} weak.
a2c4f8e0 6745@end defmac
feca2ed3 6746
a2c4f8e0 6747@defmac SUPPORTS_WEAK
feca2ed3
JW
6748A C expression which evaluates to true if the target supports weak symbols.
6749
6750If you don't define this macro, @file{defaults.h} provides a default
79c4e63f
AM
6751definition. If either @code{ASM_WEAKEN_LABEL} or @code{ASM_WEAKEN_DECL}
6752is defined, the default definition is @samp{1}; otherwise, it is
6753@samp{0}. Define this macro if you want to control weak symbol support
6754with a compiler flag such as @option{-melf}.
a2c4f8e0 6755@end defmac
feca2ed3 6756
a2c4f8e0 6757@defmac MAKE_DECL_ONE_ONLY (@var{decl})
feca2ed3
JW
6758A C statement (sans semicolon) to mark @var{decl} to be emitted as a
6759public symbol such that extra copies in multiple translation units will
6760be discarded by the linker. Define this macro if your object file
6761format provides support for this concept, such as the @samp{COMDAT}
6762section flags in the Microsoft Windows PE/COFF format, and this support
6763requires changes to @var{decl}, such as putting it in a separate section.
a2c4f8e0 6764@end defmac
feca2ed3 6765
a2c4f8e0 6766@defmac SUPPORTS_ONE_ONLY
feca2ed3
JW
6767A C expression which evaluates to true if the target supports one-only
6768semantics.
6769
6770If you don't define this macro, @file{varasm.c} provides a default
6771definition. If @code{MAKE_DECL_ONE_ONLY} is defined, the default
6772definition is @samp{1}; otherwise, it is @samp{0}. Define this macro if
e9a25f70 6773you want to control one-only symbol support with a compiler flag, or if
feca2ed3
JW
6774setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
6775be emitted as one-only.
a2c4f8e0 6776@end defmac
feca2ed3 6777
93638d7a
AM
6778@deftypefn {Target Hook} void TARGET_ASM_ASSEMBLE_VISIBILITY (tree @var{decl}, const char *@var{visibility})
6779This target hook is a function to output to @var{asm_out_file} some
6780commands that will make the symbol(s) associated with @var{decl} have
6781hidden, protected or internal visibility as specified by @var{visibility}.
6782@end deftypefn
6783
0524c91d 6784@defmac TARGET_WEAK_NOT_IN_ARCHIVE_TOC
4746cf84 6785A C expression that evaluates to true if the target's linker expects
0524c91d
MA
6786that weak symbols do not appear in a static archive's table of contents.
6787The default is @code{0}.
6788
6789Leaving weak symbols out of an archive's table of contents means that,
6790if a symbol will only have a definition in one translation unit and
6791will have undefined references from other translation units, that
6792symbol should not be weak. Defining this macro to be nonzero will
6793thus have the effect that certain symbols that would normally be weak
6794(explicit template instantiations, and vtables for polymorphic classes
6795with noninline key methods) will instead be nonweak.
6796
6797The C++ ABI requires this macro to be zero. Define this macro for
6798targets where full C++ ABI compliance is impossible and where linker
6799restrictions require weak symbols to be left out of a static archive's
6800table of contents.
4746cf84
MA
6801@end defmac
6802
6803@defmac TARGET_SUPPORTS_HIDDEN
6804A C expression that evaluates to true if the target supports hidden
6805visibility. By default this expression is true if and only if
6806@code{HAS_GAS_HIDDEN} is defined. Set this macro if the
6807@code{HAS_GAS_HIDDEN} macro gives the wrong answer for this
6808target. (For example, if the target's mechanism for supporting
6809hidden visibility is not the same as GAS's.)
6810@end defmac
6811
a2c4f8e0 6812@defmac ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name})
feca2ed3
JW
6813A C statement (sans semicolon) to output to the stdio stream
6814@var{stream} any text necessary for declaring the name of an external
6815symbol named @var{name} which is referenced in this compilation but
6816not defined. The value of @var{decl} is the tree node for the
6817declaration.
6818
6819This macro need not be defined if it does not need to output anything.
6820The GNU assembler and most Unix assemblers don't require anything.
a2c4f8e0 6821@end defmac
feca2ed3 6822
6773a41c
RO
6823@deftypefn {Target Hook} void TARGET_ASM_EXTERNAL_LIBCALL (rtx @var{symref})
6824This target hook is a function to output to @var{asm_out_file} an assembler
feca2ed3 6825pseudo-op to declare a library function name external. The name of the
6773a41c
RO
6826library function is given by @var{symref}, which is a @code{symbol_ref}.
6827@end deftypefn
feca2ed3 6828
a2c4f8e0 6829@defmac ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
feca2ed3
JW
6830A C statement (sans semicolon) to output to the stdio stream
6831@var{stream} a reference in assembler syntax to a label named
6832@var{name}. This should add @samp{_} to the front of the name, if that
6833is customary on your operating system, as it is in most Berkeley Unix
6834systems. This macro is used in @code{assemble_name}.
a2c4f8e0 6835@end defmac
feca2ed3 6836
a2c4f8e0 6837@defmac ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym})
99c8c61c 6838A C statement (sans semicolon) to output a reference to
2f0b7af6 6839@code{SYMBOL_REF} @var{sym}. If not defined, @code{assemble_name}
99c8c61c
AO
6840will be used to output the name of the symbol. This macro may be used
6841to modify the way a symbol is referenced depending on information
fb49053f 6842encoded by @code{TARGET_ENCODE_SECTION_INFO}.
a2c4f8e0 6843@end defmac
99c8c61c 6844
a2c4f8e0 6845@defmac ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf})
2f0b7af6 6846A C statement (sans semicolon) to output a reference to @var{buf}, the
4226378a 6847result of @code{ASM_GENERATE_INTERNAL_LABEL}. If not defined,
2f0b7af6
GK
6848@code{assemble_name} will be used to output the name of the symbol.
6849This macro is not used by @code{output_asm_label}, or the @code{%l}
6850specifier that calls it; the intention is that this macro should be set
4226378a
PK
6851when it is necessary to output a label differently when its address is
6852being taken.
a2c4f8e0 6853@end defmac
2f0b7af6 6854
4977bab6
ZW
6855@deftypefn {Target Hook} void TARGET_ASM_INTERNAL_LABEL (FILE *@var{stream}, const char *@var{prefix}, unsigned long @var{labelno})
6856A function to output to the stdio stream @var{stream} a label whose
6857name is made from the string @var{prefix} and the number @var{labelno}.
feca2ed3
JW
6858
6859It is absolutely essential that these labels be distinct from the labels
6860used for user-level functions and variables. Otherwise, certain programs
6861will have name conflicts with internal labels.
6862
6863It is desirable to exclude internal labels from the symbol table of the
6864object file. Most assemblers have a naming convention for labels that
6865should be excluded; on many systems, the letter @samp{L} at the
6866beginning of a label has this effect. You should find out what
6867convention your system uses, and follow it.
6868
4977bab6 6869The default version of this function utilizes ASM_GENERATE_INTERNAL_LABEL.
4977bab6 6870@end deftypefn
feca2ed3 6871
a2c4f8e0 6872@defmac ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num})
8215347e
JW
6873A C statement to output to the stdio stream @var{stream} a debug info
6874label whose name is made from the string @var{prefix} and the number
6875@var{num}. This is useful for VLIW targets, where debug info labels
6876may need to be treated differently than branch target labels. On some
6877systems, branch target labels must be at the beginning of instruction
6878bundles, but debug info labels can occur in the middle of instruction
6879bundles.
6880
4977bab6 6881If this macro is not defined, then @code{(*targetm.asm_out.internal_label)} will be
8215347e 6882used.
a2c4f8e0 6883@end defmac
8215347e 6884
a2c4f8e0 6885@defmac ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num})
feca2ed3
JW
6886A C statement to store into the string @var{string} a label whose name
6887is made from the string @var{prefix} and the number @var{num}.
6888
6889This string, when output subsequently by @code{assemble_name}, should
4977bab6 6890produce the output that @code{(*targetm.asm_out.internal_label)} would produce
feca2ed3
JW
6891with the same @var{prefix} and @var{num}.
6892
6893If the string begins with @samp{*}, then @code{assemble_name} will
6894output the rest of the string unchanged. It is often convenient for
6895@code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way. If the
6896string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets
6897to output the string, and may change it. (Of course,
6898@code{ASM_OUTPUT_LABELREF} is also part of your machine description, so
6899you should know what it does on your machine.)
a2c4f8e0 6900@end defmac
feca2ed3 6901
a2c4f8e0 6902@defmac ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number})
feca2ed3
JW
6903A C expression to assign to @var{outvar} (which is a variable of type
6904@code{char *}) a newly allocated string made from the string
6905@var{name} and the number @var{number}, with some suitable punctuation
6906added. Use @code{alloca} to get space for the string.
6907
6908The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to
6909produce an assembler label for an internal static variable whose name is
6910@var{name}. Therefore, the string must be such as to result in valid
6911assembler code. The argument @var{number} is different each time this
6912macro is executed; it prevents conflicts between similarly-named
6913internal static variables in different scopes.
6914
6915Ideally this string should not be a valid C identifier, to prevent any
6916conflict with the user's own symbols. Most assemblers allow periods
6917or percent signs in assembler symbols; putting at least one of these
6918between the name and the number will suffice.
6919
4977bab6
ZW
6920If this macro is not defined, a default definition will be provided
6921which is correct for most systems.
a2c4f8e0 6922@end defmac
4977bab6 6923
a2c4f8e0 6924@defmac ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value})
feca2ed3
JW
6925A C statement to output to the stdio stream @var{stream} assembler code
6926which defines (equates) the symbol @var{name} to have the value @var{value}.
6927
203cb4ef 6928@findex SET_ASM_OP
aee96fe9 6929If @code{SET_ASM_OP} is defined, a default definition is provided which is
feca2ed3 6930correct for most systems.
a2c4f8e0 6931@end defmac
810e3c45 6932
a2c4f8e0 6933@defmac ASM_OUTPUT_DEF_FROM_DECLS (@var{stream}, @var{decl_of_name}, @var{decl_of_value})
e4faf1eb 6934A C statement to output to the stdio stream @var{stream} assembler code
3b7a2e58 6935which defines (equates) the symbol whose tree node is @var{decl_of_name}
e4faf1eb
NC
6936to have the value of the tree node @var{decl_of_value}. This macro will
6937be used in preference to @samp{ASM_OUTPUT_DEF} if it is defined and if
6938the tree nodes are available.
6939
203cb4ef 6940@findex SET_ASM_OP
aee96fe9 6941If @code{SET_ASM_OP} is defined, a default definition is provided which is
956d6950 6942correct for most systems.
a2c4f8e0 6943@end defmac
956d6950 6944
a2c4f8e0 6945@defmac ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value})
810e3c45
JM
6946A C statement to output to the stdio stream @var{stream} assembler code
6947which defines (equates) the weak symbol @var{name} to have the value
3aa8ab7b
L
6948@var{value}. If @var{value} is @code{NULL}, it defines @var{name} as
6949an undefined weak symbol.
810e3c45
JM
6950
6951Define this macro if the target only supports weak aliases; define
aee96fe9 6952@code{ASM_OUTPUT_DEF} instead if possible.
a2c4f8e0 6953@end defmac
810e3c45 6954
a2c4f8e0 6955@defmac OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name})
feca2ed3 6956Define this macro to override the default assembler names used for
2147b154 6957Objective-C methods.
feca2ed3
JW
6958
6959The default name is a unique method number followed by the name of the
6960class (e.g.@: @samp{_1_Foo}). For methods in categories, the name of
6961the category is also included in the assembler name (e.g.@:
6962@samp{_1_Foo_Bar}).
6963
6964These names are safe on most systems, but make debugging difficult since
6965the method's selector is not present in the name. Therefore, particular
6966systems define other ways of computing names.
6967
6968@var{buf} is an expression of type @code{char *} which gives you a
6969buffer in which to store the name; its length is as long as
6970@var{class_name}, @var{cat_name} and @var{sel_name} put together, plus
697150 characters extra.
6972
6973The argument @var{is_inst} specifies whether the method is an instance
6974method or a class method; @var{class_name} is the name of the class;
59d42021 6975@var{cat_name} is the name of the category (or @code{NULL} if the method is not
feca2ed3
JW
6976in a category); and @var{sel_name} is the name of the selector.
6977
6978On systems where the assembler can handle quoted names, you can use this
6979macro to provide more human-readable names.
a2c4f8e0 6980@end defmac
28df0b5a 6981
a2c4f8e0 6982@defmac ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name})
f60b945b
SS
6983A C statement (sans semicolon) to output to the stdio stream
6984@var{stream} commands to declare that the label @var{name} is an
6985Objective-C class reference. This is only needed for targets whose
6986linkers have special support for NeXT-style runtimes.
a2c4f8e0 6987@end defmac
f60b945b 6988
a2c4f8e0 6989@defmac ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name})
28df0b5a
SS
6990A C statement (sans semicolon) to output to the stdio stream
6991@var{stream} commands to declare that the label @var{name} is an
6992unresolved Objective-C class reference. This is only needed for targets
6993whose linkers have special support for NeXT-style runtimes.
a2c4f8e0 6994@end defmac
feca2ed3
JW
6995
6996@node Initialization
6997@subsection How Initialization Functions Are Handled
6998@cindex initialization routines
6999@cindex termination routines
7000@cindex constructors, output of
7001@cindex destructors, output of
7002
7003The compiled code for certain languages includes @dfn{constructors}
7004(also called @dfn{initialization routines})---functions to initialize
7005data in the program when the program is started. These functions need
7006to be called before the program is ``started''---that is to say, before
7007@code{main} is called.
7008
7009Compiling some languages generates @dfn{destructors} (also called
7010@dfn{termination routines}) that should be called when the program
7011terminates.
7012
7013To make the initialization and termination functions work, the compiler
7014must output something in the assembler code to cause those functions to
7015be called at the appropriate time. When you port the compiler to a new
7016system, you need to specify how to do this.
7017
7018There are two major ways that GCC currently supports the execution of
7019initialization and termination functions. Each way has two variants.
7020Much of the structure is common to all four variations.
7021
7022@findex __CTOR_LIST__
7023@findex __DTOR_LIST__
7024The linker must build two lists of these functions---a list of
7025initialization functions, called @code{__CTOR_LIST__}, and a list of
7026termination functions, called @code{__DTOR_LIST__}.
7027
7028Each list always begins with an ignored function pointer (which may hold
70290, @minus{}1, or a count of the function pointers after it, depending on
7030the environment). This is followed by a series of zero or more function
7031pointers to constructors (or destructors), followed by a function
7032pointer containing zero.
7033
7034Depending on the operating system and its executable file format, either
7035@file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup
7036time and exit time. Constructors are called in reverse order of the
7037list; destructors in forward order.
7038
7039The best way to handle static constructors works only for object file
7040formats which provide arbitrarily-named sections. A section is set
7041aside for a list of constructors, and another for a list of destructors.
7042Traditionally these are called @samp{.ctors} and @samp{.dtors}. Each
7043object file that defines an initialization function also puts a word in
7044the constructor section to point to that function. The linker
7045accumulates all these words into one contiguous @samp{.ctors} section.
7046Termination functions are handled similarly.
7047
2cc07db4
RH
7048This method will be chosen as the default by @file{target-def.h} if
7049@code{TARGET_ASM_NAMED_SECTION} is defined. A target that does not
f282ffb3 7050support arbitrary sections, but does support special designated
2cc07db4
RH
7051constructor and destructor sections may define @code{CTORS_SECTION_ASM_OP}
7052and @code{DTORS_SECTION_ASM_OP} to achieve the same effect.
feca2ed3
JW
7053
7054When arbitrary sections are available, there are two variants, depending
7055upon how the code in @file{crtstuff.c} is called. On systems that
2cc07db4 7056support a @dfn{.init} section which is executed at program startup,
feca2ed3 7057parts of @file{crtstuff.c} are compiled into that section. The
05739753 7058program is linked by the @command{gcc} driver like this:
feca2ed3 7059
3ab51846 7060@smallexample
2cc07db4 7061ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o
3ab51846 7062@end smallexample
feca2ed3 7063
2cc07db4
RH
7064The prologue of a function (@code{__init}) appears in the @code{.init}
7065section of @file{crti.o}; the epilogue appears in @file{crtn.o}. Likewise
7066for the function @code{__fini} in the @dfn{.fini} section. Normally these
7067files are provided by the operating system or by the GNU C library, but
7068are provided by GCC for a few targets.
7069
7070The objects @file{crtbegin.o} and @file{crtend.o} are (for most targets)
7071compiled from @file{crtstuff.c}. They contain, among other things, code
7072fragments within the @code{.init} and @code{.fini} sections that branch
7073to routines in the @code{.text} section. The linker will pull all parts
7074of a section together, which results in a complete @code{__init} function
7075that invokes the routines we need at startup.
feca2ed3
JW
7076
7077To use this variant, you must define the @code{INIT_SECTION_ASM_OP}
7078macro properly.
7079
2cc07db4
RH
7080If no init section is available, when GCC compiles any function called
7081@code{main} (or more accurately, any function designated as a program
7082entry point by the language front end calling @code{expand_main_function}),
7083it inserts a procedure call to @code{__main} as the first executable code
7084after the function prologue. The @code{__main} function is defined
7085in @file{libgcc2.c} and runs the global constructors.
feca2ed3
JW
7086
7087In file formats that don't support arbitrary sections, there are again
7088two variants. In the simplest variant, the GNU linker (GNU @code{ld})
7089and an `a.out' format must be used. In this case,
2cc07db4 7090@code{TARGET_ASM_CONSTRUCTOR} is defined to produce a @code{.stabs}
feca2ed3
JW
7091entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__},
7092and with the address of the void function containing the initialization
7093code as its value. The GNU linker recognizes this as a request to add
2cc07db4 7094the value to a @dfn{set}; the values are accumulated, and are eventually
feca2ed3
JW
7095placed in the executable as a vector in the format described above, with
7096a leading (ignored) count and a trailing zero element.
2cc07db4 7097@code{TARGET_ASM_DESTRUCTOR} is handled similarly. Since no init
feca2ed3
JW
7098section is available, the absence of @code{INIT_SECTION_ASM_OP} causes
7099the compilation of @code{main} to call @code{__main} as above, starting
7100the initialization process.
7101
7102The last variant uses neither arbitrary sections nor the GNU linker.
7103This is preferable when you want to do dynamic linking and when using
161d7b59 7104file formats which the GNU linker does not support, such as `ECOFF'@. In
2cc07db4
RH
7105this case, @code{TARGET_HAVE_CTORS_DTORS} is false, initialization and
7106termination functions are recognized simply by their names. This requires
7107an extra program in the linkage step, called @command{collect2}. This program
7108pretends to be the linker, for use with GCC; it does its job by running
7109the ordinary linker, but also arranges to include the vectors of
7110initialization and termination functions. These functions are called
7111via @code{__main} as described above. In order to use this method,
7112@code{use_collect2} must be defined in the target in @file{config.gcc}.
feca2ed3
JW
7113
7114@ifinfo
7115The following section describes the specific macros that control and
7116customize the handling of initialization and termination functions.
7117@end ifinfo
7118
7119@node Macros for Initialization
7120@subsection Macros Controlling Initialization Routines
7121
7122Here are the macros that control how the compiler handles initialization
7123and termination functions:
7124
a2c4f8e0 7125@defmac INIT_SECTION_ASM_OP
047c1c92
HPN
7126If defined, a C string constant, including spacing, for the assembler
7127operation to identify the following data as initialization code. If not
7128defined, GCC will assume such a section does not exist. When you are
7129using special sections for initialization and termination functions, this
7130macro also controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to
7131run the initialization functions.
a2c4f8e0 7132@end defmac
feca2ed3 7133
a2c4f8e0 7134@defmac HAS_INIT_SECTION
feca2ed3 7135If defined, @code{main} will not call @code{__main} as described above.
2cc07db4
RH
7136This macro should be defined for systems that control start-up code
7137on a symbol-by-symbol basis, such as OSF/1, and should not
7138be defined explicitly for systems that support @code{INIT_SECTION_ASM_OP}.
a2c4f8e0 7139@end defmac
feca2ed3 7140
a2c4f8e0 7141@defmac LD_INIT_SWITCH
feca2ed3
JW
7142If defined, a C string constant for a switch that tells the linker that
7143the following symbol is an initialization routine.
a2c4f8e0 7144@end defmac
feca2ed3 7145
a2c4f8e0 7146@defmac LD_FINI_SWITCH
feca2ed3
JW
7147If defined, a C string constant for a switch that tells the linker that
7148the following symbol is a finalization routine.
a2c4f8e0 7149@end defmac
feca2ed3 7150
a2c4f8e0 7151@defmac COLLECT_SHARED_INIT_FUNC (@var{stream}, @var{func})
414e05cf
RE
7152If defined, a C statement that will write a function that can be
7153automatically called when a shared library is loaded. The function
7154should call @var{func}, which takes no arguments. If not defined, and
7155the object format requires an explicit initialization function, then a
172270b3 7156function called @code{_GLOBAL__DI} will be generated.
414e05cf
RE
7157
7158This function and the following one are used by collect2 when linking a
f282ffb3 7159shared library that needs constructors or destructors, or has DWARF2
414e05cf 7160exception tables embedded in the code.
a2c4f8e0 7161@end defmac
414e05cf 7162
a2c4f8e0 7163@defmac COLLECT_SHARED_FINI_FUNC (@var{stream}, @var{func})
414e05cf
RE
7164If defined, a C statement that will write a function that can be
7165automatically called when a shared library is unloaded. The function
7166should call @var{func}, which takes no arguments. If not defined, and
7167the object format requires an explicit finalization function, then a
172270b3 7168function called @code{_GLOBAL__DD} will be generated.
a2c4f8e0 7169@end defmac
414e05cf 7170
a2c4f8e0 7171@defmac INVOKE__main
feca2ed3
JW
7172If defined, @code{main} will call @code{__main} despite the presence of
7173@code{INIT_SECTION_ASM_OP}. This macro should be defined for systems
7174where the init section is not actually run automatically, but is still
7175useful for collecting the lists of constructors and destructors.
a2c4f8e0 7176@end defmac
feca2ed3 7177
a2c4f8e0 7178@defmac SUPPORTS_INIT_PRIORITY
ea4f1fce
JO
7179If nonzero, the C++ @code{init_priority} attribute is supported and the
7180compiler should emit instructions to control the order of initialization
7181of objects. If zero, the compiler will issue an error message upon
7182encountering an @code{init_priority} attribute.
a2c4f8e0 7183@end defmac
2cc07db4
RH
7184
7185@deftypefn {Target Hook} bool TARGET_HAVE_CTORS_DTORS
7186This value is true if the target supports some ``native'' method of
7187collecting constructors and destructors to be run at startup and exit.
7188It is false if we must use @command{collect2}.
7189@end deftypefn
7190
7191@deftypefn {Target Hook} void TARGET_ASM_CONSTRUCTOR (rtx @var{symbol}, int @var{priority})
7192If defined, a function that outputs assembler code to arrange to call
7193the function referenced by @var{symbol} at initialization time.
ea4f1fce 7194
2cc07db4
RH
7195Assume that @var{symbol} is a @code{SYMBOL_REF} for a function taking
7196no arguments and with no return value. If the target supports initialization
7197priorities, @var{priority} is a value between 0 and @code{MAX_INIT_PRIORITY};
7198otherwise it must be @code{DEFAULT_INIT_PRIORITY}.
7199
14976c58 7200If this macro is not defined by the target, a suitable default will
2cc07db4
RH
7201be chosen if (1) the target supports arbitrary section names, (2) the
7202target defines @code{CTORS_SECTION_ASM_OP}, or (3) @code{USE_COLLECT2}
7203is not defined.
7204@end deftypefn
7205
7206@deftypefn {Target Hook} void TARGET_ASM_DESTRUCTOR (rtx @var{symbol}, int @var{priority})
7207This is like @code{TARGET_ASM_CONSTRUCTOR} but used for termination
feca2ed3 7208functions rather than initialization functions.
2cc07db4 7209@end deftypefn
14686fcd 7210
2cc07db4
RH
7211If @code{TARGET_HAVE_CTORS_DTORS} is true, the initialization routine
7212generated for the generated object file will have static linkage.
feca2ed3 7213
2cc07db4
RH
7214If your system uses @command{collect2} as the means of processing
7215constructors, then that program normally uses @command{nm} to scan
7216an object file for constructor functions to be called.
14686fcd 7217
4a023207 7218On certain kinds of systems, you can define this macro to make
2cc07db4 7219@command{collect2} work faster (and, in some cases, make it work at all):
feca2ed3 7220
a2c4f8e0 7221@defmac OBJECT_FORMAT_COFF
feca2ed3 7222Define this macro if the system uses COFF (Common Object File Format)
2cc07db4 7223object files, so that @command{collect2} can assume this format and scan
feca2ed3 7224object files directly for dynamic constructor/destructor functions.
feca2ed3 7225
4a023207 7226This macro is effective only in a native compiler; @command{collect2} as
2cc07db4 7227part of a cross compiler always uses @command{nm} for the target machine.
a2c4f8e0 7228@end defmac
feca2ed3 7229
5f31e9bc
RO
7230@defmac COLLECT_PARSE_FLAG (@var{flag})
7231Define this macro to be C code that examines @command{collect2} command
7232line option @var{flag} and performs special actions if
7233@command{collect2} needs to behave differently depending on @var{flag}.
7234@end defmac
7235
a2c4f8e0 7236@defmac REAL_NM_FILE_NAME
feca2ed3 7237Define this macro as a C string constant containing the file name to use
2cc07db4
RH
7238to execute @command{nm}. The default is to search the path normally for
7239@command{nm}.
feca2ed3
JW
7240
7241If your system supports shared libraries and has a program to list the
7242dynamic dependencies of a given library or executable, you can define
7243these macros to enable support for running initialization and
7244termination functions in shared libraries:
a2c4f8e0 7245@end defmac
feca2ed3 7246
a2c4f8e0 7247@defmac LDD_SUFFIX
2cc07db4
RH
7248Define this macro to a C string constant containing the name of the program
7249which lists dynamic dependencies, like @command{"ldd"} under SunOS 4.
a2c4f8e0 7250@end defmac
feca2ed3 7251
a2c4f8e0 7252@defmac PARSE_LDD_OUTPUT (@var{ptr})
feca2ed3 7253Define this macro to be C code that extracts filenames from the output
aee96fe9 7254of the program denoted by @code{LDD_SUFFIX}. @var{ptr} is a variable
feca2ed3
JW
7255of type @code{char *} that points to the beginning of a line of output
7256from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the
aee96fe9
JM
7257code must advance @var{ptr} to the beginning of the filename on that
7258line. Otherwise, it must set @var{ptr} to @code{NULL}.
a2c4f8e0 7259@end defmac
feca2ed3
JW
7260
7261@node Instruction Output
7262@subsection Output of Assembler Instructions
7263
7264@c prevent bad page break with this line
7265This describes assembler instruction output.
7266
a2c4f8e0 7267@defmac REGISTER_NAMES
feca2ed3
JW
7268A C initializer containing the assembler's names for the machine
7269registers, each one as a C string constant. This is what translates
7270register numbers in the compiler into assembler language.
a2c4f8e0 7271@end defmac
feca2ed3 7272
a2c4f8e0 7273@defmac ADDITIONAL_REGISTER_NAMES
feca2ed3
JW
7274If defined, a C initializer for an array of structures containing a name
7275and a register number. This macro defines additional names for hard
7276registers, thus allowing the @code{asm} option in declarations to refer
7277to registers using alternate names.
a2c4f8e0 7278@end defmac
feca2ed3 7279
a2c4f8e0 7280@defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
feca2ed3
JW
7281Define this macro if you are using an unusual assembler that
7282requires different names for the machine instructions.
7283
7284The definition is a C statement or statements which output an
7285assembler instruction opcode to the stdio stream @var{stream}. The
7286macro-operand @var{ptr} is a variable of type @code{char *} which
7287points to the opcode name in its ``internal'' form---the form that is
7288written in the machine description. The definition should output the
7289opcode name to @var{stream}, performing any translation you desire, and
7290increment the variable @var{ptr} to point at the end of the opcode
7291so that it will not be output twice.
7292
7293In fact, your macro definition may process less than the entire opcode
7294name, or more than the opcode name; but if you want to process text
7295that includes @samp{%}-sequences to substitute operands, you must take
7296care of the substitution yourself. Just be sure to increment
7297@var{ptr} over whatever text should not be output normally.
7298
37bef197 7299@findex recog_data.operand
feca2ed3 7300If you need to look at the operand values, they can be found as the
37bef197 7301elements of @code{recog_data.operand}.
feca2ed3
JW
7302
7303If the macro definition does nothing, the instruction is output
7304in the usual way.
a2c4f8e0 7305@end defmac
feca2ed3 7306
a2c4f8e0 7307@defmac FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands})
feca2ed3
JW
7308If defined, a C statement to be executed just prior to the output of
7309assembler code for @var{insn}, to modify the extracted operands so
7310they will be output differently.
7311
7312Here the argument @var{opvec} is the vector containing the operands
7313extracted from @var{insn}, and @var{noperands} is the number of
7314elements of the vector which contain meaningful data for this insn.
7315The contents of this vector are what will be used to convert the insn
7316template into assembler code, so you can change the assembler output
7317by changing the contents of the vector.
7318
7319This macro is useful when various assembler syntaxes share a single
7320file of instruction patterns; by defining this macro differently, you
7321can cause a large class of instructions to be output differently (such
7322as with rearranged operands). Naturally, variations in assembler
7323syntax affecting individual insn patterns ought to be handled by
7324writing conditional output routines in those patterns.
7325
7326If this macro is not defined, it is equivalent to a null statement.
a2c4f8e0 7327@end defmac
feca2ed3 7328
a2c4f8e0 7329@defmac PRINT_OPERAND (@var{stream}, @var{x}, @var{code})
feca2ed3
JW
7330A C compound statement to output to stdio stream @var{stream} the
7331assembler syntax for an instruction operand @var{x}. @var{x} is an
7332RTL expression.
7333
7334@var{code} is a value that can be used to specify one of several ways
7335of printing the operand. It is used when identical operands must be
7336printed differently depending on the context. @var{code} comes from
7337the @samp{%} specification that was used to request printing of the
7338operand. If the specification was just @samp{%@var{digit}} then
7339@var{code} is 0; if the specification was @samp{%@var{ltr}
7340@var{digit}} then @var{code} is the ASCII code for @var{ltr}.
7341
7342@findex reg_names
7343If @var{x} is a register, this macro should print the register's name.
7344The names can be found in an array @code{reg_names} whose type is
7345@code{char *[]}. @code{reg_names} is initialized from
7346@code{REGISTER_NAMES}.
7347
7348When the machine description has a specification @samp{%@var{punct}}
7349(a @samp{%} followed by a punctuation character), this macro is called
7350with a null pointer for @var{x} and the punctuation character for
7351@var{code}.
a2c4f8e0 7352@end defmac
feca2ed3 7353
a2c4f8e0 7354@defmac PRINT_OPERAND_PUNCT_VALID_P (@var{code})
feca2ed3
JW
7355A C expression which evaluates to true if @var{code} is a valid
7356punctuation character for use in the @code{PRINT_OPERAND} macro. If
7357@code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no
7358punctuation characters (except for the standard one, @samp{%}) are used
7359in this way.
a2c4f8e0 7360@end defmac
feca2ed3 7361
a2c4f8e0 7362@defmac PRINT_OPERAND_ADDRESS (@var{stream}, @var{x})
feca2ed3
JW
7363A C compound statement to output to stdio stream @var{stream} the
7364assembler syntax for an instruction operand that is a memory reference
7365whose address is @var{x}. @var{x} is an RTL expression.
7366
fb49053f 7367@cindex @code{TARGET_ENCODE_SECTION_INFO} usage
feca2ed3 7368On some machines, the syntax for a symbolic address depends on the
fb49053f
RH
7369section that the address refers to. On these machines, define the hook
7370@code{TARGET_ENCODE_SECTION_INFO} to store the information into the
a2c4f8e0
ZW
7371@code{symbol_ref}, and then check for it here. @xref{Assembler
7372Format}.
7373@end defmac
feca2ed3 7374
feca2ed3 7375@findex dbr_sequence_length
a2c4f8e0 7376@defmac DBR_OUTPUT_SEQEND (@var{file})
feca2ed3
JW
7377A C statement, to be executed after all slot-filler instructions have
7378been output. If necessary, call @code{dbr_sequence_length} to
7379determine the number of slots filled in a sequence (zero if not
7380currently outputting a sequence), to decide how many no-ops to output,
7381or whatever.
7382
7383Don't define this macro if it has nothing to do, but it is helpful in
7384reading assembly output if the extent of the delay sequence is made
e979f9e8 7385explicit (e.g.@: with white space).
a2c4f8e0 7386@end defmac
feca2ed3
JW
7387
7388@findex final_sequence
7389Note that output routines for instructions with delay slots must be
e979f9e8
JM
7390prepared to deal with not being output as part of a sequence
7391(i.e.@: when the scheduling pass is not run, or when no slot fillers could be
feca2ed3
JW
7392found.) The variable @code{final_sequence} is null when not
7393processing a sequence, otherwise it contains the @code{sequence} rtx
7394being output.
7395
feca2ed3 7396@findex asm_fprintf
a2c4f8e0
ZW
7397@defmac REGISTER_PREFIX
7398@defmacx LOCAL_LABEL_PREFIX
7399@defmacx USER_LABEL_PREFIX
7400@defmacx IMMEDIATE_PREFIX
feca2ed3
JW
7401If defined, C string expressions to be used for the @samp{%R}, @samp{%L},
7402@samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see
7403@file{final.c}). These are useful when a single @file{md} file must
7404support multiple assembler formats. In that case, the various @file{tm.h}
7405files can define these macros differently.
a2c4f8e0 7406@end defmac
feca2ed3 7407
a2c4f8e0 7408@defmac ASM_FPRINTF_EXTENSIONS (@var{file}, @var{argptr}, @var{format})
3b7a2e58 7409If defined this macro should expand to a series of @code{case}
fe0503ea
NC
7410statements which will be parsed inside the @code{switch} statement of
7411the @code{asm_fprintf} function. This allows targets to define extra
7412printf formats which may useful when generating their assembler
4bd0bee9 7413statements. Note that uppercase letters are reserved for future
fe0503ea
NC
7414generic extensions to asm_fprintf, and so are not available to target
7415specific code. The output file is given by the parameter @var{file}.
7416The varargs input pointer is @var{argptr} and the rest of the format
7417string, starting the character after the one that is being switched
7418upon, is pointed to by @var{format}.
a2c4f8e0 7419@end defmac
fe0503ea 7420
a2c4f8e0 7421@defmac ASSEMBLER_DIALECT
feca2ed3
JW
7422If your target supports multiple dialects of assembler language (such as
7423different opcodes), define this macro as a C expression that gives the
7424numeric index of the assembler language dialect to use, with zero as the
7425first variant.
7426
7427If this macro is defined, you may use constructs of the form
c237e94a 7428@smallexample
f282ffb3 7429@samp{@{option0|option1|option2@dots{}@}}
c237e94a
ZW
7430@end smallexample
7431@noindent
7432in the output templates of patterns (@pxref{Output Template}) or in the
7433first argument of @code{asm_fprintf}. This construct outputs
7434@samp{option0}, @samp{option1}, @samp{option2}, etc., if the value of
7435@code{ASSEMBLER_DIALECT} is zero, one, two, etc. Any special characters
7436within these strings retain their usual meaning. If there are fewer
7437alternatives within the braces than the value of
7438@code{ASSEMBLER_DIALECT}, the construct outputs nothing.
feca2ed3
JW
7439
7440If you do not define this macro, the characters @samp{@{}, @samp{|} and
7441@samp{@}} do not have any special meaning when used in templates or
7442operands to @code{asm_fprintf}.
7443
7444Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX},
7445@code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express
e5e809f4 7446the variations in assembler language syntax with that mechanism. Define
feca2ed3
JW
7447@code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax
7448if the syntax variant are larger and involve such things as different
7449opcodes or operand order.
a2c4f8e0 7450@end defmac
feca2ed3 7451
a2c4f8e0 7452@defmac ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno})
feca2ed3
JW
7453A C expression to output to @var{stream} some assembler code
7454which will push hard register number @var{regno} onto the stack.
7455The code need not be optimal, since this macro is used only when
7456profiling.
a2c4f8e0 7457@end defmac
feca2ed3 7458
a2c4f8e0 7459@defmac ASM_OUTPUT_REG_POP (@var{stream}, @var{regno})
feca2ed3
JW
7460A C expression to output to @var{stream} some assembler code
7461which will pop hard register number @var{regno} off of the stack.
7462The code need not be optimal, since this macro is used only when
7463profiling.
a2c4f8e0 7464@end defmac
feca2ed3
JW
7465
7466@node Dispatch Tables
7467@subsection Output of Dispatch Tables
7468
7469@c prevent bad page break with this line
7470This concerns dispatch tables.
7471
feca2ed3 7472@cindex dispatch table
a2c4f8e0 7473@defmac ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{body}, @var{value}, @var{rel})
feca2ed3
JW
7474A C statement to output to the stdio stream @var{stream} an assembler
7475pseudo-instruction to generate a difference between two labels.
7476@var{value} and @var{rel} are the numbers of two internal labels. The
7477definitions of these labels are output using
4977bab6 7478@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same
feca2ed3
JW
7479way here. For example,
7480
3ab51846 7481@smallexample
feca2ed3
JW
7482fprintf (@var{stream}, "\t.word L%d-L%d\n",
7483 @var{value}, @var{rel})
3ab51846 7484@end smallexample
feca2ed3
JW
7485
7486You must provide this macro on machines where the addresses in a
f0523f02 7487dispatch table are relative to the table's own address. If defined, GCC
161d7b59 7488will also use this macro on all machines when producing PIC@.
aee96fe9 7489@var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the
33f7f353 7490mode and flags can be read.
a2c4f8e0 7491@end defmac
feca2ed3 7492
a2c4f8e0 7493@defmac ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value})
feca2ed3
JW
7494This macro should be provided on machines where the addresses
7495in a dispatch table are absolute.
7496
7497The definition should be a C statement to output to the stdio stream
7498@var{stream} an assembler pseudo-instruction to generate a reference to
7499a label. @var{value} is the number of an internal label whose
4977bab6 7500definition is output using @code{(*targetm.asm_out.internal_label)}.
feca2ed3
JW
7501For example,
7502
3ab51846 7503@smallexample
feca2ed3 7504fprintf (@var{stream}, "\t.word L%d\n", @var{value})
3ab51846 7505@end smallexample
a2c4f8e0 7506@end defmac
feca2ed3 7507
a2c4f8e0 7508@defmac ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
feca2ed3
JW
7509Define this if the label before a jump-table needs to be output
7510specially. The first three arguments are the same as for
4977bab6 7511@code{(*targetm.asm_out.internal_label)}; the fourth argument is the
feca2ed3
JW
7512jump-table which follows (a @code{jump_insn} containing an
7513@code{addr_vec} or @code{addr_diff_vec}).
7514
7515This feature is used on system V to output a @code{swbeg} statement
7516for the table.
7517
7518If this macro is not defined, these labels are output with
4977bab6 7519@code{(*targetm.asm_out.internal_label)}.
a2c4f8e0 7520@end defmac
feca2ed3 7521
a2c4f8e0 7522@defmac ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table})
feca2ed3
JW
7523Define this if something special must be output at the end of a
7524jump-table. The definition should be a C statement to be executed
7525after the assembler code for the table is written. It should write
7526the appropriate code to stdio stream @var{stream}. The argument
7527@var{table} is the jump-table insn, and @var{num} is the label-number
7528of the preceding label.
7529
7530If this macro is not defined, nothing special is output at the end of
7531the jump-table.
a2c4f8e0 7532@end defmac
feca2ed3 7533
eeab4d81 7534@deftypefn {Target Hook} void TARGET_ASM_EMIT_UNWIND_LABEL (@var{stream}, @var{decl}, @var{for_eh}, @var{empty})
4746cf84
MA
7535This target hook emits a label at the beginning of each FDE. It
7536should be defined on targets where FDEs need special labels, and it
7537should write the appropriate label, for the FDE associated with the
7538function declaration @var{decl}, to the stdio stream @var{stream}.
eeab4d81
MS
7539The third argument, @var{for_eh}, is a boolean: true if this is for an
7540exception table. The fourth argument, @var{empty}, is a boolean:
7541true if this is a placeholder label for an omitted FDE.
4746cf84
MA
7542
7543The default is that FDEs are not given nonlocal labels.
7544@end deftypefn
7545
02f52e19 7546@node Exception Region Output
feca2ed3
JW
7547@subsection Assembler Commands for Exception Regions
7548
7549@c prevent bad page break with this line
7550
7551This describes commands marking the start and the end of an exception
7552region.
7553
a2c4f8e0 7554@defmac EH_FRAME_SECTION_NAME
7c262518
RH
7555If defined, a C string constant for the name of the section containing
7556exception handling frame unwind information. If not defined, GCC will
7557provide a default definition if the target supports named sections.
7558@file{crtstuff.c} uses this macro to switch to the appropriate section.
0021b564
JM
7559
7560You should define this symbol if your target supports DWARF 2 frame
7561unwind information and the default definition does not work.
a2c4f8e0 7562@end defmac
0021b564 7563
a2c4f8e0 7564@defmac EH_FRAME_IN_DATA_SECTION
02c9b1ca
RH
7565If defined, DWARF 2 frame unwind information will be placed in the
7566data section even though the target supports named sections. This
7567might be necessary, for instance, if the system linker does garbage
7568collection and sections cannot be marked as not to be collected.
7569
7570Do not define this macro unless @code{TARGET_ASM_NAMED_SECTION} is
7571also defined.
a2c4f8e0 7572@end defmac
02c9b1ca 7573
a2c4f8e0 7574@defmac MASK_RETURN_ADDR
aee96fe9 7575An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so
feca2ed3 7576that it does not contain any extraneous set bits in it.
a2c4f8e0 7577@end defmac
0021b564 7578
a2c4f8e0 7579@defmac DWARF2_UNWIND_INFO
0021b564
JM
7580Define this macro to 0 if your target supports DWARF 2 frame unwind
7581information, but it does not yet work with exception handling.
7582Otherwise, if your target supports this information (if it defines
7583@samp{INCOMING_RETURN_ADDR_RTX} and either @samp{UNALIGNED_INT_ASM_OP}
7584or @samp{OBJECT_FORMAT_ELF}), GCC will provide a default definition of
75851.
7586
7587If this macro is defined to 1, the DWARF 2 unwinder will be the default
aee96fe9 7588exception handling mechanism; otherwise, @code{setjmp}/@code{longjmp} will be used by
0021b564
JM
7589default.
7590
7591If this macro is defined to anything, the DWARF 2 unwinder will be used
aee96fe9 7592instead of inline unwinders and @code{__unwind_function} in the non-@code{setjmp} case.
a2c4f8e0 7593@end defmac
0021b564 7594
c14aea87
RO
7595@defmac MUST_USE_SJLJ_EXCEPTIONS
7596This macro need only be defined if @code{DWARF2_UNWIND_INFO} is
7597runtime-variable. In that case, @file{except.h} cannot correctly
7598determine the corresponding definition of
7599@code{MUST_USE_SJLJ_EXCEPTIONS}, so the target must provide it directly.
7600@end defmac
7601
a2c4f8e0 7602@defmac DWARF_CIE_DATA_ALIGNMENT
27c35f4b
HPN
7603This macro need only be defined if the target might save registers in the
7604function prologue at an offset to the stack pointer that is not aligned to
7605@code{UNITS_PER_WORD}. The definition should be the negative minimum
7606alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive
7607minimum alignment otherwise. @xref{SDB and DWARF}. Only applicable if
7608the target supports DWARF 2 frame unwind information.
a2c4f8e0 7609@end defmac
feca2ed3 7610
07c9d2eb
SS
7611@deftypefn {Target Hook} void TARGET_ASM_EXCEPTION_SECTION ()
7612If defined, a function that switches to the section in which the main
7613exception table is to be placed (@pxref{Sections}). The default is a
7614function that switches to a section named @code{.gcc_except_table} on
7615machines that support named sections via
7616@code{TARGET_ASM_NAMED_SECTION}, otherwise if @option{-fpic} or
7617@option{-fPIC} is in effect, the @code{data_section}, otherwise the
7618@code{readonly_data_section}.
7619@end deftypefn
7620
7621@deftypefn {Target Hook} void TARGET_ASM_EH_FRAME_SECTION ()
7622If defined, a function that switches to the section in which the DWARF 2
7623frame unwind information to be placed (@pxref{Sections}). The default
7624is a function that outputs a standard GAS section directive, if
7625@code{EH_FRAME_SECTION_NAME} is defined, or else a data section
7626directive followed by a synthetic label.
7627@end deftypefn
7628
7606e68f
SS
7629@deftypevar {Target Hook} bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
7630Contains the value true if the target should add a zero word onto the
7631end of a Dwarf-2 frame info section when used for exception handling.
7632Default value is false if @code{EH_FRAME_SECTION_NAME} is defined, and
7633true otherwise.
7634@end deftypevar
7635
96714395
AH
7636@deftypefn {Target Hook} rtx TARGET_DWARF_REGISTER_SPAN (rtx @var{reg})
7637Given a register, this hook should return a parallel of registers to
7638represent where to find the register pieces. Define this hook if the
7639register and its mode are represented in Dwarf in non-contiguous
7640locations, or if the register should be represented in more than one
7641register in Dwarf. Otherwise, this hook should return @code{NULL_RTX}.
7642If not defined, the default is to return @code{NULL_RTX}.
7643@end deftypefn
7644
feca2ed3
JW
7645@node Alignment Output
7646@subsection Assembler Commands for Alignment
7647
7648@c prevent bad page break with this line
7649This describes commands for alignment.
7650
a2c4f8e0 7651@defmac JUMP_ALIGN (@var{label})
247a370b 7652The alignment (log base 2) to put in front of @var{label}, which is
f710504c 7653a common destination of jumps and has no fallthru incoming edge.
25e22dc0
JH
7654
7655This macro need not be defined if you don't want any special alignment
7656to be done at such a time. Most machine descriptions do not currently
7657define the macro.
efa3896a 7658
3446405d
JH
7659Unless it's necessary to inspect the @var{label} parameter, it is better
7660to set the variable @var{align_jumps} in the target's
c21cd8b1 7661@code{OVERRIDE_OPTIONS}. Otherwise, you should try to honor the user's
247a370b 7662selection in @var{align_jumps} in a @code{JUMP_ALIGN} implementation.
a2c4f8e0 7663@end defmac
247a370b 7664
a2c4f8e0 7665@defmac LABEL_ALIGN_AFTER_BARRIER (@var{label})
247a370b
JH
7666The alignment (log base 2) to put in front of @var{label}, which follows
7667a @code{BARRIER}.
7668
7669This macro need not be defined if you don't want any special alignment
7670to be done at such a time. Most machine descriptions do not currently
7671define the macro.
a2c4f8e0 7672@end defmac
3446405d 7673
a2c4f8e0 7674@defmac LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
02f52e19 7675The maximum number of bytes to skip when applying
efa3896a
GK
7676@code{LABEL_ALIGN_AFTER_BARRIER}. This works only if
7677@code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
a2c4f8e0 7678@end defmac
efa3896a 7679
a2c4f8e0 7680@defmac LOOP_ALIGN (@var{label})
fc470718 7681The alignment (log base 2) to put in front of @var{label}, which follows
aee96fe9 7682a @code{NOTE_INSN_LOOP_BEG} note.
feca2ed3
JW
7683
7684This macro need not be defined if you don't want any special alignment
7685to be done at such a time. Most machine descriptions do not currently
7686define the macro.
7687
efa3896a 7688Unless it's necessary to inspect the @var{label} parameter, it is better
aee96fe9 7689to set the variable @code{align_loops} in the target's
c21cd8b1 7690@code{OVERRIDE_OPTIONS}. Otherwise, you should try to honor the user's
aee96fe9 7691selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation.
a2c4f8e0 7692@end defmac
efa3896a 7693
a2c4f8e0 7694@defmac LOOP_ALIGN_MAX_SKIP
efa3896a
GK
7695The maximum number of bytes to skip when applying @code{LOOP_ALIGN}.
7696This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
a2c4f8e0 7697@end defmac
efa3896a 7698
a2c4f8e0 7699@defmac LABEL_ALIGN (@var{label})
fc470718 7700The alignment (log base 2) to put in front of @var{label}.
aee96fe9 7701If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment,
fc470718
R
7702the maximum of the specified values is used.
7703
efa3896a 7704Unless it's necessary to inspect the @var{label} parameter, it is better
aee96fe9 7705to set the variable @code{align_labels} in the target's
c21cd8b1 7706@code{OVERRIDE_OPTIONS}. Otherwise, you should try to honor the user's
aee96fe9 7707selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation.
a2c4f8e0 7708@end defmac
efa3896a 7709
a2c4f8e0 7710@defmac LABEL_ALIGN_MAX_SKIP
efa3896a
GK
7711The maximum number of bytes to skip when applying @code{LABEL_ALIGN}.
7712This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
a2c4f8e0 7713@end defmac
efa3896a 7714
a2c4f8e0 7715@defmac ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
feca2ed3
JW
7716A C statement to output to the stdio stream @var{stream} an assembler
7717instruction to advance the location counter by @var{nbytes} bytes.
7718Those bytes should be zero when loaded. @var{nbytes} will be a C
7719expression of type @code{int}.
a2c4f8e0 7720@end defmac
feca2ed3 7721
a2c4f8e0 7722@defmac ASM_NO_SKIP_IN_TEXT
feca2ed3 7723Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the
556e0f21 7724text section because it fails to put zeros in the bytes that are skipped.
feca2ed3
JW
7725This is true on many Unix systems, where the pseudo--op to skip bytes
7726produces no-op instructions rather than zeros when used in the text
7727section.
a2c4f8e0 7728@end defmac
feca2ed3 7729
a2c4f8e0 7730@defmac ASM_OUTPUT_ALIGN (@var{stream}, @var{power})
feca2ed3
JW
7731A C statement to output to the stdio stream @var{stream} an assembler
7732command to advance the location counter to a multiple of 2 to the
7733@var{power} bytes. @var{power} will be a C expression of type @code{int}.
a2c4f8e0 7734@end defmac
26f63a77 7735
a2c4f8e0 7736@defmac ASM_OUTPUT_ALIGN_WITH_NOP (@var{stream}, @var{power})
8e16ab99
SF
7737Like @code{ASM_OUTPUT_ALIGN}, except that the ``nop'' instruction is used
7738for padding, if necessary.
a2c4f8e0 7739@end defmac
8e16ab99 7740
a2c4f8e0 7741@defmac ASM_OUTPUT_MAX_SKIP_ALIGN (@var{stream}, @var{power}, @var{max_skip})
26f63a77
JL
7742A C statement to output to the stdio stream @var{stream} an assembler
7743command to advance the location counter to a multiple of 2 to the
7744@var{power} bytes, but only if @var{max_skip} or fewer bytes are needed to
7745satisfy the alignment request. @var{power} and @var{max_skip} will be
7746a C expression of type @code{int}.
a2c4f8e0 7747@end defmac
feca2ed3
JW
7748
7749@need 3000
7750@node Debugging Info
7751@section Controlling Debugging Information Format
7752
7753@c prevent bad page break with this line
7754This describes how to specify debugging information.
7755
7756@menu
7757* All Debuggers:: Macros that affect all debugging formats uniformly.
7758* DBX Options:: Macros enabling specific options in DBX format.
7759* DBX Hooks:: Hook macros for varying DBX format.
7760* File Names and DBX:: Macros controlling output of file names in DBX format.
7761* SDB and DWARF:: Macros for SDB (COFF) and DWARF formats.
5f98259a 7762* VMS Debug:: Macros for VMS debug format.
feca2ed3
JW
7763@end menu
7764
7765@node All Debuggers
7766@subsection Macros Affecting All Debugging Formats
7767
7768@c prevent bad page break with this line
7769These macros affect all debugging formats.
7770
a2c4f8e0 7771@defmac DBX_REGISTER_NUMBER (@var{regno})
feca2ed3 7772A C expression that returns the DBX register number for the compiler
4617e3b5
KG
7773register number @var{regno}. In the default macro provided, the value
7774of this expression will be @var{regno} itself. But sometimes there are
7775some registers that the compiler knows about and DBX does not, or vice
7776versa. In such cases, some register may need to have one number in the
7777compiler and another for DBX@.
feca2ed3 7778
a3a15b4d 7779If two registers have consecutive numbers inside GCC, and they can be
feca2ed3
JW
7780used as a pair to hold a multiword value, then they @emph{must} have
7781consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}.
7782Otherwise, debuggers will be unable to access such a pair, because they
7783expect register pairs to be consecutive in their own numbering scheme.
7784
7785If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that
7786does not preserve register pairs, then what you must do instead is
7787redefine the actual register numbering scheme.
a2c4f8e0 7788@end defmac
feca2ed3 7789
a2c4f8e0 7790@defmac DEBUGGER_AUTO_OFFSET (@var{x})
feca2ed3
JW
7791A C expression that returns the integer offset value for an automatic
7792variable having address @var{x} (an RTL expression). The default
7793computation assumes that @var{x} is based on the frame-pointer and
7794gives the offset from the frame-pointer. This is required for targets
7795that produce debugging output for DBX or COFF-style debugging output
7796for SDB and allow the frame-pointer to be eliminated when the
630d3d5a 7797@option{-g} options is used.
a2c4f8e0 7798@end defmac
feca2ed3 7799
a2c4f8e0 7800@defmac DEBUGGER_ARG_OFFSET (@var{offset}, @var{x})
feca2ed3
JW
7801A C expression that returns the integer offset value for an argument
7802having address @var{x} (an RTL expression). The nominal offset is
7803@var{offset}.
a2c4f8e0 7804@end defmac
feca2ed3 7805
a2c4f8e0 7806@defmac PREFERRED_DEBUGGING_TYPE
a3a15b4d 7807A C expression that returns the type of debugging output GCC should
630d3d5a 7808produce when the user specifies just @option{-g}. Define
a3a15b4d 7809this if you have arranged for GCC to support more than one format of
e5e809f4 7810debugging output. Currently, the allowable values are @code{DBX_DEBUG},
5f98259a
RK
7811@code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG},
7812@code{XCOFF_DEBUG}, @code{VMS_DEBUG}, and @code{VMS_AND_DWARF2_DEBUG}.
feca2ed3 7813
630d3d5a 7814When the user specifies @option{-ggdb}, GCC normally also uses the
e5e809f4 7815value of this macro to select the debugging output format, but with two
16201823 7816exceptions. If @code{DWARF2_DEBUGGING_INFO} is defined, GCC uses the
e5e809f4 7817value @code{DWARF2_DEBUG}. Otherwise, if @code{DBX_DEBUGGING_INFO} is
a3a15b4d 7818defined, GCC uses @code{DBX_DEBUG}.
deabc777 7819
feca2ed3 7820The value of this macro only affects the default debugging output; the
630d3d5a 7821user can always get a specific type of output by using @option{-gstabs},
def66b10 7822@option{-gcoff}, @option{-gdwarf-2}, @option{-gxcoff}, or @option{-gvms}.
a2c4f8e0 7823@end defmac
feca2ed3
JW
7824
7825@node DBX Options
7826@subsection Specific Options for DBX Output
7827
7828@c prevent bad page break with this line
7829These are specific options for DBX output.
7830
a2c4f8e0 7831@defmac DBX_DEBUGGING_INFO
a3a15b4d 7832Define this macro if GCC should produce debugging output for DBX
630d3d5a 7833in response to the @option{-g} option.
a2c4f8e0 7834@end defmac
feca2ed3 7835
a2c4f8e0 7836@defmac XCOFF_DEBUGGING_INFO
a3a15b4d 7837Define this macro if GCC should produce XCOFF format debugging output
630d3d5a 7838in response to the @option{-g} option. This is a variant of DBX format.
a2c4f8e0 7839@end defmac
feca2ed3 7840
a2c4f8e0 7841@defmac DEFAULT_GDB_EXTENSIONS
a3a15b4d 7842Define this macro to control whether GCC should by default generate
feca2ed3
JW
7843GDB's extended version of DBX debugging information (assuming DBX-format
7844debugging information is enabled at all). If you don't define the
7845macro, the default is 1: always generate the extended information
7846if there is any occasion to.
a2c4f8e0 7847@end defmac
feca2ed3 7848
a2c4f8e0 7849@defmac DEBUG_SYMS_TEXT
feca2ed3
JW
7850Define this macro if all @code{.stabs} commands should be output while
7851in the text section.
a2c4f8e0 7852@end defmac
feca2ed3 7853
a2c4f8e0 7854@defmac ASM_STABS_OP
047c1c92
HPN
7855A C string constant, including spacing, naming the assembler pseudo op to
7856use instead of @code{"\t.stabs\t"} to define an ordinary debugging symbol.
7857If you don't define this macro, @code{"\t.stabs\t"} is used. This macro
7858applies only to DBX debugging information format.
a2c4f8e0 7859@end defmac
feca2ed3 7860
a2c4f8e0 7861@defmac ASM_STABD_OP
047c1c92
HPN
7862A C string constant, including spacing, naming the assembler pseudo op to
7863use instead of @code{"\t.stabd\t"} to define a debugging symbol whose
7864value is the current location. If you don't define this macro,
7865@code{"\t.stabd\t"} is used. This macro applies only to DBX debugging
7866information format.
a2c4f8e0 7867@end defmac
feca2ed3 7868
a2c4f8e0 7869@defmac ASM_STABN_OP
047c1c92
HPN
7870A C string constant, including spacing, naming the assembler pseudo op to
7871use instead of @code{"\t.stabn\t"} to define a debugging symbol with no
7872name. If you don't define this macro, @code{"\t.stabn\t"} is used. This
7873macro applies only to DBX debugging information format.
a2c4f8e0 7874@end defmac
feca2ed3 7875
a2c4f8e0 7876@defmac DBX_NO_XREFS
feca2ed3
JW
7877Define this macro if DBX on your system does not support the construct
7878@samp{xs@var{tagname}}. On some systems, this construct is used to
7879describe a forward reference to a structure named @var{tagname}.
7880On other systems, this construct is not supported at all.
a2c4f8e0 7881@end defmac
feca2ed3 7882
a2c4f8e0 7883@defmac DBX_CONTIN_LENGTH
feca2ed3
JW
7884A symbol name in DBX-format debugging information is normally
7885continued (split into two separate @code{.stabs} directives) when it
7886exceeds a certain length (by default, 80 characters). On some
7887operating systems, DBX requires this splitting; on others, splitting
7888must not be done. You can inhibit splitting by defining this macro
7889with the value zero. You can override the default splitting-length by
7890defining this macro as an expression for the length you desire.
a2c4f8e0 7891@end defmac
feca2ed3 7892
a2c4f8e0 7893@defmac DBX_CONTIN_CHAR
feca2ed3
JW
7894Normally continuation is indicated by adding a @samp{\} character to
7895the end of a @code{.stabs} string when a continuation follows. To use
7896a different character instead, define this macro as a character
7897constant for the character you want to use. Do not define this macro
7898if backslash is correct for your system.
a2c4f8e0 7899@end defmac
feca2ed3 7900
a2c4f8e0 7901@defmac DBX_STATIC_STAB_DATA_SECTION
feca2ed3
JW
7902Define this macro if it is necessary to go to the data section before
7903outputting the @samp{.stabs} pseudo-op for a non-global static
7904variable.
a2c4f8e0 7905@end defmac
feca2ed3 7906
a2c4f8e0 7907@defmac DBX_TYPE_DECL_STABS_CODE
feca2ed3
JW
7908The value to use in the ``code'' field of the @code{.stabs} directive
7909for a typedef. The default is @code{N_LSYM}.
a2c4f8e0 7910@end defmac
feca2ed3 7911
a2c4f8e0 7912@defmac DBX_STATIC_CONST_VAR_CODE
feca2ed3
JW
7913The value to use in the ``code'' field of the @code{.stabs} directive
7914for a static variable located in the text section. DBX format does not
7915provide any ``right'' way to do this. The default is @code{N_FUN}.
a2c4f8e0 7916@end defmac
feca2ed3 7917
a2c4f8e0 7918@defmac DBX_REGPARM_STABS_CODE
feca2ed3
JW
7919The value to use in the ``code'' field of the @code{.stabs} directive
7920for a parameter passed in registers. DBX format does not provide any
7921``right'' way to do this. The default is @code{N_RSYM}.
a2c4f8e0 7922@end defmac
feca2ed3 7923
a2c4f8e0 7924@defmac DBX_REGPARM_STABS_LETTER
feca2ed3
JW
7925The letter to use in DBX symbol data to identify a symbol as a parameter
7926passed in registers. DBX format does not customarily provide any way to
7927do this. The default is @code{'P'}.
a2c4f8e0 7928@end defmac
feca2ed3 7929
a2c4f8e0 7930@defmac DBX_MEMPARM_STABS_LETTER
feca2ed3
JW
7931The letter to use in DBX symbol data to identify a symbol as a stack
7932parameter. The default is @code{'p'}.
a2c4f8e0 7933@end defmac
feca2ed3 7934
a2c4f8e0 7935@defmac DBX_FUNCTION_FIRST
feca2ed3
JW
7936Define this macro if the DBX information for a function and its
7937arguments should precede the assembler code for the function. Normally,
7938in DBX format, the debugging information entirely follows the assembler
7939code.
a2c4f8e0 7940@end defmac
feca2ed3 7941
a2c4f8e0 7942@defmac DBX_BLOCKS_FUNCTION_RELATIVE
feca2ed3
JW
7943Define this macro if the value of a symbol describing the scope of a
7944block (@code{N_LBRAC} or @code{N_RBRAC}) should be relative to the start
f0523f02 7945of the enclosing function. Normally, GCC uses an absolute address.
a2c4f8e0 7946@end defmac
feca2ed3 7947
a2c4f8e0 7948@defmac DBX_USE_BINCL
f0523f02 7949Define this macro if GCC should generate @code{N_BINCL} and
feca2ed3 7950@code{N_EINCL} stabs for included header files, as on Sun systems. This
f0523f02
JM
7951macro also directs GCC to output a type number as a pair of a file
7952number and a type number within the file. Normally, GCC does not
feca2ed3
JW
7953generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single
7954number for a type number.
a2c4f8e0 7955@end defmac
feca2ed3
JW
7956
7957@node DBX Hooks
7958@subsection Open-Ended Hooks for DBX Format
7959
7960@c prevent bad page break with this line
7961These are hooks for DBX format.
7962
a2c4f8e0 7963@defmac DBX_OUTPUT_LBRAC (@var{stream}, @var{name})
feca2ed3
JW
7964Define this macro to say how to output to @var{stream} the debugging
7965information for the start of a scope level for variable names. The
7966argument @var{name} is the name of an assembler symbol (for use with
7967@code{assemble_name}) whose value is the address where the scope begins.
a2c4f8e0 7968@end defmac
feca2ed3 7969
a2c4f8e0 7970@defmac DBX_OUTPUT_RBRAC (@var{stream}, @var{name})
feca2ed3 7971Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level.
a2c4f8e0 7972@end defmac
feca2ed3 7973
a2c4f8e0 7974@defmac DBX_OUTPUT_NFUN (@var{stream}, @var{lscope_label}, @var{decl})
374b0b7d
AM
7975Define this macro if the target machine requires special handling to
7976output an @code{N_FUN} entry for the function @var{decl}.
a2c4f8e0 7977@end defmac
374b0b7d 7978
a2c4f8e0 7979@defmac DBX_OUTPUT_FUNCTION_END (@var{stream}, @var{function})
feca2ed3
JW
7980Define this macro if the target machine requires special output at the
7981end of the debugging information for a function. The definition should
7982be a C statement (sans semicolon) to output the appropriate information
7983to @var{stream}. @var{function} is the @code{FUNCTION_DECL} node for
7984the function.
a2c4f8e0 7985@end defmac
feca2ed3 7986
a2c4f8e0 7987@defmac NO_DBX_FUNCTION_END
feca2ed3 7988Some stabs encapsulation formats (in particular ECOFF), cannot handle the
c771326b 7989@code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extension construct.
feca2ed3
JW
7990On those machines, define this macro to turn this feature off without
7991disturbing the rest of the gdb extensions.
a2c4f8e0 7992@end defmac
feca2ed3
JW
7993
7994@node File Names and DBX
7995@subsection File Names in DBX Format
7996
7997@c prevent bad page break with this line
7998This describes file names in DBX format.
7999
a2c4f8e0 8000@defmac DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
feca2ed3
JW
8001A C statement to output DBX debugging information to the stdio stream
8002@var{stream} which indicates that file @var{name} is the main source
8003file---the file specified as the input file for compilation.
8004This macro is called only once, at the beginning of compilation.
8005
8006This macro need not be defined if the standard form of output
8007for DBX debugging information is appropriate.
a2c4f8e0 8008@end defmac
feca2ed3 8009
a2c4f8e0 8010@defmac DBX_OUTPUT_MAIN_SOURCE_DIRECTORY (@var{stream}, @var{name})
feca2ed3
JW
8011A C statement to output DBX debugging information to the stdio stream
8012@var{stream} which indicates that the current directory during
8013compilation is named @var{name}.
8014
8015This macro need not be defined if the standard form of output
8016for DBX debugging information is appropriate.
a2c4f8e0 8017@end defmac
feca2ed3 8018
a2c4f8e0 8019@defmac DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
feca2ed3
JW
8020A C statement to output DBX debugging information at the end of
8021compilation of the main source file @var{name}.
8022
8023If you don't define this macro, nothing special is output at the end
8024of compilation, which is correct for most machines.
a2c4f8e0 8025@end defmac
feca2ed3
JW
8026
8027@need 2000
8028@node SDB and DWARF
8029@subsection Macros for SDB and DWARF Output
8030
8031@c prevent bad page break with this line
8032Here are macros for SDB and DWARF output.
8033
a2c4f8e0 8034@defmac SDB_DEBUGGING_INFO
a3a15b4d 8035Define this macro if GCC should produce COFF-style debugging output
630d3d5a 8036for SDB in response to the @option{-g} option.
a2c4f8e0 8037@end defmac
feca2ed3 8038
a2c4f8e0 8039@defmac DWARF2_DEBUGGING_INFO
a3a15b4d 8040Define this macro if GCC should produce dwarf version 2 format
630d3d5a 8041debugging output in response to the @option{-g} option.
f3ff3f4a 8042
861bb6c1
JL
8043To support optional call frame debugging information, you must also
8044define @code{INCOMING_RETURN_ADDR_RTX} and either set
8045@code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
8046prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
08c148a8 8047as appropriate from @code{TARGET_ASM_FUNCTION_PROLOGUE} if you don't.
a2c4f8e0 8048@end defmac
861bb6c1 8049
a2c4f8e0 8050@defmac DWARF2_FRAME_INFO
a3a15b4d 8051Define this macro to a nonzero value if GCC should always output
9ec36da5 8052Dwarf 2 frame information. If @code{DWARF2_UNWIND_INFO}
a3a15b4d 8053(@pxref{Exception Region Output} is nonzero, GCC will output this
9ec36da5 8054information not matter how you define @code{DWARF2_FRAME_INFO}.
a2c4f8e0 8055@end defmac
9ec36da5 8056
a2c4f8e0 8057@defmac DWARF2_GENERATE_TEXT_SECTION_LABEL
b366352b
MM
8058By default, the Dwarf 2 debugging information generator will generate a
8059label to mark the beginning of the text section. If it is better simply
8060to use the name of the text section itself, rather than an explicit label,
8061to indicate the beginning of the text section, define this macro to zero.
a2c4f8e0 8062@end defmac
b366352b 8063
a2c4f8e0 8064@defmac DWARF2_ASM_LINE_DEBUG_INFO
b2244e22
JW
8065Define this macro to be a nonzero value if the assembler can generate Dwarf 2
8066line debug info sections. This will result in much more compact line number
8067tables, and hence is desirable if it works.
a2c4f8e0 8068@end defmac
b2244e22 8069
a2c4f8e0 8070@defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2})
7606e68f
SS
8071A C statement to issue assembly directives that create a difference
8072between the two given labels, using an integer of the given size.
a2c4f8e0 8073@end defmac
7606e68f 8074
a2c4f8e0 8075@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label})
7606e68f
SS
8076A C statement to issue assembly directives that create a
8077section-relative reference to the given label, using an integer of the
8078given size.
a2c4f8e0 8079@end defmac
7606e68f 8080
a2c4f8e0 8081@defmac ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label})
7606e68f
SS
8082A C statement to issue assembly directives that create a self-relative
8083reference to the given label, using an integer of the given size.
a2c4f8e0 8084@end defmac
7606e68f 8085
a2c4f8e0 8086@defmac PUT_SDB_@dots{}
feca2ed3
JW
8087Define these macros to override the assembler syntax for the special
8088SDB assembler directives. See @file{sdbout.c} for a list of these
8089macros and their arguments. If the standard syntax is used, you need
8090not define them yourself.
a2c4f8e0 8091@end defmac
feca2ed3 8092
a2c4f8e0 8093@defmac SDB_DELIM
feca2ed3
JW
8094Some assemblers do not support a semicolon as a delimiter, even between
8095SDB assembler directives. In that case, define this macro to be the
8096delimiter to use (usually @samp{\n}). It is not necessary to define
8097a new set of @code{PUT_SDB_@var{op}} macros if this is the only change
8098required.
a2c4f8e0 8099@end defmac
feca2ed3 8100
a2c4f8e0 8101@defmac SDB_GENERATE_FAKE
feca2ed3
JW
8102Define this macro to override the usual method of constructing a dummy
8103name for anonymous structure and union types. See @file{sdbout.c} for
8104more information.
a2c4f8e0 8105@end defmac
feca2ed3 8106
a2c4f8e0 8107@defmac SDB_ALLOW_UNKNOWN_REFERENCES
feca2ed3
JW
8108Define this macro to allow references to unknown structure,
8109union, or enumeration tags to be emitted. Standard COFF does not
8110allow handling of unknown references, MIPS ECOFF has support for
8111it.
a2c4f8e0 8112@end defmac
feca2ed3 8113
a2c4f8e0 8114@defmac SDB_ALLOW_FORWARD_REFERENCES
feca2ed3
JW
8115Define this macro to allow references to structure, union, or
8116enumeration tags that have not yet been seen to be handled. Some
8117assemblers choke if forward tags are used, while some require it.
a2c4f8e0 8118@end defmac
feca2ed3 8119
5f98259a
RK
8120@need 2000
8121@node VMS Debug
8122@subsection Macros for VMS Debug Format
8123
8124@c prevent bad page break with this line
8125Here are macros for VMS debug format.
8126
a2c4f8e0 8127@defmac VMS_DEBUGGING_INFO
5f98259a
RK
8128Define this macro if GCC should produce debugging output for VMS
8129in response to the @option{-g} option. The default behavior for VMS
8130is to generate minimal debug info for a traceback in the absence of
8131@option{-g} unless explicitly overridden with @option{-g0}. This
8132behavior is controlled by @code{OPTIMIZATION_OPTIONS} and
8133@code{OVERRIDE_OPTIONS}.
a2c4f8e0 8134@end defmac
5f98259a 8135
b216cd4a 8136@node Floating Point
feca2ed3
JW
8137@section Cross Compilation and Floating Point
8138@cindex cross compilation and floating point
8139@cindex floating point and cross compilation
8140
b216cd4a 8141While all modern machines use twos-complement representation for integers,
feca2ed3
JW
8142there are a variety of representations for floating point numbers. This
8143means that in a cross-compiler the representation of floating point numbers
8144in the compiled program may be different from that used in the machine
8145doing the compilation.
8146
feca2ed3 8147Because different representation systems may offer different amounts of
b216cd4a
ZW
8148range and precision, all floating point constants must be represented in
8149the target machine's format. Therefore, the cross compiler cannot
8150safely use the host machine's floating point arithmetic; it must emulate
8151the target's arithmetic. To ensure consistency, GCC always uses
8152emulation to work with floating point values, even when the host and
8153target floating point formats are identical.
8154
8155The following macros are provided by @file{real.h} for the compiler to
8156use. All parts of the compiler which generate or optimize
ba31d94e
ZW
8157floating-point calculations must use these macros. They may evaluate
8158their operands more than once, so operands must not have side effects.
feca2ed3 8159
b216cd4a
ZW
8160@defmac REAL_VALUE_TYPE
8161The C data type to be used to hold a floating point value in the target
8162machine's format. Typically this is a @code{struct} containing an
8163array of @code{HOST_WIDE_INT}, but all code should treat it as an opaque
8164quantity.
8165@end defmac
8166
8167@deftypefn Macro int REAL_VALUES_EQUAL (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8168Compares for equality the two values, @var{x} and @var{y}. If the target
8169floating point format supports negative zeroes and/or NaNs,
8170@samp{REAL_VALUES_EQUAL (-0.0, 0.0)} is true, and
8171@samp{REAL_VALUES_EQUAL (NaN, NaN)} is false.
8172@end deftypefn
8173
8174@deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8175Tests whether @var{x} is less than @var{y}.
8176@end deftypefn
8177
b216cd4a
ZW
8178@deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x})
8179Truncates @var{x} to a signed integer, rounding toward zero.
8180@end deftypefn
8181
8182@deftypefn Macro {unsigned HOST_WIDE_INT} REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE @var{x})
8183Truncates @var{x} to an unsigned integer, rounding toward zero. If
8184@var{x} is negative, returns zero.
8185@end deftypefn
8186
b216cd4a
ZW
8187@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *@var{string}, enum machine_mode @var{mode})
8188Converts @var{string} into a floating point number in the target machine's
8189representation for mode @var{mode}. This routine can handle both
8190decimal and hexadecimal floating point constants, using the syntax
8191defined by the C language for both.
8192@end deftypefn
feca2ed3 8193
15e5ad76 8194@deftypefn Macro int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE @var{x})
ce3649d2 8195Returns 1 if @var{x} is negative (including negative zero), 0 otherwise.
15e5ad76
ZW
8196@end deftypefn
8197
b216cd4a
ZW
8198@deftypefn Macro int REAL_VALUE_ISINF (REAL_VALUE_TYPE @var{x})
8199Determines whether @var{x} represents infinity (positive or negative).
8200@end deftypefn
8201
8202@deftypefn Macro int REAL_VALUE_ISNAN (REAL_VALUE_TYPE @var{x})
8203Determines whether @var{x} represents a ``NaN'' (not-a-number).
8204@end deftypefn
8205
8206@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})
8207Calculates an arithmetic operation on the two floating point values
8208@var{x} and @var{y}, storing the result in @var{output} (which must be a
8209variable).
8210
8211The operation to be performed is specified by @var{code}. Only the
8212following codes are supported: @code{PLUS_EXPR}, @code{MINUS_EXPR},
8213@code{MULT_EXPR}, @code{RDIV_EXPR}, @code{MAX_EXPR}, @code{MIN_EXPR}.
8214
8215If @code{REAL_ARITHMETIC} is asked to evaluate division by zero and the
8216target's floating point format cannot represent infinity, it will call
8217@code{abort}. Callers should check for this situation first, using
8218@code{MODE_HAS_INFINITIES}. @xref{Storage Layout}.
8219@end deftypefn
8220
8221@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x})
8222Returns the negative of the floating point value @var{x}.
8223@end deftypefn
8224
15e5ad76
ZW
8225@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x})
8226Returns the absolute value of @var{x}.
8227@end deftypefn
8228
b216cd4a
ZW
8229@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE @var{mode}, enum machine_mode @var{x})
8230Truncates the floating point value @var{x} to fit in @var{mode}. The
8231return value is still a full-size @code{REAL_VALUE_TYPE}, but it has an
8232appropriate bit pattern to be output asa floating constant whose
8233precision accords with mode @var{mode}.
8234@end deftypefn
8235
8236@deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT @var{high}, REAL_VALUE_TYPE @var{x})
8237Converts a floating point value @var{x} into a double-precision integer
8238which is then stored into @var{low} and @var{high}. If the value is not
8239integral, it is truncated.
8240@end deftypefn
8241
8242@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})
b216cd4a
ZW
8243Converts a double-precision integer found in @var{low} and @var{high},
8244into a floating point value which is then stored into @var{x}. The
8245value is truncated to fit in mode @var{mode}.
8246@end deftypefn
feca2ed3 8247
9f09b1f2
R
8248@node Mode Switching
8249@section Mode Switching Instructions
8250@cindex mode switching
8251The following macros control mode switching optimizations:
8252
a2c4f8e0 8253@defmac OPTIMIZE_MODE_SWITCHING (@var{entity})
9f09b1f2
R
8254Define this macro if the port needs extra instructions inserted for mode
8255switching in an optimizing compilation.
8256
8257For an example, the SH4 can perform both single and double precision
8258floating point operations, but to perform a single precision operation,
8259the FPSCR PR bit has to be cleared, while for a double precision
8260operation, this bit has to be set. Changing the PR bit requires a general
8261purpose register as a scratch register, hence these FPSCR sets have to
e979f9e8 8262be inserted before reload, i.e.@: you can't put this into instruction emitting
18dbd950 8263or @code{TARGET_MACHINE_DEPENDENT_REORG}.
9f09b1f2
R
8264
8265You can have multiple entities that are mode-switched, and select at run time
8266which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should
14976c58 8267return nonzero for any @var{entity} that needs mode-switching.
9f09b1f2
R
8268If you define this macro, you also have to define
8269@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{MODE_NEEDED},
8270@code{MODE_PRIORITY_TO_MODE} and @code{EMIT_MODE_SET}.
73774972
EC
8271@code{MODE_AFTER}, @code{MODE_ENTRY}, and @code{MODE_EXIT}
8272are optional.
a2c4f8e0 8273@end defmac
9f09b1f2 8274
a2c4f8e0 8275@defmac NUM_MODES_FOR_MODE_SWITCHING
9f09b1f2
R
8276If you define @code{OPTIMIZE_MODE_SWITCHING}, you have to define this as
8277initializer for an array of integers. Each initializer element
8278N refers to an entity that needs mode switching, and specifies the number
8279of different modes that might need to be set for this entity.
8280The position of the initializer in the initializer - starting counting at
8281zero - determines the integer that is used to refer to the mode-switched
8282entity in question.
8283In macros that take mode arguments / yield a mode result, modes are
630d3d5a 8284represented as numbers 0 @dots{} N @minus{} 1. N is used to specify that no mode
9f09b1f2 8285switch is needed / supplied.
a2c4f8e0 8286@end defmac
9f09b1f2 8287
a2c4f8e0 8288@defmac MODE_NEEDED (@var{entity}, @var{insn})
9f09b1f2
R
8289@var{entity} is an integer specifying a mode-switched entity. If
8290@code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to
8291return an integer value not larger than the corresponding element in
aee96fe9
JM
8292@code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must
8293be switched into prior to the execution of @var{insn}.
a2c4f8e0 8294@end defmac
9f09b1f2 8295
73774972
EC
8296@defmac MODE_AFTER (@var{mode}, @var{insn})
8297If this macro is defined, it is evaluated for every @var{insn} during
8298mode switching. It determines the mode that an insn results in (if
8299different from the incoming mode).
8300@end defmac
8301
8302@defmac MODE_ENTRY (@var{entity})
8303If this macro is defined, it is evaluated for every @var{entity} that needs
8304mode switching. It should evaluate to an integer, which is a mode that
8305@var{entity} is assumed to be switched to at function entry. If @code{MODE_ENTRY}
8306is defined then @code{MODE_EXIT} must be defined.
8307@end defmac
8308
8309@defmac MODE_EXIT (@var{entity})
9f09b1f2 8310If this macro is defined, it is evaluated for every @var{entity} that needs
73774972
EC
8311mode switching. It should evaluate to an integer, which is a mode that
8312@var{entity} is assumed to be switched to at function exit. If @code{MODE_EXIT}
8313is defined then @code{MODE_ENTRY} must be defined.
a2c4f8e0 8314@end defmac
9f09b1f2 8315
a2c4f8e0 8316@defmac MODE_PRIORITY_TO_MODE (@var{entity}, @var{n})
aee96fe9
JM
8317This macro specifies the order in which modes for @var{entity} are processed.
83180 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the
9f09b1f2 8319lowest. The value of the macro should be an integer designating a mode
aee96fe9 8320for @var{entity}. For any fixed @var{entity}, @code{mode_priority_to_mode}
630d3d5a 8321(@var{entity}, @var{n}) shall be a bijection in 0 @dots{}
aee96fe9 8322@code{num_modes_for_mode_switching[@var{entity}] - 1}.
a2c4f8e0 8323@end defmac
9f09b1f2 8324
a2c4f8e0 8325@defmac EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live})
9f09b1f2
R
8326Generate one or more insns to set @var{entity} to @var{mode}.
8327@var{hard_reg_live} is the set of hard registers live at the point where
8328the insn(s) are to be inserted.
a2c4f8e0 8329@end defmac
9f09b1f2 8330
91d231cb
JM
8331@node Target Attributes
8332@section Defining target-specific uses of @code{__attribute__}
8333@cindex target attributes
8334@cindex machine attributes
8335@cindex attributes, target-specific
8336
8337Target-specific attributes may be defined for functions, data and types.
8338These are described using the following target hooks; they also need to
8339be documented in @file{extend.texi}.
8340
8341@deftypevr {Target Hook} {const struct attribute_spec *} TARGET_ATTRIBUTE_TABLE
8342If defined, this target hook points to an array of @samp{struct
8343attribute_spec} (defined in @file{tree.h}) specifying the machine
8344specific attributes for this target and some of the restrictions on the
8345entities to which these attributes are applied and the arguments they
8346take.
8347@end deftypevr
8348
8349@deftypefn {Target Hook} int TARGET_COMP_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
8350If defined, this target hook is a function which returns zero if the attributes on
8351@var{type1} and @var{type2} are incompatible, one if they are compatible,
8352and two if they are nearly compatible (which causes a warning to be
8353generated). If this is not defined, machine-specific attributes are
8354supposed always to be compatible.
8355@end deftypefn
8356
8357@deftypefn {Target Hook} void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree @var{type})
8358If defined, this target hook is a function which assigns default attributes to
8359newly defined @var{type}.
8360@end deftypefn
8361
8362@deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
8363Define this target hook if the merging of type attributes needs special
8364handling. If defined, the result is a list of the combined
8365@code{TYPE_ATTRIBUTES} of @var{type1} and @var{type2}. It is assumed
8366that @code{comptypes} has already been called and returned 1. This
8367function may call @code{merge_attributes} to handle machine-independent
8368merging.
8369@end deftypefn
8370
8371@deftypefn {Target Hook} tree TARGET_MERGE_DECL_ATTRIBUTES (tree @var{olddecl}, tree @var{newdecl})
8372Define this target hook if the merging of decl attributes needs special
8373handling. If defined, the result is a list of the combined
8374@code{DECL_ATTRIBUTES} of @var{olddecl} and @var{newdecl}.
8375@var{newdecl} is a duplicate declaration of @var{olddecl}. Examples of
8376when this is needed are when one attribute overrides another, or when an
8377attribute is nullified by a subsequent definition. This function may
8378call @code{merge_attributes} to handle machine-independent merging.
8379
8380@findex TARGET_DLLIMPORT_DECL_ATTRIBUTES
8381If the only target-specific handling you require is @samp{dllimport} for
95fef11f 8382Microsoft Windows targets, you should define the macro
91d231cb
JM
8383@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}. This links in a function
8384called @code{merge_dllimport_decl_attributes} which can then be defined
8385as the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}. This is done
8386in @file{i386/cygwin.h} and @file{i386/i386.c}, for example.
8387@end deftypefn
8388
8389@deftypefn {Target Hook} void TARGET_INSERT_ATTRIBUTES (tree @var{node}, tree *@var{attr_ptr})
8390Define this target hook if you want to be able to add attributes to a decl
8391when it is being created. This is normally useful for back ends which
8392wish to implement a pragma by using the attributes which correspond to
8393the pragma's effect. The @var{node} argument is the decl which is being
8394created. The @var{attr_ptr} argument is a pointer to the attribute list
8395for this decl. The list itself should not be modified, since it may be
8396shared with other decls, but attributes may be chained on the head of
8397the list and @code{*@var{attr_ptr}} modified to point to the new
8398attributes, or a copy of the list may be made if further changes are
8399needed.
8400@end deftypefn
8401
8402@deftypefn {Target Hook} bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree @var{fndecl})
8403@cindex inlining
8404This target hook returns @code{true} if it is ok to inline @var{fndecl}
8405into the current function, despite its having target-specific
8406attributes, @code{false} otherwise. By default, if a function has a
8407target specific attribute attached to it, it will not be inlined.
8408@end deftypefn
8409
d604bca3
MH
8410@node MIPS Coprocessors
8411@section Defining coprocessor specifics for MIPS targets.
8412@cindex MIPS coprocessor-definition macros
8413
8414The MIPS specification allows MIPS implementations to have as many as 4
2dd76960 8415coprocessors, each with as many as 32 private registers. GCC supports
d604bca3
MH
8416accessing these registers and transferring values between the registers
8417and memory using asm-ized variables. For example:
8418
8419@smallexample
8420 register unsigned int cp0count asm ("c0r1");
8421 unsigned int d;
8422
8423 d = cp0count + 3;
8424@end smallexample
8425
8426(``c0r1'' is the default name of register 1 in coprocessor 0; alternate
8427names may be added as described below, or the default names may be
8428overridden entirely in @code{SUBTARGET_CONDITIONAL_REGISTER_USAGE}.)
8429
8430Coprocessor registers are assumed to be epilogue-used; sets to them will
8431be preserved even if it does not appear that the register is used again
8432later in the function.
8433
8434Another note: according to the MIPS spec, coprocessor 1 (if present) is
8435the FPU. One accesses COP1 registers through standard mips
8436floating-point support; they are not included in this mechanism.
8437
8438There is one macro used in defining the MIPS coprocessor interface which
8439you may want to override in subtargets; it is described below.
8440
a2c4f8e0 8441@defmac ALL_COP_ADDITIONAL_REGISTER_NAMES
d604bca3
MH
8442A comma-separated list (with leading comma) of pairs describing the
8443alternate names of coprocessor registers. The format of each entry should be
8444@smallexample
8445@{ @var{alternatename}, @var{register_number}@}
8446@end smallexample
8447Default: empty.
a2c4f8e0 8448@end defmac
d604bca3 8449
7bb1ad93
GK
8450@node PCH Target
8451@section Parameters for Precompiled Header Validity Checking
8452@cindex parameters, precompiled headers
8453
8454@deftypefn {Target Hook} void * TARGET_GET_PCH_VALIDITY (size_t * @var{sz})
8455Define this hook if your target needs to check a different collection
8456of flags than the default, which is every flag defined by
8457@code{TARGET_SWITCHES} and @code{TARGET_OPTIONS}. It should return
8458some data which will be saved in the PCH file and presented to
8459@code{TARGET_PCH_VALID_P} later; it should set @code{SZ} to the size
8460of the data.
8461@end deftypefn
8462
8463@deftypefn {Target Hook} const char * TARGET_PCH_VALID_P (const void * @var{data}, size_t @var{sz})
8464Define this hook if your target needs to check a different collection of
8465flags than the default, which is every flag defined by @code{TARGET_SWITCHES}
8466and @code{TARGET_OPTIONS}. It is given data which came from
8467@code{TARGET_GET_PCH_VALIDITY} (in this version of this compiler, so there
8468is no need for extensive validity checking). It returns @code{NULL} if
8469it is safe to load a PCH file with this data, or a suitable error message
8470if not. The error message will be presented to the user, so it should
a451b0bd 8471be localized.
7bb1ad93
GK
8472@end deftypefn
8473
4185ae53
PB
8474@node C++ ABI
8475@section C++ ABI parameters
8476@cindex parameters, c++ abi
8477
8478@deftypefn {Target Hook} tree TARGET_CXX_GUARD_TYPE (void)
8479Define this hook to override the integer type used for guard variables.
8480These are used to implement one-time construction of static objects. The
8481default is long_long_integer_type_node.
8482@end deftypefn
8483
8484@deftypefn {Target Hook} bool TARGET_CXX_GUARD_MASK_BIT (void)
8485This hook determines how guard variables are used. It should return
8486@code{false} (the default) if first byte should be used. A return value of
8487@code{true} indicates the least significant bit should be used.
8488@end deftypefn
8489
46e995e0
PB
8490@deftypefn {Target Hook} tree TARGET_CXX_GET_COOKIE_SIZE (tree @var{type})
8491This hook returns the size of the cookie to use when allocating an array
8492whose elements have the indicated @var{type}. Assumes that it is already
8493known that a cookie is needed. The default is
8494@code{max(sizeof (size_t), alignof(type))}, as defined in section 2.7 of the
8495IA64/Generic C++ ABI.
8496@end deftypefn
8497
8498@deftypefn {Target Hook} bool TARGET_CXX_COOKIE_HAS_SIZE (void)
8499This hook should return @code{true} if the element size should be stored in
8500array cookies. The default is to return @code{false}.
8501@end deftypefn
8502
d59c7b4b
NC
8503@deftypefn {Target Hook} int TARGET_CXX_IMPORT_EXPORT_CLASS (tree @var{type}, int @var{import_export})
8504If defined by a backend this hook allows the decision made to export
8505class @var{type} to be overruled. Upon entry @var{import_export}
8506will contain 1 if the class is going to be exported, -1 if it is going
8507to be imported and 0 otherwise. This function should return the
8508modified value and perform any other actions necessary to support the
8509backend's targeted operating system.
8510@end deftypefn
8511
feca2ed3
JW
8512@node Misc
8513@section Miscellaneous Parameters
8514@cindex parameters, miscellaneous
8515
8516@c prevent bad page break with this line
8517Here are several miscellaneous parameters.
8518
a2c4f8e0 8519@defmac PREDICATE_CODES
feca2ed3
JW
8520Define this if you have defined special-purpose predicates in the file
8521@file{@var{machine}.c}. This macro is called within an initializer of an
8522array of structures. The first field in the structure is the name of a
8523predicate and the second field is an array of rtl codes. For each
8524predicate, list all rtl codes that can be in expressions matched by the
8525predicate. The list should have a trailing comma. Here is an example
8526of two entries in the list for a typical RISC machine:
8527
8528@smallexample
8529#define PREDICATE_CODES \
8530 @{"gen_reg_rtx_operand", @{SUBREG, REG@}@}, \
8531 @{"reg_or_short_cint_operand", @{SUBREG, REG, CONST_INT@}@},
8532@end smallexample
8533
8534Defining this macro does not affect the generated code (however,
8535incorrect definitions that omit an rtl code that may be matched by the
8536predicate can cause the compiler to malfunction). Instead, it allows
8537the table built by @file{genrecog} to be more compact and efficient,
8538thus speeding up the compiler. The most important predicates to include
556e0f21 8539in the list specified by this macro are those used in the most insn
feca2ed3
JW
8540patterns.
8541
aee96fe9 8542For each predicate function named in @code{PREDICATE_CODES}, a
975d393a 8543declaration will be generated in @file{insn-codes.h}.
a2c4f8e0 8544@end defmac
975d393a 8545
750054a2
CT
8546@defmac HAS_LONG_COND_BRANCH
8547Define this boolean macro to indicate whether or not your architecture
8548has conditional branches that can span all of memory. It is used in
8549conjunction with an optimization that partitions hot and cold basic
8550blocks into separate sections of the executable. If this macro is
8551set to false, gcc will convert any conditional branches that attempt
8552to cross between sections into unconditional branches or indirect jumps.
8553@end defmac
8554
8555@defmac HAS_LONG_UNCOND_BRANCH
8556Define this boolean macro to indicate whether or not your architecture
8557has unconditional branches that can span all of memory. It is used in
8558conjunction with an optimization that partitions hot and cold basic
8559blocks into separate sections of the executable. If this macro is
8560set to false, gcc will convert any unconditional branches that attempt
8561to cross between sections into indirect jumps.
8562@end defmac
8563
a2c4f8e0 8564@defmac SPECIAL_MODE_PREDICATES
8fe0ca0c 8565Define this if you have special predicates that know special things
02f52e19 8566about modes. Genrecog will warn about certain forms of
8fe0ca0c 8567@code{match_operand} without a mode; if the operand predicate is
02f52e19 8568listed in @code{SPECIAL_MODE_PREDICATES}, the warning will be
8fe0ca0c
RH
8569suppressed.
8570
8571Here is an example from the IA-32 port (@code{ext_register_operand}
8572specially checks for @code{HImode} or @code{SImode} in preparation
8573for a byte extraction from @code{%ah} etc.).
8574
8575@smallexample
8576#define SPECIAL_MODE_PREDICATES \
8577 "ext_register_operand",
8578@end smallexample
a2c4f8e0 8579@end defmac
8fe0ca0c 8580
a2c4f8e0 8581@defmac CASE_VECTOR_MODE
feca2ed3
JW
8582An alias for a machine mode name. This is the machine mode that
8583elements of a jump-table should have.
a2c4f8e0 8584@end defmac
feca2ed3 8585
a2c4f8e0 8586@defmac CASE_VECTOR_SHORTEN_MODE (@var{min_offset}, @var{max_offset}, @var{body})
33f7f353
JR
8587Optional: return the preferred mode for an @code{addr_diff_vec}
8588when the minimum and maximum offset are known. If you define this,
8589it enables extra code in branch shortening to deal with @code{addr_diff_vec}.
4226378a 8590To make this work, you also have to define @code{INSN_ALIGN} and
33f7f353 8591make the alignment for @code{addr_diff_vec} explicit.
391aaa6b 8592The @var{body} argument is provided so that the offset_unsigned and scale
33f7f353 8593flags can be updated.
a2c4f8e0 8594@end defmac
33f7f353 8595
a2c4f8e0 8596@defmac CASE_VECTOR_PC_RELATIVE
18543a22 8597Define this macro to be a C expression to indicate when jump-tables
9c49953c
KH
8598should contain relative addresses. You need not define this macro if
8599jump-tables never contain relative addresses, or jump-tables should
8600contain relative addresses only when @option{-fPIC} or @option{-fPIC}
8601is in effect.
a2c4f8e0 8602@end defmac
feca2ed3 8603
a2c4f8e0 8604@defmac CASE_DROPS_THROUGH
feca2ed3
JW
8605Define this if control falls through a @code{case} insn when the index
8606value is out of range. This means the specified default-label is
8607actually ignored by the @code{case} insn proper.
a2c4f8e0 8608@end defmac
feca2ed3 8609
a2c4f8e0 8610@defmac CASE_VALUES_THRESHOLD
feca2ed3
JW
8611Define this to be the smallest number of different values for which it
8612is best to use a jump-table instead of a tree of conditional branches.
8613The default is four for machines with a @code{casesi} instruction and
8614five otherwise. This is best for most machines.
a2c4f8e0 8615@end defmac
feca2ed3 8616
a2c4f8e0 8617@defmac CASE_USE_BIT_TESTS
9bb231fd
RS
8618Define this macro to be a C expression to indicate whether C switch
8619statements may be implemented by a sequence of bit tests. This is
8620advantageous on processors that can efficiently implement left shift
8621of 1 by the number of bits held in a register, but inappropriate on
8622targets that would require a loop. By default, this macro returns
8623@code{true} if the target defines an @code{ashlsi3} pattern, and
8624@code{false} otherwise.
a2c4f8e0 8625@end defmac
9bb231fd 8626
a2c4f8e0 8627@defmac WORD_REGISTER_OPERATIONS
feca2ed3
JW
8628Define this macro if operations between registers with integral mode
8629smaller than a word are always performed on the entire register.
8630Most RISC machines have this property and most CISC machines do not.
a2c4f8e0 8631@end defmac
feca2ed3 8632
7be4d808 8633@defmac LOAD_EXTEND_OP (@var{mem_mode})
feca2ed3 8634Define this macro to be a C expression indicating when insns that read
7be4d808
R
8635memory in @var{mem_mode}, an integral mode narrower than a word, set the
8636bits outside of @var{mem_mode} to be either the sign-extension or the
feca2ed3 8637zero-extension of the data read. Return @code{SIGN_EXTEND} for values
7be4d808 8638of @var{mem_mode} for which the
feca2ed3
JW
8639insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
8640@code{NIL} for other modes.
8641
7be4d808 8642This macro is not called with @var{mem_mode} non-integral or with a width
feca2ed3
JW
8643greater than or equal to @code{BITS_PER_WORD}, so you may return any
8644value in this case. Do not define this macro if it would always return
8645@code{NIL}. On machines where this macro is defined, you will normally
8646define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
7be4d808
R
8647
8648You may return a non-@code{NIL} value even if for some hard registers
8649the sign extension is not performed, if for the @code{REGNO_REG_CLASS}
8650of these hard registers @code{CANNOT_CHANGE_MODE_CLASS} returns nonzero
8651when the @var{from} mode is @var{mem_mode} and the @var{to} mode is any
8652integral mode larger than this but not larger than @code{word_mode}.
8653
8654You must return @code{NIL} if for some hard registers that allow this
8655mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to
8656@code{word_mode}, but that they can change to another integral mode that
8657is larger then @var{mem_mode} but still smaller than @code{word_mode}.
a2c4f8e0 8658@end defmac
feca2ed3 8659
a2c4f8e0 8660@defmac SHORT_IMMEDIATES_SIGN_EXTEND
77643ab8
MM
8661Define this macro if loading short immediate values into registers sign
8662extends.
a2c4f8e0 8663@end defmac
77643ab8 8664
a2c4f8e0 8665@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC
feca2ed3
JW
8666Define this macro if the same instructions that convert a floating
8667point number to a signed fixed point number also convert validly to an
8668unsigned one.
a2c4f8e0 8669@end defmac
feca2ed3 8670
a2c4f8e0 8671@defmac MOVE_MAX
feca2ed3
JW
8672The maximum number of bytes that a single instruction can move quickly
8673between memory and registers or between two memory locations.
a2c4f8e0 8674@end defmac
feca2ed3 8675
a2c4f8e0 8676@defmac MAX_MOVE_MAX
feca2ed3
JW
8677The maximum number of bytes that a single instruction can move quickly
8678between memory and registers or between two memory locations. If this
8679is undefined, the default is @code{MOVE_MAX}. Otherwise, it is the
8680constant value that is the largest value that @code{MOVE_MAX} can have
8681at run-time.
a2c4f8e0 8682@end defmac
feca2ed3 8683
a2c4f8e0 8684@defmac SHIFT_COUNT_TRUNCATED
feca2ed3
JW
8685A C expression that is nonzero if on this machine the number of bits
8686actually used for the count of a shift operation is equal to the number
8687of bits needed to represent the size of the object being shifted. When
df2a54e9 8688this macro is nonzero, the compiler will assume that it is safe to omit
feca2ed3
JW
8689a sign-extend, zero-extend, and certain bitwise `and' instructions that
8690truncates the count of a shift operation. On machines that have
c771326b 8691instructions that act on bit-fields at variable positions, which may
feca2ed3
JW
8692include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED}
8693also enables deletion of truncations of the values that serve as
c771326b 8694arguments to bit-field instructions.
feca2ed3
JW
8695
8696If both types of instructions truncate the count (for shifts) and
c771326b 8697position (for bit-field operations), or if no variable-position bit-field
feca2ed3
JW
8698instructions exist, you should define this macro.
8699
8700However, on some machines, such as the 80386 and the 680x0, truncation
8701only applies to shift operations and not the (real or pretended)
c771326b 8702bit-field operations. Define @code{SHIFT_COUNT_TRUNCATED} to be zero on
feca2ed3
JW
8703such machines. Instead, add patterns to the @file{md} file that include
8704the implied truncation of the shift instructions.
8705
8706You need not define this macro if it would always have the value of zero.
a2c4f8e0 8707@end defmac
feca2ed3 8708
a2c4f8e0 8709@defmac TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec})
feca2ed3
JW
8710A C expression which is nonzero if on this machine it is safe to
8711``convert'' an integer of @var{inprec} bits to one of @var{outprec}
8712bits (where @var{outprec} is smaller than @var{inprec}) by merely
8713operating on it as if it had only @var{outprec} bits.
8714
8715On many machines, this expression can be 1.
8716
8717@c rearranged this, removed the phrase "it is reported that". this was
8718@c to fix an overfull hbox. --mew 10feb93
8719When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for
8720modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result.
8721If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in
8722such cases may improve things.
a2c4f8e0 8723@end defmac
feca2ed3 8724
a2c4f8e0 8725@defmac STORE_FLAG_VALUE
feca2ed3
JW
8726A C expression describing the value returned by a comparison operator
8727with an integral mode and stored by a store-flag instruction
8728(@samp{s@var{cond}}) when the condition is true. This description must
8729apply to @emph{all} the @samp{s@var{cond}} patterns and all the
8730comparison operators whose results have a @code{MODE_INT} mode.
8731
630d3d5a
JM
8732A value of 1 or @minus{}1 means that the instruction implementing the
8733comparison operator returns exactly 1 or @minus{}1 when the comparison is true
feca2ed3
JW
8734and 0 when the comparison is false. Otherwise, the value indicates
8735which bits of the result are guaranteed to be 1 when the comparison is
8736true. This value is interpreted in the mode of the comparison
8737operation, which is given by the mode of the first operand in the
8738@samp{s@var{cond}} pattern. Either the low bit or the sign bit of
8739@code{STORE_FLAG_VALUE} be on. Presently, only those bits are used by
8740the compiler.
8741
630d3d5a 8742If @code{STORE_FLAG_VALUE} is neither 1 or @minus{}1, the compiler will
feca2ed3
JW
8743generate code that depends only on the specified bits. It can also
8744replace comparison operators with equivalent operations if they cause
8745the required bits to be set, even if the remaining bits are undefined.
8746For example, on a machine whose comparison operators return an
8747@code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as
8748@samp{0x80000000}, saying that just the sign bit is relevant, the
8749expression
8750
8751@smallexample
8752(ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0))
8753@end smallexample
8754
8755@noindent
8756can be converted to
8757
8758@smallexample
8759(ashift:SI @var{x} (const_int @var{n}))
8760@end smallexample
8761
8762@noindent
8763where @var{n} is the appropriate shift count to move the bit being
8764tested into the sign bit.
8765
8766There is no way to describe a machine that always sets the low-order bit
8767for a true value, but does not guarantee the value of any other bits,
8768but we do not know of any machine that has such an instruction. If you
a3a15b4d 8769are trying to port GCC to such a machine, include an instruction to
feca2ed3 8770perform a logical-and of the result with 1 in the pattern for the
b11cc610 8771comparison operators and let us know at @email{gcc@@gcc.gnu.org}.
feca2ed3
JW
8772
8773Often, a machine will have multiple instructions that obtain a value
8774from a comparison (or the condition codes). Here are rules to guide the
8775choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions
8776to be used:
8777
8778@itemize @bullet
8779@item
8780Use the shortest sequence that yields a valid definition for
8781@code{STORE_FLAG_VALUE}. It is more efficient for the compiler to
8782``normalize'' the value (convert it to, e.g., 1 or 0) than for the
8783comparison operators to do so because there may be opportunities to
8784combine the normalization with other operations.
8785
8786@item
630d3d5a 8787For equal-length sequences, use a value of 1 or @minus{}1, with @minus{}1 being
feca2ed3
JW
8788slightly preferred on machines with expensive jumps and 1 preferred on
8789other machines.
8790
8791@item
8792As a second choice, choose a value of @samp{0x80000001} if instructions
8793exist that set both the sign and low-order bits but do not define the
8794others.
8795
8796@item
8797Otherwise, use a value of @samp{0x80000000}.
8798@end itemize
8799
8800Many machines can produce both the value chosen for
8801@code{STORE_FLAG_VALUE} and its negation in the same number of
8802instructions. On those machines, you should also define a pattern for
8803those cases, e.g., one matching
8804
8805@smallexample
8806(set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C})))
8807@end smallexample
8808
8809Some machines can also perform @code{and} or @code{plus} operations on
8810condition code values with less instructions than the corresponding
8811@samp{s@var{cond}} insn followed by @code{and} or @code{plus}. On those
8812machines, define the appropriate patterns. Use the names @code{incscc}
8813and @code{decscc}, respectively, for the patterns which perform
8814@code{plus} or @code{minus} operations on condition code values. See
8815@file{rs6000.md} for some examples. The GNU Superoptizer can be used to
8816find such instruction sequences on other machines.
8817
06f31100
RS
8818If this macro is not defined, the default value, 1, is used. You need
8819not define @code{STORE_FLAG_VALUE} if the machine has no store-flag
8820instructions, or if the value generated by these instructions is 1.
a2c4f8e0 8821@end defmac
feca2ed3 8822
a2c4f8e0 8823@defmac FLOAT_STORE_FLAG_VALUE (@var{mode})
df2a54e9 8824A C expression that gives a nonzero @code{REAL_VALUE_TYPE} value that is
feca2ed3
JW
8825returned when comparison operators with floating-point results are true.
8826Define this macro on machine that have comparison operations that return
8827floating-point values. If there are no such operations, do not define
8828this macro.
a2c4f8e0 8829@end defmac
feca2ed3 8830
a2c4f8e0
ZW
8831@defmac CLZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value})
8832@defmacx CTZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value})
7dba8395
RH
8833A C expression that evaluates to true if the architecture defines a value
8834for @code{clz} or @code{ctz} with a zero operand. If so, @var{value}
8835should be set to this value. If this macro is not defined, the value of
8836@code{clz} or @code{ctz} is assumed to be undefined.
8837
8838This macro must be defined if the target's expansion for @code{ffs}
8839relies on a particular value to get correct results. Otherwise it
8840is not necessary, though it may be used to optimize some corner cases.
8841
8842Note that regardless of this macro the ``definedness'' of @code{clz}
8843and @code{ctz} at zero do @emph{not} extend to the builtin functions
8844visible to the user. Thus one may be free to adjust the value at will
8845to match the target expansion of these operations without fear of
8846breaking the API.
a2c4f8e0 8847@end defmac
7dba8395 8848
a2c4f8e0 8849@defmac Pmode
feca2ed3
JW
8850An alias for the machine mode for pointers. On most machines, define
8851this to be the integer mode corresponding to the width of a hardware
8852pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines.
8853On some machines you must define this to be one of the partial integer
8854modes, such as @code{PSImode}.
8855
8856The width of @code{Pmode} must be at least as large as the value of
8857@code{POINTER_SIZE}. If it is not equal, you must define the macro
8858@code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended
8859to @code{Pmode}.
a2c4f8e0 8860@end defmac
feca2ed3 8861
a2c4f8e0 8862@defmac FUNCTION_MODE
feca2ed3
JW
8863An alias for the machine mode used for memory references to functions
8864being called, in @code{call} RTL expressions. On most machines this
8865should be @code{QImode}.
a2c4f8e0 8866@end defmac
feca2ed3 8867
a2c4f8e0 8868@defmac STDC_0_IN_SYSTEM_HEADERS
ee773fcc
NB
8869In normal operation, the preprocessor expands @code{__STDC__} to the
8870constant 1, to signify that GCC conforms to ISO Standard C@. On some
8871hosts, like Solaris, the system compiler uses a different convention,
8872where @code{__STDC__} is normally 0, but is 1 if the user specifies
8873strict conformance to the C Standard.
8874
8875Defining @code{STDC_0_IN_SYSTEM_HEADERS} makes GNU CPP follows the host
8876convention when processing system header files, but when processing user
8877files @code{__STDC__} will always expand to 1.
a2c4f8e0 8878@end defmac
ee773fcc 8879
a2c4f8e0 8880@defmac NO_IMPLICIT_EXTERN_C
161d7b59 8881Define this macro if the system header files support C++ as well as C@.
feca2ed3
JW
8882This macro inhibits the usual method of using system header files in
8883C++, which is to pretend that the file's contents are enclosed in
8884@samp{extern "C" @{@dots{}@}}.
a2c4f8e0 8885@end defmac
feca2ed3 8886
feca2ed3
JW
8887@findex #pragma
8888@findex pragma
a2c4f8e0 8889@defmac REGISTER_TARGET_PRAGMAS ()
8b97c5f8 8890Define this macro if you want to implement any target-specific pragmas.
a5da89c6 8891If defined, it is a C expression which makes a series of calls to
c58b209a 8892@code{c_register_pragma} for each pragma. The macro may also do any
a5da89c6 8893setup required for the pragmas.
8b97c5f8
ZW
8894
8895The primary reason to define this macro is to provide compatibility with
8896other compilers for the same target. In general, we discourage
161d7b59 8897definition of target-specific pragmas for GCC@.
feca2ed3 8898
c237e94a 8899If the pragma can be implemented by attributes then you should consider
91d231cb 8900defining the target hook @samp{TARGET_INSERT_ATTRIBUTES} as well.
f09db6e0 8901
8b97c5f8
ZW
8902Preprocessor macros that appear on pragma lines are not expanded. All
8903@samp{#pragma} directives that do not match any registered pragma are
630d3d5a 8904silently ignored, unless the user specifies @option{-Wunknown-pragmas}.
a2c4f8e0 8905@end defmac
8b97c5f8 8906
c58b209a 8907@deftypefun void c_register_pragma (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *))
8b97c5f8 8908
c58b209a 8909Each call to @code{c_register_pragma} establishes one pragma. The
8b97c5f8
ZW
8910@var{callback} routine will be called when the preprocessor encounters a
8911pragma of the form
8912
8913@smallexample
8914#pragma [@var{space}] @var{name} @dots{}
8915@end smallexample
8916
a5da89c6
NB
8917@var{space} is the case-sensitive namespace of the pragma, or
8918@code{NULL} to put the pragma in the global namespace. The callback
8919routine receives @var{pfile} as its first argument, which can be passed
51fabca5
NB
8920on to cpplib's functions if necessary. You can lex tokens after the
8921@var{name} by calling @code{c_lex}. Tokens that are not read by the
8922callback will be silently ignored. The end of the line is indicated by
a2c4f8e0 8923a token of type @code{CPP_EOF}
8b97c5f8
ZW
8924
8925For an example use of this routine, see @file{c4x.h} and the callback
51fabca5 8926routines defined in @file{c4x-c.c}.
aac69a49
NC
8927
8928Note that the use of @code{c_lex} is specific to the C and C++
8929compilers. It will not work in the Java or Fortran compilers, or any
8930other language compilers for that matter. Thus if @code{c_lex} is going
8931to be called from target-specific code, it must only be done so when
c771326b 8932building the C and C++ compilers. This can be done by defining the
aac69a49 8933variables @code{c_target_objs} and @code{cxx_target_objs} in the
aee96fe9 8934target entry in the @file{config.gcc} file. These variables should name
aac69a49
NC
8935the target-specific, language-specific object file which contains the
8936code that uses @code{c_lex}. Note it will also be necessary to add a
8937rule to the makefile fragment pointed to by @code{tmake_file} that shows
8938how to build this object file.
8b97c5f8
ZW
8939@end deftypefun
8940
e2af664c
NC
8941@findex #pragma
8942@findex pragma
a2c4f8e0 8943@defmac HANDLE_SYSV_PRAGMA
e2af664c
NC
8944Define this macro (to a value of 1) if you want the System V style
8945pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
8946[=<value>]} to be supported by gcc.
8947
8948The pack pragma specifies the maximum alignment (in bytes) of fields
8949within a structure, in much the same way as the @samp{__aligned__} and
8950@samp{__packed__} @code{__attribute__}s do. A pack value of zero resets
c21cd8b1 8951the behavior to the default.
e2af664c 8952
e4850f36
DR
8953A subtlety for Microsoft Visual C/C++ style bit-field packing
8954(e.g. -mms-bitfields) for targets that support it:
8955When a bit-field is inserted into a packed record, the whole size
8956of the underlying type is used by one or more same-size adjacent
8957bit-fields (that is, if its long:3, 32 bits is used in the record,
8958and any additional adjacent long bit-fields are packed into the same
8959chunk of 32 bits. However, if the size changes, a new field of that
8960size is allocated).
8961
8962If both MS bit-fields and @samp{__attribute__((packed))} are used,
8963the latter will take precedence. If @samp{__attribute__((packed))} is
8964used on a single field when MS bit-fields are in use, it will take
8965precedence for that field, but the alignment of the rest of the structure
8966may affect its placement.
8967
e2af664c
NC
8968The weak pragma only works if @code{SUPPORTS_WEAK} and
8969@code{ASM_WEAKEN_LABEL} are defined. If enabled it allows the creation
8970of specifically named weak labels, optionally with a value.
a2c4f8e0 8971@end defmac
e2af664c 8972
e2af664c
NC
8973@findex #pragma
8974@findex pragma
a2c4f8e0 8975@defmac HANDLE_PRAGMA_PACK_PUSH_POP
e2af664c 8976Define this macro (to a value of 1) if you want to support the Win32
aee96fe9
JM
8977style pragmas @samp{#pragma pack(push,@var{n})} and @samp{#pragma
8978pack(pop)}. The @samp{pack(push,@var{n})} pragma specifies the maximum alignment
e2af664c
NC
8979(in bytes) of fields within a structure, in much the same way as the
8980@samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A
c21cd8b1 8981pack value of zero resets the behavior to the default. Successive
e2af664c
NC
8982invocations of this pragma cause the previous values to be stacked, so
8983that invocations of @samp{#pragma pack(pop)} will return to the previous
8984value.
a2c4f8e0 8985@end defmac
feca2ed3 8986
a2c4f8e0 8987@defmac DOLLARS_IN_IDENTIFIERS
b1822ccc
NB
8988Define this macro to control use of the character @samp{$} in
8989identifier names for the C family of languages. 0 means @samp{$} is
8990not allowed by default; 1 means it is allowed. 1 is the default;
8991there is no need to define this macro in that case.
a2c4f8e0 8992@end defmac
feca2ed3 8993
a2c4f8e0 8994@defmac NO_DOLLAR_IN_LABEL
feca2ed3
JW
8995Define this macro if the assembler does not accept the character
8996@samp{$} in label names. By default constructors and destructors in
8997G++ have @samp{$} in the identifiers. If this macro is defined,
8998@samp{.} is used instead.
a2c4f8e0 8999@end defmac
feca2ed3 9000
a2c4f8e0 9001@defmac NO_DOT_IN_LABEL
feca2ed3
JW
9002Define this macro if the assembler does not accept the character
9003@samp{.} in label names. By default constructors and destructors in G++
9004have names that use @samp{.}. If this macro is defined, these names
9005are rewritten to avoid @samp{.}.
a2c4f8e0 9006@end defmac
feca2ed3 9007
a2c4f8e0 9008@defmac INSN_SETS_ARE_DELAYED (@var{insn})
feca2ed3
JW
9009Define this macro as a C expression that is nonzero if it is safe for the
9010delay slot scheduler to place instructions in the delay slot of @var{insn},
9011even if they appear to use a resource set or clobbered in @var{insn}.
a3a15b4d 9012@var{insn} is always a @code{jump_insn} or an @code{insn}; GCC knows that
feca2ed3
JW
9013every @code{call_insn} has this behavior. On machines where some @code{insn}
9014or @code{jump_insn} is really a function call and hence has this behavior,
9015you should define this macro.
9016
9017You need not define this macro if it would always return zero.
a2c4f8e0 9018@end defmac
feca2ed3 9019
a2c4f8e0 9020@defmac INSN_REFERENCES_ARE_DELAYED (@var{insn})
feca2ed3
JW
9021Define this macro as a C expression that is nonzero if it is safe for the
9022delay slot scheduler to place instructions in the delay slot of @var{insn},
9023even if they appear to set or clobber a resource referenced in @var{insn}.
9024@var{insn} is always a @code{jump_insn} or an @code{insn}. On machines where
9025some @code{insn} or @code{jump_insn} is really a function call and its operands
9026are registers whose use is actually in the subroutine it calls, you should
9027define this macro. Doing so allows the delay slot scheduler to move
9028instructions which copy arguments into the argument registers into the delay
9029slot of @var{insn}.
9030
9031You need not define this macro if it would always return zero.
a2c4f8e0 9032@end defmac
feca2ed3 9033
a2c4f8e0 9034@defmac MULTIPLE_SYMBOL_SPACES
861bb6c1
JL
9035Define this macro if in some cases global symbols from one translation
9036unit may not be bound to undefined symbols in another translation unit
9037without user intervention. For instance, under Microsoft Windows
9038symbols must be explicitly imported from shared libraries (DLLs).
a2c4f8e0 9039@end defmac
861bb6c1 9040
67dfe110
KH
9041@deftypefn {Target Hook} tree TARGET_MD_ASM_CLOBBERS (tree @var{clobbers})
9042This target hook should add to @var{clobbers} @code{STRING_CST} trees for
57bcb97a 9043any hard regs the port wishes to automatically clobber for all asms.
67dfe110
KH
9044It should return the result of the last @code{tree_cons} used to add a
9045clobber.
9046@end deftypefn
57bcb97a 9047
a2c4f8e0 9048@defmac MATH_LIBRARY
71d718e0
JM
9049Define this macro as a C string constant for the linker argument to link
9050in the system math library, or @samp{""} if the target does not have a
9051separate math library.
9052
9053You need only define this macro if the default of @samp{"-lm"} is wrong.
a2c4f8e0 9054@end defmac
512b62fb 9055
a2c4f8e0 9056@defmac LIBRARY_PATH_ENV
512b62fb
JM
9057Define this macro as a C string constant for the environment variable that
9058specifies where the linker should look for libraries.
9059
9060You need only define this macro if the default of @samp{"LIBRARY_PATH"}
9061is wrong.
a2c4f8e0 9062@end defmac
e09d24ff 9063
a2c4f8e0 9064@defmac TARGET_HAS_F_SETLKW
161d7b59
JM
9065Define this macro if the target supports file locking with fcntl / F_SETLKW@.
9066Note that this functionality is part of POSIX@.
e09d24ff
R
9067Defining @code{TARGET_HAS_F_SETLKW} will enable the test coverage code
9068to use file locking when exiting a program, which avoids race conditions
9069if the program has forked.
a2c4f8e0 9070@end defmac
0c99ec5c 9071
a2c4f8e0 9072@defmac MAX_CONDITIONAL_EXECUTE
0c99ec5c
RH
9073
9074A C expression for the maximum number of instructions to execute via
9075conditional execution instructions instead of a branch. A value of
9076@code{BRANCH_COST}+1 is the default if the machine does not use cc0, and
90771 if it does use cc0.
a2c4f8e0 9078@end defmac
90280148 9079
a2c4f8e0 9080@defmac IFCVT_MODIFY_TESTS (@var{ce_info}, @var{true_expr}, @var{false_expr})
c05ffc49
BS
9081Used if the target needs to perform machine-dependent modifications on the
9082conditionals used for turning basic blocks into conditionally executed code.
9083@var{ce_info} points to a data structure, @code{struct ce_if_block}, which
9084contains information about the currently processed blocks. @var{true_expr}
9085and @var{false_expr} are the tests that are used for converting the
9086then-block and the else-block, respectively. Set either @var{true_expr} or
9087@var{false_expr} to a null pointer if the tests cannot be converted.
a2c4f8e0 9088@end defmac
c05ffc49 9089
a2c4f8e0 9090@defmac IFCVT_MODIFY_MULTIPLE_TESTS (@var{ce_info}, @var{bb}, @var{true_expr}, @var{false_expr})
c05ffc49
BS
9091Like @code{IFCVT_MODIFY_TESTS}, but used when converting more complicated
9092if-statements into conditions combined by @code{and} and @code{or} operations.
9093@var{bb} contains the basic block that contains the test that is currently
9094being processed and about to be turned into a condition.
a2c4f8e0 9095@end defmac
90280148 9096
a2c4f8e0 9097@defmac IFCVT_MODIFY_INSN (@var{ce_info}, @var{pattern}, @var{insn})
c05ffc49
BS
9098A C expression to modify the @var{PATTERN} of an @var{INSN} that is to
9099be converted to conditional execution format. @var{ce_info} points to
9100a data structure, @code{struct ce_if_block}, which contains information
9101about the currently processed blocks.
a2c4f8e0 9102@end defmac
90280148 9103
a2c4f8e0 9104@defmac IFCVT_MODIFY_FINAL (@var{ce_info})
90280148 9105A C expression to perform any final machine dependent modifications in
c05ffc49
BS
9106converting code to conditional execution. The involved basic blocks
9107can be found in the @code{struct ce_if_block} structure that is pointed
9108to by @var{ce_info}.
a2c4f8e0 9109@end defmac
90280148 9110
a2c4f8e0 9111@defmac IFCVT_MODIFY_CANCEL (@var{ce_info})
90280148 9112A C expression to cancel any machine dependent modifications in
c05ffc49
BS
9113converting code to conditional execution. The involved basic blocks
9114can be found in the @code{struct ce_if_block} structure that is pointed
9115to by @var{ce_info}.
a2c4f8e0 9116@end defmac
c05ffc49 9117
a2c4f8e0 9118@defmac IFCVT_INIT_EXTRA_FIELDS (@var{ce_info})
c05ffc49
BS
9119A C expression to initialize any extra fields in a @code{struct ce_if_block}
9120structure, which are defined by the @code{IFCVT_EXTRA_FIELDS} macro.
a2c4f8e0 9121@end defmac
c05ffc49 9122
a2c4f8e0 9123@defmac IFCVT_EXTRA_FIELDS
c05ffc49 9124If defined, it should expand to a set of field declarations that will be
c0478a66 9125added to the @code{struct ce_if_block} structure. These should be initialized
c05ffc49 9126by the @code{IFCVT_INIT_EXTRA_FIELDS} macro.
a2c4f8e0 9127@end defmac
c05ffc49 9128
18dbd950
RS
9129@deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_REORG ()
9130If non-null, this hook performs a target-specific pass over the
9131instruction stream. The compiler will run it at all optimization levels,
9132just before the point at which it normally does delayed-branch scheduling.
9133
9134The exact purpose of the hook varies from target to target. Some use
9135it to do transformations that are necessary for correctness, such as
9136laying out in-function constant pools or avoiding hardware hazards.
9137Others use it as an opportunity to do some machine-dependent optimizations.
9138
9139You need not implement the hook if it has nothing to do. The default
9140definition is null.
9141@end deftypefn
9142
f6155fda
SS
9143@deftypefn {Target Hook} void TARGET_INIT_BUILTINS ()
9144Define this hook if you have any machine-specific built-in functions
9145that need to be defined. It should be a function that performs the
4a1d48f6
BS
9146necessary setup.
9147
c771326b 9148Machine specific built-in functions can be useful to expand special machine
4a1d48f6
BS
9149instructions that would otherwise not normally be generated because
9150they have no equivalent in the source language (for example, SIMD vector
9151instructions or prefetch instructions).
9152
c771326b
JM
9153To create a built-in function, call the function @code{builtin_function}
9154which is defined by the language front end. You can use any type nodes set
4a1d48f6 9155up by @code{build_common_tree_nodes} and @code{build_common_tree_nodes_2};
c237e94a 9156only language front ends that use those two functions will call
f6155fda 9157@samp{TARGET_INIT_BUILTINS}.
acdcefcc 9158@end deftypefn
4a1d48f6 9159
f6155fda 9160@deftypefn {Target Hook} rtx TARGET_EXPAND_BUILTIN (tree @var{exp}, rtx @var{target}, rtx @var{subtarget}, enum machine_mode @var{mode}, int @var{ignore})
4a1d48f6 9161
c771326b 9162Expand a call to a machine specific built-in function that was set up by
f6155fda
SS
9163@samp{TARGET_INIT_BUILTINS}. @var{exp} is the expression for the
9164function call; the result should go to @var{target} if that is
9165convenient, and have mode @var{mode} if that is convenient.
9166@var{subtarget} may be used as the target for computing one of
9167@var{exp}'s operands. @var{ignore} is nonzero if the value is to be
9168ignored. This function should return the result of the call to the
9169built-in function.
acdcefcc 9170@end deftypefn
4a1d48f6 9171
a2c4f8e0 9172@defmac MD_CAN_REDIRECT_BRANCH (@var{branch1}, @var{branch2})
6e7b03e1 9173
4fe9b91c 9174Take a branch insn in @var{branch1} and another in @var{branch2}.
6e7b03e1
AH
9175Return true if redirecting @var{branch1} to the destination of
9176@var{branch2} is possible.
9177
9178On some targets, branches may have a limited range. Optimizing the
9179filling of delay slots can result in branches being redirected, and this
9180may in turn cause a branch offset to overflow.
a2c4f8e0 9181@end defmac
6e7b03e1 9182
a2c4f8e0 9183@defmac ALLOCATE_INITIAL_VALUE (@var{hard_reg})
385b6e2d
R
9184
9185When the initial value of a hard register has been copied in a pseudo
4fe9b91c 9186register, it is often not necessary to actually allocate another register
385b6e2d
R
9187to this pseudo register, because the original hard register or a stack slot
9188it has been saved into can be used. @code{ALLOCATE_INITIAL_VALUE}, if
9189defined, is called at the start of register allocation once for each
9190hard register that had its initial value copied by using
9191@code{get_func_hard_reg_initial_val} or @code{get_hard_reg_initial_val}.
9192Possible values are @code{NULL_RTX}, if you don't want
9193to do any special allocation, a @code{REG} rtx---that would typically be
9194the hard register itself, if it is known not to be clobbered---or a
9195@code{MEM}.
9196If you are returning a @code{MEM}, this is only a hint for the allocator;
9197it might decide to use another register anyways.
9198You may use @code{current_function_leaf_function} in the definition of the
9199macro, functions that use @code{REG_N_SETS}, to determine if the hard
9200register in question will not be clobbered.
a2c4f8e0 9201@end defmac
385b6e2d 9202
a2c4f8e0 9203@defmac TARGET_OBJECT_SUFFIX
807633e5
ZW
9204Define this macro to be a C string representing the suffix for object
9205files on your target machine. If you do not define this macro, GCC will
9206use @samp{.o} as the suffix for object files.
a2c4f8e0 9207@end defmac
807633e5 9208
a2c4f8e0 9209@defmac TARGET_EXECUTABLE_SUFFIX
807633e5
ZW
9210Define this macro to be a C string representing the suffix to be
9211automatically added to executable files on your target machine. If you
9212do not define this macro, GCC will use the null string as the suffix for
9213executable files.
a2c4f8e0 9214@end defmac
807633e5 9215
a2c4f8e0 9216@defmac COLLECT_EXPORT_LIST
807633e5
ZW
9217If defined, @code{collect2} will scan the individual object files
9218specified on its command line and create an export list for the linker.
9219Define this macro for systems like AIX, where the linker discards
9220object files that are not referenced from @code{main} and uses export
9221lists.
a2c4f8e0 9222@end defmac
807633e5 9223
a2c4f8e0 9224@defmac MODIFY_JNI_METHOD_CALL (@var{mdecl})
55ae46b1
RM
9225Define this macro to a C expression representing a variant of the
9226method call @var{mdecl}, if Java Native Interface (JNI) methods
9227must be invoked differently from other methods on your target.
95fef11f 9228For example, on 32-bit Microsoft Windows, JNI methods must be invoked using
55ae46b1
RM
9229the @code{stdcall} calling convention and this macro is then
9230defined as this expression:
9231
9232@smallexample
9233build_type_attribute_variant (@var{mdecl},
9234 build_tree_list
9235 (get_identifier ("stdcall"),
9236 NULL))
9237@end smallexample
a2c4f8e0 9238@end defmac
e4ec2cac
AO
9239
9240@deftypefn {Target Hook} bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
9241This target hook returns @code{true} past the point in which new jump
9242instructions could be created. On machines that require a register for
9243every jump such as the SHmedia ISA of SH5, this point would typically be
9244reload, so this target hook should be defined to a function such as:
9245
9246@smallexample
9247static bool
9248cannot_modify_jumps_past_reload_p ()
9249@{
9250 return (reload_completed || reload_in_progress);
9251@}
9252@end smallexample
9253@end deftypefn
fe3ad572 9254
a3424f5c 9255@deftypefn {Target Hook} int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
fe3ad572
SC
9256This target hook returns a register class for which branch target register
9257optimizations should be applied. All registers in this class should be
c0cbdbd9 9258usable interchangeably. After reload, registers in this class will be
fe3ad572
SC
9259re-allocated and loads will be hoisted out of loops and be subjected
9260to inter-block scheduling.
9261@end deftypefn
9262
9263@deftypefn {Target Hook} bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool @var{after_prologue_epilogue_gen})
9264Branch target register optimization will by default exclude callee-saved
9265registers
9266that are not already live during the current function; if this target hook
9267returns true, they will be included. The target code must than make sure
9268that all target registers in the class returned by
9269@samp{TARGET_BRANCH_TARGET_REGISTER_CLASS} that might need saving are
9270saved. @var{after_prologue_epilogue_gen} indicates if prologues and
9271epilogues have already been generated. Note, even if you only return
9272true when @var{after_prologue_epilogue_gen} is false, you still are likely
9273to have to make special provisions in @code{INITIAL_ELIMINATION_OFFSET}
9274to reserve space for caller-saved target registers.
9275@end deftypefn
2082e02f
RS
9276
9277@defmac POWI_MAX_MULTS
73774972 9278If defined, this macro is interpreted as a signed integer C expression
2082e02f
RS
9279that specifies the maximum number of floating point multiplications
9280that should be emitted when expanding exponentiation by an integer
9281constant inline. When this value is defined, exponentiation requiring
9282more than this number of multiplications is implemented by calling the
9283system library's @code{pow}, @code{powf} or @code{powl} routines.
9284The default value places no upper bound on the multiplication count.
9285@end defmac
94d1613b
MS
9286
9287@deftypefn Macro void TARGET_EXTRA_INCLUDES (int @var{stdinc})
9288This target hook should register any extra include files for the
9289target. The parameter @var{stdinc} indicates if normal include files
9290are present.
9291@end deftypefn
9292
9293@deftypefn Macro void TARGET_OPTF (char *@var{path})
9294This target hook should register special include paths for the target.
9295The parameter @var{path} is the include to register. On Darwin
9296systems, this is used for Framework includes, which have semantics
9297that are different from @option{-I}.
9298@end deftypefn
4a77e08c
DS
9299
9300@deftypefn {Target Hook} bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl})
9301This target hook returns @code{true} if it is safe to use a local alias
9302for a virtual function @var{fndecl} when constructing thunks,
9303@code{false} otherwise. By default, the hook returns @code{true} for all
9304functions, if a target supports aliases (ie. defines
9305@code{ASM_OUTPUT_DEF}), @code{false} otherwise,
9306@end deftypefn
This page took 3.625443 seconds and 5 git commands to generate.