]> git.ipfire.org Git - thirdparty/gcc.git/blame - gcc/doc/tm.texi
target.h (globalize_decl_name): New.
[thirdparty/gcc.git] / gcc / doc / tm.texi
CommitLineData
c58b209a 1@c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,
fe037b8a 2@c 2002, 2003, 2004, 2005, 2006, 2007 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.
34* Registers:: Naming and describing the hardware registers.
35* Register Classes:: Defining the classes of hardware registers.
f38840db 36* Old Constraints:: The old way to define machine-specific constraints.
feca2ed3
JW
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.
aacd3885 42* Anchored Addresses:: Defining how @option{-fsection-anchors} should work.
feca2ed3
JW
43* Condition Code:: Defining how insns update the condition code.
44* Costs:: Defining relative costs of different operations.
c237e94a 45* Scheduling:: Adjusting the behavior of the instruction scheduler.
feca2ed3
JW
46* Sections:: Dividing storage into text, data, and other sections.
47* PIC:: Macros for position independent code.
48* Assembler Format:: Defining how to write insns and pseudo-ops to output.
49* Debugging Info:: Defining the format of debugging output.
b216cd4a 50* Floating Point:: Handling floating point for cross-compilers.
9f09b1f2 51* Mode Switching:: Insertion of mode-switching instructions.
91d231cb 52* Target Attributes:: Defining target-specific uses of @code{__attribute__}.
d604bca3 53* MIPS Coprocessors:: MIPS coprocessor support and how to customize it.
7bb1ad93 54* PCH Target:: Validity checking for precompiled headers.
4185ae53 55* C++ ABI:: Controlling C++ ABI changes.
feca2ed3
JW
56* Misc:: Everything else.
57@end menu
58
672a6f42 59@node Target Structure
648c546a 60@section The Global @code{targetm} Variable
672a6f42
NB
61@cindex target hooks
62@cindex target functions
63
f6897b10
SS
64@deftypevar {struct gcc_target} targetm
65The target @file{.c} file must define the global @code{targetm} variable
672a6f42
NB
66which contains pointers to functions and data relating to the target
67machine. The variable is declared in @file{target.h};
68@file{target-def.h} defines the macro @code{TARGET_INITIALIZER} which is
69used to initialize the variable, and macros for the default initializers
70for elements of the structure. The @file{.c} file should override those
71macros for which the default definition is inappropriate. For example:
72@smallexample
73#include "target.h"
74#include "target-def.h"
75
76/* @r{Initialize the GCC target structure.} */
77
91d231cb
JM
78#undef TARGET_COMP_TYPE_ATTRIBUTES
79#define TARGET_COMP_TYPE_ATTRIBUTES @var{machine}_comp_type_attributes
672a6f42 80
f6897b10 81struct gcc_target targetm = TARGET_INITIALIZER;
672a6f42
NB
82@end smallexample
83@end deftypevar
84
85Where a macro should be defined in the @file{.c} file in this manner to
648c546a 86form part of the @code{targetm} structure, it is documented below as a
672a6f42
NB
87``Target Hook'' with a prototype. Many macros will change in future
88from being defined in the @file{.h} file to being part of the
648c546a 89@code{targetm} structure.
672a6f42 90
feca2ed3
JW
91@node Driver
92@section Controlling the Compilation Driver, @file{gcc}
93@cindex driver
94@cindex controlling the compilation driver
95
96@c prevent bad page break with this line
97You can control the compilation driver.
98
a2c4f8e0 99@defmac SWITCH_TAKES_ARG (@var{char})
630d3d5a 100A C expression which determines whether the option @option{-@var{char}}
feca2ed3
JW
101takes arguments. The value should be the number of arguments that
102option takes--zero, for many options.
103
104By default, this macro is defined as
105@code{DEFAULT_SWITCH_TAKES_ARG}, which handles the standard options
106properly. You need not define @code{SWITCH_TAKES_ARG} unless you
107wish to add additional options which take arguments. Any redefinition
108should call @code{DEFAULT_SWITCH_TAKES_ARG} and then check for
109additional options.
a2c4f8e0 110@end defmac
feca2ed3 111
a2c4f8e0 112@defmac WORD_SWITCH_TAKES_ARG (@var{name})
630d3d5a 113A C expression which determines whether the option @option{-@var{name}}
feca2ed3
JW
114takes arguments. The value should be the number of arguments that
115option takes--zero, for many options. This macro rather than
116@code{SWITCH_TAKES_ARG} is used for multi-character option names.
117
118By default, this macro is defined as
119@code{DEFAULT_WORD_SWITCH_TAKES_ARG}, which handles the standard options
120properly. You need not define @code{WORD_SWITCH_TAKES_ARG} unless you
121wish to add additional options which take arguments. Any redefinition
122should call @code{DEFAULT_WORD_SWITCH_TAKES_ARG} and then check for
123additional options.
a2c4f8e0 124@end defmac
feca2ed3 125
a2c4f8e0 126@defmac SWITCH_CURTAILS_COMPILATION (@var{char})
630d3d5a 127A C expression which determines whether the option @option{-@var{char}}
88117d44 128stops compilation before the generation of an executable. The value is
df2a54e9 129boolean, nonzero if the option does stop an executable from being
88117d44
NC
130generated, zero otherwise.
131
132By default, this macro is defined as
133@code{DEFAULT_SWITCH_CURTAILS_COMPILATION}, which handles the standard
134options properly. You need not define
135@code{SWITCH_CURTAILS_COMPILATION} unless you wish to add additional
136options which affect the generation of an executable. Any redefinition
137should call @code{DEFAULT_SWITCH_CURTAILS_COMPILATION} and then check
138for additional options.
a2c4f8e0 139@end defmac
88117d44 140
a2c4f8e0 141@defmac SWITCHES_NEED_SPACES
feca2ed3
JW
142A string-valued C expression which enumerates the options for which
143the linker needs a space between the option and its argument.
144
145If this macro is not defined, the default value is @code{""}.
a2c4f8e0 146@end defmac
feca2ed3 147
a2c4f8e0 148@defmac TARGET_OPTION_TRANSLATE_TABLE
0259b07a
DD
149If defined, a list of pairs of strings, the first of which is a
150potential command line target to the @file{gcc} driver program, and the
151second of which is a space-separated (tabs and other whitespace are not
152supported) list of options with which to replace the first option. The
153target defining this list is responsible for assuring that the results
154are valid. Replacement options may not be the @code{--opt} style, they
155must be the @code{-opt} style. It is the intention of this macro to
156provide a mechanism for substitution that affects the multilibs chosen,
157such as one option that enables many options, some of which select
4ec7afd7
KH
158multilibs. Example nonsensical definition, where @option{-malt-abi},
159@option{-EB}, and @option{-mspoo} cause different multilibs to be chosen:
0259b07a 160
478c9e72 161@smallexample
0259b07a
DD
162#define TARGET_OPTION_TRANSLATE_TABLE \
163@{ "-fast", "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \
164@{ "-compat", "-EB -malign=4 -mspoo" @}
478c9e72 165@end smallexample
a2c4f8e0 166@end defmac
0259b07a 167
a2c4f8e0 168@defmac DRIVER_SELF_SPECS
db36994b
RS
169A list of specs for the driver itself. It should be a suitable
170initializer for an array of strings, with no surrounding braces.
171
3bd6d4c4
AO
172The driver applies these specs to its own command line between loading
173default @file{specs} files (but not command-line specified ones) and
174choosing the multilib directory or running any subcommands. It
175applies them in the order given, so each spec can depend on the
176options added by earlier ones. It is also possible to remove options
177using @samp{%<@var{option}} in the usual way.
db36994b
RS
178
179This macro can be useful when a port has several interdependent target
180options. It provides a way of standardizing the command line so
181that the other specs are easier to write.
182
183Do not define this macro if it does not need to do anything.
a2c4f8e0 184@end defmac
db36994b 185
a2c4f8e0 186@defmac OPTION_DEFAULT_SPECS
7816bea0
DJ
187A list of specs used to support configure-time default options (i.e.@:
188@option{--with} options) in the driver. It should be a suitable initializer
189for an array of structures, each containing two strings, without the
190outermost pair of surrounding braces.
191
192The first item in the pair is the name of the default. This must match
193the code in @file{config.gcc} for the target. The second item is a spec
194to apply if a default with this name was specified. The string
195@samp{%(VALUE)} in the spec will be replaced by the value of the default
196everywhere it occurs.
197
198The driver will apply these specs to its own command line between loading
199default @file{specs} files and processing @code{DRIVER_SELF_SPECS}, using
200the same mechanism as @code{DRIVER_SELF_SPECS}.
201
202Do not define this macro if it does not need to do anything.
a2c4f8e0 203@end defmac
7816bea0 204
a2c4f8e0 205@defmac CPP_SPEC
a3a15b4d 206A C string constant that tells the GCC driver program options to
161d7b59
JM
207pass to CPP@. It can also specify how to translate options you
208give to GCC into options for GCC to pass to the CPP@.
feca2ed3
JW
209
210Do not define this macro if it does not need to do anything.
a2c4f8e0 211@end defmac
feca2ed3 212
a2c4f8e0 213@defmac CPLUSPLUS_CPP_SPEC
a9374841 214This macro is just like @code{CPP_SPEC}, but is used for C++, rather
161d7b59 215than C@. If you do not define this macro, then the value of
a9374841 216@code{CPP_SPEC} (if any) will be used instead.
a2c4f8e0 217@end defmac
a9374841 218
a2c4f8e0 219@defmac CC1_SPEC
a3a15b4d 220A C string constant that tells the GCC driver program options to
66519c70
JL
221pass to @code{cc1}, @code{cc1plus}, @code{f771}, and the other language
222front ends.
a3a15b4d 223It can also specify how to translate options you give to GCC into options
630d3d5a 224for GCC to pass to front ends.
feca2ed3
JW
225
226Do not define this macro if it does not need to do anything.
a2c4f8e0 227@end defmac
feca2ed3 228
a2c4f8e0 229@defmac CC1PLUS_SPEC
a3a15b4d 230A C string constant that tells the GCC driver program options to
feca2ed3 231pass to @code{cc1plus}. It can also specify how to translate options you
a3a15b4d 232give to GCC into options for GCC to pass to the @code{cc1plus}.
feca2ed3
JW
233
234Do not define this macro if it does not need to do anything.
1d96e5b4
FF
235Note that everything defined in CC1_SPEC is already passed to
236@code{cc1plus} so there is no need to duplicate the contents of
161d7b59 237CC1_SPEC in CC1PLUS_SPEC@.
a2c4f8e0 238@end defmac
feca2ed3 239
a2c4f8e0 240@defmac ASM_SPEC
a3a15b4d 241A C string constant that tells the GCC driver program options to
feca2ed3 242pass to the assembler. It can also specify how to translate options
a3a15b4d 243you give to GCC into options for GCC to pass to the assembler.
feca2ed3
JW
244See the file @file{sun3.h} for an example of this.
245
246Do not define this macro if it does not need to do anything.
a2c4f8e0 247@end defmac
feca2ed3 248
a2c4f8e0 249@defmac ASM_FINAL_SPEC
a3a15b4d 250A C string constant that tells the GCC driver program how to
feca2ed3
JW
251run any programs which cleanup after the normal assembler.
252Normally, this is not needed. See the file @file{mips.h} for
253an example of this.
254
255Do not define this macro if it does not need to do anything.
a2c4f8e0 256@end defmac
feca2ed3 257
a2c4f8e0 258@defmac AS_NEEDS_DASH_FOR_PIPED_INPUT
4977bab6
ZW
259Define this macro, with no value, if the driver should give the assembler
260an argument consisting of a single dash, @option{-}, to instruct it to
261read from its standard input (which will be a pipe connected to the
262output of the compiler proper). This argument is given after any
263@option{-o} option specifying the name of the output file.
264
265If you do not define this macro, the assembler is assumed to read its
266standard input if given no non-option arguments. If your assembler
267cannot read standard input at all, use a @samp{%@{pipe:%e@}} construct;
268see @file{mips.h} for instance.
a2c4f8e0 269@end defmac
4977bab6 270
a2c4f8e0 271@defmac LINK_SPEC
a3a15b4d 272A C string constant that tells the GCC driver program options to
feca2ed3 273pass to the linker. It can also specify how to translate options you
a3a15b4d 274give to GCC into options for GCC to pass to the linker.
feca2ed3
JW
275
276Do not define this macro if it does not need to do anything.
a2c4f8e0 277@end defmac
feca2ed3 278
a2c4f8e0 279@defmac LIB_SPEC
feca2ed3
JW
280Another C string constant used much like @code{LINK_SPEC}. The difference
281between the two is that @code{LIB_SPEC} is used at the end of the
282command given to the linker.
283
284If this macro is not defined, a default is provided that
285loads the standard C library from the usual place. See @file{gcc.c}.
a2c4f8e0 286@end defmac
feca2ed3 287
a2c4f8e0 288@defmac LIBGCC_SPEC
a3a15b4d 289Another C string constant that tells the GCC driver program
feca2ed3
JW
290how and when to place a reference to @file{libgcc.a} into the
291linker command line. This constant is placed both before and after
292the value of @code{LIB_SPEC}.
293
a3a15b4d 294If this macro is not defined, the GCC driver provides a default that
630d3d5a 295passes the string @option{-lgcc} to the linker.
a2c4f8e0 296@end defmac
feca2ed3 297
328163dc
MA
298@defmac REAL_LIBGCC_SPEC
299By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
300@code{LIBGCC_SPEC} is not directly used by the driver program but is
301instead modified to refer to different versions of @file{libgcc.a}
4ec7afd7
KH
302depending on the values of the command line flags @option{-static},
303@option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}. On
328163dc
MA
304targets where these modifications are inappropriate, define
305@code{REAL_LIBGCC_SPEC} instead. @code{REAL_LIBGCC_SPEC} tells the
306driver how to place a reference to @file{libgcc} on the link command
307line, but, unlike @code{LIBGCC_SPEC}, it is used unmodified.
308@end defmac
309
743eeb5a
AM
310@defmac USE_LD_AS_NEEDED
311A macro that controls the modifications to @code{LIBGCC_SPEC}
312mentioned in @code{REAL_LIBGCC_SPEC}. If nonzero, a spec will be
313generated that uses --as-needed and the shared libgcc in place of the
314static exception handler library, when linking without any of
315@code{-static}, @code{-static-libgcc}, or @code{-shared-libgcc}.
316@end defmac
317
318@defmac LINK_EH_SPEC
319If defined, this C string constant is added to @code{LINK_SPEC}.
320When @code{USE_LD_AS_NEEDED} is zero or undefined, it also affects
321the modifications to @code{LIBGCC_SPEC} mentioned in
322@code{REAL_LIBGCC_SPEC}.
323@end defmac
324
a2c4f8e0 325@defmac STARTFILE_SPEC
feca2ed3
JW
326Another C string constant used much like @code{LINK_SPEC}. The
327difference between the two is that @code{STARTFILE_SPEC} is used at
328the very beginning of the command given to the linker.
329
330If this macro is not defined, a default is provided that loads the
331standard C startup file from the usual place. See @file{gcc.c}.
a2c4f8e0 332@end defmac
feca2ed3 333
a2c4f8e0 334@defmac ENDFILE_SPEC
feca2ed3
JW
335Another C string constant used much like @code{LINK_SPEC}. The
336difference between the two is that @code{ENDFILE_SPEC} is used at
337the very end of the command given to the linker.
338
339Do not define this macro if it does not need to do anything.
a2c4f8e0 340@end defmac
feca2ed3 341
a2c4f8e0 342@defmac THREAD_MODEL_SPEC
008355a6
AO
343GCC @code{-v} will print the thread model GCC was configured to use.
344However, this doesn't work on platforms that are multilibbed on thread
345models, such as AIX 4.3. On such platforms, define
346@code{THREAD_MODEL_SPEC} such that it evaluates to a string without
347blanks that names one of the recognized thread models. @code{%*}, the
348default value of this macro, will expand to the value of
349@code{thread_file} set in @file{config.gcc}.
a2c4f8e0 350@end defmac
008355a6 351
a2c4f8e0 352@defmac SYSROOT_SUFFIX_SPEC
73774972
EC
353Define this macro to add a suffix to the target sysroot when GCC is
354configured with a sysroot. This will cause GCC to search for usr/lib,
355et al, within sysroot+suffix.
a2c4f8e0 356@end defmac
e7f13528 357
a2c4f8e0 358@defmac SYSROOT_HEADERS_SUFFIX_SPEC
73774972
EC
359Define this macro to add a headers_suffix to the target sysroot when
360GCC is configured with a sysroot. This will cause GCC to pass the
f4314bb6 361updated sysroot+headers_suffix to CPP, causing it to search for
e7f13528 362usr/include, et al, within sysroot+headers_suffix.
a2c4f8e0 363@end defmac
e7f13528 364
a2c4f8e0 365@defmac EXTRA_SPECS
feca2ed3
JW
366Define this macro to provide additional specifications to put in the
367@file{specs} file that can be used in various specifications like
368@code{CC1_SPEC}.
369
370The definition should be an initializer for an array of structures,
371containing a string constant, that defines the specification name, and a
372string constant that provides the specification.
373
374Do not define this macro if it does not need to do anything.
375
376@code{EXTRA_SPECS} is useful when an architecture contains several
630d3d5a 377related targets, which have various @code{@dots{}_SPECS} which are similar
feca2ed3
JW
378to each other, and the maintainer would like one central place to keep
379these definitions.
380
381For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to
382define either @code{_CALL_SYSV} when the System V calling sequence is
383used or @code{_CALL_AIX} when the older AIX-based calling sequence is
384used.
385
386The @file{config/rs6000/rs6000.h} target file defines:
387
3ab51846 388@smallexample
feca2ed3
JW
389#define EXTRA_SPECS \
390 @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @},
391
392#define CPP_SYS_DEFAULT ""
3ab51846 393@end smallexample
feca2ed3
JW
394
395The @file{config/rs6000/sysv.h} target file defines:
396@smallexample
397#undef CPP_SPEC
398#define CPP_SPEC \
399"%@{posix: -D_POSIX_SOURCE @} \
50d440bc
NC
400%@{mcall-sysv: -D_CALL_SYSV @} \
401%@{!mcall-sysv: %(cpp_sysv_default) @} \
feca2ed3
JW
402%@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}"
403
404#undef CPP_SYSV_DEFAULT
405#define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
406@end smallexample
407
408while the @file{config/rs6000/eabiaix.h} target file defines
409@code{CPP_SYSV_DEFAULT} as:
410
411@smallexample
412#undef CPP_SYSV_DEFAULT
413#define CPP_SYSV_DEFAULT "-D_CALL_AIX"
414@end smallexample
a2c4f8e0 415@end defmac
feca2ed3 416
a2c4f8e0 417@defmac LINK_LIBGCC_SPECIAL_1
feca2ed3
JW
418Define this macro if the driver program should find the library
419@file{libgcc.a}. If you do not define this macro, the driver program will pass
630d3d5a 420the argument @option{-lgcc} to tell the linker to do the search.
a2c4f8e0 421@end defmac
feca2ed3 422
a2c4f8e0 423@defmac LINK_GCC_C_SEQUENCE_SPEC
bbd7687d
DM
424The sequence in which libgcc and libc are specified to the linker.
425By default this is @code{%G %L %G}.
a2c4f8e0 426@end defmac
bbd7687d 427
a2c4f8e0 428@defmac LINK_COMMAND_SPEC
9ec36da5
JL
429A C string constant giving the complete command line need to execute the
430linker. When you do this, you will need to update your port each time a
431change is made to the link command line within @file{gcc.c}. Therefore,
432define this macro only if you need to completely redefine the command
433line for invoking the linker and there is no other way to accomplish
bbd7687d
DM
434the effect you need. Overriding this macro may be avoidable by overriding
435@code{LINK_GCC_C_SEQUENCE_SPEC} instead.
a2c4f8e0 436@end defmac
9ec36da5 437
a2c4f8e0 438@defmac LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
2cc07db4 439A nonzero value causes @command{collect2} to remove duplicate @option{-L@var{directory}} search
5897739e
JO
440directories from linking commands. Do not give it a nonzero value if
441removing duplicate search directories changes the linker's semantics.
a2c4f8e0 442@end defmac
5897739e 443
a2c4f8e0 444@defmac MULTILIB_DEFAULTS
feca2ed3
JW
445Define this macro as a C expression for the initializer of an array of
446string to tell the driver program which options are defaults for this
447target and thus do not need to be handled specially when using
448@code{MULTILIB_OPTIONS}.
449
450Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in
451the target makefile fragment or if none of the options listed in
452@code{MULTILIB_OPTIONS} are set by default.
453@xref{Target Fragment}.
a2c4f8e0 454@end defmac
feca2ed3 455
a2c4f8e0 456@defmac RELATIVE_PREFIX_NOT_LINKDIR
05739753 457Define this macro to tell @command{gcc} that it should only translate
630d3d5a 458a @option{-B} prefix into a @option{-L} linker option if the prefix
feca2ed3 459indicates an absolute file name.
a2c4f8e0 460@end defmac
feca2ed3 461
a2c4f8e0 462@defmac MD_EXEC_PREFIX
feca2ed3
JW
463If defined, this macro is an additional prefix to try after
464@code{STANDARD_EXEC_PREFIX}. @code{MD_EXEC_PREFIX} is not searched
630d3d5a 465when the @option{-b} option is used, or the compiler is built as a cross
5505263f
JL
466compiler. If you define @code{MD_EXEC_PREFIX}, then be sure to add it
467to the list of directories used to find the assembler in @file{configure.in}.
a2c4f8e0 468@end defmac
feca2ed3 469
a2c4f8e0 470@defmac STANDARD_STARTFILE_PREFIX
feca2ed3 471Define this macro as a C string constant if you wish to override the
0d037580 472standard choice of @code{libdir} as the default prefix to
feca2ed3 473try when searching for startup files such as @file{crt0.o}.
0d037580
DJ
474@code{STANDARD_STARTFILE_PREFIX} is not searched when the compiler
475is built as a cross compiler.
a2c4f8e0 476@end defmac
feca2ed3 477
656c7a3a
AL
478@defmac STANDARD_STARTFILE_PREFIX_1
479Define this macro as a C string constant if you wish to override the
480standard choice of @code{/lib} as a prefix to try after the default prefix
481when searching for startup files such as @file{crt0.o}.
482@code{STANDARD_STARTFILE_PREFIX_1} is not searched when the compiler
483is built as a cross compiler.
484@end defmac
485
486@defmac STANDARD_STARTFILE_PREFIX_2
487Define this macro as a C string constant if you wish to override the
488standard choice of @code{/lib} as yet another prefix to try after the
489default prefix when searching for startup files such as @file{crt0.o}.
490@code{STANDARD_STARTFILE_PREFIX_2} is not searched when the compiler
491is built as a cross compiler.
492@end defmac
493
a2c4f8e0 494@defmac MD_STARTFILE_PREFIX
feca2ed3
JW
495If defined, this macro supplies an additional prefix to try after the
496standard prefixes. @code{MD_EXEC_PREFIX} is not searched when the
630d3d5a 497@option{-b} option is used, or when the compiler is built as a cross
feca2ed3 498compiler.
a2c4f8e0 499@end defmac
feca2ed3 500
a2c4f8e0 501@defmac MD_STARTFILE_PREFIX_1
feca2ed3 502If defined, this macro supplies yet another prefix to try after the
630d3d5a 503standard prefixes. It is not searched when the @option{-b} option is
feca2ed3 504used, or when the compiler is built as a cross compiler.
a2c4f8e0 505@end defmac
feca2ed3 506
a2c4f8e0 507@defmac INIT_ENVIRONMENT
e9a25f70 508Define this macro as a C string constant if you wish to set environment
feca2ed3
JW
509variables for programs called by the driver, such as the assembler and
510loader. The driver passes the value of this macro to @code{putenv} to
511initialize the necessary environment variables.
a2c4f8e0 512@end defmac
feca2ed3 513
a2c4f8e0 514@defmac LOCAL_INCLUDE_DIR
feca2ed3
JW
515Define this macro as a C string constant if you wish to override the
516standard choice of @file{/usr/local/include} as the default prefix to
517try when searching for local header files. @code{LOCAL_INCLUDE_DIR}
518comes before @code{SYSTEM_INCLUDE_DIR} in the search order.
519
c237e94a
ZW
520Cross compilers do not search either @file{/usr/local/include} or its
521replacement.
a2c4f8e0 522@end defmac
feca2ed3 523
a2c4f8e0
ZW
524@defmac MODIFY_TARGET_NAME
525Define this macro if you wish to define command-line switches that
526modify the default target name.
dc36ec2c
RK
527
528For each switch, you can include a string to be appended to the first
529part of the configuration name or a string to be deleted from the
530configuration name, if present. The definition should be an initializer
531for an array of structures. Each array element should have three
532elements: the switch name (a string constant, including the initial
533dash), one of the enumeration codes @code{ADD} or @code{DELETE} to
534indicate whether the string should be inserted or deleted, and the string
535to be inserted or deleted (a string constant).
536
537For example, on a machine where @samp{64} at the end of the
630d3d5a
JM
538configuration name denotes a 64-bit target and you want the @option{-32}
539and @option{-64} switches to select between 32- and 64-bit targets, you would
dc36ec2c
RK
540code
541
542@smallexample
543#define MODIFY_TARGET_NAME \
544 @{ @{ "-32", DELETE, "64"@}, \
545 @{"-64", ADD, "64"@}@}
546@end smallexample
a2c4f8e0 547@end defmac
dc36ec2c 548
a2c4f8e0 549@defmac SYSTEM_INCLUDE_DIR
feca2ed3
JW
550Define this macro as a C string constant if you wish to specify a
551system-specific directory to search for header files before the standard
552directory. @code{SYSTEM_INCLUDE_DIR} comes before
553@code{STANDARD_INCLUDE_DIR} in the search order.
554
555Cross compilers do not use this macro and do not search the directory
556specified.
a2c4f8e0 557@end defmac
feca2ed3 558
a2c4f8e0 559@defmac STANDARD_INCLUDE_DIR
feca2ed3
JW
560Define this macro as a C string constant if you wish to override the
561standard choice of @file{/usr/include} as the default prefix to
562try when searching for header files.
563
a2c4f8e0 564Cross compilers ignore this macro and do not search either
feca2ed3 565@file{/usr/include} or its replacement.
a2c4f8e0 566@end defmac
feca2ed3 567
a2c4f8e0 568@defmac STANDARD_INCLUDE_COMPONENT
e9a25f70
JL
569The ``component'' corresponding to @code{STANDARD_INCLUDE_DIR}.
570See @code{INCLUDE_DEFAULTS}, below, for the description of components.
571If you do not define this macro, no component is used.
a2c4f8e0 572@end defmac
e9a25f70 573
a2c4f8e0 574@defmac INCLUDE_DEFAULTS
feca2ed3 575Define this macro if you wish to override the entire default search path
e9a25f70
JL
576for include files. For a native compiler, the default search path
577usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR},
feca2ed3
JW
578@code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
579@code{STANDARD_INCLUDE_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR}
580and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
161d7b59 581and specify private search areas for GCC@. The directory
feca2ed3
JW
582@code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
583
584The definition should be an initializer for an array of structures.
e9a25f70 585Each array element should have four elements: the directory name (a
9f6dc500
HPN
586string constant), the component name (also a string constant), a flag
587for C++-only directories,
e9a25f70
JL
588and a flag showing that the includes in the directory don't need to be
589wrapped in @code{extern @samp{C}} when compiling C++. Mark the end of
590the array with a null element.
591
592The component name denotes what GNU package the include file is part of,
4bd0bee9 593if any, in all uppercase letters. For example, it might be @samp{GCC}
9f6dc500 594or @samp{BINUTILS}. If the package is part of a vendor-supplied
e9a25f70
JL
595operating system, code the component name as @samp{0}.
596
e9a25f70 597For example, here is the definition used for VAX/VMS:
feca2ed3 598
3ab51846 599@smallexample
feca2ed3
JW
600#define INCLUDE_DEFAULTS \
601@{ \
e9a25f70
JL
602 @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@}, \
603 @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@}, \
604 @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@}, \
605 @{ ".", 0, 0, 0@}, \
606 @{ 0, 0, 0, 0@} \
feca2ed3 607@}
3ab51846 608@end smallexample
a2c4f8e0 609@end defmac
feca2ed3
JW
610
611Here is the order of prefixes tried for exec files:
612
613@enumerate
614@item
630d3d5a 615Any prefixes specified by the user with @option{-B}.
feca2ed3
JW
616
617@item
fe037b8a
CD
618The environment variable @code{GCC_EXEC_PREFIX} or, if @code{GCC_EXEC_PREFIX}
619is not set and the compiler has not been installed in the configure-time
620@var{prefix}, the location in which the compiler has actually been installed.
feca2ed3
JW
621
622@item
623The directories specified by the environment variable @code{COMPILER_PATH}.
624
625@item
fe037b8a
CD
626The macro @code{STANDARD_EXEC_PREFIX}, if the compiler has been installed
627in the configured-time @var{prefix}.
feca2ed3
JW
628
629@item
fe037b8a 630The location @file{/usr/libexec/gcc/}, but only if this is a native compiler.
feca2ed3
JW
631
632@item
fe037b8a
CD
633The location @file{/usr/lib/gcc/}, but only if this is a native compiler.
634
635@item
636The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native
637compiler.
feca2ed3
JW
638@end enumerate
639
640Here is the order of prefixes tried for startfiles:
641
642@enumerate
643@item
630d3d5a 644Any prefixes specified by the user with @option{-B}.
feca2ed3
JW
645
646@item
fe037b8a
CD
647The environment variable @code{GCC_EXEC_PREFIX} or its automatically determined
648value based on the installed toolchain location.
feca2ed3
JW
649
650@item
651The directories specified by the environment variable @code{LIBRARY_PATH}
512b62fb 652(or port-specific name; native only, cross compilers do not use this).
feca2ed3
JW
653
654@item
fe037b8a
CD
655The macro @code{STANDARD_EXEC_PREFIX}, but only if the toolchain is installed
656in the configured @var{prefix} or this is a native compiler.
feca2ed3
JW
657
658@item
fe037b8a
CD
659The location @file{/usr/lib/gcc/}, but only if this is a native compiler.
660
661@item
662The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native
663compiler.
feca2ed3
JW
664
665@item
fe037b8a
CD
666The macro @code{MD_STARTFILE_PREFIX}, if defined, but only if this is a
667native compiler, or we have a target system root.
feca2ed3
JW
668
669@item
fe037b8a
CD
670The macro @code{MD_STARTFILE_PREFIX_1}, if defined, but only if this is a
671native compiler, or we have a target system root.
feca2ed3
JW
672
673@item
fe037b8a
CD
674The macro @code{STANDARD_STARTFILE_PREFIX}, with any sysroot modifications.
675If this path is relative it will be prefixed by @code{GCC_EXEC_PREFIX} and
676the machine suffix or @code{STANDARD_EXEC_PREFIX} and the machine suffix.
feca2ed3
JW
677
678@item
fe037b8a
CD
679The macro @code{STANDARD_STARTFILE_PREFIX_1}, but only if this is a native
680compiler, or we have a target system root. The default for this macro is
feca2ed3
JW
681@file{/lib/}.
682
683@item
fe037b8a
CD
684The macro @code{STANDARD_STARTFILE_PREFIX_2}, but only if this is a native
685compiler, or we have a target system root. The default for this macro is
feca2ed3
JW
686@file{/usr/lib/}.
687@end enumerate
688
689@node Run-time Target
690@section Run-time Target Specification
691@cindex run-time target specification
692@cindex predefined macros
693@cindex target specifications
694
695@c prevent bad page break with this line
696Here are run-time target specifications.
697
a2c4f8e0 698@defmac TARGET_CPU_CPP_BUILTINS ()
12a41c22
NB
699This function-like macro expands to a block of code that defines
700built-in preprocessor macros and assertions for the target cpu, using
1f95326c 701the functions @code{builtin_define}, @code{builtin_define_std} and
cb60f38d 702@code{builtin_assert}. When the front end
12a41c22
NB
703calls this macro it provides a trailing semicolon, and since it has
704finished command line option processing your code can use those
705results freely.
3df89291
NB
706
707@code{builtin_assert} takes a string in the form you pass to the
708command-line option @option{-A}, such as @code{cpu=mips}, and creates
d90a95fb 709the assertion. @code{builtin_define} takes a string in the form
3df89291
NB
710accepted by option @option{-D} and unconditionally defines the macro.
711
d90a95fb 712@code{builtin_define_std} takes a string representing the name of an
3df89291 713object-like macro. If it doesn't lie in the user's namespace,
d90a95fb 714@code{builtin_define_std} defines it unconditionally. Otherwise, it
3df89291
NB
715defines a version with two leading underscores, and another version
716with two leading and trailing underscores, and defines the original
717only if an ISO standard was not requested on the command line. For
718example, passing @code{unix} defines @code{__unix}, @code{__unix__}
719and possibly @code{unix}; passing @code{_mips} defines @code{__mips},
720@code{__mips__} and possibly @code{_mips}, and passing @code{_ABI64}
721defines only @code{_ABI64}.
722
e0322d5c
NB
723You can also test for the C dialect being compiled. The variable
724@code{c_language} is set to one of @code{clk_c}, @code{clk_cplusplus}
725or @code{clk_objective_c}. Note that if we are preprocessing
726assembler, this variable will be @code{clk_c} but the function-like
727macro @code{preprocessing_asm_p()} will return true, so you might want
ce3649d2 728to check for that first. If you need to check for strict ANSI, the
c219e1da
JDA
729variable @code{flag_iso} can be used. The function-like macro
730@code{preprocessing_trad_p()} can be used to check for traditional
731preprocessing.
a2c4f8e0 732@end defmac
e0322d5c 733
a2c4f8e0 734@defmac TARGET_OS_CPP_BUILTINS ()
12a41c22
NB
735Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
736and is used for the target operating system instead.
a2c4f8e0 737@end defmac
12a41c22 738
a2c4f8e0 739@defmac TARGET_OBJFMT_CPP_BUILTINS ()
4e2e315f
NB
740Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
741and is used for the target object format. @file{elfos.h} uses this
742macro to define @code{__ELF__}, so you probably do not need to define
743it yourself.
a2c4f8e0 744@end defmac
4e2e315f 745
a2c4f8e0 746@deftypevar {extern int} target_flags
75685792
RS
747This variable is declared in @file{options.h}, which is included before
748any target-specific headers.
a2c4f8e0 749@end deftypevar
feca2ed3 750
75685792
RS
751@deftypevar {Target Hook} int TARGET_DEFAULT_TARGET_FLAGS
752This variable specifies the initial value of @code{target_flags}.
753Its default setting is 0.
75685792
RS
754@end deftypevar
755
bacf5b96
RS
756@cindex optional hardware or system features
757@cindex features, optional, in system conventions
758
75685792
RS
759@deftypefn {Target Hook} bool TARGET_HANDLE_OPTION (size_t @var{code}, const char *@var{arg}, int @var{value})
760This hook is called whenever the user specifies one of the
761target-specific options described by the @file{.opt} definition files
762(@pxref{Options}). It has the opportunity to do some option-specific
763processing and should return true if the option is valid. The default
764definition does nothing but return true.
765
766@var{code} specifies the @code{OPT_@var{name}} enumeration value
767associated with the selected option; @var{name} is just a rendering of
768the option name in which non-alphanumeric characters are replaced by
769underscores. @var{arg} specifies the string argument and is null if
770no argument was given. If the option is flagged as a @code{UInteger}
771(@pxref{Option properties}), @var{value} is the numeric value of the
772argument. Otherwise @var{value} is 1 if the positive form of the
773option was used and 0 if the ``no-'' form was.
774@end deftypefn
775
a2c4f8e0 776@defmac TARGET_VERSION
feca2ed3
JW
777This macro is a C statement to print on @code{stderr} a string
778describing the particular machine description choice. Every machine
779description should define @code{TARGET_VERSION}. For example:
780
781@smallexample
782#ifdef MOTOROLA
783#define TARGET_VERSION \
784 fprintf (stderr, " (68k, Motorola syntax)");
785#else
786#define TARGET_VERSION \
787 fprintf (stderr, " (68k, MIT syntax)");
788#endif
789@end smallexample
a2c4f8e0 790@end defmac
feca2ed3 791
a2c4f8e0 792@defmac OVERRIDE_OPTIONS
feca2ed3
JW
793Sometimes certain combinations of command options do not make sense on
794a particular target machine. You can define a macro
795@code{OVERRIDE_OPTIONS} to take account of this. This macro, if
796defined, is executed once just after all the command options have been
797parsed.
798
799Don't use this macro to turn on various extra optimizations for
630d3d5a 800@option{-O}. That is what @code{OPTIMIZATION_OPTIONS} is for.
a2c4f8e0 801@end defmac
feca2ed3 802
c7b5e395
GK
803@defmac C_COMMON_OVERRIDE_OPTIONS
804This is similar to @code{OVERRIDE_OPTIONS} but is only used in the C
805language frontends (C, Objective-C, C++, Objective-C++) and so can be
806used to alter option flag variables which only exist in those
807frontends.
808@end defmac
809
a2c4f8e0 810@defmac OPTIMIZATION_OPTIONS (@var{level}, @var{size})
feca2ed3
JW
811Some machines may desire to change what optimizations are performed for
812various optimization levels. This macro, if defined, is executed once
813just after the optimization level is determined and before the remainder
814of the command options have been parsed. Values set in this macro are
815used as the default values for the other command line options.
816
630d3d5a
JM
817@var{level} is the optimization level specified; 2 if @option{-O2} is
818specified, 1 if @option{-O} is specified, and 0 if neither is specified.
feca2ed3 819
df2a54e9 820@var{size} is nonzero if @option{-Os} is specified and zero otherwise.
c6aded7c 821
feca2ed3
JW
822You should not use this macro to change options that are not
823machine-specific. These should uniformly selected by the same
824optimization level on all supported machines. Use this macro to enable
825machine-specific optimizations.
826
827@strong{Do not examine @code{write_symbols} in
828this macro!} The debugging options are not supposed to alter the
829generated code.
a2c4f8e0 830@end defmac
feca2ed3 831
a2c4f8e0 832@defmac CAN_DEBUG_WITHOUT_FP
feca2ed3 833Define this macro if debugging can be performed even without a frame
a3a15b4d 834pointer. If this macro is defined, GCC will turn on the
630d3d5a 835@option{-fomit-frame-pointer} option whenever @option{-O} is specified.
a2c4f8e0 836@end defmac
feca2ed3 837
414c4dc4
NC
838@node Per-Function Data
839@section Defining data structures for per-function information.
840@cindex per-function data
841@cindex data structures
842
843If the target needs to store information on a per-function basis, GCC
844provides a macro and a couple of variables to allow this. Note, just
845using statics to store the information is a bad idea, since GCC supports
846nested functions, so you can be halfway through encoding one function
847when another one comes along.
848
849GCC defines a data structure called @code{struct function} which
850contains all of the data specific to an individual function. This
851structure contains a field called @code{machine} whose type is
852@code{struct machine_function *}, which can be used by targets to point
853to their own specific data.
854
855If a target needs per-function specific data it should define the type
e2500fed
GK
856@code{struct machine_function} and also the macro @code{INIT_EXPANDERS}.
857This macro should be used to initialize the function pointer
858@code{init_machine_status}. This pointer is explained below.
414c4dc4
NC
859
860One typical use of per-function, target specific data is to create an
861RTX to hold the register containing the function's return address. This
862RTX can then be used to implement the @code{__builtin_return_address}
863function, for level 0.
864
aee96fe9 865Note---earlier implementations of GCC used a single data area to hold
414c4dc4
NC
866all of the per-function information. Thus when processing of a nested
867function began the old per-function data had to be pushed onto a
868stack, and when the processing was finished, it had to be popped off the
869stack. GCC used to provide function pointers called
02f52e19 870@code{save_machine_status} and @code{restore_machine_status} to handle
414c4dc4
NC
871the saving and restoring of the target specific information. Since the
872single data area approach is no longer used, these pointers are no
873longer supported.
874
a2c4f8e0 875@defmac INIT_EXPANDERS
c21cd8b1 876Macro called to initialize any target specific information. This macro
414c4dc4 877is called once per function, before generation of any RTL has begun.
c21cd8b1 878The intention of this macro is to allow the initialization of the
a2c4f8e0
ZW
879function pointer @code{init_machine_status}.
880@end defmac
414c4dc4 881
a2c4f8e0
ZW
882@deftypevar {void (*)(struct function *)} init_machine_status
883If this function pointer is non-@code{NULL} it will be called once per
884function, before function compilation starts, in order to allow the
885target to perform any target specific initialization of the
886@code{struct function} structure. It is intended that this would be
887used to initialize the @code{machine} of that structure.
414c4dc4 888
8a36672b 889@code{struct machine_function} structures are expected to be freed by GC@.
e2500fed
GK
890Generally, any memory that they reference must be allocated by using
891@code{ggc_alloc}, including the structure itself.
a2c4f8e0 892@end deftypevar
414c4dc4 893
feca2ed3
JW
894@node Storage Layout
895@section Storage Layout
896@cindex storage layout
897
898Note that the definitions of the macros in this table which are sizes or
899alignments measured in bits do not need to be constant. They can be C
900expressions that refer to static variables, such as the @code{target_flags}.
901@xref{Run-time Target}.
902
a2c4f8e0 903@defmac BITS_BIG_ENDIAN
feca2ed3
JW
904Define this macro to have the value 1 if the most significant bit in a
905byte has the lowest number; otherwise define it to have the value zero.
906This means that bit-field instructions count from the most significant
907bit. If the machine has no bit-field instructions, then this must still
908be defined, but it doesn't matter which value it is defined to. This
909macro need not be a constant.
910
911This macro does not affect the way structure fields are packed into
912bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}.
a2c4f8e0 913@end defmac
feca2ed3 914
a2c4f8e0 915@defmac BYTES_BIG_ENDIAN
feca2ed3
JW
916Define this macro to have the value 1 if the most significant byte in a
917word has the lowest number. This macro need not be a constant.
a2c4f8e0 918@end defmac
feca2ed3 919
a2c4f8e0 920@defmac WORDS_BIG_ENDIAN
feca2ed3
JW
921Define this macro to have the value 1 if, in a multiword object, the
922most significant word has the lowest number. This applies to both
a3a15b4d 923memory locations and registers; GCC fundamentally assumes that the
feca2ed3
JW
924order of words in memory is the same as the order in registers. This
925macro need not be a constant.
a2c4f8e0 926@end defmac
feca2ed3 927
a2c4f8e0 928@defmac LIBGCC2_WORDS_BIG_ENDIAN
aee96fe9
JM
929Define this macro if @code{WORDS_BIG_ENDIAN} is not constant. This must be a
930constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be
931used only when compiling @file{libgcc2.c}. Typically the value will be set
feca2ed3 932based on preprocessor defines.
a2c4f8e0 933@end defmac
feca2ed3 934
a2c4f8e0 935@defmac FLOAT_WORDS_BIG_ENDIAN
feca2ed3
JW
936Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
937@code{TFmode} floating point numbers are stored in memory with the word
938containing the sign bit at the lowest address; otherwise define it to
939have the value 0. This macro need not be a constant.
940
941You need not define this macro if the ordering is the same as for
942multi-word integers.
a2c4f8e0 943@end defmac
feca2ed3 944
a2c4f8e0 945@defmac BITS_PER_UNIT
feca2ed3 946Define this macro to be the number of bits in an addressable storage
5c60f03d 947unit (byte). If you do not define this macro the default is 8.
a2c4f8e0 948@end defmac
feca2ed3 949
a2c4f8e0 950@defmac BITS_PER_WORD
e81dd381
KG
951Number of bits in a word. If you do not define this macro, the default
952is @code{BITS_PER_UNIT * UNITS_PER_WORD}.
a2c4f8e0 953@end defmac
feca2ed3 954
a2c4f8e0 955@defmac MAX_BITS_PER_WORD
feca2ed3
JW
956Maximum number of bits in a word. If this is undefined, the default is
957@code{BITS_PER_WORD}. Otherwise, it is the constant value that is the
958largest value that @code{BITS_PER_WORD} can have at run-time.
a2c4f8e0 959@end defmac
feca2ed3 960
a2c4f8e0 961@defmac UNITS_PER_WORD
c4336539
PB
962Number of storage units in a word; normally the size of a general-purpose
963register, a power of two from 1 or 8.
a2c4f8e0 964@end defmac
feca2ed3 965
a2c4f8e0 966@defmac MIN_UNITS_PER_WORD
feca2ed3
JW
967Minimum number of units in a word. If this is undefined, the default is
968@code{UNITS_PER_WORD}. Otherwise, it is the constant value that is the
969smallest value that @code{UNITS_PER_WORD} can have at run-time.
a2c4f8e0 970@end defmac
feca2ed3 971
c4336539
PB
972@defmac UNITS_PER_SIMD_WORD
973Number of units in the vectors that the vectorizer can produce.
974The default is equal to @code{UNITS_PER_WORD}, because the vectorizer
975can do some transformations even in absence of specialized @acronym{SIMD}
976hardware.
977@end defmac
978
a2c4f8e0 979@defmac POINTER_SIZE
feca2ed3
JW
980Width of a pointer, in bits. You must specify a value no wider than the
981width of @code{Pmode}. If it is not equal to the width of @code{Pmode},
2465bf76
KG
982you must define @code{POINTERS_EXTEND_UNSIGNED}. If you do not specify
983a value the default is @code{BITS_PER_WORD}.
a2c4f8e0 984@end defmac
feca2ed3 985
a2c4f8e0 986@defmac POINTERS_EXTEND_UNSIGNED
6dd12198 987A C expression whose value is greater than zero if pointers that need to be
f5963e61 988extended from being @code{POINTER_SIZE} bits wide to @code{Pmode} are to
6dd12198
SE
989be zero-extended and zero if they are to be sign-extended. If the value
990is less then zero then there must be an "ptr_extend" instruction that
991extends a pointer from @code{POINTER_SIZE} to @code{Pmode}.
feca2ed3
JW
992
993You need not define this macro if the @code{POINTER_SIZE} is equal
994to the width of @code{Pmode}.
a2c4f8e0 995@end defmac
feca2ed3 996
a2c4f8e0 997@defmac PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type})
feca2ed3
JW
998A macro to update @var{m} and @var{unsignedp} when an object whose type
999is @var{type} and which has the specified mode and signedness is to be
1000stored in a register. This macro is only called when @var{type} is a
1001scalar type.
1002
1003On most RISC machines, which only have operations that operate on a full
1004register, define this macro to set @var{m} to @code{word_mode} if
1005@var{m} is an integer mode narrower than @code{BITS_PER_WORD}. In most
1006cases, only integer modes should be widened because wider-precision
1007floating-point operations are usually more expensive than their narrower
1008counterparts.
1009
1010For most machines, the macro definition does not change @var{unsignedp}.
1011However, some machines, have instructions that preferentially handle
1012either signed or unsigned quantities of certain modes. For example, on
1013the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
1014sign-extend the result to 64 bits. On such machines, set
1015@var{unsignedp} according to which kind of extension is more efficient.
1016
1017Do not define this macro if it would never modify @var{m}.
a2c4f8e0 1018@end defmac
feca2ed3 1019
d4453b7a
PB
1020@defmac PROMOTE_FUNCTION_MODE
1021Like @code{PROMOTE_MODE}, but is applied to outgoing function arguments or
1022function return values, as specified by @code{TARGET_PROMOTE_FUNCTION_ARGS}
1023and @code{TARGET_PROMOTE_FUNCTION_RETURN}, respectively.
1024
1025The default is @code{PROMOTE_MODE}.
1026@end defmac
1027
61f71b34
DD
1028@deftypefn {Target Hook} bool TARGET_PROMOTE_FUNCTION_ARGS (tree @var{fntype})
1029This target hook should return @code{true} if the promotion described by
d4453b7a
PB
1030@code{PROMOTE_FUNCTION_MODE} should be done for outgoing function
1031arguments.
61f71b34 1032@end deftypefn
feca2ed3 1033
61f71b34
DD
1034@deftypefn {Target Hook} bool TARGET_PROMOTE_FUNCTION_RETURN (tree @var{fntype})
1035This target hook should return @code{true} if the promotion described by
d4453b7a 1036@code{PROMOTE_FUNCTION_MODE} should be done for the return value of
61f71b34 1037functions.
feca2ed3 1038
1b03c58a
RG
1039If this target hook returns @code{true}, @code{TARGET_FUNCTION_VALUE}
1040must perform the same promotions done by @code{PROMOTE_FUNCTION_MODE}.
61f71b34 1041@end deftypefn
feca2ed3 1042
a2c4f8e0 1043@defmac PARM_BOUNDARY
feca2ed3
JW
1044Normal alignment required for function parameters on the stack, in
1045bits. All stack parameters receive at least this much alignment
1046regardless of data type. On most machines, this is the same as the
1047size of an integer.
a2c4f8e0 1048@end defmac
feca2ed3 1049
a2c4f8e0 1050@defmac STACK_BOUNDARY
31cdd499
ZW
1051Define this macro to the minimum alignment enforced by hardware for the
1052stack pointer on this machine. The definition is a C expression for the
1053desired alignment (measured in bits). This value is used as a default
1054if @code{PREFERRED_STACK_BOUNDARY} is not defined. On most machines,
1055this should be the same as @code{PARM_BOUNDARY}.
a2c4f8e0 1056@end defmac
c795bca9 1057
a2c4f8e0 1058@defmac PREFERRED_STACK_BOUNDARY
31cdd499
ZW
1059Define this macro if you wish to preserve a certain alignment for the
1060stack pointer, greater than what the hardware enforces. The definition
1061is a C expression for the desired alignment (measured in bits). This
1062macro must evaluate to a value equal to or larger than
1063@code{STACK_BOUNDARY}.
a2c4f8e0 1064@end defmac
feca2ed3 1065
a2c4f8e0 1066@defmac FUNCTION_BOUNDARY
feca2ed3 1067Alignment required for a function entry point, in bits.
a2c4f8e0 1068@end defmac
feca2ed3 1069
a2c4f8e0 1070@defmac BIGGEST_ALIGNMENT
feca2ed3 1071Biggest alignment that any data type can require on this machine, in bits.
a2c4f8e0 1072@end defmac
feca2ed3 1073
a2c4f8e0 1074@defmac MINIMUM_ATOMIC_ALIGNMENT
861bb6c1
JL
1075If defined, the smallest alignment, in bits, that can be given to an
1076object that can be referenced in one operation, without disturbing any
1077nearby object. Normally, this is @code{BITS_PER_UNIT}, but may be larger
1078on machines that don't have byte or half-word store operations.
a2c4f8e0 1079@end defmac
861bb6c1 1080
a2c4f8e0 1081@defmac BIGGEST_FIELD_ALIGNMENT
11cf4d18
JJ
1082Biggest alignment that any structure or union field can require on this
1083machine, in bits. If defined, this overrides @code{BIGGEST_ALIGNMENT} for
1084structure and union fields only, unless the field alignment has been set
1085by the @code{__attribute__ ((aligned (@var{n})))} construct.
a2c4f8e0 1086@end defmac
feca2ed3 1087
a2c4f8e0 1088@defmac ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
feca2ed3 1089An expression for the alignment of a structure field @var{field} if the
ad9335eb
JJ
1090alignment computed in the usual way (including applying of
1091@code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the
1092alignment) is @var{computed}. It overrides alignment only if the
1093field alignment has not been set by the
1094@code{__attribute__ ((aligned (@var{n})))} construct.
a2c4f8e0 1095@end defmac
feca2ed3 1096
a2c4f8e0 1097@defmac MAX_OFILE_ALIGNMENT
feca2ed3
JW
1098Biggest alignment supported by the object file format of this machine.
1099Use this macro to limit the alignment which can be specified using the
1100@code{__attribute__ ((aligned (@var{n})))} construct. If not defined,
1101the default value is @code{BIGGEST_ALIGNMENT}.
11d90e2d
CD
1102
1103On systems that use ELF, the default (in @file{config/elfos.h}) is
1104the largest supported 32-bit ELF section alignment representable on
1105a 32-bit host e.g. @samp{(((unsigned HOST_WIDEST_INT) 1 << 28) * 8)}.
1106On 32-bit ELF the largest supported section alignment in bits is
1107@samp{(0x80000000 * 8)}, but this is not representable on 32-bit hosts.
a2c4f8e0 1108@end defmac
feca2ed3 1109
a2c4f8e0 1110@defmac DATA_ALIGNMENT (@var{type}, @var{basic-align})
a8d1550a 1111If defined, a C expression to compute the alignment for a variable in
8a198bd2
JW
1112the static store. @var{type} is the data type, and @var{basic-align} is
1113the alignment that the object would ordinarily have. The value of this
feca2ed3
JW
1114macro is used instead of that alignment to align the object.
1115
1116If this macro is not defined, then @var{basic-align} is used.
1117
1118@findex strcpy
1119One use of this macro is to increase alignment of medium-size data to
1120make it all fit in fewer cache lines. Another is to cause character
1121arrays to be word-aligned so that @code{strcpy} calls that copy
1122constants to character arrays can be done inline.
a2c4f8e0 1123@end defmac
feca2ed3 1124
a2c4f8e0 1125@defmac CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
feca2ed3
JW
1126If defined, a C expression to compute the alignment given to a constant
1127that is being placed in memory. @var{constant} is the constant and
1128@var{basic-align} is the alignment that the object would ordinarily
1129have. The value of this macro is used instead of that alignment to
1130align the object.
1131
1132If this macro is not defined, then @var{basic-align} is used.
1133
1134The typical use of this macro is to increase alignment for string
1135constants to be word aligned so that @code{strcpy} calls that copy
1136constants can be done inline.
a2c4f8e0 1137@end defmac
feca2ed3 1138
a2c4f8e0 1139@defmac LOCAL_ALIGNMENT (@var{type}, @var{basic-align})
a8d1550a 1140If defined, a C expression to compute the alignment for a variable in
d16790f2
JW
1141the local store. @var{type} is the data type, and @var{basic-align} is
1142the alignment that the object would ordinarily have. The value of this
1143macro is used instead of that alignment to align the object.
1144
1145If this macro is not defined, then @var{basic-align} is used.
1146
1147One use of this macro is to increase alignment of medium-size data to
1148make it all fit in fewer cache lines.
a2c4f8e0 1149@end defmac
d16790f2 1150
a2c4f8e0 1151@defmac EMPTY_FIELD_BOUNDARY
c771326b 1152Alignment in bits to be given to a structure bit-field that follows an
feca2ed3
JW
1153empty field such as @code{int : 0;}.
1154
78d55cc8 1155If @code{PCC_BITFIELD_TYPE_MATTERS} is true, it overrides this macro.
a2c4f8e0 1156@end defmac
feca2ed3 1157
a2c4f8e0 1158@defmac STRUCTURE_SIZE_BOUNDARY
feca2ed3
JW
1159Number of bits which any structure or union's size must be a multiple of.
1160Each structure or union's size is rounded up to a multiple of this.
1161
1162If you do not define this macro, the default is the same as
1163@code{BITS_PER_UNIT}.
a2c4f8e0 1164@end defmac
feca2ed3 1165
a2c4f8e0 1166@defmac STRICT_ALIGNMENT
feca2ed3
JW
1167Define this macro to be the value 1 if instructions will fail to work
1168if given data not on the nominal alignment. If instructions will merely
1169go slower in that case, define this macro as 0.
a2c4f8e0 1170@end defmac
feca2ed3 1171
a2c4f8e0 1172@defmac PCC_BITFIELD_TYPE_MATTERS
feca2ed3 1173Define this if you wish to imitate the way many other C compilers handle
c771326b 1174alignment of bit-fields and the structures that contain them.
feca2ed3 1175
8dc65b6e
MM
1176The behavior is that the type written for a named bit-field (@code{int},
1177@code{short}, or other integer type) imposes an alignment for the entire
1178structure, as if the structure really did contain an ordinary field of
1179that type. In addition, the bit-field is placed within the structure so
1180that it would fit within such a field, not crossing a boundary for it.
1181
1182Thus, on most machines, a named bit-field whose type is written as
1183@code{int} would not cross a four-byte boundary, and would force
1184four-byte alignment for the whole structure. (The alignment used may
1185not be four bytes; it is controlled by the other alignment parameters.)
1186
1187An unnamed bit-field will not affect the alignment of the containing
1188structure.
feca2ed3
JW
1189
1190If the macro is defined, its definition should be a C expression;
1191a nonzero value for the expression enables this behavior.
1192
1193Note that if this macro is not defined, or its value is zero, some
c771326b 1194bit-fields may cross more than one alignment boundary. The compiler can
feca2ed3
JW
1195support such references if there are @samp{insv}, @samp{extv}, and
1196@samp{extzv} insns that can directly reference memory.
1197
c771326b 1198The other known way of making bit-fields work is to define
feca2ed3
JW
1199@code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}.
1200Then every structure can be accessed with fullwords.
1201
c771326b 1202Unless the machine has bit-field instructions or you define
feca2ed3
JW
1203@code{STRUCTURE_SIZE_BOUNDARY} that way, you must define
1204@code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value.
1205
a3a15b4d 1206If your aim is to make GCC use the same conventions for laying out
c771326b 1207bit-fields as are used by another compiler, here is how to investigate
feca2ed3
JW
1208what the other compiler does. Compile and run this program:
1209
3ab51846 1210@smallexample
feca2ed3
JW
1211struct foo1
1212@{
1213 char x;
1214 char :0;
1215 char y;
1216@};
1217
1218struct foo2
1219@{
1220 char x;
1221 int :0;
1222 char y;
1223@};
1224
1225main ()
1226@{
1227 printf ("Size of foo1 is %d\n",
1228 sizeof (struct foo1));
1229 printf ("Size of foo2 is %d\n",
1230 sizeof (struct foo2));
1231 exit (0);
1232@}
3ab51846 1233@end smallexample
feca2ed3
JW
1234
1235If this prints 2 and 5, then the compiler's behavior is what you would
1236get from @code{PCC_BITFIELD_TYPE_MATTERS}.
a2c4f8e0 1237@end defmac
feca2ed3 1238
a2c4f8e0 1239@defmac BITFIELD_NBYTES_LIMITED
f913c102
AO
1240Like @code{PCC_BITFIELD_TYPE_MATTERS} except that its effect is limited
1241to aligning a bit-field within the structure.
a2c4f8e0 1242@end defmac
feca2ed3 1243
13c1cd82
PB
1244@deftypefn {Target Hook} bool TARGET_ALIGN_ANON_BITFIELDS (void)
1245When @code{PCC_BITFIELD_TYPE_MATTERS} is true this hook will determine
1246whether unnamed bitfields affect the alignment of the containing
1247structure. The hook should return true if the structure should inherit
1248the alignment requirements of an unnamed bitfield's type.
1249@end deftypefn
1250
c2a64439
PB
1251@deftypefn {Target Hook} bool TARGET_NARROW_VOLATILE_BITFIELDS (void)
1252This target hook should return @code{true} if accesses to volatile bitfields
1253should use the narrowest mode possible. It should return @code{false} if
1254these accesses should use the bitfield container type.
1255
1256The default is @code{!TARGET_STRICT_ALIGN}.
1257@end deftypefn
1258
a2c4f8e0 1259@defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode})
31a02448 1260Return 1 if a structure or array containing @var{field} should be accessed using
9f6dc500
HPN
1261@code{BLKMODE}.
1262
182e515e
AH
1263If @var{field} is the only field in the structure, @var{mode} is its
1264mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the
1265case where structures of one field would require the structure's mode to
1266retain the field's mode.
1267
9f6dc500
HPN
1268Normally, this is not needed. See the file @file{c4x.h} for an example
1269of how to use this macro to prevent a structure having a floating point
1270field from being accessed in an integer mode.
a2c4f8e0 1271@end defmac
9f6dc500 1272
a2c4f8e0 1273@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
0003feb2
VM
1274Define this macro as an expression for the alignment of a type (given
1275by @var{type} as a tree node) if the alignment computed in the usual
1276way is @var{computed} and the alignment explicitly specified was
feca2ed3
JW
1277@var{specified}.
1278
1279The default is to use @var{specified} if it is larger; otherwise, use
1280the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT}
a2c4f8e0 1281@end defmac
feca2ed3 1282
a2c4f8e0 1283@defmac MAX_FIXED_MODE_SIZE
feca2ed3
JW
1284An integer expression for the size in bits of the largest integer
1285machine mode that should actually be used. All integer machine modes of
1286this size or smaller can be used for structures and unions with the
1287appropriate sizes. If this macro is undefined, @code{GET_MODE_BITSIZE
1288(DImode)} is assumed.
a2c4f8e0 1289@end defmac
feca2ed3 1290
a2c4f8e0 1291@defmac STACK_SAVEAREA_MODE (@var{save_level})
73c8090f 1292If defined, an expression of type @code{enum machine_mode} that
39403d82
DE
1293specifies the mode of the save area operand of a
1294@code{save_stack_@var{level}} named pattern (@pxref{Standard Names}).
1295@var{save_level} is one of @code{SAVE_BLOCK}, @code{SAVE_FUNCTION}, or
1296@code{SAVE_NONLOCAL} and selects which of the three named patterns is
1297having its mode specified.
73c8090f
DE
1298
1299You need not define this macro if it always returns @code{Pmode}. You
1300would most commonly define this macro if the
1301@code{save_stack_@var{level}} patterns need to support both a 32- and a
130264-bit mode.
a2c4f8e0 1303@end defmac
73c8090f 1304
a2c4f8e0 1305@defmac STACK_SIZE_MODE
39403d82
DE
1306If defined, an expression of type @code{enum machine_mode} that
1307specifies the mode of the size increment operand of an
1308@code{allocate_stack} named pattern (@pxref{Standard Names}).
1309
1310You need not define this macro if it always returns @code{word_mode}.
1311You would most commonly define this macro if the @code{allocate_stack}
1312pattern needs to support both a 32- and a 64-bit mode.
a2c4f8e0 1313@end defmac
39403d82 1314
a2c4f8e0 1315@defmac TARGET_FLOAT_FORMAT
feca2ed3 1316A code distinguishing the floating point format of the target machine.
a2c4f8e0 1317There are four defined values:
feca2ed3 1318
a2c4f8e0 1319@ftable @code
feca2ed3
JW
1320@item IEEE_FLOAT_FORMAT
1321This code indicates IEEE floating point. It is the default; there is no
a2c4f8e0 1322need to define @code{TARGET_FLOAT_FORMAT} when the format is IEEE@.
feca2ed3 1323
feca2ed3 1324@item VAX_FLOAT_FORMAT
4226378a
PK
1325This code indicates the ``F float'' (for @code{float}) and ``D float''
1326or ``G float'' formats (for @code{double}) used on the VAX and PDP-11@.
feca2ed3 1327
68eb4fb9
LB
1328@item IBM_FLOAT_FORMAT
1329This code indicates the format used on the IBM System/370.
1330
68eb4fb9
LB
1331@item C4X_FLOAT_FORMAT
1332This code indicates the format used on the TMS320C3x/C4x.
a2c4f8e0 1333@end ftable
68eb4fb9 1334
a2c4f8e0
ZW
1335If your target uses a floating point format other than these, you must
1336define a new @var{name}_FLOAT_FORMAT code for it, and add support for
1337it to @file{real.c}.
feca2ed3
JW
1338
1339The ordering of the component words of floating point values stored in
807633e5 1340memory is controlled by @code{FLOAT_WORDS_BIG_ENDIAN}.
a2c4f8e0 1341@end defmac
e9a25f70 1342
a2c4f8e0 1343@defmac MODE_HAS_NANS (@var{mode})
71925bc0
RS
1344When defined, this macro should be true if @var{mode} has a NaN
1345representation. The compiler assumes that NaNs are not equal to
1346anything (including themselves) and that addition, subtraction,
1347multiplication and division all return NaNs when one operand is
1348NaN@.
1349
1350By default, this macro is true if @var{mode} is a floating-point
1351mode and the target floating-point format is IEEE@.
a2c4f8e0 1352@end defmac
71925bc0 1353
a2c4f8e0 1354@defmac MODE_HAS_INFINITIES (@var{mode})
71925bc0
RS
1355This macro should be true if @var{mode} can represent infinity. At
1356present, the compiler uses this macro to decide whether @samp{x - x}
1357is always defined. By default, the macro is true when @var{mode}
1358is a floating-point mode and the target format is IEEE@.
a2c4f8e0 1359@end defmac
71925bc0 1360
a2c4f8e0 1361@defmac MODE_HAS_SIGNED_ZEROS (@var{mode})
71925bc0
RS
1362True if @var{mode} distinguishes between positive and negative zero.
1363The rules are expected to follow the IEEE standard:
1364
1365@itemize @bullet
1366@item
1367@samp{x + x} has the same sign as @samp{x}.
1368
1369@item
1370If the sum of two values with opposite sign is zero, the result is
1371positive for all rounding modes expect towards @minus{}infinity, for
1372which it is negative.
1373
1374@item
1375The sign of a product or quotient is negative when exactly one
1376of the operands is negative.
1377@end itemize
1378
1379The default definition is true if @var{mode} is a floating-point
1380mode and the target format is IEEE@.
a2c4f8e0 1381@end defmac
71925bc0 1382
a2c4f8e0 1383@defmac MODE_HAS_SIGN_DEPENDENT_ROUNDING (@var{mode})
71925bc0
RS
1384If defined, this macro should be true for @var{mode} if it has at
1385least one rounding mode in which @samp{x} and @samp{-x} can be
1386rounded to numbers of different magnitude. Two such modes are
1387towards @minus{}infinity and towards +infinity.
1388
1389The default definition of this macro is true if @var{mode} is
1390a floating-point mode and the target format is IEEE@.
a2c4f8e0 1391@end defmac
3fcaac1d 1392
a2c4f8e0 1393@defmac ROUND_TOWARDS_ZERO
3fcaac1d
RS
1394If defined, this macro should be true if the prevailing rounding
1395mode is towards zero. A true value has the following effects:
1396
1397@itemize @bullet
1398@item
1399@code{MODE_HAS_SIGN_DEPENDENT_ROUNDING} will be false for all modes.
1400
1401@item
1402@file{libgcc.a}'s floating-point emulator will round towards zero
1403rather than towards nearest.
1404
1405@item
1406The compiler's floating-point emulator will round towards zero after
1407doing arithmetic, and when converting from the internal float format to
1408the target format.
1409@end itemize
1410
1411The macro does not affect the parsing of string literals. When the
1412primary rounding mode is towards zero, library functions like
1413@code{strtod} might still round towards nearest, and the compiler's
1414parser should behave like the target's @code{strtod} where possible.
1415
1416Not defining this macro is equivalent to returning zero.
a2c4f8e0 1417@end defmac
3fcaac1d 1418
a2c4f8e0 1419@defmac LARGEST_EXPONENT_IS_NORMAL (@var{size})
4226378a 1420This macro should return true if floats with @var{size}
3fcaac1d
RS
1421bits do not have a NaN or infinity representation, but use the largest
1422exponent for normal numbers instead.
1423
1424Defining this macro to true for @var{size} causes @code{MODE_HAS_NANS}
1425and @code{MODE_HAS_INFINITIES} to be false for @var{size}-bit modes.
1426It also affects the way @file{libgcc.a} and @file{real.c} emulate
1427floating-point arithmetic.
1428
1429The default definition of this macro returns false for all sizes.
a2c4f8e0 1430@end defmac
feca2ed3 1431
c8e4f0e9
AH
1432@deftypefn {Target Hook} bool TARGET_VECTOR_OPAQUE_P (tree @var{type})
1433This target hook should return @code{true} a vector is opaque. That
1434is, if no cast is needed when copying a vector value of type
1435@var{type} into another vector lvalue of the same size. Vector opaque
1436types cannot be initialized. The default is that there are no such
1437types.
62e1dfcf
NC
1438@end deftypefn
1439
f913c102
AO
1440@deftypefn {Target Hook} bool TARGET_MS_BITFIELD_LAYOUT_P (tree @var{record_type})
1441This target hook returns @code{true} if bit-fields in the given
1442@var{record_type} are to be laid out following the rules of Microsoft
1443Visual C/C++, namely: (i) a bit-field won't share the same storage
1444unit with the previous bit-field if their underlying types have
1445different sizes, and the bit-field will be aligned to the highest
1446alignment of the underlying types of itself and of the previous
1447bit-field; (ii) a zero-sized bit-field will affect the alignment of
1448the whole enclosing structure, even if it is unnamed; except that
1449(iii) a zero-sized bit-field will be disregarded unless it follows
6335b0aa 1450another bit-field of nonzero size. If this hook returns @code{true},
f913c102 1451other macros that control bit-field layout are ignored.
e4850f36
DR
1452
1453When a bit-field is inserted into a packed record, the whole size
1454of the underlying type is used by one or more same-size adjacent
1455bit-fields (that is, if its long:3, 32 bits is used in the record,
1456and any additional adjacent long bit-fields are packed into the same
8a36672b
JM
1457chunk of 32 bits. However, if the size changes, a new field of that
1458size is allocated). In an unpacked record, this is the same as using
e4850f36
DR
1459alignment, but not equivalent when packing.
1460
1461If both MS bit-fields and @samp{__attribute__((packed))} are used,
8a36672b 1462the latter will take precedence. If @samp{__attribute__((packed))} is
e4850f36
DR
1463used on a single field when MS bit-fields are in use, it will take
1464precedence for that field, but the alignment of the rest of the structure
1465may affect its placement.
f913c102
AO
1466@end deftypefn
1467
9a8ce21f
JG
1468@deftypefn {Target Hook} {bool} TARGET_DECIMAL_FLOAT_SUPPORTED_P (void)
1469Returns true if the target supports decimal floating point.
9a8ce21f
JG
1470@end deftypefn
1471
f18eca82
ZL
1472@deftypefn {Target Hook} {const char *} TARGET_MANGLE_FUNDAMENTAL_TYPE (tree @var{type})
1473If your target defines any fundamental types, define this hook to
1474return the appropriate encoding for these types as part of a C++
1475mangled name. The @var{type} argument is the tree structure
1476representing the type to be mangled. The hook may be applied to trees
1477which are not target-specific fundamental types; it should return
1478@code{NULL} for all such types, as well as arguments it does not
1479recognize. If the return value is not @code{NULL}, it must point to
1480a statically-allocated string constant.
1481
1482Target-specific fundamental types might be new fundamental types or
1483qualified versions of ordinary fundamental types. Encode new
1484fundamental types as @samp{@w{u @var{n} @var{name}}}, where @var{name}
1485is the name used for the type in source code, and @var{n} is the
1486length of @var{name} in decimal. Encode qualified versions of
1487ordinary types as @samp{@w{U @var{n} @var{name} @var{code}}}, where
1488@var{name} is the name used for the type qualifier in source code,
1489@var{n} is the length of @var{name} as above, and @var{code} is the
1490code used to represent the unqualified version of this type. (See
1491@code{write_builtin_type} in @file{cp/mangle.c} for the list of
1492codes.) In both cases the spaces are for clarity; do not include any
1493spaces in your string.
1494
1495The default version of this hook always returns @code{NULL}, which is
1496appropriate for a target that does not define any new fundamental
1497types.
1498@end deftypefn
1499
feca2ed3
JW
1500@node Type Layout
1501@section Layout of Source Language Data Types
1502
1503These macros define the sizes and other characteristics of the standard
1504basic data types used in programs being compiled. Unlike the macros in
1505the previous section, these apply to specific features of C and related
1506languages, rather than to fundamental aspects of storage layout.
1507
a2c4f8e0 1508@defmac INT_TYPE_SIZE
feca2ed3
JW
1509A C expression for the size in bits of the type @code{int} on the
1510target machine. If you don't define this, the default is one word.
a2c4f8e0 1511@end defmac
feca2ed3 1512
a2c4f8e0 1513@defmac SHORT_TYPE_SIZE
feca2ed3
JW
1514A C expression for the size in bits of the type @code{short} on the
1515target machine. If you don't define this, the default is half a word.
1516(If this would be less than one storage unit, it is rounded up to one
1517unit.)
a2c4f8e0 1518@end defmac
feca2ed3 1519
a2c4f8e0 1520@defmac LONG_TYPE_SIZE
feca2ed3
JW
1521A C expression for the size in bits of the type @code{long} on the
1522target machine. If you don't define this, the default is one word.
a2c4f8e0 1523@end defmac
feca2ed3 1524
a2c4f8e0 1525@defmac ADA_LONG_TYPE_SIZE
1615c261 1526On some machines, the size used for the Ada equivalent of the type
8a36672b 1527@code{long} by a native Ada compiler differs from that used by C@. In
1615c261
RK
1528that situation, define this macro to be a C expression to be used for
1529the size of that type. If you don't define this, the default is the
1530value of @code{LONG_TYPE_SIZE}.
a2c4f8e0 1531@end defmac
1615c261 1532
a2c4f8e0 1533@defmac LONG_LONG_TYPE_SIZE
feca2ed3
JW
1534A C expression for the size in bits of the type @code{long long} on the
1535target machine. If you don't define this, the default is two
047c1c92 1536words. If you want to support GNU Ada on your machine, the value of this
feca2ed3 1537macro must be at least 64.
a2c4f8e0 1538@end defmac
feca2ed3 1539
a2c4f8e0 1540@defmac CHAR_TYPE_SIZE
feca2ed3 1541A C expression for the size in bits of the type @code{char} on the
c294bd99
HPN
1542target machine. If you don't define this, the default is
1543@code{BITS_PER_UNIT}.
a2c4f8e0 1544@end defmac
feca2ed3 1545
a2c4f8e0 1546@defmac BOOL_TYPE_SIZE
3d1ad9e5
JM
1547A C expression for the size in bits of the C++ type @code{bool} and
1548C99 type @code{_Bool} on the target machine. If you don't define
1549this, and you probably shouldn't, the default is @code{CHAR_TYPE_SIZE}.
a2c4f8e0 1550@end defmac
68eb4fb9 1551
a2c4f8e0 1552@defmac FLOAT_TYPE_SIZE
feca2ed3
JW
1553A C expression for the size in bits of the type @code{float} on the
1554target machine. If you don't define this, the default is one word.
a2c4f8e0 1555@end defmac
feca2ed3 1556
a2c4f8e0 1557@defmac DOUBLE_TYPE_SIZE
feca2ed3
JW
1558A C expression for the size in bits of the type @code{double} on the
1559target machine. If you don't define this, the default is two
1560words.
a2c4f8e0 1561@end defmac
feca2ed3 1562
a2c4f8e0 1563@defmac LONG_DOUBLE_TYPE_SIZE
feca2ed3
JW
1564A C expression for the size in bits of the type @code{long double} on
1565the target machine. If you don't define this, the default is two
1566words.
a2c4f8e0 1567@end defmac
feca2ed3 1568
4e9db8b2
SE
1569@defmac LIBGCC2_LONG_DOUBLE_TYPE_SIZE
1570Define this macro if @code{LONG_DOUBLE_TYPE_SIZE} is not constant or
1571if you want routines in @file{libgcc2.a} for a size other than
1572@code{LONG_DOUBLE_TYPE_SIZE}. If you don't define this, the
1573default is @code{LONG_DOUBLE_TYPE_SIZE}.
1574@end defmac
1575
1576@defmac LIBGCC2_HAS_DF_MODE
083cad55 1577Define this macro if neither @code{LIBGCC2_DOUBLE_TYPE_SIZE} nor
4e9db8b2
SE
1578@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is
1579@code{DFmode} but you want @code{DFmode} routines in @file{libgcc2.a}
1580anyway. If you don't define this and either @code{LIBGCC2_DOUBLE_TYPE_SIZE}
1581or @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64 then the default is 1,
1582otherwise it is 0.
1583@end defmac
1584
1585@defmac LIBGCC2_HAS_XF_MODE
083cad55 1586Define this macro if @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is not
4e9db8b2
SE
1587@code{XFmode} but you want @code{XFmode} routines in @file{libgcc2.a}
1588anyway. If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE}
1589is 80 then the default is 1, otherwise it is 0.
1590@end defmac
1591
1592@defmac LIBGCC2_HAS_TF_MODE
083cad55 1593Define this macro if @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is not
4e9db8b2
SE
1594@code{TFmode} but you want @code{TFmode} routines in @file{libgcc2.a}
1595anyway. If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE}
1596is 128 then the default is 1, otherwise it is 0.
1597@end defmac
1598
4a73d865
JM
1599@defmac SF_SIZE
1600@defmacx DF_SIZE
1601@defmacx XF_SIZE
1602@defmacx TF_SIZE
1603Define these macros to be the size in bits of the mantissa of
1604@code{SFmode}, @code{DFmode}, @code{XFmode} and @code{TFmode} values,
1605if the defaults in @file{libgcc2.h} are inappropriate. By default,
1606@code{FLT_MANT_DIG} is used for @code{SF_SIZE}, @code{LDBL_MANT_DIG}
1607for @code{XF_SIZE} and @code{TF_SIZE}, and @code{DBL_MANT_DIG} or
1608@code{LDBL_MANT_DIG} for @code{DF_SIZE} according to whether
1609@code{LIBGCC2_DOUBLE_TYPE_SIZE} or
1610@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64.
1611@end defmac
1612
a2c4f8e0 1613@defmac TARGET_FLT_EVAL_METHOD
d57a4b98
RH
1614A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h},
1615assuming, if applicable, that the floating-point control word is in its
1616default state. If you do not define this macro the value of
1617@code{FLT_EVAL_METHOD} will be zero.
a2c4f8e0 1618@end defmac
aaa2e8ef 1619
a2c4f8e0 1620@defmac WIDEST_HARDWARE_FP_SIZE
e9a25f70
JL
1621A C expression for the size in bits of the widest floating-point format
1622supported by the hardware. If you define this macro, you must specify a
1623value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}.
1624If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE}
1625is the default.
a2c4f8e0 1626@end defmac
e9a25f70 1627
a2c4f8e0 1628@defmac DEFAULT_SIGNED_CHAR
feca2ed3
JW
1629An expression whose value is 1 or 0, according to whether the type
1630@code{char} should be signed or unsigned by default. The user can
630d3d5a
JM
1631always override this default with the options @option{-fsigned-char}
1632and @option{-funsigned-char}.
a2c4f8e0 1633@end defmac
feca2ed3 1634
221ee7c9
KH
1635@deftypefn {Target Hook} bool TARGET_DEFAULT_SHORT_ENUMS (void)
1636This target hook should return true if the compiler should give an
1637@code{enum} type only as many bytes as it takes to represent the range
1638of possible values of that type. It should return false if all
35afa569
KH
1639@code{enum} types should be allocated like @code{int}.
1640
221ee7c9
KH
1641The default is to return false.
1642@end deftypefn
35afa569 1643
a2c4f8e0 1644@defmac SIZE_TYPE
feca2ed3
JW
1645A C expression for a string describing the name of the data type to use
1646for size values. The typedef name @code{size_t} is defined using the
1647contents of the string.
1648
1649The string can contain more than one keyword. If so, separate them with
1650spaces, and write first any length keyword, then @code{unsigned} if
1651appropriate, and finally @code{int}. The string must exactly match one
1652of the data type names defined in the function
1653@code{init_decl_processing} in the file @file{c-decl.c}. You may not
1654omit @code{int} or change the order---that would cause the compiler to
1655crash on startup.
1656
1657If you don't define this macro, the default is @code{"long unsigned
1658int"}.
a2c4f8e0 1659@end defmac
feca2ed3 1660
a2c4f8e0 1661@defmac PTRDIFF_TYPE
feca2ed3
JW
1662A C expression for a string describing the name of the data type to use
1663for the result of subtracting two pointers. The typedef name
1664@code{ptrdiff_t} is defined using the contents of the string. See
1665@code{SIZE_TYPE} above for more information.
1666
1667If you don't define this macro, the default is @code{"long int"}.
a2c4f8e0 1668@end defmac
feca2ed3 1669
a2c4f8e0 1670@defmac WCHAR_TYPE
feca2ed3
JW
1671A C expression for a string describing the name of the data type to use
1672for wide characters. The typedef name @code{wchar_t} is defined using
1673the contents of the string. See @code{SIZE_TYPE} above for more
1674information.
1675
1676If you don't define this macro, the default is @code{"int"}.
a2c4f8e0 1677@end defmac
feca2ed3 1678
a2c4f8e0 1679@defmac WCHAR_TYPE_SIZE
feca2ed3
JW
1680A C expression for the size in bits of the data type for wide
1681characters. This is used in @code{cpp}, which cannot make use of
1682@code{WCHAR_TYPE}.
a2c4f8e0 1683@end defmac
feca2ed3 1684
a2c4f8e0 1685@defmac WINT_TYPE
1a67c7d3
JL
1686A C expression for a string describing the name of the data type to
1687use for wide characters passed to @code{printf} and returned from
1688@code{getwc}. The typedef name @code{wint_t} is defined using the
1689contents of the string. See @code{SIZE_TYPE} above for more
1690information.
1691
1692If you don't define this macro, the default is @code{"unsigned int"}.
a2c4f8e0 1693@end defmac
1a67c7d3 1694
a2c4f8e0 1695@defmac INTMAX_TYPE
b15ad712
JM
1696A C expression for a string describing the name of the data type that
1697can represent any value of any standard or extended signed integer type.
1698The typedef name @code{intmax_t} is defined using the contents of the
1699string. See @code{SIZE_TYPE} above for more information.
1700
1701If you don't define this macro, the default is the first of
1702@code{"int"}, @code{"long int"}, or @code{"long long int"} that has as
1703much precision as @code{long long int}.
a2c4f8e0 1704@end defmac
b15ad712 1705
a2c4f8e0 1706@defmac UINTMAX_TYPE
b15ad712
JM
1707A C expression for a string describing the name of the data type that
1708can represent any value of any standard or extended unsigned integer
1709type. The typedef name @code{uintmax_t} is defined using the contents
1710of the string. See @code{SIZE_TYPE} above for more information.
1711
1712If you don't define this macro, the default is the first of
1713@code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long
1714unsigned int"} that has as much precision as @code{long long unsigned
1715int}.
a2c4f8e0 1716@end defmac
b15ad712 1717
a2c4f8e0 1718@defmac TARGET_PTRMEMFUNC_VBIT_LOCATION
f3c55c97
AO
1719The C++ compiler represents a pointer-to-member-function with a struct
1720that looks like:
1721
3ab51846 1722@smallexample
f3c55c97
AO
1723 struct @{
1724 union @{
1725 void (*fn)();
1726 ptrdiff_t vtable_index;
1727 @};
1728 ptrdiff_t delta;
1729 @};
3ab51846 1730@end smallexample
f3c55c97
AO
1731
1732@noindent
1733The C++ compiler must use one bit to indicate whether the function that
1734will be called through a pointer-to-member-function is virtual.
1735Normally, we assume that the low-order bit of a function pointer must
1736always be zero. Then, by ensuring that the vtable_index is odd, we can
1737distinguish which variant of the union is in use. But, on some
1738platforms function pointers can be odd, and so this doesn't work. In
1739that case, we use the low-order bit of the @code{delta} field, and shift
1740the remainder of the @code{delta} field to the left.
1741
1742GCC will automatically make the right selection about where to store
1743this bit using the @code{FUNCTION_BOUNDARY} setting for your platform.
1744However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY}
1745set such that functions always start at even addresses, but the lowest
1746bit of pointers to functions indicate whether the function at that
1747address is in ARM or Thumb mode. If this is the case of your
1748architecture, you should define this macro to
1749@code{ptrmemfunc_vbit_in_delta}.
1750
1751In general, you should not have to define this macro. On architectures
1752in which function addresses are always even, according to
1753@code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to
1754@code{ptrmemfunc_vbit_in_pfn}.
a2c4f8e0 1755@end defmac
67231816 1756
a2c4f8e0 1757@defmac TARGET_VTABLE_USES_DESCRIPTORS
67231816 1758Normally, the C++ compiler uses function pointers in vtables. This
f282ffb3 1759macro allows the target to change to use ``function descriptors''
67231816
RH
1760instead. Function descriptors are found on targets for whom a
1761function pointer is actually a small data structure. Normally the
f282ffb3 1762data structure consists of the actual code address plus a data
67231816
RH
1763pointer to which the function's data is relative.
1764
1765If vtables are used, the value of this macro should be the number
1766of words that the function descriptor occupies.
a2c4f8e0 1767@end defmac
a6f5e048 1768
a2c4f8e0 1769@defmac TARGET_VTABLE_ENTRY_ALIGN
a6f5e048
RH
1770By default, the vtable entries are void pointers, the so the alignment
1771is the same as pointer alignment. The value of this macro specifies
1772the alignment of the vtable entry in bits. It should be defined only
1773when special alignment is necessary. */
a2c4f8e0 1774@end defmac
a6f5e048 1775
a2c4f8e0 1776@defmac TARGET_VTABLE_DATA_ENTRY_DISTANCE
a6f5e048
RH
1777There are a few non-descriptor entries in the vtable at offsets below
1778zero. If these entries must be padded (say, to preserve the alignment
1779specified by @code{TARGET_VTABLE_ENTRY_ALIGN}), set this to the number
1780of words in each data entry.
a2c4f8e0 1781@end defmac
b2b263e1 1782
feca2ed3
JW
1783@node Registers
1784@section Register Usage
1785@cindex register usage
1786
1787This section explains how to describe what registers the target machine
1788has, and how (in general) they can be used.
1789
1790The description of which registers a specific instruction can use is
1791done with register classes; see @ref{Register Classes}. For information
1792on using registers to access a stack frame, see @ref{Frame Registers}.
1793For passing values in registers, see @ref{Register Arguments}.
1794For returning values in registers, see @ref{Scalar Return}.
1795
1796@menu
1797* Register Basics:: Number and kinds of registers.
1798* Allocation Order:: Order in which registers are allocated.
1799* Values in Registers:: What kinds of values each reg can hold.
1800* Leaf Functions:: Renumbering registers for leaf functions.
1801* Stack Registers:: Handling a register stack such as 80387.
feca2ed3
JW
1802@end menu
1803
1804@node Register Basics
1805@subsection Basic Characteristics of Registers
1806
1807@c prevent bad page break with this line
1808Registers have various characteristics.
1809
a2c4f8e0 1810@defmac FIRST_PSEUDO_REGISTER
feca2ed3
JW
1811Number of hardware registers known to the compiler. They receive
1812numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
1813pseudo register's number really is assigned the number
1814@code{FIRST_PSEUDO_REGISTER}.
a2c4f8e0 1815@end defmac
feca2ed3 1816
a2c4f8e0 1817@defmac FIXED_REGISTERS
feca2ed3
JW
1818@cindex fixed register
1819An initializer that says which registers are used for fixed purposes
1820all throughout the compiled code and are therefore not available for
1821general allocation. These would include the stack pointer, the frame
1822pointer (except on machines where that can be used as a general
1823register when no frame pointer is needed), the program counter on
1824machines where that is considered one of the addressable registers,
1825and any other numbered register with a standard use.
1826
1827This information is expressed as a sequence of numbers, separated by
1828commas and surrounded by braces. The @var{n}th number is 1 if
1829register @var{n} is fixed, 0 otherwise.
1830
1831The table initialized from this macro, and the table initialized by
1832the following one, may be overridden at run time either automatically,
1833by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
630d3d5a
JM
1834the user with the command options @option{-ffixed-@var{reg}},
1835@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}.
a2c4f8e0 1836@end defmac
feca2ed3 1837
a2c4f8e0 1838@defmac CALL_USED_REGISTERS
feca2ed3
JW
1839@cindex call-used register
1840@cindex call-clobbered register
1841@cindex call-saved register
1842Like @code{FIXED_REGISTERS} but has 1 for each register that is
1843clobbered (in general) by function calls as well as for fixed
1844registers. This macro therefore identifies the registers that are not
1845available for general allocation of values that must live across
1846function calls.
1847
1848If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler
1849automatically saves it on function entry and restores it on function
1850exit, if the register is used within the function.
a2c4f8e0 1851@end defmac
feca2ed3 1852
a2c4f8e0 1853@defmac CALL_REALLY_USED_REGISTERS
fc1296b7
AM
1854@cindex call-used register
1855@cindex call-clobbered register
1856@cindex call-saved register
f282ffb3
JM
1857Like @code{CALL_USED_REGISTERS} except this macro doesn't require
1858that the entire set of @code{FIXED_REGISTERS} be included.
fc1296b7 1859(@code{CALL_USED_REGISTERS} must be a superset of @code{FIXED_REGISTERS}).
f282ffb3 1860This macro is optional. If not specified, it defaults to the value
fc1296b7 1861of @code{CALL_USED_REGISTERS}.
a2c4f8e0 1862@end defmac
fc1296b7 1863
a2c4f8e0 1864@defmac HARD_REGNO_CALL_PART_CLOBBERED (@var{regno}, @var{mode})
1e326708
MH
1865@cindex call-used register
1866@cindex call-clobbered register
1867@cindex call-saved register
df2a54e9 1868A C expression that is nonzero if it is not permissible to store a
1e326708
MH
1869value of mode @var{mode} in hard register number @var{regno} across a
1870call without some part of it being clobbered. For most machines this
1871macro need not be defined. It is only required for machines that do not
1872preserve the entire contents of a register across a call.
a2c4f8e0 1873@end defmac
1e326708 1874
feca2ed3
JW
1875@findex fixed_regs
1876@findex call_used_regs
a2c4f8e0
ZW
1877@findex global_regs
1878@findex reg_names
1879@findex reg_class_contents
1880@defmac CONDITIONAL_REGISTER_USAGE
055177dc
NC
1881Zero or more C statements that may conditionally modify five variables
1882@code{fixed_regs}, @code{call_used_regs}, @code{global_regs},
c237e94a
ZW
1883@code{reg_names}, and @code{reg_class_contents}, to take into account
1884any dependence of these register sets on target flags. The first three
1885of these are of type @code{char []} (interpreted as Boolean vectors).
1886@code{global_regs} is a @code{const char *[]}, and
1887@code{reg_class_contents} is a @code{HARD_REG_SET}. Before the macro is
1888called, @code{fixed_regs}, @code{call_used_regs},
1889@code{reg_class_contents}, and @code{reg_names} have been initialized
055177dc 1890from @code{FIXED_REGISTERS}, @code{CALL_USED_REGISTERS},
c237e94a 1891@code{REG_CLASS_CONTENTS}, and @code{REGISTER_NAMES}, respectively.
630d3d5a 1892@code{global_regs} has been cleared, and any @option{-ffixed-@var{reg}},
c237e94a
ZW
1893@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}
1894command options have been applied.
feca2ed3
JW
1895
1896You need not define this macro if it has no work to do.
1897
1898@cindex disabling certain registers
1899@cindex controlling register usage
1900If the usage of an entire class of registers depends on the target
1901flags, you may indicate this to GCC by using this macro to modify
1902@code{fixed_regs} and @code{call_used_regs} to 1 for each of the
161d7b59 1903registers in the classes which should not be used by GCC@. Also define
97488870
R
1904the macro @code{REG_CLASS_FROM_LETTER} / @code{REG_CLASS_FROM_CONSTRAINT}
1905to return @code{NO_REGS} if it
feca2ed3
JW
1906is called with a letter for a class that shouldn't be used.
1907
1908(However, if this class is not included in @code{GENERAL_REGS} and all
1909of the insn patterns whose constraints permit this class are
1910controlled by target switches, then GCC will automatically avoid using
1911these registers when the target switches are opposed to them.)
a2c4f8e0 1912@end defmac
feca2ed3 1913
a2c4f8e0 1914@defmac INCOMING_REGNO (@var{out})
feca2ed3
JW
1915Define this macro if the target machine has register windows. This C
1916expression returns the register number as seen by the called function
1917corresponding to the register number @var{out} as seen by the calling
1918function. Return @var{out} if register number @var{out} is not an
1919outbound register.
a2c4f8e0 1920@end defmac
feca2ed3 1921
a2c4f8e0 1922@defmac OUTGOING_REGNO (@var{in})
feca2ed3
JW
1923Define this macro if the target machine has register windows. This C
1924expression returns the register number as seen by the calling function
1925corresponding to the register number @var{in} as seen by the called
1926function. Return @var{in} if register number @var{in} is not an inbound
1927register.
a2c4f8e0 1928@end defmac
feca2ed3 1929
a2c4f8e0 1930@defmac LOCAL_REGNO (@var{regno})
fa80e43d
JL
1931Define this macro if the target machine has register windows. This C
1932expression returns true if the register is call-saved but is in the
1933register window. Unlike most call-saved registers, such registers
1934need not be explicitly restored on function exit or during non-local
1935gotos.
a2c4f8e0 1936@end defmac
fa80e43d 1937
a2c4f8e0 1938@defmac PC_REGNUM
feca2ed3
JW
1939If the program counter has a register number, define this as that
1940register number. Otherwise, do not define it.
a2c4f8e0 1941@end defmac
feca2ed3
JW
1942
1943@node Allocation Order
1944@subsection Order of Allocation of Registers
1945@cindex order of register allocation
1946@cindex register allocation order
1947
1948@c prevent bad page break with this line
1949Registers are allocated in order.
1950
a2c4f8e0 1951@defmac REG_ALLOC_ORDER
feca2ed3 1952If defined, an initializer for a vector of integers, containing the
a3a15b4d 1953numbers of hard registers in the order in which GCC should prefer
feca2ed3
JW
1954to use them (from most preferred to least).
1955
1956If this macro is not defined, registers are used lowest numbered first
1957(all else being equal).
1958
1959One use of this macro is on machines where the highest numbered
1960registers must always be saved and the save-multiple-registers
1961instruction supports only sequences of consecutive registers. On such
1962machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists
956d6950 1963the highest numbered allocable register first.
a2c4f8e0 1964@end defmac
feca2ed3 1965
a2c4f8e0 1966@defmac ORDER_REGS_FOR_LOCAL_ALLOC
feca2ed3
JW
1967A C statement (sans semicolon) to choose the order in which to allocate
1968hard registers for pseudo-registers local to a basic block.
1969
1970Store the desired register order in the array @code{reg_alloc_order}.
1971Element 0 should be the register to allocate first; element 1, the next
1972register; and so on.
1973
1974The macro body should not assume anything about the contents of
1975@code{reg_alloc_order} before execution of the macro.
1976
1977On most machines, it is not necessary to define this macro.
a2c4f8e0 1978@end defmac
feca2ed3
JW
1979
1980@node Values in Registers
1981@subsection How Values Fit in Registers
1982
1983This section discusses the macros that describe which kinds of values
1984(specifically, which machine modes) each register can hold, and how many
1985consecutive registers are needed for a given mode.
1986
a2c4f8e0 1987@defmac HARD_REGNO_NREGS (@var{regno}, @var{mode})
feca2ed3
JW
1988A C expression for the number of consecutive hard registers, starting
1989at register number @var{regno}, required to hold a value of mode
1990@var{mode}.
1991
1992On a machine where all registers are exactly one word, a suitable
1993definition of this macro is
1994
1995@smallexample
1996#define HARD_REGNO_NREGS(REGNO, MODE) \
1997 ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \
32bd3974 1998 / UNITS_PER_WORD)
feca2ed3 1999@end smallexample
a2c4f8e0 2000@end defmac
feca2ed3 2001
8521c414
JM
2002@defmac HARD_REGNO_NREGS_HAS_PADDING (@var{regno}, @var{mode})
2003A C expression that is nonzero if a value of mode @var{mode}, stored
2004in memory, ends with padding that causes it to take up more space than
2005in registers starting at register number @var{regno} (as determined by
2006multiplying GCC's notion of the size of the register when containing
2007this mode by the number of registers returned by
2008@code{HARD_REGNO_NREGS}). By default this is zero.
2009
2010For example, if a floating-point value is stored in three 32-bit
2011registers but takes up 128 bits in memory, then this would be
2012nonzero.
2013
2014This macros only needs to be defined if there are cases where
f1f4e530 2015@code{subreg_get_info}
8521c414
JM
2016would otherwise wrongly determine that a @code{subreg} can be
2017represented by an offset to the register number, when in fact such a
2018@code{subreg} would contain some of the padding not stored in
2019registers and so not be representable.
2020@end defmac
2021
2022@defmac HARD_REGNO_NREGS_WITH_PADDING (@var{regno}, @var{mode})
2023For values of @var{regno} and @var{mode} for which
2024@code{HARD_REGNO_NREGS_HAS_PADDING} returns nonzero, a C expression
2025returning the greater number of registers required to hold the value
2026including any padding. In the example above, the value would be four.
2027@end defmac
2028
ca0b6e3b
EB
2029@defmac REGMODE_NATURAL_SIZE (@var{mode})
2030Define this macro if the natural size of registers that hold values
2031of mode @var{mode} is not the word size. It is a C expression that
2032should give the natural size in bytes for the specified mode. It is
2033used by the register allocator to try to optimize its results. This
2034happens for example on SPARC 64-bit where the natural size of
2035floating-point registers is still 32-bit.
2036@end defmac
2037
a2c4f8e0 2038@defmac HARD_REGNO_MODE_OK (@var{regno}, @var{mode})
feca2ed3
JW
2039A C expression that is nonzero if it is permissible to store a value
2040of mode @var{mode} in hard register number @var{regno} (or in several
2041registers starting with that one). For a machine where all registers
2042are equivalent, a suitable definition is
2043
2044@smallexample
2045#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
2046@end smallexample
2047
e9a25f70
JL
2048You need not include code to check for the numbers of fixed registers,
2049because the allocation mechanism considers them to be always occupied.
feca2ed3
JW
2050
2051@cindex register pairs
2052On some machines, double-precision values must be kept in even/odd
e9a25f70
JL
2053register pairs. You can implement that by defining this macro to reject
2054odd register numbers for such modes.
feca2ed3
JW
2055
2056The minimum requirement for a mode to be OK in a register is that the
2057@samp{mov@var{mode}} instruction pattern support moves between the
e9a25f70
JL
2058register and other hard register in the same class and that moving a
2059value into the register and back out not alter it.
feca2ed3 2060
e9a25f70
JL
2061Since the same instruction used to move @code{word_mode} will work for
2062all narrower integer modes, it is not necessary on any machine for
feca2ed3
JW
2063@code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided
2064you define patterns @samp{movhi}, etc., to take advantage of this. This
2065is useful because of the interaction between @code{HARD_REGNO_MODE_OK}
2066and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes
2067to be tieable.
2068
2069Many machines have special registers for floating point arithmetic.
2070Often people assume that floating point machine modes are allowed only
2071in floating point registers. This is not true. Any registers that
2072can hold integers can safely @emph{hold} a floating point machine
2073mode, whether or not floating arithmetic can be done on it in those
2074registers. Integer move instructions can be used to move the values.
2075
2076On some machines, though, the converse is true: fixed-point machine
2077modes may not go in floating registers. This is true if the floating
2078registers normalize any value stored in them, because storing a
2079non-floating value there would garble it. In this case,
2080@code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in
2081floating registers. But if the floating registers do not automatically
2082normalize, if you can store any bit pattern in one and retrieve it
2083unchanged without a trap, then any machine mode may go in a floating
2084register, so you can define this macro to say so.
2085
2086The primary significance of special floating registers is rather that
2087they are the registers acceptable in floating point arithmetic
2088instructions. However, this is of no concern to
2089@code{HARD_REGNO_MODE_OK}. You handle it by writing the proper
2090constraints for those instructions.
2091
2092On some machines, the floating registers are especially slow to access,
2093so that it is better to store a value in a stack frame than in such a
2094register if floating point arithmetic is not being done. As long as the
2095floating registers are not in class @code{GENERAL_REGS}, they will not
2096be used unless some pattern's constraint asks for one.
a2c4f8e0 2097@end defmac
feca2ed3 2098
150c9fe8
KH
2099@defmac HARD_REGNO_RENAME_OK (@var{from}, @var{to})
2100A C expression that is nonzero if it is OK to rename a hard register
2101@var{from} to another hard register @var{to}.
2102
2103One common use of this macro is to prevent renaming of a register to
2104another register that is not saved by a prologue in an interrupt
2105handler.
2106
2107The default is always nonzero.
2108@end defmac
2109
a2c4f8e0 2110@defmac MODES_TIEABLE_P (@var{mode1}, @var{mode2})
e9a25f70 2111A C expression that is nonzero if a value of mode
956d6950 2112@var{mode1} is accessible in mode @var{mode2} without copying.
feca2ed3
JW
2113
2114If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and
e9a25f70
JL
2115@code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are always the same for
2116any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1}, @var{mode2})}
2117should be nonzero. If they differ for any @var{r}, you should define
2118this macro to return zero unless some other mechanism ensures the
956d6950 2119accessibility of the value in a narrower mode.
e9a25f70
JL
2120
2121You should define this macro to return nonzero in as many cases as
a3a15b4d 2122possible since doing so will allow GCC to perform better register
e9a25f70 2123allocation.
a2c4f8e0 2124@end defmac
7506f491 2125
a2c4f8e0 2126@defmac AVOID_CCMODE_COPIES
7506f491 2127Define this macro if the compiler should avoid copies to/from @code{CCmode}
a89608cb 2128registers. You should only define this macro if support for copying to/from
7506f491 2129@code{CCmode} is incomplete.
a2c4f8e0 2130@end defmac
feca2ed3
JW
2131
2132@node Leaf Functions
2133@subsection Handling Leaf Functions
2134
2135@cindex leaf functions
2136@cindex functions, leaf
2137On some machines, a leaf function (i.e., one which makes no calls) can run
2138more efficiently if it does not make its own register window. Often this
2139means it is required to receive its arguments in the registers where they
2140are passed by the caller, instead of the registers where they would
2141normally arrive.
2142
2143The special treatment for leaf functions generally applies only when
2144other conditions are met; for example, often they may use only those
2145registers for its own variables and temporaries. We use the term ``leaf
2146function'' to mean a function that is suitable for this special
2147handling, so that functions with no calls are not necessarily ``leaf
2148functions''.
2149
a3a15b4d 2150GCC assigns register numbers before it knows whether the function is
feca2ed3
JW
2151suitable for leaf function treatment. So it needs to renumber the
2152registers in order to output a leaf function. The following macros
2153accomplish this.
2154
a2c4f8e0 2155@defmac LEAF_REGISTERS
7d167afd 2156Name of a char vector, indexed by hard register number, which
feca2ed3
JW
2157contains 1 for a register that is allowable in a candidate for leaf
2158function treatment.
2159
2160If leaf function treatment involves renumbering the registers, then the
2161registers marked here should be the ones before renumbering---those that
a3a15b4d 2162GCC would ordinarily allocate. The registers which will actually be
feca2ed3
JW
2163used in the assembler code, after renumbering, should not be marked with 1
2164in this vector.
2165
2166Define this macro only if the target machine offers a way to optimize
2167the treatment of leaf functions.
a2c4f8e0 2168@end defmac
feca2ed3 2169
a2c4f8e0 2170@defmac LEAF_REG_REMAP (@var{regno})
feca2ed3
JW
2171A C expression whose value is the register number to which @var{regno}
2172should be renumbered, when a function is treated as a leaf function.
2173
2174If @var{regno} is a register number which should not appear in a leaf
630d3d5a 2175function before renumbering, then the expression should yield @minus{}1, which
feca2ed3
JW
2176will cause the compiler to abort.
2177
2178Define this macro only if the target machine offers a way to optimize the
2179treatment of leaf functions, and registers need to be renumbered to do
2180this.
a2c4f8e0 2181@end defmac
feca2ed3 2182
54ff41b7
JW
2183@findex current_function_is_leaf
2184@findex current_function_uses_only_leaf_regs
c237e94a
ZW
2185@code{TARGET_ASM_FUNCTION_PROLOGUE} and
2186@code{TARGET_ASM_FUNCTION_EPILOGUE} must usually treat leaf functions
2187specially. They can test the C variable @code{current_function_is_leaf}
2188which is nonzero for leaf functions. @code{current_function_is_leaf} is
2189set prior to local register allocation and is valid for the remaining
08c148a8
NB
2190compiler passes. They can also test the C variable
2191@code{current_function_uses_only_leaf_regs} which is nonzero for leaf
2192functions which only use leaf registers.
9ac617d4
EB
2193@code{current_function_uses_only_leaf_regs} is valid after all passes
2194that modify the instructions have been run and is only useful if
2195@code{LEAF_REGISTERS} is defined.
feca2ed3
JW
2196@c changed this to fix overfull. ALSO: why the "it" at the beginning
2197@c of the next paragraph?! --mew 2feb93
2198
2199@node Stack Registers
2200@subsection Registers That Form a Stack
2201
2202There are special features to handle computers where some of the
a2c4f8e0
ZW
2203``registers'' form a stack. Stack registers are normally written by
2204pushing onto the stack, and are numbered relative to the top of the
2205stack.
feca2ed3 2206
a3a15b4d 2207Currently, GCC can only handle one group of stack-like registers, and
a2c4f8e0
ZW
2208they must be consecutively numbered. Furthermore, the existing
2209support for stack-like registers is specific to the 80387 floating
2210point coprocessor. If you have a new architecture that uses
2211stack-like registers, you will need to do substantial work on
2212@file{reg-stack.c} and write your machine description to cooperate
2213with it, as well as defining these macros.
2214
2215@defmac STACK_REGS
feca2ed3 2216Define this if the machine has any stack-like registers.
a2c4f8e0 2217@end defmac
feca2ed3 2218
a2c4f8e0 2219@defmac FIRST_STACK_REG
feca2ed3
JW
2220The number of the first stack-like register. This one is the top
2221of the stack.
a2c4f8e0 2222@end defmac
feca2ed3 2223
a2c4f8e0 2224@defmac LAST_STACK_REG
feca2ed3
JW
2225The number of the last stack-like register. This one is the bottom of
2226the stack.
a2c4f8e0 2227@end defmac
feca2ed3 2228
feca2ed3
JW
2229@node Register Classes
2230@section Register Classes
2231@cindex register class definitions
2232@cindex class definitions, register
2233
2234On many machines, the numbered registers are not all equivalent.
2235For example, certain registers may not be allowed for indexed addressing;
2236certain registers may not be allowed in some instructions. These machine
2237restrictions are described to the compiler using @dfn{register classes}.
2238
2239You define a number of register classes, giving each one a name and saying
2240which of the registers belong to it. Then you can specify register classes
2241that are allowed as operands to particular instruction patterns.
2242
2243@findex ALL_REGS
2244@findex NO_REGS
2245In general, each register will belong to several classes. In fact, one
2246class must be named @code{ALL_REGS} and contain all the registers. Another
2247class must be named @code{NO_REGS} and contain no registers. Often the
2248union of two classes will be another class; however, this is not required.
2249
2250@findex GENERAL_REGS
2251One of the classes must be named @code{GENERAL_REGS}. There is nothing
2252terribly special about the name, but the operand constraint letters
2253@samp{r} and @samp{g} specify this class. If @code{GENERAL_REGS} is
2254the same as @code{ALL_REGS}, just define it as a macro which expands
2255to @code{ALL_REGS}.
2256
2257Order the classes so that if class @var{x} is contained in class @var{y}
2258then @var{x} has a lower class number than @var{y}.
2259
2260The way classes other than @code{GENERAL_REGS} are specified in operand
2261constraints is through machine-dependent operand constraint letters.
2262You can define such letters to correspond to various classes, then use
2263them in operand constraints.
2264
2265You should define a class for the union of two classes whenever some
2266instruction allows both classes. For example, if an instruction allows
2267either a floating point (coprocessor) register or a general register for a
2268certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS}
2269which includes both of them. Otherwise you will get suboptimal code.
2270
2271You must also specify certain redundant information about the register
2272classes: for each class, which classes contain it and which ones are
2273contained in it; for each pair of classes, the largest class contained
2274in their union.
2275
2276When a value occupying several consecutive registers is expected in a
2277certain class, all the registers used must belong to that class.
2278Therefore, register classes cannot be used to enforce a requirement for
2279a register pair to start with an even-numbered register. The way to
2280specify this requirement is with @code{HARD_REGNO_MODE_OK}.
2281
2282Register classes used for input-operands of bitwise-and or shift
2283instructions have a special requirement: each such class must have, for
2284each fixed-point machine mode, a subclass whose registers can transfer that
2285mode to or from memory. For example, on some machines, the operations for
2286single-byte values (@code{QImode}) are limited to certain registers. When
2287this is so, each register class that is used in a bitwise-and or shift
2288instruction must have a subclass consisting of registers from which
2289single-byte values can be loaded or stored. This is so that
2290@code{PREFERRED_RELOAD_CLASS} can always have a possible value to return.
2291
a2c4f8e0 2292@deftp {Data type} {enum reg_class}
2eac577f
JM
2293An enumerated type that must be defined with all the register class names
2294as enumerated values. @code{NO_REGS} must be first. @code{ALL_REGS}
2295must be the last register class, followed by one more enumerated value,
feca2ed3
JW
2296@code{LIM_REG_CLASSES}, which is not a register class but rather
2297tells how many classes there are.
2298
2299Each register class has a number, which is the value of casting
2300the class name to type @code{int}. The number serves as an index
2301in many of the tables described below.
a2c4f8e0 2302@end deftp
feca2ed3 2303
a2c4f8e0 2304@defmac N_REG_CLASSES
feca2ed3
JW
2305The number of distinct register classes, defined as follows:
2306
3ab51846 2307@smallexample
feca2ed3 2308#define N_REG_CLASSES (int) LIM_REG_CLASSES
3ab51846 2309@end smallexample
a2c4f8e0 2310@end defmac
feca2ed3 2311
a2c4f8e0 2312@defmac REG_CLASS_NAMES
feca2ed3
JW
2313An initializer containing the names of the register classes as C string
2314constants. These names are used in writing some of the debugging dumps.
a2c4f8e0 2315@end defmac
feca2ed3 2316
a2c4f8e0 2317@defmac REG_CLASS_CONTENTS
feca2ed3
JW
2318An initializer containing the contents of the register classes, as integers
2319which are bit masks. The @var{n}th integer specifies the contents of class
2320@var{n}. The way the integer @var{mask} is interpreted is that
2321register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1.
2322
2323When the machine has more than 32 registers, an integer does not suffice.
2324Then the integers are replaced by sub-initializers, braced groupings containing
2325several integers. Each sub-initializer must be suitable as an initializer
2326for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}.
7c272079
MP
2327In this situation, the first integer in each sub-initializer corresponds to
2328registers 0 through 31, the second integer to registers 32 through 63, and
2329so on.
a2c4f8e0 2330@end defmac
feca2ed3 2331
a2c4f8e0 2332@defmac REGNO_REG_CLASS (@var{regno})
feca2ed3
JW
2333A C expression whose value is a register class containing hard register
2334@var{regno}. In general there is more than one such class; choose a class
2335which is @dfn{minimal}, meaning that no smaller class also contains the
2336register.
a2c4f8e0 2337@end defmac
feca2ed3 2338
a2c4f8e0 2339@defmac BASE_REG_CLASS
feca2ed3
JW
2340A macro whose definition is the name of the class to which a valid
2341base register must belong. A base register is one used in an address
2342which is the register value plus a displacement.
a2c4f8e0 2343@end defmac
feca2ed3 2344
a2c4f8e0 2345@defmac MODE_BASE_REG_CLASS (@var{mode})
3dcc68a4 2346This is a variation of the @code{BASE_REG_CLASS} macro which allows
c0478a66 2347the selection of a base register in a mode dependent manner. If
3dcc68a4
NC
2348@var{mode} is VOIDmode then it should return the same value as
2349@code{BASE_REG_CLASS}.
a2c4f8e0 2350@end defmac
3dcc68a4 2351
888d2cd6
DJ
2352@defmac MODE_BASE_REG_REG_CLASS (@var{mode})
2353A C expression whose value is the register class to which a valid
2354base register must belong in order to be used in a base plus index
2355register address. You should define this macro if base plus index
2356addresses have different requirements than other base register uses.
2357@end defmac
2358
c4963a0a
BS
2359@defmac MODE_CODE_BASE_REG_CLASS (@var{mode}, @var{outer_code}, @var{index_code})
2360A C expression whose value is the register class to which a valid
2361base register must belong. @var{outer_code} and @var{index_code} define the
2362context in which the base register occurs. @var{outer_code} is the code of
2363the immediately enclosing expression (@code{MEM} for the top level of an
2364address, @code{ADDRESS} for something that occurs in an
2365@code{address_operand}). @var{index_code} is the code of the corresponding
2366index expression if @var{outer_code} is @code{PLUS}; @code{SCRATCH} otherwise.
2367@end defmac
2368
a2c4f8e0 2369@defmac INDEX_REG_CLASS
feca2ed3
JW
2370A macro whose definition is the name of the class to which a valid
2371index register must belong. An index register is one used in an
2372address where its value is either multiplied by a scale factor or
2373added to another register (as well as added to a displacement).
a2c4f8e0 2374@end defmac
feca2ed3 2375
a2c4f8e0 2376@defmac REGNO_OK_FOR_BASE_P (@var{num})
feca2ed3
JW
2377A C expression which is nonzero if register number @var{num} is
2378suitable for use as a base register in operand addresses. It may be
2379either a suitable hard register or a pseudo register that has been
2380allocated such a hard register.
a2c4f8e0 2381@end defmac
feca2ed3 2382
a2c4f8e0 2383@defmac REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
861bb6c1
JL
2384A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
2385that expression may examine the mode of the memory reference in
2386@var{mode}. You should define this macro if the mode of the memory
2387reference affects whether a register may be used as a base register. If
2388you define this macro, the compiler will use it instead of
c4963a0a
BS
2389@code{REGNO_OK_FOR_BASE_P}. The mode may be @code{VOIDmode} for addresses
2390that appear outside a @code{MEM}, i.e. as an @code{address_operand}.
2391
a2c4f8e0 2392@end defmac
861bb6c1 2393
888d2cd6
DJ
2394@defmac REGNO_MODE_OK_FOR_REG_BASE_P (@var{num}, @var{mode})
2395A C expression which is nonzero if register number @var{num} is suitable for
2396use as a base register in base plus index operand addresses, accessing
2397memory in mode @var{mode}. It may be either a suitable hard register or a
2398pseudo register that has been allocated such a hard register. You should
2399define this macro if base plus index addresses have different requirements
2400than other base register uses.
c4963a0a
BS
2401
2402Use of this macro is deprecated; please use the more general
2403@code{REGNO_MODE_CODE_OK_FOR_BASE_P}.
2404@end defmac
2405
2406@defmac REGNO_MODE_CODE_OK_FOR_BASE_P (@var{num}, @var{mode}, @var{outer_code}, @var{index_code})
2407A C expression that is just like @code{REGNO_MODE_OK_FOR_BASE_P}, except that
2408that expression may examine the context in which the register appears in the
2409memory reference. @var{outer_code} is the code of the immediately enclosing
2410expression (@code{MEM} if at the top level of the address, @code{ADDRESS} for
2411something that occurs in an @code{address_operand}). @var{index_code} is the
2412code of the corresponding index expression if @var{outer_code} is @code{PLUS};
2413@code{SCRATCH} otherwise. The mode may be @code{VOIDmode} for addresses
2414that appear outside a @code{MEM}, i.e. as an @code{address_operand}.
888d2cd6
DJ
2415@end defmac
2416
a2c4f8e0 2417@defmac REGNO_OK_FOR_INDEX_P (@var{num})
feca2ed3
JW
2418A C expression which is nonzero if register number @var{num} is
2419suitable for use as an index register in operand addresses. It may be
2420either a suitable hard register or a pseudo register that has been
2421allocated such a hard register.
2422
2423The difference between an index register and a base register is that
2424the index register may be scaled. If an address involves the sum of
2425two registers, neither one of them scaled, then either one may be
2426labeled the ``base'' and the other the ``index''; but whichever
2427labeling is used must fit the machine's constraints of which registers
2428may serve in each capacity. The compiler will try both labelings,
2429looking for one that is valid, and will reload one or both registers
2430only if neither labeling works.
a2c4f8e0 2431@end defmac
feca2ed3 2432
a2c4f8e0 2433@defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class})
feca2ed3
JW
2434A C expression that places additional restrictions on the register class
2435to use when it is necessary to copy value @var{x} into a register in class
2436@var{class}. The value is a register class; perhaps @var{class}, or perhaps
2437another, smaller class. On many machines, the following definition is
2438safe:
2439
3ab51846 2440@smallexample
feca2ed3 2441#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
3ab51846 2442@end smallexample
feca2ed3
JW
2443
2444Sometimes returning a more restrictive class makes better code. For
2445example, on the 68000, when @var{x} is an integer constant that is in range
2446for a @samp{moveq} instruction, the value of this macro is always
2447@code{DATA_REGS} as long as @var{class} includes the data registers.
2448Requiring a data register guarantees that a @samp{moveq} will be used.
2449
222a2f1a
GK
2450One case where @code{PREFERRED_RELOAD_CLASS} must not return
2451@var{class} is if @var{x} is a legitimate constant which cannot be
2452loaded into some register class. By returning @code{NO_REGS} you can
2453force @var{x} into a memory location. For example, rs6000 can load
2454immediate values into general-purpose registers, but does not have an
2455instruction for loading an immediate value into a floating-point
2456register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
2457@var{x} is a floating-point constant. If the constant can't be loaded
2458into any kind of register, code generation will be better if
2459@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
2460of using @code{PREFERRED_RELOAD_CLASS}.
b5c82fa1
PB
2461
2462If an insn has pseudos in it after register allocation, reload will go
2463through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS}
2464to find the best one. Returning @code{NO_REGS}, in this case, makes
2465reload add a @code{!} in front of the constraint: the x86 back-end uses
2466this feature to discourage usage of 387 registers when math is done in
2467the SSE registers (and vice versa).
a2c4f8e0 2468@end defmac
feca2ed3 2469
a2c4f8e0 2470@defmac PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class})
feca2ed3
JW
2471Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of
2472input reloads. If you don't define this macro, the default is to use
2473@var{class}, unchanged.
b5c82fa1
PB
2474
2475You can also use @code{PREFERRED_OUTPUT_RELOAD_CLASS} to discourage
2476reload from using some alternatives, like @code{PREFERRED_RELOAD_CLASS}.
a2c4f8e0 2477@end defmac
feca2ed3 2478
a2c4f8e0 2479@defmac LIMIT_RELOAD_CLASS (@var{mode}, @var{class})
feca2ed3
JW
2480A C expression that places additional restrictions on the register class
2481to use when it is necessary to be able to hold a value of mode
2482@var{mode} in a reload register for which class @var{class} would
2483ordinarily be used.
2484
2485Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when
2486there are certain modes that simply can't go in certain reload classes.
2487
2488The value is a register class; perhaps @var{class}, or perhaps another,
2489smaller class.
2490
2491Don't define this macro unless the target machine has limitations which
2492require the macro to do something nontrivial.
a2c4f8e0 2493@end defmac
feca2ed3 2494
8a99f6f9 2495@deftypefn {Target Hook} enum reg_class TARGET_SECONDARY_RELOAD (bool @var{in_p}, rtx @var{x}, enum reg_class @var{reload_class}, enum machine_mode @var{reload_mode}, secondary_reload_info *@var{sri})
feca2ed3
JW
2496Many machines have some registers that cannot be copied directly to or
2497from memory or even from other types of registers. An example is the
2498@samp{MQ} register, which on most machines, can only be copied to or
8a99f6f9
R
2499from general registers, but not memory. Below, we shall be using the
2500term 'intermediate register' when a move operation cannot be performed
2501directly, but has to be done by copying the source into the intermediate
2502register first, and then copying the intermediate register to the
2503destination. An intermediate register always has the same mode as
2504source and destination. Since it holds the actual value being copied,
2505reload might apply optimizations to re-use an intermediate register
2506and eliding the copy from the source when it can determine that the
2507intermediate register still holds the required value.
2508
2509Another kind of secondary reload is required on some machines which
2510allow copying all registers to and from memory, but require a scratch
2511register for stores to some memory locations (e.g., those with symbolic
2512address on the RT, and those with certain symbolic address on the SPARC
2513when compiling PIC)@. Scratch registers need not have the same mode
2514as the value being copied, and usually hold a different value that
2515that being copied. Special patterns in the md file are needed to
2516describe how the copy is performed with the help of the scratch register;
2517these patterns also describe the number, register class(es) and mode(s)
2518of the scratch register(s).
2519
2520In some cases, both an intermediate and a scratch register are required.
2521
2522For input reloads, this target hook is called with nonzero @var{in_p},
2523and @var{x} is an rtx that needs to be copied to a register in of class
2524@var{reload_class} in @var{reload_mode}. For output reloads, this target
2525hook is called with zero @var{in_p}, and a register of class @var{reload_mode}
2526needs to be copied to rtx @var{x} in @var{reload_mode}.
2527
2528If copying a register of @var{reload_class} from/to @var{x} requires
2529an intermediate register, the hook @code{secondary_reload} should
2530return the register class required for this intermediate register.
2531If no intermediate register is required, it should return NO_REGS.
2532If more than one intermediate register is required, describe the one
2533that is closest in the copy chain to the reload register.
2534
2535If scratch registers are needed, you also have to describe how to
2536perform the copy from/to the reload register to/from this
2537closest intermediate register. Or if no intermediate register is
2538required, but still a scratch register is needed, describe the
2539copy from/to the reload register to/from the reload operand @var{x}.
2540
2541You do this by setting @code{sri->icode} to the instruction code of a pattern
2542in the md file which performs the move. Operands 0 and 1 are the output
2543and input of this copy, respectively. Operands from operand 2 onward are
2544for scratch operands. These scratch operands must have a mode, and a
2545single-register-class
2546@c [later: or memory]
2547output constraint.
2548
2549When an intermediate register is used, the @code{secondary_reload}
2550hook will be called again to determine how to copy the intermediate
2551register to/from the reload operand @var{x}, so your hook must also
2552have code to handle the register class of the intermediate operand.
2553
2554@c [For later: maybe we'll allow multi-alternative reload patterns -
2555@c the port maintainer could name a mov<mode> pattern that has clobbers -
2556@c and match the constraints of input and output to determine the required
2557@c alternative. A restriction would be that constraints used to match
2558@c against reloads registers would have to be written as register class
2559@c constraints, or we need a new target macro / hook that tells us if an
2560@c arbitrary constraint can match an unknown register of a given class.
2561@c Such a macro / hook would also be useful in other places.]
2562
2563
2564@var{x} might be a pseudo-register or a @code{subreg} of a
2565pseudo-register, which could either be in a hard register or in memory.
2566Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is
2567in memory and the hard register number if it is in a register.
2568
2569Scratch operands in memory (constraint @code{"=m"} / @code{"=&m"}) are
2570currently not supported. For the time being, you will have to continue
2571to use @code{SECONDARY_MEMORY_NEEDED} for that purpose.
2572
2573@code{copy_cost} also uses this target hook to find out how values are
2574copied. If you want it to include some extra cost for the need to allocate
2575(a) scratch register(s), set @code{sri->extra_cost} to the additional cost.
2576Or if two dependent moves are supposed to have a lower cost than the sum
2577of the individual moves due to expected fortuitous scheduling and/or special
2578forwarding logic, you can set @code{sri->extra_cost} to a negative amount.
2579@end deftypefn
2580
2581@defmac SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2582@defmacx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2583@defmacx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
083cad55 2584These macros are obsolete, new ports should use the target hook
8a99f6f9
R
2585@code{TARGET_SECONDARY_RELOAD} instead.
2586
2587These are obsolete macros, replaced by the @code{TARGET_SECONDARY_RELOAD}
2588target hook. Older ports still define these macros to indicate to the
2589reload phase that it may
feca2ed3
JW
2590need to allocate at least one register for a reload in addition to the
2591register to contain the data. Specifically, if copying @var{x} to a
2592register @var{class} in @var{mode} requires an intermediate register,
8a99f6f9 2593you were supposed to define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the
feca2ed3
JW
2594largest register class all of whose registers can be used as
2595intermediate registers or scratch registers.
2596
2597If copying a register @var{class} in @var{mode} to @var{x} requires an
2598intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS}
8a99f6f9
R
2599was supposed to be defined be defined to return the largest register
2600class required. If the
2601requirements for input and output reloads were the same, the macro
2602@code{SECONDARY_RELOAD_CLASS} should have been used instead of defining both
feca2ed3
JW
2603macros identically.
2604
2605The values returned by these macros are often @code{GENERAL_REGS}.
2606Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x}
2607can be directly copied to or from a register of @var{class} in
2608@var{mode} without requiring a scratch register. Do not define this
2609macro if it would always return @code{NO_REGS}.
2610
2611If a scratch register is required (either with or without an
8a99f6f9 2612intermediate register), you were supposed to define patterns for
feca2ed3 2613@samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required
8a99f6f9 2614(@pxref{Standard Names}. These patterns, which were normally
feca2ed3
JW
2615implemented with a @code{define_expand}, should be similar to the
2616@samp{mov@var{m}} patterns, except that operand 2 is the scratch
2617register.
2618
8a99f6f9
R
2619These patterns need constraints for the reload register and scratch
2620register that
feca2ed3
JW
2621contain a single register class. If the original reload register (whose
2622class is @var{class}) can meet the constraint given in the pattern, the
2623value returned by these macros is used for the class of the scratch
2624register. Otherwise, two additional reload registers are required.
2625Their classes are obtained from the constraints in the insn pattern.
2626
2627@var{x} might be a pseudo-register or a @code{subreg} of a
2628pseudo-register, which could either be in a hard register or in memory.
630d3d5a 2629Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is
feca2ed3
JW
2630in memory and the hard register number if it is in a register.
2631
2632These macros should not be used in the case where a particular class of
2633registers can only be copied to memory and not to another class of
2634registers. In that case, secondary reload registers are not needed and
2635would not be helpful. Instead, a stack location must be used to perform
a8154559 2636the copy and the @code{mov@var{m}} pattern should use memory as an
feca2ed3
JW
2637intermediate storage. This case often occurs between floating-point and
2638general registers.
a2c4f8e0 2639@end defmac
feca2ed3 2640
a2c4f8e0 2641@defmac SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m})
feca2ed3
JW
2642Certain machines have the property that some registers cannot be copied
2643to some other registers without using memory. Define this macro on
df2a54e9 2644those machines to be a C expression that is nonzero if objects of mode
feca2ed3
JW
2645@var{m} in registers of @var{class1} can only be copied to registers of
2646class @var{class2} by storing a register of @var{class1} into memory
2647and loading that memory location into a register of @var{class2}.
2648
2649Do not define this macro if its value would always be zero.
a2c4f8e0 2650@end defmac
feca2ed3 2651
a2c4f8e0 2652@defmac SECONDARY_MEMORY_NEEDED_RTX (@var{mode})
feca2ed3
JW
2653Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler
2654allocates a stack slot for a memory location needed for register copies.
2655If this macro is defined, the compiler instead uses the memory location
2656defined by this macro.
2657
2658Do not define this macro if you do not define
2659@code{SECONDARY_MEMORY_NEEDED}.
a2c4f8e0 2660@end defmac
feca2ed3 2661
a2c4f8e0 2662@defmac SECONDARY_MEMORY_NEEDED_MODE (@var{mode})
feca2ed3
JW
2663When the compiler needs a secondary memory location to copy between two
2664registers of mode @var{mode}, it normally allocates sufficient memory to
2665hold a quantity of @code{BITS_PER_WORD} bits and performs the store and
2666load operations in a mode that many bits wide and whose class is the
2667same as that of @var{mode}.
2668
2669This is right thing to do on most machines because it ensures that all
2670bits of the register are copied and prevents accesses to the registers
2671in a narrower mode, which some machines prohibit for floating-point
2672registers.
2673
2674However, this default behavior is not correct on some machines, such as
2675the DEC Alpha, that store short integers in floating-point registers
2676differently than in integer registers. On those machines, the default
2677widening will not work correctly and you must define this macro to
2678suppress that widening in some cases. See the file @file{alpha.h} for
2679details.
2680
2681Do not define this macro if you do not define
2682@code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that
2683is @code{BITS_PER_WORD} bits wide is correct for your machine.
a2c4f8e0 2684@end defmac
feca2ed3 2685
a2c4f8e0 2686@defmac SMALL_REGISTER_CLASSES
faa9eb19
BS
2687On some machines, it is risky to let hard registers live across arbitrary
2688insns. Typically, these machines have instructions that require values
2689to be in specific registers (like an accumulator), and reload will fail
2690if the required hard register is used for another purpose across such an
2691insn.
feca2ed3 2692
df2a54e9
JM
2693Define @code{SMALL_REGISTER_CLASSES} to be an expression with a nonzero
2694value on these machines. When this macro has a nonzero value, the
faa9eb19 2695compiler will try to minimize the lifetime of hard registers.
feca2ed3 2696
df2a54e9 2697It is always safe to define this macro with a nonzero value, but if you
861bb6c1
JL
2698unnecessarily define it, you will reduce the amount of optimizations
2699that can be performed in some cases. If you do not define this macro
df2a54e9 2700with a nonzero value when it is required, the compiler will run out of
861bb6c1
JL
2701spill registers and print a fatal error message. For most machines, you
2702should not define this macro at all.
a2c4f8e0 2703@end defmac
feca2ed3 2704
a2c4f8e0 2705@defmac CLASS_LIKELY_SPILLED_P (@var{class})
feca2ed3
JW
2706A C expression whose value is nonzero if pseudos that have been assigned
2707to registers of class @var{class} would likely be spilled because
2708registers of @var{class} are needed for spill registers.
2709
2710The default value of this macro returns 1 if @var{class} has exactly one
2711register and zero otherwise. On most machines, this default should be
40687a9e 2712used. Only define this macro to some other expression if pseudos
feca2ed3
JW
2713allocated by @file{local-alloc.c} end up in memory because their hard
2714registers were needed for spill registers. If this macro returns nonzero
2715for those classes, those pseudos will only be allocated by
2716@file{global.c}, which knows how to reallocate the pseudo to another
2717register. If there would not be another register available for
2718reallocation, you should not change the definition of this macro since
2719the only effect of such a definition would be to slow down register
2720allocation.
a2c4f8e0 2721@end defmac
feca2ed3 2722
a2c4f8e0 2723@defmac CLASS_MAX_NREGS (@var{class}, @var{mode})
feca2ed3
JW
2724A C expression for the maximum number of consecutive registers
2725of class @var{class} needed to hold a value of mode @var{mode}.
2726
2727This is closely related to the macro @code{HARD_REGNO_NREGS}. In fact,
2728the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})}
2729should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno},
2730@var{mode})} for all @var{regno} values in the class @var{class}.
2731
2732This macro helps control the handling of multiple-word values
2733in the reload pass.
a2c4f8e0 2734@end defmac
feca2ed3 2735
a2c4f8e0 2736@defmac CANNOT_CHANGE_MODE_CLASS (@var{from}, @var{to}, @var{class})
b0c42aed
JH
2737If defined, a C expression that returns nonzero for a @var{class} for which
2738a change from mode @var{from} to mode @var{to} is invalid.
feca2ed3
JW
2739
2740For the example, loading 32-bit integer or floating-point objects into
57694e40 2741floating-point registers on the Alpha extends them to 64 bits.
feca2ed3 2742Therefore loading a 64-bit object and then storing it as a 32-bit object
57694e40 2743does not store the low-order 32 bits, as would be the case for a normal
cff9f8d5
AH
2744register. Therefore, @file{alpha.h} defines @code{CANNOT_CHANGE_MODE_CLASS}
2745as below:
02188693 2746
3ab51846 2747@smallexample
b0c42aed
JH
2748#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
2749 (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
2750 ? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0)
3ab51846 2751@end smallexample
a2c4f8e0 2752@end defmac
feca2ed3 2753
f38840db
ZW
2754@node Old Constraints
2755@section Obsolete Macros for Defining Constraints
2756@cindex defining constraints, obsolete method
2757@cindex constraints, defining, obsolete method
2758
2759Machine-specific constraints can be defined with these macros instead
2760of the machine description constructs described in @ref{Define
2761Constraints}. This mechanism is obsolete. New ports should not use
2762it; old ports should convert to the new mechanism.
2763
2764@defmac CONSTRAINT_LEN (@var{char}, @var{str})
2765For the constraint at the start of @var{str}, which starts with the letter
2766@var{c}, return the length. This allows you to have register class /
2767constant / extra constraints that are longer than a single letter;
2768you don't need to define this macro if you can do with single-letter
2769constraints only. The definition of this macro should use
2770DEFAULT_CONSTRAINT_LEN for all the characters that you don't want
2771to handle specially.
2772There are some sanity checks in genoutput.c that check the constraint lengths
2773for the md file, so you can also use this macro to help you while you are
2774transitioning from a byzantine single-letter-constraint scheme: when you
2775return a negative length for a constraint you want to re-use, genoutput
2776will complain about every instance where it is used in the md file.
2777@end defmac
2778
2779@defmac REG_CLASS_FROM_LETTER (@var{char})
2780A C expression which defines the machine-dependent operand constraint
2781letters for register classes. If @var{char} is such a letter, the
2782value should be the register class corresponding to it. Otherwise,
2783the value should be @code{NO_REGS}. The register letter @samp{r},
2784corresponding to class @code{GENERAL_REGS}, will not be passed
2785to this macro; you do not need to handle it.
2786@end defmac
2787
2788@defmac REG_CLASS_FROM_CONSTRAINT (@var{char}, @var{str})
2789Like @code{REG_CLASS_FROM_LETTER}, but you also get the constraint string
2790passed in @var{str}, so that you can use suffixes to distinguish between
2791different variants.
2792@end defmac
feca2ed3 2793
a2c4f8e0 2794@defmac CONST_OK_FOR_LETTER_P (@var{value}, @var{c})
e119b68c
MM
2795A C expression that defines the machine-dependent operand constraint
2796letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify
2797particular ranges of integer values. If @var{c} is one of those
2798letters, the expression should check that @var{value}, an integer, is in
2799the appropriate range and return 1 if so, 0 otherwise. If @var{c} is
2800not one of those letters, the value should be 0 regardless of
2801@var{value}.
a2c4f8e0 2802@end defmac
feca2ed3 2803
a2c4f8e0 2804@defmac CONST_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str})
97488870
R
2805Like @code{CONST_OK_FOR_LETTER_P}, but you also get the constraint
2806string passed in @var{str}, so that you can use suffixes to distinguish
2807between different variants.
a2c4f8e0 2808@end defmac
97488870 2809
a2c4f8e0 2810@defmac CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c})
feca2ed3 2811A C expression that defines the machine-dependent operand constraint
e119b68c
MM
2812letters that specify particular ranges of @code{const_double} values
2813(@samp{G} or @samp{H}).
feca2ed3
JW
2814
2815If @var{c} is one of those letters, the expression should check that
2816@var{value}, an RTX of code @code{const_double}, is in the appropriate
2817range and return 1 if so, 0 otherwise. If @var{c} is not one of those
2818letters, the value should be 0 regardless of @var{value}.
2819
2820@code{const_double} is used for all floating-point constants and for
2821@code{DImode} fixed-point constants. A given letter can accept either
2822or both kinds of values. It can use @code{GET_MODE} to distinguish
2823between these kinds.
a2c4f8e0 2824@end defmac
feca2ed3 2825
a2c4f8e0 2826@defmac CONST_DOUBLE_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str})
97488870
R
2827Like @code{CONST_DOUBLE_OK_FOR_LETTER_P}, but you also get the constraint
2828string passed in @var{str}, so that you can use suffixes to distinguish
2829between different variants.
a2c4f8e0 2830@end defmac
97488870 2831
a2c4f8e0 2832@defmac EXTRA_CONSTRAINT (@var{value}, @var{c})
feca2ed3 2833A C expression that defines the optional machine-dependent constraint
c2cba7a9
RH
2834letters that can be used to segregate specific types of operands, usually
2835memory references, for the target machine. Any letter that is not
97488870
R
2836elsewhere defined and not matched by @code{REG_CLASS_FROM_LETTER} /
2837@code{REG_CLASS_FROM_CONSTRAINT}
c2cba7a9
RH
2838may be used. Normally this macro will not be defined.
2839
2840If it is required for a particular target machine, it should return 1
2841if @var{value} corresponds to the operand type represented by the
2842constraint letter @var{c}. If @var{c} is not defined as an extra
e119b68c 2843constraint, the value returned should be 0 regardless of @var{value}.
feca2ed3 2844
c2cba7a9
RH
2845For example, on the ROMP, load instructions cannot have their output
2846in r0 if the memory reference contains a symbolic address. Constraint
2847letter @samp{Q} is defined as representing a memory address that does
feca2ed3
JW
2848@emph{not} contain a symbolic address. An alternative is specified with
2849a @samp{Q} constraint on the input and @samp{r} on the output. The next
2850alternative specifies @samp{m} on the input and a register class that
2851does not include r0 on the output.
a2c4f8e0 2852@end defmac
ccfc6cc8 2853
a2c4f8e0 2854@defmac EXTRA_CONSTRAINT_STR (@var{value}, @var{c}, @var{str})
97488870
R
2855Like @code{EXTRA_CONSTRAINT}, but you also get the constraint string passed
2856in @var{str}, so that you can use suffixes to distinguish between different
2857variants.
a2c4f8e0 2858@end defmac
97488870 2859
a2c4f8e0 2860@defmac EXTRA_MEMORY_CONSTRAINT (@var{c}, @var{str})
ccfc6cc8
UW
2861A C expression that defines the optional machine-dependent constraint
2862letters, amongst those accepted by @code{EXTRA_CONSTRAINT}, that should
2863be treated like memory constraints by the reload pass.
2864
73774972 2865It should return 1 if the operand type represented by the constraint
97488870
R
2866at the start of @var{str}, the first letter of which is the letter @var{c},
2867 comprises a subset of all memory references including
73774972
EC
2868all those whose address is simply a base register. This allows the reload
2869pass to reload an operand, if it does not directly correspond to the operand
ccfc6cc8
UW
2870type of @var{c}, by copying its address into a base register.
2871
2872For example, on the S/390, some instructions do not accept arbitrary
2873memory references, but only those that do not make use of an index
2874register. The constraint letter @samp{Q} is defined via
2875@code{EXTRA_CONSTRAINT} as representing a memory address of this type.
2876If the letter @samp{Q} is marked as @code{EXTRA_MEMORY_CONSTRAINT},
2877a @samp{Q} constraint can handle any memory operand, because the
2878reload pass knows it can be reloaded by copying the memory address
2879into a base register if required. This is analogous to the way
2880a @samp{o} constraint can handle any memory operand.
a2c4f8e0 2881@end defmac
ccfc6cc8 2882
a2c4f8e0 2883@defmac EXTRA_ADDRESS_CONSTRAINT (@var{c}, @var{str})
ccfc6cc8 2884A C expression that defines the optional machine-dependent constraint
97488870
R
2885letters, amongst those accepted by @code{EXTRA_CONSTRAINT} /
2886@code{EXTRA_CONSTRAINT_STR}, that should
ccfc6cc8
UW
2887be treated like address constraints by the reload pass.
2888
73774972 2889It should return 1 if the operand type represented by the constraint
3a6e2189 2890at the start of @var{str}, which starts with the letter @var{c}, comprises
97488870 2891a subset of all memory addresses including
73774972
EC
2892all those that consist of just a base register. This allows the reload
2893pass to reload an operand, if it does not directly correspond to the operand
97488870 2894type of @var{str}, by copying it into a base register.
ccfc6cc8
UW
2895
2896Any constraint marked as @code{EXTRA_ADDRESS_CONSTRAINT} can only
73774972 2897be used with the @code{address_operand} predicate. It is treated
ccfc6cc8 2898analogously to the @samp{p} constraint.
a2c4f8e0 2899@end defmac
feca2ed3
JW
2900
2901@node Stack and Calling
2902@section Stack Layout and Calling Conventions
2903@cindex calling conventions
2904
2905@c prevent bad page break with this line
2906This describes the stack layout and calling conventions.
2907
2908@menu
2909* Frame Layout::
7c16328b 2910* Exception Handling::
861bb6c1 2911* Stack Checking::
feca2ed3
JW
2912* Frame Registers::
2913* Elimination::
2914* Stack Arguments::
2915* Register Arguments::
2916* Scalar Return::
2917* Aggregate Return::
2918* Caller Saves::
2919* Function Entry::
2920* Profiling::
91d231cb 2921* Tail Calls::
7d69de61 2922* Stack Smashing Protection::
feca2ed3
JW
2923@end menu
2924
2925@node Frame Layout
2926@subsection Basic Stack Layout
2927@cindex stack frame layout
2928@cindex frame layout
2929
2930@c prevent bad page break with this line
2931Here is the basic stack layout.
2932
a2c4f8e0 2933@defmac STACK_GROWS_DOWNWARD
feca2ed3
JW
2934Define this macro if pushing a word onto the stack moves the stack
2935pointer to a smaller address.
2936
d78aa55c 2937When we say, ``define this macro if @dots{}'', it means that the
feca2ed3
JW
2938compiler checks this macro only with @code{#ifdef} so the precise
2939definition used does not matter.
a2c4f8e0 2940@end defmac
feca2ed3 2941
a2c4f8e0 2942@defmac STACK_PUSH_CODE
918a6124
GK
2943This macro defines the operation used when something is pushed
2944on the stack. In RTL, a push operation will be
04a5176a 2945@code{(set (mem (STACK_PUSH_CODE (reg sp))) @dots{})}
918a6124
GK
2946
2947The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC},
2948and @code{POST_INC}. Which of these is correct depends on
2949the stack direction and on whether the stack pointer points
2950to the last item on the stack or whether it points to the
2951space for the next item on the stack.
2952
2953The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is
2954defined, which is almost always right, and @code{PRE_INC} otherwise,
2955which is often wrong.
a2c4f8e0 2956@end defmac
918a6124 2957
a2c4f8e0 2958@defmac FRAME_GROWS_DOWNWARD
a4d05547 2959Define this macro to nonzero value if the addresses of local variable slots
f62c8a5c 2960are at negative offsets from the frame pointer.
a2c4f8e0 2961@end defmac
feca2ed3 2962
a2c4f8e0 2963@defmac ARGS_GROW_DOWNWARD
feca2ed3
JW
2964Define this macro if successive arguments to a function occupy decreasing
2965addresses on the stack.
a2c4f8e0 2966@end defmac
feca2ed3 2967
a2c4f8e0 2968@defmac STARTING_FRAME_OFFSET
feca2ed3
JW
2969Offset from the frame pointer to the first local variable slot to be allocated.
2970
2971If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by
2972subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}.
2973Otherwise, it is found by adding the length of the first slot to the
2974value @code{STARTING_FRAME_OFFSET}.
2975@c i'm not sure if the above is still correct.. had to change it to get
2976@c rid of an overfull. --mew 2feb93
a2c4f8e0 2977@end defmac
feca2ed3 2978
a2c4f8e0 2979@defmac STACK_ALIGNMENT_NEEDED
95f3f59e 2980Define to zero to disable final alignment of the stack during reload.
0b4be7de 2981The nonzero default for this macro is suitable for most ports.
95f3f59e 2982
0b4be7de 2983On ports where @code{STARTING_FRAME_OFFSET} is nonzero or where there
95f3f59e
JDA
2984is a register save block following the local block that doesn't require
2985alignment to @code{STACK_BOUNDARY}, it may be beneficial to disable
2986stack alignment and do it in the backend.
a2c4f8e0 2987@end defmac
95f3f59e 2988
a2c4f8e0 2989@defmac STACK_POINTER_OFFSET
feca2ed3
JW
2990Offset from the stack pointer register to the first location at which
2991outgoing arguments are placed. If not specified, the default value of
2992zero is used. This is the proper value for most machines.
2993
2994If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
2995the first location at which outgoing arguments are placed.
a2c4f8e0 2996@end defmac
feca2ed3 2997
a2c4f8e0 2998@defmac FIRST_PARM_OFFSET (@var{fundecl})
feca2ed3
JW
2999Offset from the argument pointer register to the first argument's
3000address. On some machines it may depend on the data type of the
3001function.
3002
3003If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
3004the first argument's address.
a2c4f8e0 3005@end defmac
feca2ed3 3006
a2c4f8e0 3007@defmac STACK_DYNAMIC_OFFSET (@var{fundecl})
feca2ed3
JW
3008Offset from the stack pointer register to an item dynamically allocated
3009on the stack, e.g., by @code{alloca}.
3010
3011The default value for this macro is @code{STACK_POINTER_OFFSET} plus the
3012length of the outgoing arguments. The default is correct for most
3013machines. See @file{function.c} for details.
a2c4f8e0 3014@end defmac
feca2ed3 3015
c6d01079
AK
3016@defmac INITIAL_FRAME_ADDRESS_RTX
3017A C expression whose value is RTL representing the address of the initial
083cad55 3018stack frame. This address is passed to @code{RETURN_ADDR_RTX} and
c8f27794
JW
3019@code{DYNAMIC_CHAIN_ADDRESS}. If you don't define this macro, a reasonable
3020default value will be used. Define this macro in order to make frame pointer
083cad55 3021elimination work in the presence of @code{__builtin_frame_address (count)} and
c8f27794 3022@code{__builtin_return_address (count)} for @code{count} not equal to zero.
c6d01079
AK
3023@end defmac
3024
a2c4f8e0 3025@defmac DYNAMIC_CHAIN_ADDRESS (@var{frameaddr})
feca2ed3
JW
3026A C expression whose value is RTL representing the address in a stack
3027frame where the pointer to the caller's frame is stored. Assume that
3028@var{frameaddr} is an RTL expression for the address of the stack frame
3029itself.
3030
3031If you don't define this macro, the default is to return the value
3032of @var{frameaddr}---that is, the stack frame address is also the
3033address of the stack word that points to the previous frame.
a2c4f8e0 3034@end defmac
feca2ed3 3035
a2c4f8e0 3036@defmac SETUP_FRAME_ADDRESSES
feca2ed3
JW
3037If defined, a C expression that produces the machine-specific code to
3038setup the stack so that arbitrary frames can be accessed. For example,
981f6289 3039on the SPARC, we must flush all of the register windows to the stack
0bc02db4
MS
3040before we can access arbitrary stack frames. You will seldom need to
3041define this macro.
a2c4f8e0 3042@end defmac
0bc02db4 3043
d6da68b9
KH
3044@deftypefn {Target Hook} bool TARGET_BUILTIN_SETJMP_FRAME_VALUE ()
3045This target hook should return an rtx that is used to store
0bc02db4
MS
3046the address of the current frame into the built in @code{setjmp} buffer.
3047The default value, @code{virtual_stack_vars_rtx}, is correct for most
d6da68b9 3048machines. One reason you may need to define this target hook is if
0bc02db4 3049@code{hard_frame_pointer_rtx} is the appropriate value on your machine.
d6da68b9 3050@end deftypefn
feca2ed3 3051
224869d9
EB
3052@defmac FRAME_ADDR_RTX (@var{frameaddr})
3053A C expression whose value is RTL representing the value of the frame
3054address for the current frame. @var{frameaddr} is the frame pointer
3055of the current frame. This is used for __builtin_frame_address.
3056You need only define this macro if the frame address is not the same
3057as the frame pointer. Most machines do not need to define it.
3058@end defmac
3059
a2c4f8e0 3060@defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
feca2ed3 3061A C expression whose value is RTL representing the value of the return
861bb6c1
JL
3062address for the frame @var{count} steps up from the current frame, after
3063the prologue. @var{frameaddr} is the frame pointer of the @var{count}
3064frame, or the frame pointer of the @var{count} @minus{} 1 frame if
feca2ed3
JW
3065@code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
3066
e9a25f70
JL
3067The value of the expression must always be the correct address when
3068@var{count} is zero, but may be @code{NULL_RTX} if there is not way to
3069determine the return address of other frames.
a2c4f8e0 3070@end defmac
e9a25f70 3071
a2c4f8e0 3072@defmac RETURN_ADDR_IN_PREVIOUS_FRAME
feca2ed3
JW
3073Define this if the return address of a particular stack frame is accessed
3074from the frame pointer of the previous stack frame.
a2c4f8e0 3075@end defmac
861bb6c1 3076
a2c4f8e0 3077@defmac INCOMING_RETURN_ADDR_RTX
861bb6c1
JL
3078A C expression whose value is RTL representing the location of the
3079incoming return address at the beginning of any function, before the
3080prologue. This RTL is either a @code{REG}, indicating that the return
3081value is saved in @samp{REG}, or a @code{MEM} representing a location in
3082the stack.
3083
3084You only need to define this macro if you want to support call frame
3085debugging information like that provided by DWARF 2.
3086
2c849145 3087If this RTL is a @code{REG}, you should also define
aee96fe9 3088@code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}.
a2c4f8e0 3089@end defmac
2c849145 3090
ed80cd68 3091@defmac DWARF_ALT_FRAME_RETURN_COLUMN
73774972 3092A C expression whose value is an integer giving a DWARF 2 column
ed80cd68 3093number that may be used as an alternate return column. This should
73774972 3094be defined only if @code{DWARF_FRAME_RETURN_COLUMN} is set to a
ed80cd68
RH
3095general register, but an alternate column needs to be used for
3096signal frames.
3097@end defmac
3098
282efe1c
RH
3099@defmac DWARF_ZERO_REG
3100A C expression whose value is an integer giving a DWARF 2 register
3101number that is considered to always have the value zero. This should
3102only be defined if the target has an architected zero register, and
3103someone decided it was a good idea to use that register number to
3104terminate the stack backtrace. New ports should avoid this.
3105@end defmac
3106
e54c7471
EB
3107@deftypefn {Target Hook} void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char *@var{label}, rtx @var{pattern}, int @var{index})
3108This target hook allows the backend to emit frame-related insns that
3109contain UNSPECs or UNSPEC_VOLATILEs. The DWARF 2 call frame debugging
3110info engine will invoke it on insns of the form
3111@smallexample
3112(set (reg) (unspec [...] UNSPEC_INDEX))
3113@end smallexample
3114and
3115@smallexample
3116(set (reg) (unspec_volatile [...] UNSPECV_INDEX)).
3117@end smallexample
3118to let the backend emit the call frame instructions. @var{label} is
3119the CFI label attached to the insn, @var{pattern} is the pattern of
3120the insn and @var{index} is @code{UNSPEC_INDEX} or @code{UNSPECV_INDEX}.
3121@end deftypefn
3122
a2c4f8e0 3123@defmac INCOMING_FRAME_SP_OFFSET
861bb6c1
JL
3124A C expression whose value is an integer giving the offset, in bytes,
3125from the value of the stack pointer register to the top of the stack
3126frame at the beginning of any function, before the prologue. The top of
3127the frame is defined to be the value of the stack pointer in the
3128previous frame, just before the call instruction.
3129
71038426
RH
3130You only need to define this macro if you want to support call frame
3131debugging information like that provided by DWARF 2.
a2c4f8e0 3132@end defmac
71038426 3133
a2c4f8e0 3134@defmac ARG_POINTER_CFA_OFFSET (@var{fundecl})
71038426
RH
3135A C expression whose value is an integer giving the offset, in bytes,
3136from the argument pointer to the canonical frame address (cfa). The
02f52e19 3137final value should coincide with that calculated by
71038426
RH
3138@code{INCOMING_FRAME_SP_OFFSET}. Which is unfortunately not usable
3139during virtual register instantiation.
3140
2c849145
JM
3141The default value for this macro is @code{FIRST_PARM_OFFSET (fundecl)},
3142which is correct for most machines; in general, the arguments are found
208e52d9
JM
3143immediately before the stack frame. Note that this is not the case on
3144some targets that save registers into the caller's frame, such as SPARC
3145and rs6000, and so such targets need to define this macro.
2c849145 3146
208e52d9 3147You only need to define this macro if the default is incorrect, and you
2c849145
JM
3148want to support call frame debugging information like that provided by
3149DWARF 2.
a2c4f8e0 3150@end defmac
512b62fb 3151
f6672e8e
RH
3152@defmac FRAME_POINTER_CFA_OFFSET (@var{fundecl})
3153If defined, a C expression whose value is an integer giving the offset
3154in bytes from the frame pointer to the canonical frame address (cfa).
6fc0bb99 3155The final value should coincide with that calculated by
f6672e8e
RH
3156@code{INCOMING_FRAME_SP_OFFSET}.
3157
3158Normally the CFA is calculated as an offset from the argument pointer,
083cad55 3159via @code{ARG_POINTER_CFA_OFFSET}, but if the argument pointer is
f6672e8e 3160variable due to the ABI, this may not be possible. If this macro is
6416ae7f 3161defined, it implies that the virtual register instantiation should be
f6672e8e
RH
3162based on the frame pointer instead of the argument pointer. Only one
3163of @code{FRAME_POINTER_CFA_OFFSET} and @code{ARG_POINTER_CFA_OFFSET}
3164should be defined.
3165@end defmac
3166
35d177a2
AO
3167@defmac CFA_FRAME_BASE_OFFSET (@var{fundecl})
3168If defined, a C expression whose value is an integer giving the offset
3169in bytes from the canonical frame address (cfa) to the frame base used
3170in DWARF 2 debug information. The default is zero. A different value
3171may reduce the size of debug information on some ports.
3172@end defmac
3173
7c16328b
RH
3174@node Exception Handling
3175@subsection Exception Handling Support
3176@cindex exception handling
3177
a2c4f8e0 3178@defmac EH_RETURN_DATA_REGNO (@var{N})
52a11cbf
RH
3179A C expression whose value is the @var{N}th register number used for
3180data by exception handlers, or @code{INVALID_REGNUM} if fewer than
3181@var{N} registers are usable.
3182
3183The exception handling library routines communicate with the exception
3184handlers via a set of agreed upon registers. Ideally these registers
3185should be call-clobbered; it is possible to use call-saved registers,
3186but may negatively impact code size. The target must support at least
31872 data registers, but should define 4 if there are enough free registers.
3188
3189You must define this macro if you want to support call frame exception
3190handling like that provided by DWARF 2.
a2c4f8e0 3191@end defmac
52a11cbf 3192
a2c4f8e0 3193@defmac EH_RETURN_STACKADJ_RTX
52a11cbf
RH
3194A C expression whose value is RTL representing a location in which
3195to store a stack adjustment to be applied before function return.
3196This is used to unwind the stack to an exception handler's call frame.
3197It will be assigned zero on code paths that return normally.
3198
02f52e19 3199Typically this is a call-clobbered hard register that is otherwise
52a11cbf
RH
3200untouched by the epilogue, but could also be a stack slot.
3201
34dc173c 3202Do not define this macro if the stack pointer is saved and restored
73774972
EC
3203by the regular prolog and epilog code in the call frame itself; in
3204this case, the exception handling library routines will update the
3205stack location to be restored in place. Otherwise, you must define
3206this macro if you want to support call frame exception handling like
34dc173c 3207that provided by DWARF 2.
a2c4f8e0 3208@end defmac
52a11cbf 3209
a2c4f8e0 3210@defmac EH_RETURN_HANDLER_RTX
52a11cbf 3211A C expression whose value is RTL representing a location in which
02f52e19 3212to store the address of an exception handler to which we should
52a11cbf
RH
3213return. It will not be assigned on code paths that return normally.
3214
3215Typically this is the location in the call frame at which the normal
02f52e19
AJ
3216return address is stored. For targets that return by popping an
3217address off the stack, this might be a memory address just below
52a11cbf 3218the @emph{target} call frame rather than inside the current call
73774972
EC
3219frame. If defined, @code{EH_RETURN_STACKADJ_RTX} will have already
3220been assigned, so it may be used to calculate the location of the
34dc173c 3221target call frame.
52a11cbf
RH
3222
3223Some targets have more complex requirements than storing to an
3224address calculable during initial code generation. In that case
3225the @code{eh_return} instruction pattern should be used instead.
3226
3227If you want to support call frame exception handling, you must
3228define either this macro or the @code{eh_return} instruction pattern.
a2c4f8e0 3229@end defmac
52a11cbf 3230
1e60c057
R
3231@defmac RETURN_ADDR_OFFSET
3232If defined, an integer-valued C expression for which rtl will be generated
3233to add it to the exception handler address before it is searched in the
3234exception handling tables, and to subtract it again from the address before
3235using it to return to the exception handler.
3236@end defmac
3237
a2c4f8e0 3238@defmac ASM_PREFERRED_EH_DATA_FORMAT (@var{code}, @var{global})
2a1ee410
RH
3239This macro chooses the encoding of pointers embedded in the exception
3240handling sections. If at all possible, this should be defined such
3241that the exception handling section will not require dynamic relocations,
3242and so may be read-only.
3243
aee96fe9
JM
3244@var{code} is 0 for data, 1 for code labels, 2 for function pointers.
3245@var{global} is true if the symbol may be affected by dynamic relocations.
2a1ee410
RH
3246The macro should return a combination of the @code{DW_EH_PE_*} defines
3247as found in @file{dwarf2.h}.
3248
ebb48a4d 3249If this macro is not defined, pointers will not be encoded but
2a1ee410 3250represented directly.
a2c4f8e0 3251@end defmac
2a1ee410 3252
a2c4f8e0 3253@defmac ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done})
2a1ee410
RH
3254This macro allows the target to emit whatever special magic is required
3255to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}.
3256Generic code takes care of pc-relative and indirect encodings; this must
3257be defined if the target uses text-relative or data-relative encodings.
3258
aee96fe9
JM
3259This is a C statement that branches to @var{done} if the format was
3260handled. @var{encoding} is the format chosen, @var{size} is the number
3261of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF}
2a1ee410 3262to be emitted.
a2c4f8e0 3263@end defmac
2a1ee410 3264
8662eb14
AM
3265@defmac MD_UNWIND_SUPPORT
3266A string specifying a file to be #include'd in unwind-dw2.c. The file
3267so included typically defines @code{MD_FALLBACK_FRAME_STATE_FOR}.
3268@end defmac
3269
3270@defmac MD_FALLBACK_FRAME_STATE_FOR (@var{context}, @var{fs})
7c16328b
RH
3271This macro allows the target to add cpu and operating system specific
3272code to the call-frame unwinder for use when there is no unwind data
3273available. The most common reason to implement this macro is to unwind
3274through signal frames.
3275
3276This macro is called from @code{uw_frame_state_for} in @file{unwind-dw2.c}
3277and @file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context};
3278@var{fs} is an @code{_Unwind_FrameState}. Examine @code{context->ra}
3279for the address of the code being executed and @code{context->cfa} for
3280the stack pointer value. If the frame can be decoded, the register save
8662eb14
AM
3281addresses should be updated in @var{fs} and the macro should evaluate to
3282@code{_URC_NO_REASON}. If the frame cannot be decoded, the macro should
3283evaluate to @code{_URC_END_OF_STACK}.
8207b189
FS
3284
3285For proper signal handling in Java this macro is accompanied by
3286@code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers.
a2c4f8e0 3287@end defmac
861bb6c1 3288
3950dcdf
JJ
3289@defmac MD_HANDLE_UNWABI (@var{context}, @var{fs})
3290This macro allows the target to add operating system specific code to the
3291call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive,
3292usually used for signal or interrupt frames.
3293
3294This macro is called from @code{uw_update_context} in @file{unwind-ia64.c}.
3295@var{context} is an @code{_Unwind_Context};
3296@var{fs} is an @code{_Unwind_FrameState}. Examine @code{fs->unwabi}
3297for the abi and context in the @code{.unwabi} directive. If the
3298@code{.unwabi} directive can be handled, the register save addresses should
3299be updated in @var{fs}.
3300@end defmac
3301
4746cf84
MA
3302@defmac TARGET_USES_WEAK_UNWIND_INFO
3303A C expression that evaluates to true if the target requires unwind
3304info to be given comdat linkage. Define it to be @code{1} if comdat
3305linkage is necessary. The default is @code{0}.
3306@end defmac
3307
861bb6c1
JL
3308@node Stack Checking
3309@subsection Specifying How Stack Checking is Done
3310
a3a15b4d 3311GCC will check that stack references are within the boundaries of
630d3d5a 3312the stack, if the @option{-fstack-check} is specified, in one of three ways:
861bb6c1
JL
3313
3314@enumerate
3315@item
a3a15b4d 3316If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GCC
861bb6c1
JL
3317will assume that you have arranged for stack checking to be done at
3318appropriate places in the configuration files, e.g., in
08c148a8
NB
3319@code{TARGET_ASM_FUNCTION_PROLOGUE}. GCC will do not other special
3320processing.
861bb6c1
JL
3321
3322@item
3323If @code{STACK_CHECK_BUILTIN} is zero and you defined a named pattern
a3a15b4d 3324called @code{check_stack} in your @file{md} file, GCC will call that
861bb6c1
JL
3325pattern with one argument which is the address to compare the stack
3326value against. You must arrange for this pattern to report an error if
3327the stack pointer is out of range.
3328
3329@item
a3a15b4d 3330If neither of the above are true, GCC will generate code to periodically
861bb6c1
JL
3331``probe'' the stack pointer using the values of the macros defined below.
3332@end enumerate
3333
a3a15b4d 3334Normally, you will use the default values of these macros, so GCC
861bb6c1
JL
3335will use the third approach.
3336
a2c4f8e0 3337@defmac STACK_CHECK_BUILTIN
861bb6c1 3338A nonzero value if stack checking is done by the configuration files in a
02f52e19
AJ
3339machine-dependent manner. You should define this macro if stack checking
3340is require by the ABI of your machine or if you would like to have to stack
a3a15b4d 3341checking in some more efficient way than GCC's portable approach.
861bb6c1 3342The default value of this macro is zero.
a2c4f8e0 3343@end defmac
861bb6c1 3344
a2c4f8e0 3345@defmac STACK_CHECK_PROBE_INTERVAL
a3a15b4d 3346An integer representing the interval at which GCC must generate stack
861bb6c1
JL
3347probe instructions. You will normally define this macro to be no larger
3348than the size of the ``guard pages'' at the end of a stack area. The
3349default value of 4096 is suitable for most systems.
a2c4f8e0 3350@end defmac
861bb6c1 3351
a2c4f8e0 3352@defmac STACK_CHECK_PROBE_LOAD
02f52e19 3353A integer which is nonzero if GCC should perform the stack probe
a3a15b4d 3354as a load instruction and zero if GCC should use a store instruction.
861bb6c1 3355The default is zero, which is the most efficient choice on most systems.
a2c4f8e0 3356@end defmac
861bb6c1 3357
a2c4f8e0 3358@defmac STACK_CHECK_PROTECT
861bb6c1
JL
3359The number of bytes of stack needed to recover from a stack overflow,
3360for languages where such a recovery is supported. The default value of
336175 words should be adequate for most machines.
a2c4f8e0 3362@end defmac
861bb6c1 3363
a2c4f8e0 3364@defmac STACK_CHECK_MAX_FRAME_SIZE
a3a15b4d 3365The maximum size of a stack frame, in bytes. GCC will generate probe
861bb6c1
JL
3366instructions in non-leaf functions to ensure at least this many bytes of
3367stack are available. If a stack frame is larger than this size, stack
a3a15b4d
JL
3368checking will not be reliable and GCC will issue a warning. The
3369default is chosen so that GCC only generates one instruction on most
861bb6c1 3370systems. You should normally not change the default value of this macro.
a2c4f8e0 3371@end defmac
861bb6c1 3372
a2c4f8e0 3373@defmac STACK_CHECK_FIXED_FRAME_SIZE
a3a15b4d 3374GCC uses this value to generate the above warning message. It
861bb6c1
JL
3375represents the amount of fixed frame used by a function, not including
3376space for any callee-saved registers, temporaries and user variables.
3377You need only specify an upper bound for this amount and will normally
3378use the default of four words.
a2c4f8e0 3379@end defmac
861bb6c1 3380
a2c4f8e0 3381@defmac STACK_CHECK_MAX_VAR_SIZE
a3a15b4d 3382The maximum size, in bytes, of an object that GCC will place in the
861bb6c1 3383fixed area of the stack frame when the user specifies
630d3d5a 3384@option{-fstack-check}.
a3a15b4d 3385GCC computed the default from the values of the above macros and you will
861bb6c1 3386normally not need to override that default.
a2c4f8e0 3387@end defmac
feca2ed3
JW
3388
3389@need 2000
3390@node Frame Registers
3391@subsection Registers That Address the Stack Frame
3392
3393@c prevent bad page break with this line
3394This discusses registers that address the stack frame.
3395
a2c4f8e0 3396@defmac STACK_POINTER_REGNUM
feca2ed3
JW
3397The register number of the stack pointer register, which must also be a
3398fixed register according to @code{FIXED_REGISTERS}. On most machines,
3399the hardware determines which register this is.
a2c4f8e0 3400@end defmac
feca2ed3 3401
a2c4f8e0 3402@defmac FRAME_POINTER_REGNUM
feca2ed3
JW
3403The register number of the frame pointer register, which is used to
3404access automatic variables in the stack frame. On some machines, the
3405hardware determines which register this is. On other machines, you can
3406choose any register you wish for this purpose.
a2c4f8e0 3407@end defmac
feca2ed3 3408
a2c4f8e0 3409@defmac HARD_FRAME_POINTER_REGNUM
feca2ed3
JW
3410On some machines the offset between the frame pointer and starting
3411offset of the automatic variables is not known until after register
3412allocation has been done (for example, because the saved registers are
3413between these two locations). On those machines, define
3414@code{FRAME_POINTER_REGNUM} the number of a special, fixed register to
3415be used internally until the offset is known, and define
556e0f21 3416@code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number
feca2ed3
JW
3417used for the frame pointer.
3418
3419You should define this macro only in the very rare circumstances when it
3420is not possible to calculate the offset between the frame pointer and
3421the automatic variables until after register allocation has been
3422completed. When this macro is defined, you must also indicate in your
3423definition of @code{ELIMINABLE_REGS} how to eliminate
3424@code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM}
3425or @code{STACK_POINTER_REGNUM}.
3426
3427Do not define this macro if it would be the same as
3428@code{FRAME_POINTER_REGNUM}.
a2c4f8e0 3429@end defmac
feca2ed3 3430
a2c4f8e0 3431@defmac ARG_POINTER_REGNUM
feca2ed3
JW
3432The register number of the arg pointer register, which is used to access
3433the function's argument list. On some machines, this is the same as the
3434frame pointer register. On some machines, the hardware determines which
3435register this is. On other machines, you can choose any register you
3436wish for this purpose. If this is not the same register as the frame
3437pointer register, then you must mark it as a fixed register according to
3438@code{FIXED_REGISTERS}, or arrange to be able to eliminate it
3439(@pxref{Elimination}).
a2c4f8e0 3440@end defmac
feca2ed3 3441
a2c4f8e0 3442@defmac RETURN_ADDRESS_POINTER_REGNUM
feca2ed3
JW
3443The register number of the return address pointer register, which is used to
3444access the current function's return address from the stack. On some
3445machines, the return address is not at a fixed offset from the frame
3446pointer or stack pointer or argument pointer. This register can be defined
3447to point to the return address on the stack, and then be converted by
3448@code{ELIMINABLE_REGS} into either the frame pointer or stack pointer.
3449
3450Do not define this macro unless there is no other way to get the return
3451address from the stack.
a2c4f8e0 3452@end defmac
feca2ed3 3453
a2c4f8e0
ZW
3454@defmac STATIC_CHAIN_REGNUM
3455@defmacx STATIC_CHAIN_INCOMING_REGNUM
feca2ed3
JW
3456Register numbers used for passing a function's static chain pointer. If
3457register windows are used, the register number as seen by the called
3458function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register
3459number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}. If
3460these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need
bd819a4a 3461not be defined.
feca2ed3
JW
3462
3463The static chain register need not be a fixed register.
3464
3465If the static chain is passed in memory, these macros should not be
3466defined; instead, the next two macros should be defined.
a2c4f8e0 3467@end defmac
feca2ed3 3468
a2c4f8e0
ZW
3469@defmac STATIC_CHAIN
3470@defmacx STATIC_CHAIN_INCOMING
feca2ed3
JW
3471If the static chain is passed in memory, these macros provide rtx giving
3472@code{mem} expressions that denote where they are stored.
3473@code{STATIC_CHAIN} and @code{STATIC_CHAIN_INCOMING} give the locations
3474as seen by the calling and called functions, respectively. Often the former
3475will be at an offset from the stack pointer and the latter at an offset from
bd819a4a 3476the frame pointer.
feca2ed3
JW
3477
3478@findex stack_pointer_rtx
3479@findex frame_pointer_rtx
3480@findex arg_pointer_rtx
3481The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and
3482@code{arg_pointer_rtx} will have been initialized prior to the use of these
3483macros and should be used to refer to those items.
3484
3485If the static chain is passed in a register, the two previous macros should
3486be defined instead.
a2c4f8e0 3487@end defmac
919543ab 3488
a2c4f8e0 3489@defmac DWARF_FRAME_REGISTERS
919543ab
AH
3490This macro specifies the maximum number of hard registers that can be
3491saved in a call frame. This is used to size data structures used in
3492DWARF2 exception handling.
3493
3494Prior to GCC 3.0, this macro was needed in order to establish a stable
3495exception handling ABI in the face of adding new hard registers for ISA
3496extensions. In GCC 3.0 and later, the EH ABI is insulated from changes
3497in the number of hard registers. Nevertheless, this macro can still be
3498used to reduce the runtime memory requirements of the exception handling
3499routines, which can be substantial if the ISA contains a lot of
3500registers that are not call-saved.
3501
3502If this macro is not defined, it defaults to
3503@code{FIRST_PSEUDO_REGISTER}.
a2c4f8e0 3504@end defmac
919543ab 3505
a2c4f8e0 3506@defmac PRE_GCC3_DWARF_FRAME_REGISTERS
919543ab
AH
3507
3508This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided
3509for backward compatibility in pre GCC 3.0 compiled code.
3510
3511If this macro is not defined, it defaults to
3512@code{DWARF_FRAME_REGISTERS}.
a2c4f8e0 3513@end defmac
919543ab 3514
a2c4f8e0 3515@defmac DWARF_REG_TO_UNWIND_COLUMN (@var{regno})
41f3a930
AH
3516
3517Define this macro if the target's representation for dwarf registers
3518is different than the internal representation for unwind column.
61aeb06f 3519Given a dwarf register, this macro should return the internal unwind
41f3a930
AH
3520column number to use instead.
3521
73774972 3522See the PowerPC's SPE target for an example.
a2c4f8e0 3523@end defmac
feca2ed3 3524
34c80057
AM
3525@defmac DWARF_FRAME_REGNUM (@var{regno})
3526
3527Define this macro if the target's representation for dwarf registers
3528used in .eh_frame or .debug_frame is different from that used in other
2dd76960 3529debug info sections. Given a GCC hard register number, this macro
34c80057
AM
3530should return the .eh_frame register number. The default is
3531@code{DBX_REGISTER_NUMBER (@var{regno})}.
3532
3533@end defmac
3534
3535@defmac DWARF2_FRAME_REG_OUT (@var{regno}, @var{for_eh})
3536
3537Define this macro to map register numbers held in the call frame info
2dd76960 3538that GCC has collected using @code{DWARF_FRAME_REGNUM} to those that
34c80057 3539should be output in .debug_frame (@code{@var{for_eh}} is zero) and
f676971a 3540.eh_frame (@code{@var{for_eh}} is nonzero). The default is to
34c80057
AM
3541return @code{@var{regno}}.
3542
3543@end defmac
3544
feca2ed3
JW
3545@node Elimination
3546@subsection Eliminating Frame Pointer and Arg Pointer
3547
3548@c prevent bad page break with this line
3549This is about eliminating the frame pointer and arg pointer.
3550
a2c4f8e0 3551@defmac FRAME_POINTER_REQUIRED
feca2ed3
JW
3552A C expression which is nonzero if a function must have and use a frame
3553pointer. This expression is evaluated in the reload pass. If its value is
3554nonzero the function will have a frame pointer.
3555
3556The expression can in principle examine the current function and decide
3557according to the facts, but on most machines the constant 0 or the
3558constant 1 suffices. Use 0 when the machine allows code to be generated
3559with no frame pointer, and doing so saves some time or space. Use 1
3560when there is no possible advantage to avoiding a frame pointer.
3561
3562In certain cases, the compiler does not know how to produce valid code
3563without a frame pointer. The compiler recognizes those cases and
3564automatically gives the function a frame pointer regardless of what
3565@code{FRAME_POINTER_REQUIRED} says. You don't need to worry about
bd819a4a 3566them.
feca2ed3
JW
3567
3568In a function that does not require a frame pointer, the frame pointer
3569register can be allocated for ordinary usage, unless you mark it as a
3570fixed register. See @code{FIXED_REGISTERS} for more information.
a2c4f8e0 3571@end defmac
feca2ed3 3572
feca2ed3 3573@findex get_frame_size
a2c4f8e0 3574@defmac INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
feca2ed3
JW
3575A C statement to store in the variable @var{depth-var} the difference
3576between the frame pointer and the stack pointer values immediately after
3577the function prologue. The value would be computed from information
3578such as the result of @code{get_frame_size ()} and the tables of
3579registers @code{regs_ever_live} and @code{call_used_regs}.
3580
3581If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
3582need not be defined. Otherwise, it must be defined even if
3583@code{FRAME_POINTER_REQUIRED} is defined to always be true; in that
3584case, you may set @var{depth-var} to anything.
a2c4f8e0 3585@end defmac
feca2ed3 3586
a2c4f8e0 3587@defmac ELIMINABLE_REGS
feca2ed3
JW
3588If defined, this macro specifies a table of register pairs used to
3589eliminate unneeded registers that point into the stack frame. If it is not
3590defined, the only elimination attempted by the compiler is to replace
3591references to the frame pointer with references to the stack pointer.
3592
3593The definition of this macro is a list of structure initializations, each
3594of which specifies an original and replacement register.
3595
3596On some machines, the position of the argument pointer is not known until
3597the compilation is completed. In such a case, a separate hard register
3598must be used for the argument pointer. This register can be eliminated by
3599replacing it with either the frame pointer or the argument pointer,
3600depending on whether or not the frame pointer has been eliminated.
3601
3602In this case, you might specify:
3ab51846 3603@smallexample
feca2ed3
JW
3604#define ELIMINABLE_REGS \
3605@{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
3606 @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
3607 @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
3ab51846 3608@end smallexample
feca2ed3
JW
3609
3610Note that the elimination of the argument pointer with the stack pointer is
3611specified first since that is the preferred elimination.
a2c4f8e0 3612@end defmac
feca2ed3 3613
a2c4f8e0 3614@defmac CAN_ELIMINATE (@var{from-reg}, @var{to-reg})
df2a54e9 3615A C expression that returns nonzero if the compiler is allowed to try
feca2ed3
JW
3616to replace register number @var{from-reg} with register number
3617@var{to-reg}. This macro need only be defined if @code{ELIMINABLE_REGS}
3618is defined, and will usually be the constant 1, since most of the cases
3619preventing register elimination are things that the compiler already
3620knows about.
a2c4f8e0 3621@end defmac
feca2ed3 3622
a2c4f8e0 3623@defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
feca2ed3
JW
3624This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}. It
3625specifies the initial difference between the specified pair of
3626registers. This macro must be defined if @code{ELIMINABLE_REGS} is
3627defined.
a2c4f8e0 3628@end defmac
feca2ed3
JW
3629
3630@node Stack Arguments
3631@subsection Passing Function Arguments on the Stack
3632@cindex arguments on stack
3633@cindex stack arguments
3634
3635The macros in this section control how arguments are passed
3636on the stack. See the following section for other macros that
3637control passing certain arguments in registers.
3638
61f71b34
DD
3639@deftypefn {Target Hook} bool TARGET_PROMOTE_PROTOTYPES (tree @var{fntype})
3640This target hook returns @code{true} if an argument declared in a
3641prototype as an integral type smaller than @code{int} should actually be
3642passed as an @code{int}. In addition to avoiding errors in certain
3643cases of mismatch, it also makes for better code on certain machines.
3644The default is to not promote prototypes.
3645@end deftypefn
feca2ed3 3646
a2c4f8e0 3647@defmac PUSH_ARGS
767094dd 3648A C expression. If nonzero, push insns will be used to pass
f73ad30e
JH
3649outgoing arguments.
3650If the target machine does not have a push instruction, set it to zero.
3651That directs GCC to use an alternate strategy: to
3652allocate the entire argument block and then store the arguments into
aee96fe9 3653it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too.
a2c4f8e0 3654@end defmac
f73ad30e 3655
9d6bef95
JM
3656@defmac PUSH_ARGS_REVERSED
3657A C expression. If nonzero, function arguments will be evaluated from
3658last to first, rather than from first to last. If this macro is not
3659defined, it defaults to @code{PUSH_ARGS} on targets where the stack
3660and args grow in opposite directions, and 0 otherwise.
3661@end defmac
3662
a2c4f8e0 3663@defmac PUSH_ROUNDING (@var{npushed})
feca2ed3
JW
3664A C expression that is the number of bytes actually pushed onto the
3665stack when an instruction attempts to push @var{npushed} bytes.
feca2ed3
JW
3666
3667On some machines, the definition
3668
3ab51846 3669@smallexample
feca2ed3 3670#define PUSH_ROUNDING(BYTES) (BYTES)
3ab51846 3671@end smallexample
feca2ed3
JW
3672
3673@noindent
3674will suffice. But on other machines, instructions that appear
3675to push one byte actually push two bytes in an attempt to maintain
3676alignment. Then the definition should be
3677
3ab51846 3678@smallexample
feca2ed3 3679#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
3ab51846 3680@end smallexample
a2c4f8e0 3681@end defmac
feca2ed3 3682
feca2ed3 3683@findex current_function_outgoing_args_size
a2c4f8e0 3684@defmac ACCUMULATE_OUTGOING_ARGS
767094dd 3685A C expression. If nonzero, the maximum amount of space required for outgoing arguments
feca2ed3
JW
3686will be computed and placed into the variable
3687@code{current_function_outgoing_args_size}. No space will be pushed
3688onto the stack for each call; instead, the function prologue should
3689increase the stack frame size by this amount.
3690
f73ad30e 3691Setting both @code{PUSH_ARGS} and @code{ACCUMULATE_OUTGOING_ARGS}
feca2ed3 3692is not proper.
a2c4f8e0 3693@end defmac
feca2ed3 3694
a2c4f8e0 3695@defmac REG_PARM_STACK_SPACE (@var{fndecl})
feca2ed3
JW
3696Define this macro if functions should assume that stack space has been
3697allocated for arguments even when their values are passed in
3698registers.
3699
3700The value of this macro is the size, in bytes, of the area reserved for
ab87f8c8 3701arguments passed in registers for the function represented by @var{fndecl},
a3a15b4d 3702which can be zero if GCC is calling a library function.
feca2ed3
JW
3703
3704This space can be allocated by the caller, or be a part of the
3705machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says
3706which.
a2c4f8e0 3707@end defmac
feca2ed3
JW
3708@c above is overfull. not sure what to do. --mew 5feb93 did
3709@c something, not sure if it looks good. --mew 10feb93
3710
a2c4f8e0 3711@defmac OUTGOING_REG_PARM_STACK_SPACE
feca2ed3
JW
3712Define this if it is the responsibility of the caller to allocate the area
3713reserved for arguments passed in registers.
3714
3715If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls
3716whether the space for these arguments counts in the value of
3717@code{current_function_outgoing_args_size}.
a2c4f8e0 3718@end defmac
feca2ed3 3719
a2c4f8e0 3720@defmac STACK_PARMS_IN_REG_PARM_AREA
feca2ed3
JW
3721Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the
3722stack parameters don't skip the area specified by it.
3723@c i changed this, makes more sens and it should have taken care of the
3724@c overfull.. not as specific, tho. --mew 5feb93
3725
3726Normally, when a parameter is not passed in registers, it is placed on the
3727stack beyond the @code{REG_PARM_STACK_SPACE} area. Defining this macro
3728suppresses this behavior and causes the parameter to be passed on the
3729stack in its natural location.
a2c4f8e0 3730@end defmac
feca2ed3 3731
a2c4f8e0 3732@defmac RETURN_POPS_ARGS (@var{fundecl}, @var{funtype}, @var{stack-size})
feca2ed3
JW
3733A C expression that should indicate the number of bytes of its own
3734arguments that a function pops on returning, or 0 if the
3735function pops no arguments and the caller must therefore pop them all
3736after the function returns.
3737
3738@var{fundecl} is a C variable whose value is a tree node that describes
3739the function in question. Normally it is a node of type
3740@code{FUNCTION_DECL} that describes the declaration of the function.
91d231cb 3741From this you can obtain the @code{DECL_ATTRIBUTES} of the function.
feca2ed3
JW
3742
3743@var{funtype} is a C variable whose value is a tree node that
3744describes the function in question. Normally it is a node of type
3745@code{FUNCTION_TYPE} that describes the data type of the function.
3746From this it is possible to obtain the data types of the value and
3747arguments (if known).
3748
861bb6c1 3749When a call to a library function is being considered, @var{fundecl}
feca2ed3
JW
3750will contain an identifier node for the library function. Thus, if
3751you need to distinguish among various library functions, you can do so
3752by their names. Note that ``library function'' in this context means
3753a function used to perform arithmetic, whose name is known specially
3754in the compiler and was not mentioned in the C code being compiled.
3755
3756@var{stack-size} is the number of bytes of arguments passed on the
3757stack. If a variable number of bytes is passed, it is zero, and
3758argument popping will always be the responsibility of the calling function.
3759
8aeea6e6 3760On the VAX, all functions always pop their arguments, so the definition
feca2ed3
JW
3761of this macro is @var{stack-size}. On the 68000, using the standard
3762calling convention, no functions pop their arguments, so the value of
3763the macro is always 0 in this case. But an alternative calling
3764convention is available in which functions that take a fixed number of
3765arguments pop them but other functions (such as @code{printf}) pop
3766nothing (the caller pops all). When this convention is in use,
3767@var{funtype} is examined to determine whether a function takes a fixed
3768number of arguments.
a2c4f8e0 3769@end defmac
fa5322fa 3770
a2c4f8e0 3771@defmac CALL_POPS_ARGS (@var{cum})
fa5322fa
AO
3772A C expression that should indicate the number of bytes a call sequence
3773pops off the stack. It is added to the value of @code{RETURN_POPS_ARGS}
3774when compiling a function call.
3775
3776@var{cum} is the variable in which all arguments to the called function
3777have been accumulated.
3778
3779On certain architectures, such as the SH5, a call trampoline is used
3780that pops certain registers off the stack, depending on the arguments
3781that have been passed to the function. Since this is a property of the
3782call site, not of the called function, @code{RETURN_POPS_ARGS} is not
3783appropriate.
a2c4f8e0 3784@end defmac
feca2ed3
JW
3785
3786@node Register Arguments
3787@subsection Passing Arguments in Registers
3788@cindex arguments in registers
3789@cindex registers arguments
3790
3791This section describes the macros which let you control how various
3792types of arguments are passed in registers or how they are arranged in
3793the stack.
3794
a2c4f8e0 3795@defmac FUNCTION_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3796A C expression that controls whether a function argument is passed
3797in a register, and which register.
3798
3799The arguments are @var{cum}, which summarizes all the previous
3800arguments; @var{mode}, the machine mode of the argument; @var{type},
3801the data type of the argument as a tree node or 0 if that is not known
3802(which happens for C support library functions); and @var{named},
3803which is 1 for an ordinary argument and 0 for nameless arguments that
3804correspond to @samp{@dots{}} in the called function's prototype.
3719d27b
JO
3805@var{type} can be an incomplete type if a syntax error has previously
3806occurred.
feca2ed3
JW
3807
3808The value of the expression is usually either a @code{reg} RTX for the
3809hard register in which to pass the argument, or zero to pass the
3810argument on the stack.
3811
8aeea6e6 3812For machines like the VAX and 68000, where normally all arguments are
feca2ed3
JW
3813pushed, zero suffices as a definition.
3814
161d7b59 3815The value of the expression can also be a @code{parallel} RTX@. This is
feca2ed3 3816used when an argument is passed in multiple locations. The mode of the
ce376beb 3817@code{parallel} should be the mode of the entire argument. The
feca2ed3 3818@code{parallel} holds any number of @code{expr_list} pairs; each one
f797c10b
NC
3819describes where part of the argument is passed. In each
3820@code{expr_list} the first operand must be a @code{reg} RTX for the hard
3821register in which to pass this part of the argument, and the mode of the
3822register RTX indicates how large this part of the argument is. The
3823second operand of the @code{expr_list} is a @code{const_int} which gives
3824the offset in bytes into the entire argument of where this part starts.
02f52e19 3825As a special exception the first @code{expr_list} in the @code{parallel}
c980b85b
NC
3826RTX may have a first operand of zero. This indicates that the entire
3827argument is also stored on the stack.
feca2ed3 3828
1cc5e432
GK
3829The last time this macro is called, it is called with @code{MODE ==
3830VOIDmode}, and its result is passed to the @code{call} or @code{call_value}
3831pattern as operands 2 and 3 respectively.
3832
feca2ed3 3833@cindex @file{stdarg.h} and register arguments
5490d604 3834The usual way to make the ISO library @file{stdarg.h} work on a machine
feca2ed3
JW
3835where some arguments are usually passed in registers, is to cause
3836nameless arguments to be passed on the stack instead. This is done
3837by making @code{FUNCTION_ARG} return 0 whenever @var{named} is 0.
3838
fe984136 3839@cindex @code{TARGET_MUST_PASS_IN_STACK}, and @code{FUNCTION_ARG}
feca2ed3 3840@cindex @code{REG_PARM_STACK_SPACE}, and @code{FUNCTION_ARG}
fe984136 3841You may use the hook @code{targetm.calls.must_pass_in_stack}
feca2ed3
JW
3842in the definition of this macro to determine if this argument is of a
3843type that must be passed in the stack. If @code{REG_PARM_STACK_SPACE}
df2a54e9 3844is not defined and @code{FUNCTION_ARG} returns nonzero for such an
feca2ed3
JW
3845argument, the compiler will abort. If @code{REG_PARM_STACK_SPACE} is
3846defined, the argument will be computed in the stack and then loaded into
3847a register.
a2c4f8e0 3848@end defmac
feca2ed3 3849
fe984136
RH
3850@deftypefn {Target Hook} bool TARGET_MUST_PASS_IN_STACK (enum machine_mode @var{mode}, tree @var{type})
3851This target hook should return @code{true} if we should not pass @var{type}
3852solely in registers. The file @file{expr.h} defines a
d9a4ee00
JL
3853definition that is usually appropriate, refer to @file{expr.h} for additional
3854documentation.
fe984136 3855@end deftypefn
d9a4ee00 3856
a2c4f8e0 3857@defmac FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3858Define this macro if the target machine has ``register windows'', so
3859that the register in which a function sees an arguments is not
3860necessarily the same as the one in which the caller passed the
3861argument.
3862
3863For such machines, @code{FUNCTION_ARG} computes the register in which
3864the caller passes the value, and @code{FUNCTION_INCOMING_ARG} should
3865be defined in a similar fashion to tell the function being called
3866where the arguments will arrive.
3867
3868If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG}
bd819a4a 3869serves both purposes.
a2c4f8e0 3870@end defmac
feca2ed3 3871
78a52f11
RH
3872@deftypefn {Target Hook} int TARGET_ARG_PARTIAL_BYTES (CUMULATIVE_ARGS *@var{cum}, enum machine_mode @var{mode}, tree @var{type}, bool @var{named})
3873This target hook returns the number of bytes at the beginning of an
3874argument that must be put in registers. The value must be zero for
feca2ed3
JW
3875arguments that are passed entirely in registers or that are entirely
3876pushed on the stack.
3877
3878On some machines, certain arguments must be passed partially in
3879registers and partially in memory. On these machines, typically the
78a52f11 3880first few words of arguments are passed in registers, and the rest
feca2ed3
JW
3881on the stack. If a multi-word argument (a @code{double} or a
3882structure) crosses that boundary, its first few words must be passed
3883in registers and the rest must be pushed. This macro tells the
78a52f11 3884compiler when this occurs, and how many bytes should go in registers.
feca2ed3
JW
3885
3886@code{FUNCTION_ARG} for these arguments should return the first
3887register to be used by the caller for this argument; likewise
3888@code{FUNCTION_INCOMING_ARG}, for the called function.
78a52f11 3889@end deftypefn
feca2ed3 3890
8cd5a4e0 3891@deftypefn {Target Hook} bool TARGET_PASS_BY_REFERENCE (CUMULATIVE_ARGS *@var{cum}, enum machine_mode @var{mode}, tree @var{type}, bool @var{named})
f676971a 3892This target hook should return @code{true} if an argument at the
8cd5a4e0 3893position indicated by @var{cum} should be passed by reference. This
f676971a 3894predicate is queried after target independent reasons for being
8cd5a4e0
RH
3895passed by reference, such as @code{TREE_ADDRESSABLE (type)}.
3896
3897If the hook returns true, a copy of that argument is made in memory and a
feca2ed3
JW
3898pointer to the argument is passed instead of the argument itself.
3899The pointer is passed in whatever way is appropriate for passing a pointer
3900to that type.
8cd5a4e0 3901@end deftypefn
feca2ed3 3902
6cdd5672
RH
3903@deftypefn {Target Hook} bool TARGET_CALLEE_COPIES (CUMULATIVE_ARGS *@var{cum}, enum machine_mode @var{mode}, tree @var{type}, bool @var{named})
3904The function argument described by the parameters to this hook is
3905known to be passed by reference. The hook should return true if the
3906function argument should be copied by the callee instead of copied
3907by the caller.
3908
a1c496cb 3909For any argument for which the hook returns true, if it can be
6cdd5672
RH
3910determined that the argument is not modified, then a copy need
3911not be generated.
3912
3913The default version of this hook always returns false.
3914@end deftypefn
feca2ed3 3915
a2c4f8e0 3916@defmac CUMULATIVE_ARGS
feca2ed3
JW
3917A C type for declaring a variable that is used as the first argument of
3918@code{FUNCTION_ARG} and other related values. For some target machines,
3919the type @code{int} suffices and can hold the number of bytes of
3920argument so far.
3921
3922There is no need to record in @code{CUMULATIVE_ARGS} anything about the
3923arguments that have been passed on the stack. The compiler has other
3924variables to keep track of that. For target machines on which all
3925arguments are passed on the stack, there is no need to store anything in
3926@code{CUMULATIVE_ARGS}; however, the data structure must exist and
3927should not be empty, so use @code{int}.
a2c4f8e0 3928@end defmac
feca2ed3 3929
0f6937fe 3930@defmac INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{fndecl}, @var{n_named_args})
a2c4f8e0
ZW
3931A C statement (sans semicolon) for initializing the variable
3932@var{cum} for the state at the beginning of the argument list. The
3933variable has type @code{CUMULATIVE_ARGS}. The value of @var{fntype}
3934is the tree node for the data type of the function which will receive
3935the args, or 0 if the args are to a compiler support library function.
3936For direct calls that are not libcalls, @var{fndecl} contain the
3937declaration node of the function. @var{fndecl} is also set when
3938@code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function
0f6937fe
AM
3939being compiled. @var{n_named_args} is set to the number of named
3940arguments, including a structure return address if it is passed as a
3941parameter, when making a call. When processing incoming arguments,
78466c0e 3942@var{n_named_args} is set to @minus{}1.
feca2ed3
JW
3943
3944When processing a call to a compiler support library function,
3945@var{libname} identifies which one. It is a @code{symbol_ref} rtx which
3946contains the name of the function, as a string. @var{libname} is 0 when
3947an ordinary C function call is being processed. Thus, each time this
3948macro is called, either @var{libname} or @var{fntype} is nonzero, but
3949never both of them at once.
a2c4f8e0 3950@end defmac
feca2ed3 3951
a2c4f8e0 3952@defmac INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname})
97fc4caf
AO
3953Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls,
3954it gets a @code{MODE} argument instead of @var{fntype}, that would be
3955@code{NULL}. @var{indirect} would always be zero, too. If this macro
3956is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname,
39570)} is used instead.
a2c4f8e0 3958@end defmac
97fc4caf 3959
a2c4f8e0 3960@defmac INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
feca2ed3
JW
3961Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of
3962finding the arguments for the function being compiled. If this macro is
3963undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
3964
3965The value passed for @var{libname} is always 0, since library routines
161d7b59 3966with special calling conventions are never compiled with GCC@. The
feca2ed3
JW
3967argument @var{libname} exists for symmetry with
3968@code{INIT_CUMULATIVE_ARGS}.
3969@c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
3970@c --mew 5feb93 i switched the order of the sentences. --mew 10feb93
a2c4f8e0 3971@end defmac
feca2ed3 3972
a2c4f8e0 3973@defmac FUNCTION_ARG_ADVANCE (@var{cum}, @var{mode}, @var{type}, @var{named})
feca2ed3
JW
3974A C statement (sans semicolon) to update the summarizer variable
3975@var{cum} to advance past an argument in the argument list. The
3976values @var{mode}, @var{type} and @var{named} describe that argument.
3977Once this is done, the variable @var{cum} is suitable for analyzing
bd819a4a 3978the @emph{following} argument with @code{FUNCTION_ARG}, etc.
feca2ed3
JW
3979
3980This macro need not do anything if the argument in question was passed
3981on the stack. The compiler knows how to track the amount of stack space
3982used for arguments without any special help.
a2c4f8e0 3983@end defmac
feca2ed3 3984
a2c4f8e0 3985@defmac FUNCTION_ARG_PADDING (@var{mode}, @var{type})
feca2ed3
JW
3986If defined, a C expression which determines whether, and in which direction,
3987to pad out an argument with extra space. The value should be of type
3988@code{enum direction}: either @code{upward} to pad above the argument,
3989@code{downward} to pad below, or @code{none} to inhibit padding.
3990
3991The @emph{amount} of padding is always just enough to reach the next
3992multiple of @code{FUNCTION_ARG_BOUNDARY}; this macro does not control
3993it.
3994
3995This macro has a default definition which is right for most systems.
3996For little-endian machines, the default is to pad upward. For
3997big-endian machines, the default is to pad downward for an argument of
3998constant size shorter than an @code{int}, and upward otherwise.
a2c4f8e0 3999@end defmac
feca2ed3 4000
a2c4f8e0 4001@defmac PAD_VARARGS_DOWN
02f52e19
AJ
4002If defined, a C expression which determines whether the default
4003implementation of va_arg will attempt to pad down before reading the
5e4f6244
CP
4004next argument, if that argument is smaller than its aligned space as
4005controlled by @code{PARM_BOUNDARY}. If this macro is not defined, all such
4006arguments are padded down if @code{BYTES_BIG_ENDIAN} is true.
a2c4f8e0 4007@end defmac
5e4f6244 4008
6e985040
AM
4009@defmac BLOCK_REG_PADDING (@var{mode}, @var{type}, @var{first})
4010Specify padding for the last element of a block move between registers and
4011memory. @var{first} is nonzero if this is the only element. Defining this
4012macro allows better control of register function parameters on big-endian
4013machines, without using @code{PARALLEL} rtl. In particular,
4014@code{MUST_PASS_IN_STACK} need not test padding and mode of types in
4015registers, as there is no longer a "wrong" part of a register; For example,
4016a three byte aggregate may be passed in the high part of a register if so
4017required.
4018@end defmac
4019
a2c4f8e0 4020@defmac FUNCTION_ARG_BOUNDARY (@var{mode}, @var{type})
feca2ed3
JW
4021If defined, a C expression that gives the alignment boundary, in bits,
4022of an argument with the specified mode and type. If it is not defined,
4023@code{PARM_BOUNDARY} is used for all arguments.
a2c4f8e0 4024@end defmac
feca2ed3 4025
a2c4f8e0 4026@defmac FUNCTION_ARG_REGNO_P (@var{regno})
feca2ed3
JW
4027A C expression that is nonzero if @var{regno} is the number of a hard
4028register in which function arguments are sometimes passed. This does
4029@emph{not} include implicit arguments such as the static chain and
4030the structure-value address. On many machines, no registers can be
4031used for this purpose since all function arguments are pushed on the
4032stack.
a2c4f8e0 4033@end defmac
bb1b857a 4034
42ba5130
RH
4035@deftypefn {Target Hook} bool TARGET_SPLIT_COMPLEX_ARG (tree @var{type})
4036This hook should return true if parameter of type @var{type} are passed
4037as two scalar parameters. By default, GCC will attempt to pack complex
4038arguments into the target's word size. Some ABIs require complex arguments
4039to be split and treated as their individual components. For example, on
4040AIX64, complex floats should be passed in a pair of floating point
4041registers, even though a complex float would fit in one 64-bit floating
4042point register.
4043
4044The default value of this hook is @code{NULL}, which is treated as always
4045false.
4046@end deftypefn
ded9bf77 4047
d3da4d14
RH
4048@deftypefn {Target Hook} tree TARGET_BUILD_BUILTIN_VA_LIST (void)
4049This hook returns a type node for @code{va_list} for the target.
4050The default version of the hook returns @code{void*}.
4051@end deftypefn
4052
23a60a04
JM
4053@deftypefn {Target Hook} tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree @var{valist}, tree @var{type}, tree *@var{pre_p}, tree *@var{post_p})
4054This hook performs target-specific gimplification of
4055@code{VA_ARG_EXPR}. The first two parameters correspond to the
4056arguments to @code{va_arg}; the latter two are as in
4057@code{gimplify.c:gimplify_expr}.
23a60a04
JM
4058@end deftypefn
4059
e09ec166
EC
4060@deftypefn {Target Hook} bool TARGET_VALID_POINTER_MODE (enum machine_mode @var{mode})
4061Define this to return nonzero if the port can handle pointers
4062with machine mode @var{mode}. The default version of this
4063hook returns true for both @code{ptr_mode} and @code{Pmode}.
4064@end deftypefn
4065
6dd53648
RH
4066@deftypefn {Target Hook} bool TARGET_SCALAR_MODE_SUPPORTED_P (enum machine_mode @var{mode})
4067Define this to return nonzero if the port is prepared to handle
4068insns involving scalar mode @var{mode}. For a scalar mode to be
4069considered supported, all the basic arithmetic and comparisons
4070must work.
4071
4072The default version of this hook returns true for any mode
4073required to handle the basic C types (as defined by the port).
4074Included here are the double-word arithmetic supported by the
4075code in @file{optabs.c}.
4076@end deftypefn
4077
f676971a
EC
4078@deftypefn {Target Hook} bool TARGET_VECTOR_MODE_SUPPORTED_P (enum machine_mode @var{mode})
4079Define this to return nonzero if the port is prepared to handle
4080insns involving vector mode @var{mode}. At the very least, it
4081must have move patterns for this mode.
4082@end deftypefn
4083
feca2ed3
JW
4084@node Scalar Return
4085@subsection How Scalar Function Values Are Returned
4086@cindex return values in registers
4087@cindex values, returned by functions
4088@cindex scalars, returned as values
4089
4090This section discusses the macros that control returning scalars as
4091values---values that can fit in registers.
4092
0b35aac2 4093@deftypefn {Target Hook} rtx TARGET_FUNCTION_VALUE (tree @var{ret_type}, tree @var{fn_decl_or_type}, bool @var{outgoing})
1b03c58a
RG
4094
4095Define this to return an RTX representing the place where a function
4096returns or receives a value of data type @var{ret_type}, a tree node
4097node representing a data type. @var{fn_decl_or_type} is a tree node
4098representing @code{FUNCTION_DECL} or @code{FUNCTION_TYPE} of a
4099function being called. If @var{outgoing} is false, the hook should
4100compute the register in which the caller will see the return value.
4101Otherwise, the hook should return an RTX representing the place where
4102a function returns a value.
4103
4104On many machines, only @code{TYPE_MODE (@var{ret_type})} is relevant.
4105(Actually, on most machines, scalar values are returned in the same
4106place regardless of mode.) The value of the expression is usually a
4107@code{reg} RTX for the hard register where the return value is stored.
4108The value can also be a @code{parallel} RTX, if the return value is in
4109multiple places. See @code{FUNCTION_ARG} for an explanation of the
576c9028
KH
4110@code{parallel} form. Note that the callee will populate every
4111location specified in the @code{parallel}, but if the first element of
4112the @code{parallel} contains the whole return value, callers will use
4113that element as the canonical location and ignore the others. The m68k
4114port uses this type of @code{parallel} to return pointers in both
4115@samp{%a0} (the canonical location) and @samp{%d0}.
1b03c58a
RG
4116
4117If @code{TARGET_PROMOTE_FUNCTION_RETURN} returns true, you must apply
4118the same promotion rules specified in @code{PROMOTE_MODE} if
4119@var{valtype} is a scalar type.
feca2ed3
JW
4120
4121If the precise function being called is known, @var{func} is a tree
4122node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
4123pointer. This makes it possible to use a different value-returning
4124convention for specific functions when all their calls are
bd819a4a 4125known.
feca2ed3 4126
1b03c58a
RG
4127Some target machines have ``register windows'' so that the register in
4128which a function returns its value is not the same as the one in which
4129the caller sees the value. For such machines, you should return
4130different RTX depending on @var{outgoing}.
4131
4132@code{TARGET_FUNCTION_VALUE} is not used for return values with
4133aggregate data types, because these are returned in another way. See
cea28603 4134@code{TARGET_STRUCT_VALUE_RTX} and related macros, below.
1b03c58a
RG
4135@end deftypefn
4136
4137@defmac FUNCTION_VALUE (@var{valtype}, @var{func})
4138This macro has been deprecated. Use @code{TARGET_FUNCTION_VALUE} for
4139a new target instead.
a2c4f8e0 4140@end defmac
feca2ed3 4141
a2c4f8e0 4142@defmac FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
1b03c58a
RG
4143This macro has been deprecated. Use @code{TARGET_FUNCTION_VALUE} for
4144a new target instead.
a2c4f8e0 4145@end defmac
feca2ed3 4146
a2c4f8e0 4147@defmac LIBCALL_VALUE (@var{mode})
feca2ed3
JW
4148A C expression to create an RTX representing the place where a library
4149function returns a value of mode @var{mode}. If the precise function
4150being called is known, @var{func} is a tree node
4151(@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
4152pointer. This makes it possible to use a different value-returning
4153convention for specific functions when all their calls are
bd819a4a 4154known.
feca2ed3
JW
4155
4156Note that ``library function'' in this context means a compiler
4157support routine, used to perform arithmetic, whose name is known
4158specially by the compiler and was not mentioned in the C code being
4159compiled.
4160
4161The definition of @code{LIBRARY_VALUE} need not be concerned aggregate
4162data types, because none of the library functions returns such types.
a2c4f8e0 4163@end defmac
feca2ed3 4164
a2c4f8e0 4165@defmac FUNCTION_VALUE_REGNO_P (@var{regno})
feca2ed3
JW
4166A C expression that is nonzero if @var{regno} is the number of a hard
4167register in which the values of called function may come back.
4168
4169A register whose use for returning values is limited to serving as the
4170second of a pair (for a value of type @code{double}, say) need not be
4171recognized by this macro. So for most machines, this definition
4172suffices:
4173
3ab51846 4174@smallexample
feca2ed3 4175#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
3ab51846 4176@end smallexample
feca2ed3
JW
4177
4178If the machine has register windows, so that the caller and the called
4179function use different registers for the return value, this macro
4180should recognize only the caller's register numbers.
a2c4f8e0 4181@end defmac
feca2ed3 4182
a2c4f8e0 4183@defmac APPLY_RESULT_SIZE
feca2ed3
JW
4184Define this macro if @samp{untyped_call} and @samp{untyped_return}
4185need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for
4186saving and restoring an arbitrary return value.
a2c4f8e0 4187@end defmac
feca2ed3 4188
c988af2b
RS
4189@deftypefn {Target Hook} bool TARGET_RETURN_IN_MSB (tree @var{type})
4190This hook should return true if values of type @var{type} are returned
4191at the most significant end of a register (in other words, if they are
4192padded at the least significant end). You can assume that @var{type}
4193is returned in a register; the caller is required to check this.
4194
1b03c58a
RG
4195Note that the register provided by @code{TARGET_FUNCTION_VALUE} must
4196be able to hold the complete return value. For example, if a 1-, 2-
4197or 3-byte structure is returned at the most significant end of a
41984-byte register, @code{TARGET_FUNCTION_VALUE} should provide an
4199@code{SImode} rtx.
c988af2b
RS
4200@end deftypefn
4201
feca2ed3
JW
4202@node Aggregate Return
4203@subsection How Large Values Are Returned
4204@cindex aggregates as return values
4205@cindex large return values
4206@cindex returning aggregate values
4207@cindex structure value address
4208
4209When a function value's mode is @code{BLKmode} (and in some other
1b03c58a
RG
4210cases), the value is not returned according to
4211@code{TARGET_FUNCTION_VALUE} (@pxref{Scalar Return}). Instead, the
4212caller passes the address of a block of memory in which the value
4213should be stored. This address is called the @dfn{structure value
4214address}.
feca2ed3
JW
4215
4216This section describes how to control returning structure values in
4217memory.
4218
d624465f 4219@deftypefn {Target Hook} bool TARGET_RETURN_IN_MEMORY (tree @var{type}, tree @var{fntype})
61f71b34
DD
4220This target hook should return a nonzero value to say to return the
4221function value in memory, just as large structures are always returned.
4222Here @var{type} will be the data type of the value, and @var{fntype}
4223will be the type of the function doing the returning, or @code{NULL} for
4224libcalls.
feca2ed3
JW
4225
4226Note that values of mode @code{BLKmode} must be explicitly handled
61f71b34 4227by this function. Also, the option @option{-fpcc-struct-return}
feca2ed3 4228takes effect regardless of this macro. On most systems, it is
61f71b34 4229possible to leave the hook undefined; this causes a default
feca2ed3
JW
4230definition to be used, whose value is the constant 1 for @code{BLKmode}
4231values, and 0 otherwise.
4232
61f71b34 4233Do not use this hook to indicate that structures and unions should always
feca2ed3
JW
4234be returned in memory. You should instead use @code{DEFAULT_PCC_STRUCT_RETURN}
4235to indicate this.
61f71b34 4236@end deftypefn
feca2ed3 4237
a2c4f8e0 4238@defmac DEFAULT_PCC_STRUCT_RETURN
feca2ed3
JW
4239Define this macro to be 1 if all structure and union return values must be
4240in memory. Since this results in slower code, this should be defined
161d7b59 4241only if needed for compatibility with other compilers or with an ABI@.
feca2ed3 4242If you define this macro to be 0, then the conventions used for structure
d624465f
KH
4243and union return values are decided by the @code{TARGET_RETURN_IN_MEMORY}
4244target hook.
feca2ed3
JW
4245
4246If not defined, this defaults to the value 1.
a2c4f8e0 4247@end defmac
feca2ed3 4248
61f71b34
DD
4249@deftypefn {Target Hook} rtx TARGET_STRUCT_VALUE_RTX (tree @var{fndecl}, int @var{incoming})
4250This target hook should return the location of the structure value
4251address (normally a @code{mem} or @code{reg}), or 0 if the address is
4252passed as an ``invisible'' first argument. Note that @var{fndecl} may
1f6acb82
KH
4253be @code{NULL}, for libcalls. You do not need to define this target
4254hook if the address is always passed as an ``invisible'' first
4255argument.
feca2ed3 4256
feca2ed3
JW
4257On some architectures the place where the structure value address
4258is found by the called function is not the same place that the
4259caller put it. This can be due to register windows, or it could
4260be because the function prologue moves it to a different place.
2225b57c
CD
4261@var{incoming} is @code{1} or @code{2} when the location is needed in
4262the context of the called function, and @code{0} in the context of
61f71b34 4263the caller.
feca2ed3 4264
917f1b7e 4265If @var{incoming} is nonzero and the address is to be found on the
2225b57c
CD
4266stack, return a @code{mem} which refers to the frame pointer. If
4267@var{incoming} is @code{2}, the result is being used to fetch the
64ee9490 4268structure value address at the beginning of a function. If you need
2225b57c 4269to emit adjusting code, you should do it at this point.
61f71b34 4270@end deftypefn
feca2ed3 4271
a2c4f8e0 4272@defmac PCC_STATIC_STRUCT_RETURN
feca2ed3
JW
4273Define this macro if the usual system convention on the target machine
4274for returning structures and unions is for the called function to return
4275the address of a static variable containing the value.
4276
4277Do not define this if the usual system convention is for the caller to
4278pass an address to the subroutine.
4279
630d3d5a
JM
4280This macro has effect in @option{-fpcc-struct-return} mode, but it does
4281nothing when you use @option{-freg-struct-return} mode.
a2c4f8e0 4282@end defmac
feca2ed3
JW
4283
4284@node Caller Saves
4285@subsection Caller-Saves Register Allocation
4286
a3a15b4d 4287If you enable it, GCC can save registers around function calls. This
feca2ed3
JW
4288makes it possible to use call-clobbered registers to hold variables that
4289must live across calls.
4290
a2c4f8e0 4291@defmac CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls})
feca2ed3
JW
4292A C expression to determine whether it is worthwhile to consider placing
4293a pseudo-register in a call-clobbered hard register and saving and
4294restoring it around each function call. The expression should be 1 when
4295this is worth doing, and 0 otherwise.
4296
4297If you don't define this macro, a default is used which is good on most
4298machines: @code{4 * @var{calls} < @var{refs}}.
a2c4f8e0 4299@end defmac
8d5c8167 4300
a2c4f8e0 4301@defmac HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs})
8d5c8167
JL
4302A C expression specifying which mode is required for saving @var{nregs}
4303of a pseudo-register in call-clobbered hard register @var{regno}. If
4304@var{regno} is unsuitable for caller save, @code{VOIDmode} should be
4305returned. For most machines this macro need not be defined since GCC
4306will select the smallest suitable mode.
a2c4f8e0 4307@end defmac
feca2ed3
JW
4308
4309@node Function Entry
4310@subsection Function Entry and Exit
4311@cindex function entry and exit
4312@cindex prologue
4313@cindex epilogue
4314
4315This section describes the macros that output function entry
4316(@dfn{prologue}) and exit (@dfn{epilogue}) code.
4317
08c148a8
NB
4318@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_PROLOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
4319If defined, a function that outputs the assembler code for entry to a
feca2ed3
JW
4320function. The prologue is responsible for setting up the stack frame,
4321initializing the frame pointer register, saving registers that must be
4322saved, and allocating @var{size} additional bytes of storage for the
4323local variables. @var{size} is an integer. @var{file} is a stdio
4324stream to which the assembler code should be output.
4325
4326The label for the beginning of the function need not be output by this
4327macro. That has already been done when the macro is run.
4328
4329@findex regs_ever_live
4330To determine which registers to save, the macro can refer to the array
4331@code{regs_ever_live}: element @var{r} is nonzero if hard register
4332@var{r} is used anywhere within the function. This implies the function
4333prologue should save register @var{r}, provided it is not one of the
08c148a8 4334call-used registers. (@code{TARGET_ASM_FUNCTION_EPILOGUE} must likewise use
feca2ed3
JW
4335@code{regs_ever_live}.)
4336
4337On machines that have ``register windows'', the function entry code does
4338not save on the stack the registers that are in the windows, even if
4339they are supposed to be preserved by function calls; instead it takes
4340appropriate steps to ``push'' the register stack, if any non-call-used
4341registers are used in the function.
4342
4343@findex frame_pointer_needed
4344On machines where functions may or may not have frame-pointers, the
4345function entry code must vary accordingly; it must set up the frame
4346pointer if one is wanted, and not otherwise. To determine whether a
4347frame pointer is in wanted, the macro can refer to the variable
4348@code{frame_pointer_needed}. The variable's value will be 1 at run
4349time in a function that needs a frame pointer. @xref{Elimination}.
4350
4351The function entry code is responsible for allocating any stack space
4352required for the function. This stack space consists of the regions
4353listed below. In most cases, these regions are allocated in the
4354order listed, with the last listed region closest to the top of the
4355stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and
4356the highest address if it is not defined). You can use a different order
4357for a machine if doing so is more convenient or required for
4358compatibility reasons. Except in cases where required by standard
4359or by a debugger, there is no reason why the stack layout used by GCC
4360need agree with that used by other compilers for a machine.
08c148a8
NB
4361@end deftypefn
4362
17b53c33
NB
4363@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *@var{file})
4364If defined, a function that outputs assembler code at the end of a
4365prologue. This should be used when the function prologue is being
4366emitted as RTL, and you have some extra assembler that needs to be
4367emitted. @xref{prologue instruction pattern}.
4368@end deftypefn
4369
4370@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *@var{file})
4371If defined, a function that outputs assembler code at the start of an
4372epilogue. This should be used when the function epilogue is being
4373emitted as RTL, and you have some extra assembler that needs to be
4374emitted. @xref{epilogue instruction pattern}.
4375@end deftypefn
4376
08c148a8
NB
4377@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_EPILOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
4378If defined, a function that outputs the assembler code for exit from a
4379function. The epilogue is responsible for restoring the saved
4380registers and stack pointer to their values when the function was
4381called, and returning control to the caller. This macro takes the
4382same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the
4383registers to restore are determined from @code{regs_ever_live} and
4384@code{CALL_USED_REGISTERS} in the same way.
4385
4386On some machines, there is a single instruction that does all the work
4387of returning from the function. On these machines, give that
4388instruction the name @samp{return} and do not define the macro
4389@code{TARGET_ASM_FUNCTION_EPILOGUE} at all.
4390
4391Do not define a pattern named @samp{return} if you want the
4392@code{TARGET_ASM_FUNCTION_EPILOGUE} to be used. If you want the target
4393switches to control whether return instructions or epilogues are used,
4394define a @samp{return} pattern with a validity condition that tests the
4395target switches appropriately. If the @samp{return} pattern's validity
4396condition is false, epilogues will be used.
4397
4398On machines where functions may or may not have frame-pointers, the
4399function exit code must vary accordingly. Sometimes the code for these
4400two cases is completely different. To determine whether a frame pointer
4401is wanted, the macro can refer to the variable
4402@code{frame_pointer_needed}. The variable's value will be 1 when compiling
4403a function that needs a frame pointer.
4404
4405Normally, @code{TARGET_ASM_FUNCTION_PROLOGUE} and
4406@code{TARGET_ASM_FUNCTION_EPILOGUE} must treat leaf functions specially.
4407The C variable @code{current_function_is_leaf} is nonzero for such a
4408function. @xref{Leaf Functions}.
4409
4410On some machines, some functions pop their arguments on exit while
4411others leave that for the caller to do. For example, the 68020 when
4412given @option{-mrtd} pops arguments in functions that take a fixed
4413number of arguments.
4414
4415@findex current_function_pops_args
4416Your definition of the macro @code{RETURN_POPS_ARGS} decides which
4417functions pop their own arguments. @code{TARGET_ASM_FUNCTION_EPILOGUE}
4418needs to know what was decided. The variable that is called
4419@code{current_function_pops_args} is the number of bytes of its
4420arguments that a function should pop. @xref{Scalar Return}.
4421@c what is the "its arguments" in the above sentence referring to, pray
4422@c tell? --mew 5feb93
4423@end deftypefn
4424
feca2ed3
JW
4425@itemize @bullet
4426@item
4427@findex current_function_pretend_args_size
4428A region of @code{current_function_pretend_args_size} bytes of
4429uninitialized space just underneath the first argument arriving on the
4430stack. (This may not be at the very start of the allocated stack region
4431if the calling sequence has pushed anything else since pushing the stack
4432arguments. But usually, on such machines, nothing else has been pushed
4433yet, because the function prologue itself does all the pushing.) This
4434region is used on machines where an argument may be passed partly in
4435registers and partly in memory, and, in some cases to support the
6c535c69 4436features in @code{<stdarg.h>}.
feca2ed3
JW
4437
4438@item
4439An area of memory used to save certain registers used by the function.
4440The size of this area, which may also include space for such things as
4441the return address and pointers to previous stack frames, is
4442machine-specific and usually depends on which registers have been used
4443in the function. Machines with register windows often do not require
4444a save area.
4445
4446@item
4447A region of at least @var{size} bytes, possibly rounded up to an allocation
4448boundary, to contain the local variables of the function. On some machines,
4449this region and the save area may occur in the opposite order, with the
4450save area closer to the top of the stack.
4451
4452@item
4453@cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
4454Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
4455@code{current_function_outgoing_args_size} bytes to be used for outgoing
4456argument lists of the function. @xref{Stack Arguments}.
4457@end itemize
4458
a2c4f8e0 4459@defmac EXIT_IGNORE_STACK
feca2ed3
JW
4460Define this macro as a C expression that is nonzero if the return
4461instruction or the function epilogue ignores the value of the stack
4462pointer; in other words, if it is safe to delete an instruction to
9d05bbce
KH
4463adjust the stack pointer before a return from the function. The
4464default is 0.
feca2ed3
JW
4465
4466Note that this macro's value is relevant only for functions for which
4467frame pointers are maintained. It is never safe to delete a final
4468stack adjustment in a function that has no frame pointer, and the
4469compiler knows this regardless of @code{EXIT_IGNORE_STACK}.
a2c4f8e0 4470@end defmac
feca2ed3 4471
a2c4f8e0 4472@defmac EPILOGUE_USES (@var{regno})
8760eaae 4473Define this macro as a C expression that is nonzero for registers that are
feca2ed3 4474used by the epilogue or the @samp{return} pattern. The stack and frame
86c33cd0 4475pointer registers are already assumed to be used as needed.
a2c4f8e0 4476@end defmac
feca2ed3 4477
a2c4f8e0 4478@defmac EH_USES (@var{regno})
15b5aef3
RH
4479Define this macro as a C expression that is nonzero for registers that are
4480used by the exception handling mechanism, and so should be considered live
4481on entry to an exception edge.
a2c4f8e0 4482@end defmac
15b5aef3 4483
a2c4f8e0 4484@defmac DELAY_SLOTS_FOR_EPILOGUE
feca2ed3
JW
4485Define this macro if the function epilogue contains delay slots to which
4486instructions from the rest of the function can be ``moved''. The
4487definition should be a C expression whose value is an integer
4488representing the number of delay slots there.
a2c4f8e0 4489@end defmac
feca2ed3 4490
a2c4f8e0 4491@defmac ELIGIBLE_FOR_EPILOGUE_DELAY (@var{insn}, @var{n})
feca2ed3
JW
4492A C expression that returns 1 if @var{insn} can be placed in delay
4493slot number @var{n} of the epilogue.
4494
4495The argument @var{n} is an integer which identifies the delay slot now
4496being considered (since different slots may have different rules of
4497eligibility). It is never negative and is always less than the number
4498of epilogue delay slots (what @code{DELAY_SLOTS_FOR_EPILOGUE} returns).
4499If you reject a particular insn for a given delay slot, in principle, it
4500may be reconsidered for a subsequent delay slot. Also, other insns may
4501(at least in principle) be considered for the so far unfilled delay
4502slot.
4503
4504@findex current_function_epilogue_delay_list
4505@findex final_scan_insn
4506The insns accepted to fill the epilogue delay slots are put in an RTL
4507list made with @code{insn_list} objects, stored in the variable
4508@code{current_function_epilogue_delay_list}. The insn for the first
4509delay slot comes first in the list. Your definition of the macro
08c148a8
NB
4510@code{TARGET_ASM_FUNCTION_EPILOGUE} should fill the delay slots by
4511outputting the insns in this list, usually by calling
4512@code{final_scan_insn}.
feca2ed3
JW
4513
4514You need not define this macro if you did not define
4515@code{DELAY_SLOTS_FOR_EPILOGUE}.
a2c4f8e0 4516@end defmac
feca2ed3 4517
65e71cd6 4518@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_MI_THUNK (FILE *@var{file}, tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, HOST_WIDE_INT @var{vcall_offset}, tree @var{function})
483ab821 4519A function that outputs the assembler code for a thunk
feca2ed3
JW
4520function, used to implement C++ virtual function calls with multiple
4521inheritance. The thunk acts as a wrapper around a virtual function,
4522adjusting the implicit object parameter before handing control off to
4523the real function.
4524
4525First, emit code to add the integer @var{delta} to the location that
4526contains the incoming first argument. Assume that this argument
4527contains a pointer, and is the one used to pass the @code{this} pointer
4528in C++. This is the incoming argument @emph{before} the function prologue,
e979f9e8 4529e.g.@: @samp{%o0} on a sparc. The addition must preserve the values of
feca2ed3
JW
4530all other incoming arguments.
4531
65e71cd6
EB
4532Then, if @var{vcall_offset} is nonzero, an additional adjustment should be
4533made after adding @code{delta}. In particular, if @var{p} is the
4534adjusted pointer, the following adjustment should be made:
4535
4536@smallexample
4537p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
4538@end smallexample
4539
4540After the additions, emit code to jump to @var{function}, which is a
feca2ed3
JW
4541@code{FUNCTION_DECL}. This is a direct pure jump, not a call, and does
4542not touch the return address. Hence returning from @var{FUNCTION} will
4543return to whoever called the current @samp{thunk}.
4544
4545The effect must be as if @var{function} had been called directly with
4546the adjusted first argument. This macro is responsible for emitting all
08c148a8
NB
4547of the code for a thunk function; @code{TARGET_ASM_FUNCTION_PROLOGUE}
4548and @code{TARGET_ASM_FUNCTION_EPILOGUE} are not invoked.
feca2ed3
JW
4549
4550The @var{thunk_fndecl} is redundant. (@var{delta} and @var{function}
4551have already been extracted from it.) It might possibly be useful on
4552some targets, but probably not.
4553
861bb6c1 4554If you do not define this macro, the target-independent code in the C++
c771326b 4555front end will generate a less efficient heavyweight thunk that calls
861bb6c1
JL
4556@var{function} instead of jumping to it. The generic approach does
4557not support varargs.
483ab821
MM
4558@end deftypefn
4559
65e71cd6
EB
4560@deftypefn {Target Hook} bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, HOST_WIDE_INT @var{vcall_offset}, tree @var{function})
4561A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would be able
4562to output the assembler code for the thunk function specified by the
4563arguments it is passed, and false otherwise. In the latter case, the
4564generic approach will be used by the C++ front end, with the limitations
4565previously exposed.
483ab821 4566@end deftypefn
feca2ed3
JW
4567
4568@node Profiling
4569@subsection Generating Code for Profiling
4570@cindex profiling, code generation
4571
4572These macros will help you generate code for profiling.
4573
a2c4f8e0 4574@defmac FUNCTION_PROFILER (@var{file}, @var{labelno})
feca2ed3
JW
4575A C statement or compound statement to output to @var{file} some
4576assembler code to call the profiling subroutine @code{mcount}.
feca2ed3
JW
4577
4578@findex mcount
980e2067 4579The details of how @code{mcount} expects to be called are determined by
161d7b59 4580your operating system environment, not by GCC@. To figure them out,
980e2067
JL
4581compile a small program for profiling using the system's installed C
4582compiler and look at the assembler code that results.
4583
4584Older implementations of @code{mcount} expect the address of a counter
4585variable to be loaded into some register. The name of this variable is
4586@samp{LP} followed by the number @var{labelno}, so you would generate
4587the name using @samp{LP%d} in a @code{fprintf}.
a2c4f8e0 4588@end defmac
980e2067 4589
a2c4f8e0 4590@defmac PROFILE_HOOK
411707f4
CC
4591A C statement or compound statement to output to @var{file} some assembly
4592code to call the profiling subroutine @code{mcount} even the target does
4593not support profiling.
a2c4f8e0 4594@end defmac
411707f4 4595
a2c4f8e0 4596@defmac NO_PROFILE_COUNTERS
8b65a354
JZ
4597Define this macro to be an expression with a nonzero value if the
4598@code{mcount} subroutine on your system does not need a counter variable
4599allocated for each function. This is true for almost all modern
4600implementations. If you define this macro, you must not use the
4601@var{labelno} argument to @code{FUNCTION_PROFILER}.
a2c4f8e0 4602@end defmac
feca2ed3 4603
a2c4f8e0 4604@defmac PROFILE_BEFORE_PROLOGUE
feca2ed3
JW
4605Define this macro if the code for function profiling should come before
4606the function prologue. Normally, the profiling code comes after.
a2c4f8e0 4607@end defmac
feca2ed3 4608
91d231cb
JM
4609@node Tail Calls
4610@subsection Permitting tail calls
4611@cindex tail calls
b36f4ed3 4612
4977bab6
ZW
4613@deftypefn {Target Hook} bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree @var{decl}, tree @var{exp})
4614True if it is ok to do sibling call optimization for the specified
4615call expression @var{exp}. @var{decl} will be the called function,
4616or @code{NULL} if this is an indirect call.
4cb1433c
RH
4617
4618It is not uncommon for limitations of calling conventions to prevent
4619tail calls to functions outside the current unit of translation, or
4977bab6 4620during PIC compilation. The hook is used to enforce these restrictions,
02f52e19 4621as the @code{sibcall} md pattern can not fail, or fall over to a
4977bab6
ZW
4622``normal'' call. The criteria for successful sibling call optimization
4623may vary greatly between different architectures.
4624@end deftypefn
4cb1433c 4625
912f2dac
DB
4626@deftypefn {Target Hook} void TARGET_EXTRA_LIVE_ON_ENTRY (bitmap *@var{regs})
4627Add any hard registers to @var{regs} that are live on entry to the
4628function. This hook only needs to be defined to provide registers that
4629cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved
4630registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM,
4631TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES,
4632FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM.
4633@end deftypefn
4634
7d69de61
RH
4635@node Stack Smashing Protection
4636@subsection Stack smashing protection
4637@cindex stack smashing protection
4638
4639@deftypefn {Target Hook} tree TARGET_STACK_PROTECT_GUARD (void)
4640This hook returns a @code{DECL} node for the external variable to use
083cad55 4641for the stack protection guard. This variable is initialized by the
7d69de61
RH
4642runtime to some random value and is used to initialize the guard value
4643that is placed at the top of the local stack frame. The type of this
4644variable must be @code{ptr_type_node}.
4645
4646The default version of this hook creates a variable called
4647@samp{__stack_chk_guard}, which is normally defined in @file{libgcc2.c}.
4648@end deftypefn
4649
4650@deftypefn {Target Hook} tree TARGET_STACK_PROTECT_FAIL (void)
4651This hook returns a tree expression that alerts the runtime that the
4652stack protect guard variable has been modified. This expression should
4653involve a call to a @code{noreturn} function.
4654
4655The default version of this hook invokes a function called
083cad55 4656@samp{__stack_chk_fail}, taking no arguments. This function is
7d69de61
RH
4657normally defined in @file{libgcc2.c}.
4658@end deftypefn
4659
feca2ed3
JW
4660@node Varargs
4661@section Implementing the Varargs Macros
4662@cindex varargs implementation
4663
aee96fe9
JM
4664GCC comes with an implementation of @code{<varargs.h>} and
4665@code{<stdarg.h>} that work without change on machines that pass arguments
feca2ed3
JW
4666on the stack. Other machines require their own implementations of
4667varargs, and the two machine independent header files must have
4668conditionals to include it.
4669
aee96fe9 4670ISO @code{<stdarg.h>} differs from traditional @code{<varargs.h>} mainly in
feca2ed3
JW
4671the calling convention for @code{va_start}. The traditional
4672implementation takes just one argument, which is the variable in which
5490d604 4673to store the argument pointer. The ISO implementation of
feca2ed3
JW
4674@code{va_start} takes an additional second argument. The user is
4675supposed to write the last named argument of the function here.
4676
4677However, @code{va_start} should not use this argument. The way to find
4678the end of the named arguments is with the built-in functions described
4679below.
4680
a2c4f8e0 4681@defmac __builtin_saveregs ()
feca2ed3 4682Use this built-in function to save the argument registers in memory so
5490d604 4683that the varargs mechanism can access them. Both ISO and traditional
feca2ed3 4684versions of @code{va_start} must use @code{__builtin_saveregs}, unless
c2379679 4685you use @code{TARGET_SETUP_INCOMING_VARARGS} (see below) instead.
feca2ed3
JW
4686
4687On some machines, @code{__builtin_saveregs} is open-coded under the
f61c92c3
KH
4688control of the target hook @code{TARGET_EXPAND_BUILTIN_SAVEREGS}. On
4689other machines, it calls a routine written in assembler language,
4690found in @file{libgcc2.c}.
feca2ed3
JW
4691
4692Code generated for the call to @code{__builtin_saveregs} appears at the
4693beginning of the function, as opposed to where the call to
4694@code{__builtin_saveregs} is written, regardless of what the code is.
4695This is because the registers must be saved before the function starts
4696to use them for its own purposes.
4697@c i rewrote the first sentence above to fix an overfull hbox. --mew
4698@c 10feb93
a2c4f8e0 4699@end defmac
feca2ed3 4700
a2c4f8e0 4701@defmac __builtin_args_info (@var{category})
feca2ed3
JW
4702Use this built-in function to find the first anonymous arguments in
4703registers.
4704
4705In general, a machine may have several categories of registers used for
4706arguments, each for a particular category of data types. (For example,
4707on some machines, floating-point registers are used for floating-point
4708arguments while other arguments are passed in the general registers.)
4709To make non-varargs functions use the proper calling convention, you
4710have defined the @code{CUMULATIVE_ARGS} data type to record how many
4711registers in each category have been used so far
4712
4713@code{__builtin_args_info} accesses the same data structure of type
4714@code{CUMULATIVE_ARGS} after the ordinary argument layout is finished
4715with it, with @var{category} specifying which word to access. Thus, the
4716value indicates the first unused register in a given category.
4717
4718Normally, you would use @code{__builtin_args_info} in the implementation
4719of @code{va_start}, accessing each category just once and storing the
4720value in the @code{va_list} object. This is because @code{va_list} will
4721have to update the values, and there is no way to alter the
4722values accessed by @code{__builtin_args_info}.
a2c4f8e0 4723@end defmac
feca2ed3 4724
a2c4f8e0 4725@defmac __builtin_next_arg (@var{lastarg})
feca2ed3
JW
4726This is the equivalent of @code{__builtin_args_info}, for stack
4727arguments. It returns the address of the first anonymous stack
767094dd 4728argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it
feca2ed3
JW
4729returns the address of the location above the first anonymous stack
4730argument. Use it in @code{va_start} to initialize the pointer for
4731fetching arguments from the stack. Also use it in @code{va_start} to
4732verify that the second parameter @var{lastarg} is the last named argument
4733of the current function.
a2c4f8e0 4734@end defmac
feca2ed3 4735
a2c4f8e0 4736@defmac __builtin_classify_type (@var{object})
feca2ed3
JW
4737Since each machine has its own conventions for which data types are
4738passed in which kind of register, your implementation of @code{va_arg}
4739has to embody these conventions. The easiest way to categorize the
4740specified data type is to use @code{__builtin_classify_type} together
4741with @code{sizeof} and @code{__alignof__}.
4742
4743@code{__builtin_classify_type} ignores the value of @var{object},
4744considering only its data type. It returns an integer describing what
4745kind of type that is---integer, floating, pointer, structure, and so on.
4746
4747The file @file{typeclass.h} defines an enumeration that you can use to
4748interpret the values of @code{__builtin_classify_type}.
a2c4f8e0 4749@end defmac
feca2ed3
JW
4750
4751These machine description macros help implement varargs:
4752
61f71b34
DD
4753@deftypefn {Target Hook} rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
4754If defined, this hook produces the machine-specific code for a call to
4755@code{__builtin_saveregs}. This code will be moved to the very
4756beginning of the function, before any parameter access are made. The
4757return value of this function should be an RTX that contains the value
4758to use as the return of @code{__builtin_saveregs}.
4759@end deftypefn
feca2ed3 4760
61f71b34
DD
4761@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})
4762This target hook offers an alternative to using
4763@code{__builtin_saveregs} and defining the hook
4764@code{TARGET_EXPAND_BUILTIN_SAVEREGS}. Use it to store the anonymous
4765register arguments into the stack so that all the arguments appear to
4766have been passed consecutively on the stack. Once this is done, you can
4767use the standard implementation of varargs that works for machines that
4768pass all their arguments on the stack.
feca2ed3 4769
61f71b34 4770The argument @var{args_so_far} points to the @code{CUMULATIVE_ARGS} data
8760eaae 4771structure, containing the values that are obtained after processing the
feca2ed3
JW
4772named arguments. The arguments @var{mode} and @var{type} describe the
4773last named argument---its machine mode and its data type as a tree node.
4774
61f71b34
DD
4775The target hook should do two things: first, push onto the stack all the
4776argument registers @emph{not} used for the named arguments, and second,
4777store the size of the data thus pushed into the @code{int}-valued
4778variable pointed to by @var{pretend_args_size}. The value that you
4779store here will serve as additional offset for setting up the stack
4780frame.
feca2ed3
JW
4781
4782Because you must generate code to push the anonymous arguments at
4783compile time without knowing their data types,
61f71b34
DD
4784@code{TARGET_SETUP_INCOMING_VARARGS} is only useful on machines that
4785have just a single category of argument register and use it uniformly
4786for all data types.
feca2ed3
JW
4787
4788If the argument @var{second_time} is nonzero, it means that the
4789arguments of the function are being analyzed for the second time. This
4790happens for an inline function, which is not actually compiled until the
61f71b34 4791end of the source file. The hook @code{TARGET_SETUP_INCOMING_VARARGS} should
feca2ed3 4792not generate any instructions in this case.
61f71b34 4793@end deftypefn
feca2ed3 4794
61f71b34
DD
4795@deftypefn {Target Hook} bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS *@var{ca})
4796Define this hook to return @code{true} if the location where a function
e5e809f4 4797argument is passed depends on whether or not it is a named argument.
feca2ed3 4798
61f71b34
DD
4799This hook controls how the @var{named} argument to @code{FUNCTION_ARG}
4800is set for varargs and stdarg functions. If this hook returns
4801@code{true}, the @var{named} argument is always true for named
4802arguments, and false for unnamed arguments. If it returns @code{false},
5b4ef0b1 4803but @code{TARGET_PRETEND_OUTGOING_VARARGS_NAMED} returns @code{true},
61f71b34
DD
4804then all arguments are treated as named. Otherwise, all named arguments
4805except the last are treated as named.
e5e809f4 4806
61f71b34
DD
4807You need not define this hook if it always returns zero.
4808@end deftypefn
9ab70a9b 4809
61f71b34 4810@deftypefn {Target Hook} bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED
9ab70a9b 4811If you need to conditionally change ABIs so that one works with
61f71b34
DD
4812@code{TARGET_SETUP_INCOMING_VARARGS}, but the other works like neither
4813@code{TARGET_SETUP_INCOMING_VARARGS} nor @code{TARGET_STRICT_ARGUMENT_NAMING} was
4814defined, then define this hook to return @code{true} if
c2379679 4815@code{TARGET_SETUP_INCOMING_VARARGS} is used, @code{false} otherwise.
61f71b34
DD
4816Otherwise, you should not define this hook.
4817@end deftypefn
feca2ed3
JW
4818
4819@node Trampolines
4820@section Trampolines for Nested Functions
4821@cindex trampolines for nested functions
4822@cindex nested functions, trampolines for
4823
4824A @dfn{trampoline} is a small piece of code that is created at run time
4825when the address of a nested function is taken. It normally resides on
4826the stack, in the stack frame of the containing function. These macros
a3a15b4d 4827tell GCC how to generate code to allocate and initialize a
feca2ed3
JW
4828trampoline.
4829
4830The instructions in the trampoline must do two things: load a constant
4831address into the static chain register, and jump to the real address of
4832the nested function. On CISC machines such as the m68k, this requires
4833two instructions, a move immediate and a jump. Then the two addresses
4834exist in the trampoline as word-long immediate operands. On RISC
4835machines, it is often necessary to load each address into a register in
4836two parts. Then pieces of each address form separate immediate
4837operands.
4838
4839The code generated to initialize the trampoline must store the variable
4840parts---the static chain value and the function address---into the
4841immediate operands of the instructions. On a CISC machine, this is
4842simply a matter of copying each address to a memory reference at the
4843proper offset from the start of the trampoline. On a RISC machine, it
4844may be necessary to take out pieces of the address and store them
4845separately.
4846
a2c4f8e0 4847@defmac TRAMPOLINE_TEMPLATE (@var{file})
feca2ed3
JW
4848A C statement to output, on the stream @var{file}, assembler code for a
4849block of data that contains the constant parts of a trampoline. This
4850code should not include a label---the label is taken care of
4851automatically.
4852
4853If you do not define this macro, it means no template is needed
4854for the target. Do not define this macro on systems where the block move
4855code to copy the trampoline into place would be larger than the code
4856to generate it on the spot.
a2c4f8e0 4857@end defmac
feca2ed3 4858
a2c4f8e0 4859@defmac TRAMPOLINE_SECTION
d6b5193b
RS
4860Return the section into which the trampoline template is to be placed
4861(@pxref{Sections}). The default value is @code{readonly_data_section}.
a2c4f8e0 4862@end defmac
feca2ed3 4863
a2c4f8e0 4864@defmac TRAMPOLINE_SIZE
feca2ed3 4865A C expression for the size in bytes of the trampoline, as an integer.
a2c4f8e0 4866@end defmac
feca2ed3 4867
a2c4f8e0 4868@defmac TRAMPOLINE_ALIGNMENT
feca2ed3
JW
4869Alignment required for trampolines, in bits.
4870
4871If you don't define this macro, the value of @code{BIGGEST_ALIGNMENT}
4872is used for aligning trampolines.
a2c4f8e0 4873@end defmac
feca2ed3 4874
a2c4f8e0 4875@defmac INITIALIZE_TRAMPOLINE (@var{addr}, @var{fnaddr}, @var{static_chain})
feca2ed3
JW
4876A C statement to initialize the variable parts of a trampoline.
4877@var{addr} is an RTX for the address of the trampoline; @var{fnaddr} is
4878an RTX for the address of the nested function; @var{static_chain} is an
4879RTX for the static chain value that should be passed to the function
4880when it is called.
a2c4f8e0 4881@end defmac
feca2ed3 4882
a2c4f8e0 4883@defmac TRAMPOLINE_ADJUST_ADDRESS (@var{addr})
b33493e3
AO
4884A C statement that should perform any machine-specific adjustment in
4885the address of the trampoline. Its argument contains the address that
4886was passed to @code{INITIALIZE_TRAMPOLINE}. In case the address to be
4887used for a function call should be different from the address in which
4888the template was stored, the different address should be assigned to
4889@var{addr}. If this macro is not defined, @var{addr} will be used for
4890function calls.
4891
08c148a8
NB
4892@cindex @code{TARGET_ASM_FUNCTION_EPILOGUE} and trampolines
4893@cindex @code{TARGET_ASM_FUNCTION_PROLOGUE} and trampolines
feca2ed3
JW
4894If this macro is not defined, by default the trampoline is allocated as
4895a stack slot. This default is right for most machines. The exceptions
4896are machines where it is impossible to execute instructions in the stack
4897area. On such machines, you may have to implement a separate stack,
08c148a8
NB
4898using this macro in conjunction with @code{TARGET_ASM_FUNCTION_PROLOGUE}
4899and @code{TARGET_ASM_FUNCTION_EPILOGUE}.
feca2ed3
JW
4900
4901@var{fp} points to a data structure, a @code{struct function}, which
4902describes the compilation status of the immediate containing function of
0d569849 4903the function which the trampoline is for. The stack slot for the
feca2ed3
JW
4904trampoline is in the stack frame of this containing function. Other
4905allocation strategies probably must do something analogous with this
4906information.
a2c4f8e0 4907@end defmac
feca2ed3
JW
4908
4909Implementing trampolines is difficult on many machines because they have
4910separate instruction and data caches. Writing into a stack location
4911fails to clear the memory in the instruction cache, so when the program
4912jumps to that location, it executes the old contents.
4913
4914Here are two possible solutions. One is to clear the relevant parts of
4915the instruction cache whenever a trampoline is set up. The other is to
4916make all trampolines identical, by having them jump to a standard
4917subroutine. The former technique makes trampoline execution faster; the
4918latter makes initialization faster.
4919
4920To clear the instruction cache when a trampoline is initialized, define
f691dc3b 4921the following macro.
feca2ed3 4922
a2c4f8e0 4923@defmac CLEAR_INSN_CACHE (@var{beg}, @var{end})
feca2ed3 4924If defined, expands to a C expression clearing the @emph{instruction
f691dc3b
AJ
4925cache} in the specified interval. The definition of this macro would
4926typically be a series of @code{asm} statements. Both @var{beg} and
4927@var{end} are both pointer expressions.
a2c4f8e0 4928@end defmac
feca2ed3 4929
e7a742ec
EB
4930The operating system may also require the stack to be made executable
4931before calling the trampoline. To implement this requirement, define
4932the following macro.
4933
4934@defmac ENABLE_EXECUTE_STACK
4935Define this macro if certain operations must be performed before executing
4936code located on the stack. The macro should expand to a series of C
431ae0bf 4937file-scope constructs (e.g.@: functions) and provide a unique entry point
e7a742ec
EB
4938named @code{__enable_execute_stack}. The target is responsible for
4939emitting calls to the entry point in the code, for example from the
4940@code{INITIALIZE_TRAMPOLINE} macro.
4941@end defmac
4942
feca2ed3
JW
4943To use a standard subroutine, define the following macro. In addition,
4944you must make sure that the instructions in a trampoline fill an entire
4945cache line with identical instructions, or else ensure that the
4946beginning of the trampoline code is always aligned at the same point in
4947its cache line. Look in @file{m68k.h} as a guide.
4948
a2c4f8e0 4949@defmac TRANSFER_FROM_TRAMPOLINE
feca2ed3
JW
4950Define this macro if trampolines need a special subroutine to do their
4951work. The macro should expand to a series of @code{asm} statements
161d7b59 4952which will be compiled with GCC@. They go in a library function named
feca2ed3
JW
4953@code{__transfer_from_trampoline}.
4954
4955If you need to avoid executing the ordinary prologue code of a compiled
4956C function when you jump to the subroutine, you can do so by placing a
4957special label of your own in the assembler code. Use one @code{asm}
4958statement to generate an assembler label, and another to make the label
4959global. Then trampolines can use that label to jump directly to your
4960special assembler code.
a2c4f8e0 4961@end defmac
feca2ed3
JW
4962
4963@node Library Calls
4964@section Implicit Calls to Library Routines
4965@cindex library subroutine names
4966@cindex @file{libgcc.a}
4967
4968@c prevent bad page break with this line
4969Here is an explanation of implicit calls to library routines.
4970
a2c4f8e0 4971@defmac DECLARE_LIBRARY_RENAMES
d8088c6f
BS
4972This macro, if defined, should expand to a piece of C code that will get
4973expanded when compiling functions for libgcc.a. It can be used to
2dd76960 4974provide alternate names for GCC's internal library functions if there
d8088c6f 4975are ABI-mandated names that the compiler should provide.
a2c4f8e0 4976@end defmac
d8088c6f 4977
c15c90bb
ZW
4978@findex init_one_libfunc
4979@findex set_optab_libfunc
4980@deftypefn {Target Hook} void TARGET_INIT_LIBFUNCS (void)
4981This hook should declare additional library routines or rename
4982existing ones, using the functions @code{set_optab_libfunc} and
4983@code{init_one_libfunc} defined in @file{optabs.c}.
4984@code{init_optabs} calls this macro after initializing all the normal
4985library routines.
feca2ed3 4986
c15c90bb
ZW
4987The default is to do nothing. Most ports don't need to define this hook.
4988@end deftypefn
c5c60e15 4989
9c917669 4990@defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison})
c15c90bb
ZW
4991This macro should return @code{true} if the library routine that
4992implements the floating point comparison operator @var{comparison} in
4993mode @var{mode} will return a boolean, and @var{false} if it will
4994return a tristate.
4995
4996GCC's own floating point libraries return tristates from the
4997comparison operators, so the default returns false always. Most ports
4998don't need to define this macro.
4999@end defmac
5000
b3f8d95d
MM
5001@defmac TARGET_LIB_INT_CMP_BIASED
5002This macro should evaluate to @code{true} if the integer comparison
5003functions (like @code{__cmpdi2}) return 0 to indicate that the first
5004operand is smaller than the second, 1 to indicate that they are equal,
5005and 2 to indicate that the first operand is greater than the second.
38b974a6 5006If this macro evaluates to @code{false} the comparison functions return
78466c0e 5007@minus{}1, 0, and 1 instead of 0, 1, and 2. If the target uses the routines
b3f8d95d
MM
5008in @file{libgcc.a}, you do not need to define this macro.
5009@end defmac
5010
c15c90bb
ZW
5011@cindex US Software GOFAST, floating point emulation library
5012@cindex floating point emulation library, US Software GOFAST
5013@cindex GOFAST, floating point emulation library
5014@findex gofast_maybe_init_libfuncs
5015@defmac US_SOFTWARE_GOFAST
5016Define this macro if your system C library uses the US Software GOFAST
73774972 5017library to provide floating point emulation.
c15c90bb
ZW
5018
5019In addition to defining this macro, your architecture must set
5020@code{TARGET_INIT_LIBFUNCS} to @code{gofast_maybe_init_libfuncs}, or
5021else call that function from its version of that hook. It is defined
5022in @file{config/gofast.h}, which must be included by your
5023architecture's @file{@var{cpu}.c} file. See @file{sparc/sparc.c} for
5024an example.
5025
5026If this macro is defined, the
5027@code{TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL} target hook must return
5028false for @code{SFmode} and @code{DFmode} comparisons.
a2c4f8e0 5029@end defmac
c5c60e15 5030
feca2ed3 5031@cindex @code{EDOM}, implicit usage
a2c4f8e0
ZW
5032@findex matherr
5033@defmac TARGET_EDOM
feca2ed3 5034The value of @code{EDOM} on the target machine, as a C integer constant
a3a15b4d 5035expression. If you don't define this macro, GCC does not attempt to
feca2ed3
JW
5036deposit the value of @code{EDOM} into @code{errno} directly. Look in
5037@file{/usr/include/errno.h} to find the value of @code{EDOM} on your
5038system.
5039
5040If you do not define @code{TARGET_EDOM}, then compiled code reports
5041domain errors by calling the library function and letting it report the
5042error. If mathematical functions on your system use @code{matherr} when
5043there is an error, then you should leave @code{TARGET_EDOM} undefined so
5044that @code{matherr} is used normally.
a2c4f8e0 5045@end defmac
feca2ed3 5046
feca2ed3 5047@cindex @code{errno}, implicit usage
a2c4f8e0 5048@defmac GEN_ERRNO_RTX
feca2ed3
JW
5049Define this macro as a C expression to create an rtl expression that
5050refers to the global ``variable'' @code{errno}. (On certain systems,
5051@code{errno} may not actually be a variable.) If you don't define this
5052macro, a reasonable default is used.
a2c4f8e0 5053@end defmac
feca2ed3 5054
272f51a3 5055@cindex C99 math functions, implicit usage
a2c4f8e0 5056@defmac TARGET_C99_FUNCTIONS
272f51a3 5057When this macro is nonzero, GCC will implicitly optimize @code{sin} calls into
3bcf1b13 5058@code{sinf} and similarly for other functions defined by C99 standard. The
272f51a3
JH
5059default is nonzero that should be proper value for most modern systems, however
5060number of existing systems lacks support for these functions in the runtime so
5061they needs this macro to be redefined to 0.
a2c4f8e0 5062@end defmac
272f51a3 5063
006339cd
RG
5064@cindex sincos math function, implicit usage
5065@defmac TARGET_HAS_SINCOS
5066When this macro is nonzero, GCC will implicitly optimize calls to @code{sin}
5067and @code{cos} with the same argument to a call to @code{sincos}. The
5068default is zero. The target has to provide the following functions:
5069@smallexample
5070void sincos(double x, double *sin, double *cos);
5071void sincosf(float x, float *sin, float *cos);
5072void sincosl(long double x, long double *sin, long double *cos);
5073@end smallexample
5074@end defmac
5075
a2c4f8e0 5076@defmac NEXT_OBJC_RUNTIME
2147b154 5077Define this macro to generate code for Objective-C message sending using
feca2ed3
JW
5078the calling convention of the NeXT system. This calling convention
5079involves passing the object, the selector and the method arguments all
5080at once to the method-lookup library function.
5081
5082The default calling convention passes just the object and the selector
5083to the lookup function, which returns a pointer to the method.
a2c4f8e0 5084@end defmac
feca2ed3
JW
5085
5086@node Addressing Modes
5087@section Addressing Modes
5088@cindex addressing modes
5089
5090@c prevent bad page break with this line
5091This is about addressing modes.
5092
a2c4f8e0
ZW
5093@defmac HAVE_PRE_INCREMENT
5094@defmacx HAVE_PRE_DECREMENT
5095@defmacx HAVE_POST_INCREMENT
5096@defmacx HAVE_POST_DECREMENT
df2a54e9 5097A C expression that is nonzero if the machine supports pre-increment,
7a6bd5ae 5098pre-decrement, post-increment, or post-decrement addressing respectively.
a2c4f8e0 5099@end defmac
feca2ed3 5100
a2c4f8e0
ZW
5101@defmac HAVE_PRE_MODIFY_DISP
5102@defmacx HAVE_POST_MODIFY_DISP
df2a54e9 5103A C expression that is nonzero if the machine supports pre- or
7a6bd5ae
JL
5104post-address side-effect generation involving constants other than
5105the size of the memory operand.
a2c4f8e0 5106@end defmac
864bcaa7 5107
a2c4f8e0
ZW
5108@defmac HAVE_PRE_MODIFY_REG
5109@defmacx HAVE_POST_MODIFY_REG
df2a54e9 5110A C expression that is nonzero if the machine supports pre- or
7a6bd5ae 5111post-address side-effect generation involving a register displacement.
a2c4f8e0 5112@end defmac
864bcaa7 5113
a2c4f8e0 5114@defmac CONSTANT_ADDRESS_P (@var{x})
feca2ed3
JW
5115A C expression that is 1 if the RTX @var{x} is a constant which
5116is a valid address. On most machines, this can be defined as
5117@code{CONSTANT_P (@var{x})}, but a few machines are more restrictive
5118in which constant addresses are supported.
a2c4f8e0 5119@end defmac
feca2ed3 5120
a2c4f8e0
ZW
5121@defmac CONSTANT_P (@var{x})
5122@code{CONSTANT_P}, which is defined by target-independent code,
5123accepts integer-values expressions whose values are not explicitly
5124known, such as @code{symbol_ref}, @code{label_ref}, and @code{high}
5125expressions and @code{const} arithmetic expressions, in addition to
5126@code{const_int} and @code{const_double} expressions.
5127@end defmac
feca2ed3 5128
a2c4f8e0 5129@defmac MAX_REGS_PER_ADDRESS
feca2ed3
JW
5130A number, the maximum number of registers that can appear in a valid
5131memory address. Note that it is up to you to specify a value equal to
5132the maximum number that @code{GO_IF_LEGITIMATE_ADDRESS} would ever
5133accept.
a2c4f8e0 5134@end defmac
feca2ed3 5135
a2c4f8e0 5136@defmac GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label})
feca2ed3
JW
5137A C compound statement with a conditional @code{goto @var{label};}
5138executed if @var{x} (an RTX) is a legitimate memory address on the
5139target machine for a memory operand of mode @var{mode}.
5140
5141It usually pays to define several simpler macros to serve as
5142subroutines for this one. Otherwise it may be too complicated to
5143understand.
5144
5145This macro must exist in two variants: a strict variant and a
5146non-strict one. The strict variant is used in the reload pass. It
5147must be defined so that any pseudo-register that has not been
5148allocated a hard register is considered a memory reference. In
5149contexts where some kind of register is required, a pseudo-register
5150with no hard register must be rejected.
5151
5152The non-strict variant is used in other passes. It must be defined to
5153accept all pseudo-registers in every context where some kind of
5154register is required.
5155
5156@findex REG_OK_STRICT
5157Compiler source files that want to use the strict variant of this
5158macro define the macro @code{REG_OK_STRICT}. You should use an
5159@code{#ifdef REG_OK_STRICT} conditional to define the strict variant
5160in that case and the non-strict variant otherwise.
5161
5162Subroutines to check for acceptable registers for various purposes (one
5163for base registers, one for index registers, and so on) are typically
5164among the subroutines used to define @code{GO_IF_LEGITIMATE_ADDRESS}.
5165Then only these subroutine macros need have two variants; the higher
bd819a4a 5166levels of macros may be the same whether strict or not.
feca2ed3
JW
5167
5168Normally, constant addresses which are the sum of a @code{symbol_ref}
5169and an integer are stored inside a @code{const} RTX to mark them as
5170constant. Therefore, there is no need to recognize such sums
5171specifically as legitimate addresses. Normally you would simply
5172recognize any @code{const} as legitimate.
5173
5174Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant
5175sums that are not marked with @code{const}. It assumes that a naked
5176@code{plus} indicates indexing. If so, then you @emph{must} reject such
5177naked constant sums as illegitimate addresses, so that none of them will
5178be given to @code{PRINT_OPERAND_ADDRESS}.
5179
fb49053f 5180@cindex @code{TARGET_ENCODE_SECTION_INFO} and address validation
feca2ed3
JW
5181On some machines, whether a symbolic address is legitimate depends on
5182the section that the address refers to. On these machines, define the
fb49053f
RH
5183target hook @code{TARGET_ENCODE_SECTION_INFO} to store the information
5184into the @code{symbol_ref}, and then check for it here. When you see a
feca2ed3
JW
5185@code{const}, you will have to look inside it to find the
5186@code{symbol_ref} in order to determine the section. @xref{Assembler
5187Format}.
a2c4f8e0 5188@end defmac
feca2ed3 5189
a2c4f8e0 5190@defmac FIND_BASE_TERM (@var{x})
b949ea8b
JW
5191A C expression to determine the base term of address @var{x}.
5192This macro is used in only one place: `find_base_term' in alias.c.
5193
5194It is always safe for this macro to not be defined. It exists so
5195that alias analysis can understand machine-dependent addresses.
5196
5197The typical use of this macro is to handle addresses containing
161d7b59 5198a label_ref or symbol_ref within an UNSPEC@.
a2c4f8e0 5199@end defmac
b949ea8b 5200
a2c4f8e0 5201@defmac LEGITIMIZE_ADDRESS (@var{x}, @var{oldx}, @var{mode}, @var{win})
feca2ed3
JW
5202A C compound statement that attempts to replace @var{x} with a valid
5203memory address for an operand of mode @var{mode}. @var{win} will be a
5204C statement label elsewhere in the code; the macro definition may use
5205
3ab51846 5206@smallexample
feca2ed3 5207GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{win});
3ab51846 5208@end smallexample
feca2ed3
JW
5209
5210@noindent
5211to avoid further processing if the address has become legitimate.
5212
5213@findex break_out_memory_refs
5214@var{x} will always be the result of a call to @code{break_out_memory_refs},
5215and @var{oldx} will be the operand that was given to that function to produce
5216@var{x}.
5217
5218The code generated by this macro should not alter the substructure of
5219@var{x}. If it transforms @var{x} into a more legitimate form, it
5220should assign @var{x} (which will always be a C variable) a new value.
5221
5222It is not necessary for this macro to come up with a legitimate
5223address. The compiler has standard ways of doing so in all cases. In
3e759eda 5224fact, it is safe to omit this macro. But often a
feca2ed3 5225machine-dependent strategy can generate better code.
a2c4f8e0 5226@end defmac
feca2ed3 5227
a2c4f8e0 5228@defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win})
a9a2595b
JR
5229A C compound statement that attempts to replace @var{x}, which is an address
5230that needs reloading, with a valid memory address for an operand of mode
5231@var{mode}. @var{win} will be a C statement label elsewhere in the code.
5232It is not necessary to define this macro, but it might be useful for
02f52e19 5233performance reasons.
a9a2595b
JR
5234
5235For example, on the i386, it is sometimes possible to use a single
5236reload register instead of two by reloading a sum of two pseudo
5237registers into a register. On the other hand, for number of RISC
5238processors offsets are limited so that often an intermediate address
5239needs to be generated in order to address a stack slot. By defining
aee96fe9 5240@code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses
a9a2595b
JR
5241generated for adjacent some stack slots can be made identical, and thus
5242be shared.
5243
39bdfaa0
RH
5244@emph{Note}: This macro should be used with caution. It is necessary
5245to know something of how reload works in order to effectively use this,
5246and it is quite easy to produce macros that build in too much knowledge
5247of reload internals.
a9a2595b 5248
5f0c590d
JL
5249@emph{Note}: This macro must be able to reload an address created by a
5250previous invocation of this macro. If it fails to handle such addresses
5251then the compiler may generate incorrect code or abort.
5252
a9a2595b 5253@findex push_reload
39bdfaa0
RH
5254The macro definition should use @code{push_reload} to indicate parts that
5255need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually
5256suitable to be passed unaltered to @code{push_reload}.
a9a2595b 5257
39bdfaa0 5258The code generated by this macro must not alter the substructure of
a9a2595b
JR
5259@var{x}. If it transforms @var{x} into a more legitimate form, it
5260should assign @var{x} (which will always be a C variable) a new value.
5261This also applies to parts that you change indirectly by calling
5262@code{push_reload}.
5263
39bdfaa0
RH
5264@findex strict_memory_address_p
5265The macro definition may use @code{strict_memory_address_p} to test if
5266the address has become legitimate.
5267
a9a2595b
JR
5268@findex copy_rtx
5269If you want to change only a part of @var{x}, one standard way of doing
5270this is to use @code{copy_rtx}. Note, however, that is unshares only a
5271single level of rtl. Thus, if the part to be changed is not at the
c771326b 5272top level, you'll need to replace first the top level.
a9a2595b
JR
5273It is not necessary for this macro to come up with a legitimate
5274address; but often a machine-dependent strategy can generate better code.
a2c4f8e0 5275@end defmac
a9a2595b 5276
a2c4f8e0 5277@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
feca2ed3
JW
5278A C statement or compound statement with a conditional @code{goto
5279@var{label};} executed if memory address @var{x} (an RTX) can have
5280different meanings depending on the machine mode of the memory
5281reference it is used for or if the address is valid for some modes
5282but not others.
5283
5284Autoincrement and autodecrement addresses typically have mode-dependent
5285effects because the amount of the increment or decrement is the size
5286of the operand being addressed. Some machines have other mode-dependent
5287addresses. Many RISC machines have no mode-dependent addresses.
5288
5289You may assume that @var{addr} is a valid address for the machine.
a2c4f8e0 5290@end defmac
feca2ed3 5291
a2c4f8e0 5292@defmac LEGITIMATE_CONSTANT_P (@var{x})
feca2ed3
JW
5293A C expression that is nonzero if @var{x} is a legitimate constant for
5294an immediate operand on the target machine. You can assume that
5295@var{x} satisfies @code{CONSTANT_P}, so you need not check this. In fact,
5296@samp{1} is a suitable definition for this macro on machines where
bd819a4a 5297anything @code{CONSTANT_P} is valid.
a2c4f8e0 5298@end defmac
feca2ed3 5299
73f8783a
RS
5300@deftypefn {Target Hook} rtx TARGET_DELEGITIMIZE_ADDRESS (rtx @var{x})
5301This hook is used to undo the possibly obfuscating effects of the
5302@code{LEGITIMIZE_ADDRESS} and @code{LEGITIMIZE_RELOAD_ADDRESS} target
5303macros. Some backend implementations of these macros wrap symbol
5304references inside an @code{UNSPEC} rtx to represent PIC or similar
5305addressing modes. This target hook allows GCC's optimizers to understand
5306the semantics of these opaque @code{UNSPEC}s by converting them back
5307into their original form.
5308@end deftypefn
5309
d3da4d14
RH
5310@deftypefn {Target Hook} bool TARGET_CANNOT_FORCE_CONST_MEM (rtx @var{x})
5311This hook should return true if @var{x} is of a form that cannot (or
5312should not) be spilled to the constant pool. The default version of
5313this hook returns false.
5314
5315The primary reason to define this hook is to prevent reload from
5316deciding that a non-legitimate constant would be better reloaded
5317from the constant pool instead of spilling and reloading a register
5318holding the constant. This restriction is often true of addresses
5319of TLS symbols for various targets.
5320@end deftypefn
5321
aacd3885
RS
5322@deftypefn {Target Hook} bool TARGET_USE_BLOCKS_FOR_CONSTANT_P (enum machine_mode @var{mode}, rtx @var{x})
5323This hook should return true if pool entries for constant @var{x} can
5324be placed in an @code{object_block} structure. @var{mode} is the mode
5325of @var{x}.
5326
5327The default version returns false for all constants.
5328@end deftypefn
5329
d16b59fa
DN
5330@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD (void)
5331This hook should return the DECL of a function @var{f} that given an
5332address @var{addr} as an argument returns a mask @var{m} that can be
083cad55 5333used to extract from two vectors the relevant data that resides in
d16b59fa
DN
5334@var{addr} in case @var{addr} is not properly aligned.
5335
5336The autovectrizer, when vectorizing a load operation from an address
5337@var{addr} that may be unaligned, will generate two vector loads from
5338the two aligned addresses around @var{addr}. It then generates a
5339@code{REALIGN_LOAD} operation to extract the relevant data from the
5340two loaded vectors. The first two arguments to @code{REALIGN_LOAD},
5341@var{v1} and @var{v2}, are the two vectors, each of size @var{VS}, and
5342the third argument, @var{OFF}, defines how the data will be extracted
5343from these two vectors: if @var{OFF} is 0, then the returned vector is
083cad55
EC
5344@var{v2}; otherwise, the returned vector is composed from the last
5345@var{VS}-@var{OFF} elements of @var{v1} concatenated to the first
d16b59fa
DN
5346@var{OFF} elements of @var{v2}.
5347
5348If this hook is defined, the autovectorizer will generate a call
5349to @var{f} (using the DECL tree that this hook returns) and will
5350use the return value of @var{f} as the argument @var{OFF} to
5351@code{REALIGN_LOAD}. Therefore, the mask @var{m} returned by @var{f}
083cad55 5352should comply with the semantics expected by @code{REALIGN_LOAD}
d16b59fa
DN
5353described above.
5354If this hook is not defined, then @var{addr} will be used as
5355the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low
5356log2(@var{VS})-1 bits of @var{addr} will be considered.
5357@end deftypefn
5358
89d67cca
DN
5359@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN (tree @var{x})
5360This hook should return the DECL of a function @var{f} that implements
5361widening multiplication of the even elements of two input vectors of type @var{x}.
5362
5363If this hook is defined, the autovectorizer will use it along with the
5364@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD} target hook when vectorizing
5365widening multiplication in cases that the order of the results does not have to be
5366preserved (e.g. used only by a reduction computation). Otherwise, the
5367@code{widen_mult_hi/lo} idioms will be used.
5368@end deftypefn
5369
5370@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD (tree @var{x})
5371This hook should return the DECL of a function @var{f} that implements
5372widening multiplication of the odd elements of two input vectors of type @var{x}.
5373
5374If this hook is defined, the autovectorizer will use it along with the
5375@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN} target hook when vectorizing
5376widening multiplication in cases that the order of the results does not have to be
5377preserved (e.g. used only by a reduction computation). Otherwise, the
5378@code{widen_mult_hi/lo} idioms will be used.
5379@end deftypefn
5380
2505a3f2
RG
5381@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION (enum built_in_function @var{code}, tree @var{vec_type})
5382This hook should return the decl of a function that implements the vectorized
5383variant of the builtin function with builtin function code @var{code} or
5384@code{NULL_TREE} if such a function is not available. The return type of
5385the vectorized function shall be of vector type @var{vec_type}.
5386@end deftypefn
5387
aacd3885
RS
5388@node Anchored Addresses
5389@section Anchored Addresses
5390@cindex anchored addresses
5391@cindex @option{-fsection-anchors}
5392
5393GCC usually addresses every static object as a separate entity.
5394For example, if we have:
5395
5396@smallexample
5397static int a, b, c;
5398int foo (void) @{ return a + b + c; @}
5399@end smallexample
5400
5401the code for @code{foo} will usually calculate three separate symbolic
5402addresses: those of @code{a}, @code{b} and @code{c}. On some targets,
5403it would be better to calculate just one symbolic address and access
5404the three variables relative to it. The equivalent pseudocode would
5405be something like:
5406
5407@smallexample
5408int foo (void)
5409@{
5410 register int *xr = &x;
5411 return xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
5412@}
5413@end smallexample
5414
5415(which isn't valid C). We refer to shared addresses like @code{x} as
5416``section anchors''. Their use is controlled by @option{-fsection-anchors}.
5417
5418The hooks below describe the target properties that GCC needs to know
5419in order to make effective use of section anchors. It won't use
5420section anchors at all unless either @code{TARGET_MIN_ANCHOR_OFFSET}
5421or @code{TARGET_MAX_ANCHOR_OFFSET} is set to a nonzero value.
5422
5423@deftypevar {Target Hook} HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
5424The minimum offset that should be applied to a section anchor.
5425On most targets, it should be the smallest offset that can be
5426applied to a base register while still giving a legitimate address
5427for every mode. The default value is 0.
5428@end deftypevar
5429
5430@deftypevar {Target Hook} HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
5431Like @code{TARGET_MIN_ANCHOR_OFFSET}, but the maximum (inclusive)
5432offset that should be applied to section anchors. The default
5433value is 0.
5434@end deftypevar
5435
5436@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_ANCHOR (rtx @var{x})
5437Write the assembly code to define section anchor @var{x}, which is a
5438@code{SYMBOL_REF} for which @samp{SYMBOL_REF_ANCHOR_P (@var{x})} is true.
5439The hook is called with the assembly output position set to the beginning
5440of @code{SYMBOL_REF_BLOCK (@var{x})}.
5441
5442If @code{ASM_OUTPUT_DEF} is available, the hook's default definition uses
5443it to define the symbol as @samp{. + SYMBOL_REF_BLOCK_OFFSET (@var{x})}.
5444If @code{ASM_OUTPUT_DEF} is not available, the hook's default definition
5445is @code{NULL}, which disables the use of section anchors altogether.
5446@end deftypefn
5447
5448@deftypefn {Target Hook} bool TARGET_USE_ANCHORS_FOR_SYMBOL_P (rtx @var{x})
5449Return true if GCC should attempt to use anchors to access @code{SYMBOL_REF}
3fa9c136 5450@var{x}. You can assume @samp{SYMBOL_REF_HAS_BLOCK_INFO_P (@var{x})} and
aacd3885
RS
5451@samp{!SYMBOL_REF_ANCHOR_P (@var{x})}.
5452
5453The default version is correct for most targets, but you might need to
5454intercept this hook to handle things like target-specific attributes
5455or target-specific sections.
5456@end deftypefn
5457
feca2ed3
JW
5458@node Condition Code
5459@section Condition Code Status
5460@cindex condition code status
5461
5462@c prevent bad page break with this line
5463This describes the condition code status.
5464
5465@findex cc_status
5466The file @file{conditions.h} defines a variable @code{cc_status} to
5467describe how the condition code was computed (in case the interpretation of
5468the condition code depends on the instruction that it was set by). This
5469variable contains the RTL expressions on which the condition code is
5470currently based, and several standard flags.
5471
5472Sometimes additional machine-specific flags must be defined in the machine
5473description header file. It can also add additional machine-specific
5474information by defining @code{CC_STATUS_MDEP}.
5475
a2c4f8e0 5476@defmac CC_STATUS_MDEP
feca2ed3
JW
5477C code for a data type which is used for declaring the @code{mdep}
5478component of @code{cc_status}. It defaults to @code{int}.
5479
5480This macro is not used on machines that do not use @code{cc0}.
a2c4f8e0 5481@end defmac
feca2ed3 5482
a2c4f8e0 5483@defmac CC_STATUS_MDEP_INIT
feca2ed3
JW
5484A C expression to initialize the @code{mdep} field to ``empty''.
5485The default definition does nothing, since most machines don't use
5486the field anyway. If you want to use the field, you should probably
5487define this macro to initialize it.
5488
5489This macro is not used on machines that do not use @code{cc0}.
a2c4f8e0 5490@end defmac
feca2ed3 5491
a2c4f8e0 5492@defmac NOTICE_UPDATE_CC (@var{exp}, @var{insn})
feca2ed3
JW
5493A C compound statement to set the components of @code{cc_status}
5494appropriately for an insn @var{insn} whose body is @var{exp}. It is
5495this macro's responsibility to recognize insns that set the condition
5496code as a byproduct of other activity as well as those that explicitly
5497set @code{(cc0)}.
5498
5499This macro is not used on machines that do not use @code{cc0}.
5500
5501If there are insns that do not set the condition code but do alter
5502other machine registers, this macro must check to see whether they
5503invalidate the expressions that the condition code is recorded as
5504reflecting. For example, on the 68000, insns that store in address
5505registers do not set the condition code, which means that usually
5506@code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such
5507insns. But suppose that the previous insn set the condition code
5508based on location @samp{a4@@(102)} and the current insn stores a new
5509value in @samp{a4}. Although the condition code is not changed by
5510this, it will no longer be true that it reflects the contents of
5511@samp{a4@@(102)}. Therefore, @code{NOTICE_UPDATE_CC} must alter
5512@code{cc_status} in this case to say that nothing is known about the
5513condition code value.
5514
5515The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal
5516with the results of peephole optimization: insns whose patterns are
5517@code{parallel} RTXs containing various @code{reg}, @code{mem} or
5518constants which are just the operands. The RTL structure of these
5519insns is not sufficient to indicate what the insns actually do. What
5520@code{NOTICE_UPDATE_CC} should do when it sees one is just to run
5521@code{CC_STATUS_INIT}.
5522
5523A possible definition of @code{NOTICE_UPDATE_CC} is to call a function
5524that looks at an attribute (@pxref{Insn Attributes}) named, for example,
5525@samp{cc}. This avoids having detailed information about patterns in
5526two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}.
a2c4f8e0 5527@end defmac
feca2ed3 5528
a2c4f8e0 5529@defmac SELECT_CC_MODE (@var{op}, @var{x}, @var{y})
feca2ed3
JW
5530Returns a mode from class @code{MODE_CC} to be used when comparison
5531operation code @var{op} is applied to rtx @var{x} and @var{y}. For
981f6289 5532example, on the SPARC, @code{SELECT_CC_MODE} is defined as (see
feca2ed3
JW
5533@pxref{Jump Patterns} for a description of the reason for this
5534definition)
5535
5536@smallexample
5537#define SELECT_CC_MODE(OP,X,Y) \
5538 (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \
5539 ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode) \
5540 : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS \
5541 || GET_CODE (X) == NEG) \
5542 ? CC_NOOVmode : CCmode))
5543@end smallexample
5544
94134f42
ZW
5545You should define this macro if and only if you define extra CC modes
5546in @file{@var{machine}-modes.def}.
a2c4f8e0 5547@end defmac
feca2ed3 5548
a2c4f8e0 5549@defmac CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1})
8760eaae 5550On some machines not all possible comparisons are defined, but you can
feca2ed3
JW
5551convert an invalid comparison into a valid one. For example, the Alpha
5552does not have a @code{GT} comparison, but you can use an @code{LT}
5553comparison instead and swap the order of the operands.
5554
5555On such machines, define this macro to be a C statement to do any
5556required conversions. @var{code} is the initial comparison code
5557and @var{op0} and @var{op1} are the left and right operands of the
5558comparison, respectively. You should modify @var{code}, @var{op0}, and
5559@var{op1} as required.
5560
a3a15b4d 5561GCC will not assume that the comparison resulting from this macro is
feca2ed3
JW
5562valid but will see if the resulting insn matches a pattern in the
5563@file{md} file.
5564
5565You need not define this macro if it would never change the comparison
5566code or operands.
a2c4f8e0 5567@end defmac
feca2ed3 5568
a2c4f8e0 5569@defmac REVERSIBLE_CC_MODE (@var{mode})
feca2ed3
JW
5570A C expression whose value is one if it is always safe to reverse a
5571comparison whose mode is @var{mode}. If @code{SELECT_CC_MODE}
5572can ever return @var{mode} for a floating-point inequality comparison,
5573then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero.
5574
5575You need not define this macro if it would always returns zero or if the
5576floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}.
981f6289 5577For example, here is the definition used on the SPARC, where floating-point
feca2ed3
JW
5578inequality comparisons are always given @code{CCFPEmode}:
5579
5580@smallexample
5581#define REVERSIBLE_CC_MODE(MODE) ((MODE) != CCFPEmode)
5582@end smallexample
a2c4f8e0 5583@end defmac
feca2ed3 5584
a2c4f8e0 5585@defmac REVERSE_CONDITION (@var{code}, @var{mode})
9e7adcb3
JH
5586A C expression whose value is reversed condition code of the @var{code} for
5587comparison done in CC_MODE @var{mode}. The macro is used only in case
5588@code{REVERSIBLE_CC_MODE (@var{mode})} is nonzero. Define this macro in case
5589machine has some non-standard way how to reverse certain conditionals. For
5590instance in case all floating point conditions are non-trapping, compiler may
5591freely convert unordered compares to ordered one. Then definition may look
5592like:
5593
5594@smallexample
5595#define REVERSE_CONDITION(CODE, MODE) \
c771326b 5596 ((MODE) != CCFPmode ? reverse_condition (CODE) \
9e7adcb3
JH
5597 : reverse_condition_maybe_unordered (CODE))
5598@end smallexample
a2c4f8e0 5599@end defmac
9e7adcb3 5600
15dce812 5601@defmac REVERSE_CONDEXEC_PREDICATES_P (@var{op1}, @var{op2})
7e6d8ba1 5602A C expression that returns true if the conditional execution predicate
15dce812
RE
5603@var{op1}, a comparison operation, is the inverse of @var{op2} and vice
5604versa. Define this to return 0 if the target has conditional execution
5605predicates that cannot be reversed safely. There is no need to validate
5606that the arguments of op1 and op2 are the same, this is done separately.
5607If no expansion is specified, this macro is defined as follows:
7e6d8ba1
AH
5608
5609@smallexample
aee96fe9 5610#define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
15dce812 5611 (GET_CODE ((x)) == reversed_comparison_code ((y), NULL))
7e6d8ba1 5612@end smallexample
a2c4f8e0 5613@end defmac
feca2ed3 5614
e129d93a
ILT
5615@deftypefn {Target Hook} bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *, unsigned int *)
5616On targets which do not use @code{(cc0)}, and which use a hard
5617register rather than a pseudo-register to hold condition codes, the
5618regular CSE passes are often not able to identify cases in which the
5619hard register is set to a common value. Use this hook to enable a
5620small pass which optimizes such cases. This hook should return true
5621to enable this pass, and it should set the integers to which its
5622arguments point to the hard register numbers used for condition codes.
5623When there is only one such register, as is true on most systems, the
5624integer pointed to by the second argument should be set to
5625@code{INVALID_REGNUM}.
5626
5627The default version of this hook returns false.
5628@end deftypefn
5629
5630@deftypefn {Target Hook} enum machine_mode TARGET_CC_MODES_COMPATIBLE (enum machine_mode, enum machine_mode)
5631On targets which use multiple condition code modes in class
5632@code{MODE_CC}, it is sometimes the case that a comparison can be
5633validly done in more than one mode. On such a system, define this
5634target hook to take two mode arguments and to return a mode in which
5635both comparisons may be validly done. If there is no such mode,
5636return @code{VOIDmode}.
5637
5638The default version of this hook checks whether the modes are the
5639same. If they are, it returns that mode. If they are different, it
5640returns @code{VOIDmode}.
5641@end deftypefn
5642
feca2ed3
JW
5643@node Costs
5644@section Describing Relative Costs of Operations
5645@cindex costs of instructions
5646@cindex relative costs
5647@cindex speed of instructions
5648
5649These macros let you describe the relative speed of various operations
5650on the target machine.
5651
a2c4f8e0 5652@defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to})
e56b4594
AO
5653A C expression for the cost of moving data of mode @var{mode} from a
5654register in class @var{from} to one in class @var{to}. The classes are
5655expressed using the enumeration values such as @code{GENERAL_REGS}. A
5656value of 2 is the default; other values are interpreted relative to
5657that.
feca2ed3
JW
5658
5659It is not required that the cost always equal 2 when @var{from} is the
5660same as @var{to}; on some machines it is expensive to move between
5661registers if they are not general registers.
5662
5663If reload sees an insn consisting of a single @code{set} between two
5664hard registers, and if @code{REGISTER_MOVE_COST} applied to their
5665classes returns a value of 2, reload does not check to ensure that the
5666constraints of the insn are met. Setting a cost of other than 2 will
5667allow reload to verify that the constraints are met. You should do this
5668if the @samp{mov@var{m}} pattern's constraints do not allow such copying.
a2c4f8e0 5669@end defmac
feca2ed3 5670
a2c4f8e0 5671@defmac MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in})
cbd5b9a2
KR
5672A C expression for the cost of moving data of mode @var{mode} between a
5673register of class @var{class} and memory; @var{in} is zero if the value
df2a54e9 5674is to be written to memory, nonzero if it is to be read in. This cost
473fe49b
KR
5675is relative to those in @code{REGISTER_MOVE_COST}. If moving between
5676registers and memory is more expensive than between two registers, you
5677should define this macro to express the relative cost.
5678
a3a15b4d 5679If you do not define this macro, GCC uses a default cost of 4 plus
38e01259 5680the cost of copying via a secondary reload register, if one is
473fe49b
KR
5681needed. If your machine requires a secondary reload register to copy
5682between memory and a register of @var{class} but the reload mechanism is
5683more complex than copying via an intermediate, define this macro to
5684reflect the actual cost of the move.
5685
a3a15b4d 5686GCC defines the function @code{memory_move_secondary_cost} if
473fe49b
KR
5687secondary reloads are needed. It computes the costs due to copying via
5688a secondary register. If your machine copies from memory using a
5689secondary register in the conventional way but the default base value of
56904 is not correct for your machine, define this macro to add some other
5691value to the result of that function. The arguments to that function
5692are the same as to this macro.
a2c4f8e0 5693@end defmac
cbd5b9a2 5694
a2c4f8e0 5695@defmac BRANCH_COST
feca2ed3
JW
5696A C expression for the cost of a branch instruction. A value of 1 is
5697the default; other values are interpreted relative to that.
a2c4f8e0 5698@end defmac
feca2ed3
JW
5699
5700Here are additional macros which do not specify precise relative costs,
a3a15b4d 5701but only that certain actions are more expensive than GCC would
feca2ed3
JW
5702ordinarily expect.
5703
a2c4f8e0 5704@defmac SLOW_BYTE_ACCESS
feca2ed3 5705Define this macro as a C expression which is nonzero if accessing less
e979f9e8 5706than a word of memory (i.e.@: a @code{char} or a @code{short}) is no
feca2ed3
JW
5707faster than accessing a word of memory, i.e., if such access
5708require more than one instruction or if there is no difference in cost
5709between byte and (aligned) word loads.
5710
5711When this macro is not defined, the compiler will access a field by
5712finding the smallest containing object; when it is defined, a fullword
5713load will be used if alignment permits. Unless bytes accesses are
5714faster than word accesses, using word accesses is preferable since it
5715may eliminate subsequent memory access if subsequent accesses occur to
5716other fields in the same word of the structure, but to different bytes.
a2c4f8e0 5717@end defmac
feca2ed3 5718
a2c4f8e0 5719@defmac SLOW_UNALIGNED_ACCESS (@var{mode}, @var{alignment})
5fad8ebf
DE
5720Define this macro to be the value 1 if memory accesses described by the
5721@var{mode} and @var{alignment} parameters have a cost many times greater
5722than aligned accesses, for example if they are emulated in a trap
5723handler.
feca2ed3 5724
df2a54e9
JM
5725When this macro is nonzero, the compiler will act as if
5726@code{STRICT_ALIGNMENT} were nonzero when generating code for block
feca2ed3 5727moves. This can cause significantly more instructions to be produced.
df2a54e9 5728Therefore, do not set this macro nonzero if unaligned accesses only add a
feca2ed3
JW
5729cycle or two to the time for a memory access.
5730
6be57663 5731If the value of this macro is always zero, it need not be defined. If
df2a54e9
JM
5732this macro is defined, it should produce a nonzero value when
5733@code{STRICT_ALIGNMENT} is nonzero.
a2c4f8e0 5734@end defmac
feca2ed3 5735
a2c4f8e0 5736@defmac MOVE_RATIO
9862dea9 5737The threshold of number of scalar memory-to-memory move insns, @emph{below}
c5c76735 5738which a sequence of insns should be generated instead of a
feca2ed3
JW
5739string move insn or a library call. Increasing the value will always
5740make code faster, but eventually incurs high cost in increased code size.
5741
c5c76735
JL
5742Note that on machines where the corresponding move insn is a
5743@code{define_expand} that emits a sequence of insns, this macro counts
5744the number of such sequences.
9862dea9 5745
feca2ed3 5746If you don't define this, a reasonable default is used.
a2c4f8e0 5747@end defmac
feca2ed3 5748
a2c4f8e0 5749@defmac MOVE_BY_PIECES_P (@var{size}, @var{alignment})
fbe1758d
AM
5750A C expression used to determine whether @code{move_by_pieces} will be used to
5751copy a chunk of memory, or whether some other block move mechanism
6e01bd94 5752will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less
fbe1758d 5753than @code{MOVE_RATIO}.
a2c4f8e0 5754@end defmac
fbe1758d 5755
a2c4f8e0 5756@defmac MOVE_MAX_PIECES
fbe1758d 5757A C expression used by @code{move_by_pieces} to determine the largest unit
6e01bd94 5758a load or store used to copy memory is. Defaults to @code{MOVE_MAX}.
a2c4f8e0 5759@end defmac
fbe1758d 5760
a2c4f8e0 5761@defmac CLEAR_RATIO
78762e3b
RS
5762The threshold of number of scalar move insns, @emph{below} which a sequence
5763of insns should be generated to clear memory instead of a string clear insn
5764or a library call. Increasing the value will always make code faster, but
5765eventually incurs high cost in increased code size.
5766
5767If you don't define this, a reasonable default is used.
a2c4f8e0 5768@end defmac
78762e3b 5769
a2c4f8e0 5770@defmac CLEAR_BY_PIECES_P (@var{size}, @var{alignment})
78762e3b
RS
5771A C expression used to determine whether @code{clear_by_pieces} will be used
5772to clear a chunk of memory, or whether some other block clear mechanism
5773will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less
5774than @code{CLEAR_RATIO}.
a2c4f8e0 5775@end defmac
78762e3b 5776
a2c4f8e0 5777@defmac STORE_BY_PIECES_P (@var{size}, @var{alignment})
4977bab6
ZW
5778A C expression used to determine whether @code{store_by_pieces} will be
5779used to set a chunk of memory to a constant value, or whether some other
5780mechanism will be used. Used by @code{__builtin_memset} when storing
5781values other than constant zero and by @code{__builtin_strcpy} when
5782when called with a constant source string.
0bdcd332 5783Defaults to 1 if @code{move_by_pieces_ninsns} returns less
45d78e7f 5784than @code{MOVE_RATIO}.
a2c4f8e0 5785@end defmac
4977bab6 5786
a2c4f8e0 5787@defmac USE_LOAD_POST_INCREMENT (@var{mode})
6e01bd94
MH
5788A C expression used to determine whether a load postincrement is a good
5789thing to use for a given mode. Defaults to the value of
5790@code{HAVE_POST_INCREMENT}.
a2c4f8e0 5791@end defmac
6e01bd94 5792
a2c4f8e0 5793@defmac USE_LOAD_POST_DECREMENT (@var{mode})
6e01bd94
MH
5794A C expression used to determine whether a load postdecrement is a good
5795thing to use for a given mode. Defaults to the value of
5796@code{HAVE_POST_DECREMENT}.
a2c4f8e0 5797@end defmac
fbe1758d 5798
a2c4f8e0 5799@defmac USE_LOAD_PRE_INCREMENT (@var{mode})
6e01bd94
MH
5800A C expression used to determine whether a load preincrement is a good
5801thing to use for a given mode. Defaults to the value of
5802@code{HAVE_PRE_INCREMENT}.
a2c4f8e0 5803@end defmac
6e01bd94 5804
a2c4f8e0 5805@defmac USE_LOAD_PRE_DECREMENT (@var{mode})
6e01bd94
MH
5806A C expression used to determine whether a load predecrement is a good
5807thing to use for a given mode. Defaults to the value of
5808@code{HAVE_PRE_DECREMENT}.
a2c4f8e0 5809@end defmac
fbe1758d 5810
a2c4f8e0 5811@defmac USE_STORE_POST_INCREMENT (@var{mode})
6e01bd94
MH
5812A C expression used to determine whether a store postincrement is a good
5813thing to use for a given mode. Defaults to the value of
5814@code{HAVE_POST_INCREMENT}.
a2c4f8e0 5815@end defmac
6e01bd94 5816
a2c4f8e0 5817@defmac USE_STORE_POST_DECREMENT (@var{mode})
c771326b 5818A C expression used to determine whether a store postdecrement is a good
6e01bd94
MH
5819thing to use for a given mode. Defaults to the value of
5820@code{HAVE_POST_DECREMENT}.
a2c4f8e0 5821@end defmac
fbe1758d 5822
a2c4f8e0 5823@defmac USE_STORE_PRE_INCREMENT (@var{mode})
6e01bd94
MH
5824This macro is used to determine whether a store preincrement is a good
5825thing to use for a given mode. Defaults to the value of
5826@code{HAVE_PRE_INCREMENT}.
a2c4f8e0 5827@end defmac
6e01bd94 5828
a2c4f8e0 5829@defmac USE_STORE_PRE_DECREMENT (@var{mode})
6e01bd94
MH
5830This macro is used to determine whether a store predecrement is a good
5831thing to use for a given mode. Defaults to the value of
5832@code{HAVE_PRE_DECREMENT}.
a2c4f8e0 5833@end defmac
fbe1758d 5834
a2c4f8e0 5835@defmac NO_FUNCTION_CSE
feca2ed3
JW
5836Define this macro if it is as good or better to call a constant
5837function address than to call an address kept in a register.
a2c4f8e0 5838@end defmac
feca2ed3 5839
a2c4f8e0 5840@defmac RANGE_TEST_NON_SHORT_CIRCUIT
85e50b6b
DE
5841Define this macro if a non-short-circuit operation produced by
5842@samp{fold_range_test ()} is optimal. This macro defaults to true if
5843@code{BRANCH_COST} is greater than or equal to the value 2.
a2c4f8e0 5844@end defmac
feca2ed3 5845
3c50106f
RH
5846@deftypefn {Target Hook} bool TARGET_RTX_COSTS (rtx @var{x}, int @var{code}, int @var{outer_code}, int *@var{total})
5847This target hook describes the relative costs of RTL expressions.
5848
5849The cost may depend on the precise form of the expression, which is
5850available for examination in @var{x}, and the rtx code of the expression
5851in which it is contained, found in @var{outer_code}. @var{code} is the
5852expression code---redundant, since it can be obtained with
5853@code{GET_CODE (@var{x})}.
5854
5855In implementing this hook, you can use the construct
5856@code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast
5857instructions.
5858
5859On entry to the hook, @code{*@var{total}} contains a default estimate
5860for the cost of the expression. The hook should modify this value as
31a52b86
RS
5861necessary. Traditionally, the default costs are @code{COSTS_N_INSNS (5)}
5862for multiplications, @code{COSTS_N_INSNS (7)} for division and modulus
5863operations, and @code{COSTS_N_INSNS (1)} for all other operations.
5864
8a36672b 5865When optimizing for code size, i.e.@: when @code{optimize_size} is
1a141fe1 5866nonzero, this target hook should be used to estimate the relative
31a52b86 5867size cost of an expression, again relative to @code{COSTS_N_INSNS}.
3c50106f
RH
5868
5869The hook returns true when all subexpressions of @var{x} have been
5870processed, and false when @code{rtx_cost} should recurse.
5871@end deftypefn
5872
10154ff8
RH
5873@deftypefn {Target Hook} int TARGET_ADDRESS_COST (rtx @var{address})
5874This hook computes the cost of an addressing mode that contains
5875@var{address}. If not defined, the cost is computed from
5876the @var{address} expression and the @code{TARGET_RTX_COST} hook.
5877
5878For most CISC machines, the default cost is a good approximation of the
5879true cost of the addressing mode. However, on RISC machines, all
5880instructions normally have the same length and execution time. Hence
5881all addresses will have equal costs.
5882
5883In cases where more than one form of an address is known, the form with
5884the lowest cost will be used. If multiple forms have the same, lowest,
5885cost, the one that is the most complex will be used.
5886
5887For example, suppose an address that is equal to the sum of a register
5888and a constant is used twice in the same basic block. When this macro
5889is not defined, the address will be computed in a register and memory
5890references will be indirect through that register. On machines where
5891the cost of the addressing mode containing the sum is no higher than
5892that of a simple indirect reference, this will produce an additional
5893instruction and possibly require an additional register. Proper
5894specification of this macro eliminates this overhead for such machines.
5895
5896This hook is never called with an invalid address.
5897
5898On machines where an address involving more than one register is as
5899cheap as an address computation involving only one register, defining
5900@code{TARGET_ADDRESS_COST} to reflect this can cause two registers to
5901be live over a region of code where only one would have been if
5902@code{TARGET_ADDRESS_COST} were not defined in that manner. This effect
5903should be considered in the definition of this macro. Equivalent costs
5904should probably only be given to addresses with different numbers of
5905registers on machines with lots of registers.
5906@end deftypefn
5907
c237e94a
ZW
5908@node Scheduling
5909@section Adjusting the Instruction Scheduler
5910
5911The instruction scheduler may need a fair amount of machine-specific
5912adjustment in order to produce good code. GCC provides several target
5913hooks for this purpose. It is usually enough to define just a few of
5914them: try the first ones in this list first.
5915
5916@deftypefn {Target Hook} int TARGET_SCHED_ISSUE_RATE (void)
fae15c93
VM
5917This hook returns the maximum number of instructions that can ever
5918issue at the same time on the target machine. The default is one.
5919Although the insn scheduler can define itself the possibility of issue
5920an insn on the same cycle, the value can serve as an additional
5921constraint to issue insns on the same simulated processor cycle (see
5922hooks @samp{TARGET_SCHED_REORDER} and @samp{TARGET_SCHED_REORDER2}).
5923This value must be constant over the entire compilation. If you need
5924it to vary depending on what the instructions are, you must use
c237e94a
ZW
5925@samp{TARGET_SCHED_VARIABLE_ISSUE}.
5926@end deftypefn
5927
5928@deftypefn {Target Hook} int TARGET_SCHED_VARIABLE_ISSUE (FILE *@var{file}, int @var{verbose}, rtx @var{insn}, int @var{more})
5929This hook is executed by the scheduler after it has scheduled an insn
5930from the ready list. It should return the number of insns which can
3ee04299
DE
5931still be issued in the current cycle. The default is
5932@samp{@w{@var{more} - 1}} for insns other than @code{CLOBBER} and
5933@code{USE}, which normally are not counted against the issue rate.
5934You should define this hook if some insns take more machine resources
5935than others, so that fewer insns can follow them in the same cycle.
5936@var{file} is either a null pointer, or a stdio stream to write any
5937debug output to. @var{verbose} is the verbose level provided by
5938@option{-fsched-verbose-@var{n}}. @var{insn} is the instruction that
5939was scheduled.
c237e94a
ZW
5940@end deftypefn
5941
5942@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_COST (rtx @var{insn}, rtx @var{link}, rtx @var{dep_insn}, int @var{cost})
fae15c93
VM
5943This function corrects the value of @var{cost} based on the
5944relationship between @var{insn} and @var{dep_insn} through the
5945dependence @var{link}. It should return the new value. The default
5946is to make no adjustment to @var{cost}. This can be used for example
5947to specify to the scheduler using the traditional pipeline description
c237e94a 5948that an output- or anti-dependence does not incur the same cost as a
fae15c93
VM
5949data-dependence. If the scheduler using the automaton based pipeline
5950description, the cost of anti-dependence is zero and the cost of
5951output-dependence is maximum of one and the difference of latency
5952times of the first and the second insns. If these values are not
5953acceptable, you could use the hook to modify them too. See also
fa0aee89 5954@pxref{Processor pipeline description}.
c237e94a
ZW
5955@end deftypefn
5956
5957@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_PRIORITY (rtx @var{insn}, int @var{priority})
5958This hook adjusts the integer scheduling priority @var{priority} of
496d7bb0
MK
5959@var{insn}. It should return the new priority. Increase the priority to
5960execute @var{insn} earlier, reduce the priority to execute @var{insn}
c237e94a
ZW
5961later. Do not define this hook if you do not need to adjust the
5962scheduling priorities of insns.
5963@end deftypefn
5964
5965@deftypefn {Target Hook} int TARGET_SCHED_REORDER (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_readyp}, int @var{clock})
5966This hook is executed by the scheduler after it has scheduled the ready
5967list, to allow the machine description to reorder it (for example to
5968combine two small instructions together on @samp{VLIW} machines).
5969@var{file} is either a null pointer, or a stdio stream to write any
5970debug output to. @var{verbose} is the verbose level provided by
5971@option{-fsched-verbose-@var{n}}. @var{ready} is a pointer to the ready
5972list of instructions that are ready to be scheduled. @var{n_readyp} is
5973a pointer to the number of elements in the ready list. The scheduler
5974reads the ready list in reverse order, starting with
5975@var{ready}[@var{*n_readyp}-1] and going to @var{ready}[0]. @var{clock}
5976is the timer tick of the scheduler. You may modify the ready list and
5977the number of ready insns. The return value is the number of insns that
5978can issue this cycle; normally this is just @code{issue_rate}. See also
5979@samp{TARGET_SCHED_REORDER2}.
5980@end deftypefn
5981
5982@deftypefn {Target Hook} int TARGET_SCHED_REORDER2 (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_ready}, @var{clock})
5983Like @samp{TARGET_SCHED_REORDER}, but called at a different time. That
5984function is called whenever the scheduler starts a new cycle. This one
5985is called once per iteration over a cycle, immediately after
5986@samp{TARGET_SCHED_VARIABLE_ISSUE}; it can reorder the ready list and
5987return the number of insns to be scheduled in the same cycle. Defining
5988this hook can be useful if there are frequent situations where
5989scheduling one insn causes other insns to become ready in the same
5990cycle. These other insns can then be taken into account properly.
5991@end deftypefn
5992
30028c85
VM
5993@deftypefn {Target Hook} void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx @var{head}, rtx @var{tail})
5994This hook is called after evaluation forward dependencies of insns in
5995chain given by two parameter values (@var{head} and @var{tail}
5996correspondingly) but before insns scheduling of the insn chain. For
5997example, it can be used for better insn classification if it requires
5998analysis of dependencies. This hook can use backward and forward
5999dependencies of the insn scheduler because they are already
6000calculated.
6001@end deftypefn
6002
c237e94a
ZW
6003@deftypefn {Target Hook} void TARGET_SCHED_INIT (FILE *@var{file}, int @var{verbose}, int @var{max_ready})
6004This hook is executed by the scheduler at the beginning of each block of
6005instructions that are to be scheduled. @var{file} is either a null
6006pointer, or a stdio stream to write any debug output to. @var{verbose}
6007is the verbose level provided by @option{-fsched-verbose-@var{n}}.
6008@var{max_ready} is the maximum number of insns in the current scheduling
6009region that can be live at the same time. This can be used to allocate
431ae0bf 6010scratch space if it is needed, e.g.@: by @samp{TARGET_SCHED_REORDER}.
c237e94a
ZW
6011@end deftypefn
6012
6013@deftypefn {Target Hook} void TARGET_SCHED_FINISH (FILE *@var{file}, int @var{verbose})
6014This hook is executed by the scheduler at the end of each block of
6015instructions that are to be scheduled. It can be used to perform
6016cleanup of any actions done by the other scheduling hooks. @var{file}
6017is either a null pointer, or a stdio stream to write any debug output
6018to. @var{verbose} is the verbose level provided by
6019@option{-fsched-verbose-@var{n}}.
6020@end deftypefn
6021
58565a33
SKG
6022@deftypefn {Target Hook} void TARGET_SCHED_INIT_GLOBAL (FILE *@var{file}, int @var{verbose}, int @var{old_max_uid})
6023This hook is executed by the scheduler after function level initializations.
6024@var{file} is either a null pointer, or a stdio stream to write any debug output to.
6025@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
6026@var{old_max_uid} is the maximum insn uid when scheduling begins.
6027@end deftypefn
6028
6029@deftypefn {Target Hook} void TARGET_SCHED_FINISH_GLOBAL (FILE *@var{file}, int @var{verbose})
8a36672b 6030This is the cleanup hook corresponding to @code{TARGET_SCHED_INIT_GLOBAL}.
58565a33
SKG
6031@var{file} is either a null pointer, or a stdio stream to write any debug output to.
6032@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
6033@end deftypefn
6034
fae15c93
VM
6035@deftypefn {Target Hook} int TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
6036The hook returns an RTL insn. The automaton state used in the
6037pipeline hazard recognizer is changed as if the insn were scheduled
6038when the new simulated processor cycle starts. Usage of the hook may
6039simplify the automaton pipeline description for some @acronym{VLIW}
6040processors. If the hook is defined, it is used only for the automaton
6041based pipeline description. The default is not to change the state
6042when the new simulated processor cycle starts.
6043@end deftypefn
6044
6045@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
6046The hook can be used to initialize data used by the previous hook.
6047@end deftypefn
6048
6049@deftypefn {Target Hook} int TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
6050The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
6051to changed the state as if the insn were scheduled when the new
6052simulated processor cycle finishes.
6053@end deftypefn
6054
6055@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
6056The hook is analogous to @samp{TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN} but
6057used to initialize data used by the previous hook.
6058@end deftypefn
6059
6060@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD (void)
6061This hook controls better choosing an insn from the ready insn queue
6062for the @acronym{DFA}-based insn scheduler. Usually the scheduler
6063chooses the first insn from the queue. If the hook returns a positive
6064value, an additional scheduler code tries all permutations of
6065@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()}
6066subsequent ready insns to choose an insn whose issue will result in
6067maximal number of issued insns on the same cycle. For the
6068@acronym{VLIW} processor, the code could actually solve the problem of
6069packing simple insns into the @acronym{VLIW} insn. Of course, if the
6070rules of @acronym{VLIW} packing are described in the automaton.
6071
6072This code also could be used for superscalar @acronym{RISC}
6073processors. Let us consider a superscalar @acronym{RISC} processor
6074with 3 pipelines. Some insns can be executed in pipelines @var{A} or
6075@var{B}, some insns can be executed only in pipelines @var{B} or
6076@var{C}, and one insn can be executed in pipeline @var{B}. The
6077processor may issue the 1st insn into @var{A} and the 2nd one into
6078@var{B}. In this case, the 3rd insn will wait for freeing @var{B}
6079until the next cycle. If the scheduler issues the 3rd insn the first,
6080the processor could issue all 3 insns per cycle.
6081
6082Actually this code demonstrates advantages of the automaton based
6083pipeline hazard recognizer. We try quickly and easy many insn
6084schedules to choose the best one.
6085
6086The default is no multipass scheduling.
6087@end deftypefn
6088
30028c85
VM
6089@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx)
6090
6091This hook controls what insns from the ready insn queue will be
6092considered for the multipass insn scheduling. If the hook returns
6093zero for insn passed as the parameter, the insn will be not chosen to
6094be issued.
6095
62b9c42c 6096The default is that any ready insns can be chosen to be issued.
30028c85
VM
6097@end deftypefn
6098
6099@deftypefn {Target Hook} int TARGET_SCHED_DFA_NEW_CYCLE (FILE *, int, rtx, int, int, int *)
6100
6101This hook is called by the insn scheduler before issuing insn passed
6102as the third parameter on given cycle. If the hook returns nonzero,
6103the insn is not issued on given processors cycle. Instead of that,
6104the processor cycle is advanced. If the value passed through the last
6105parameter is zero, the insn ready queue is not sorted on the new cycle
6106start as usually. The first parameter passes file for debugging
6107output. The second one passes the scheduler verbose level of the
6108debugging output. The forth and the fifth parameter values are
6109correspondingly processor cycle on which the previous insn has been
6110issued and the current processor cycle.
6111@end deftypefn
6112
1b2c3767 6113@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 6114This hook is used to define which dependences are considered costly by
daf2f129 6115the target, so costly that it is not advisable to schedule the insns that
569fa502 6116are involved in the dependence too close to one another. The parameters
daf2f129
JM
6117to this hook are as follows: The second parameter @var{insn2} is dependent
6118upon the first parameter @var{insn1}. The dependence between @var{insn1}
6119and @var{insn2} is represented by the third parameter @var{dep_link}. The
6120fourth parameter @var{cost} is the cost of the dependence, and the fifth
6121parameter @var{distance} is the distance in cycles between the two insns.
569fa502
DN
6122The hook returns @code{true} if considering the distance between the two
6123insns the dependence between them is considered costly by the target,
6124and @code{false} otherwise.
6125
6126Defining this hook can be useful in multiple-issue out-of-order machines,
daf2f129 6127where (a) it's practically hopeless to predict the actual data/resource
569fa502 6128delays, however: (b) there's a better chance to predict the actual grouping
daf2f129 6129that will be formed, and (c) correctly emulating the grouping can be very
569fa502 6130important. In such targets one may want to allow issuing dependent insns
78466c0e 6131closer to one another---i.e., closer than the dependence distance; however,
569fa502
DN
6132not in cases of "costly dependences", which this hooks allows to define.
6133@end deftypefn
6134
496d7bb0
MK
6135@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_COST_2 (rtx @var{insn}, int @var{dep_type}, rtx @var{dep_insn}, int @var{cost})
6136This hook is a modified version of @samp{TARGET_SCHED_ADJUST_COST}. Instead
6137of passing dependence as a second parameter, it passes a type of that
6138dependence. This is useful to calculate cost of dependence between insns
6139not having the corresponding link. If @samp{TARGET_SCHED_ADJUST_COST_2} is
917f1b7e 6140defined it is used instead of @samp{TARGET_SCHED_ADJUST_COST}.
496d7bb0
MK
6141@end deftypefn
6142
6143@deftypefn {Target Hook} void TARGET_SCHED_H_I_D_EXTENDED (void)
6144This hook is called by the insn scheduler after emitting a new instruction to
6145the instruction stream. The hook notifies a target backend to extend its
6146per instruction data structures.
6147@end deftypefn
6148
6149@deftypefn {Target Hook} int TARGET_SCHED_SPECULATE_INSN (rtx @var{insn}, int @var{request}, rtx *@var{new_pat})
64ee9490
EC
6150This hook is called by the insn scheduler when @var{insn} has only
6151speculative dependencies and therefore can be scheduled speculatively.
6152The hook is used to check if the pattern of @var{insn} has a speculative
6153version and, in case of successful check, to generate that speculative
6154pattern. The hook should return 1, if the instruction has a speculative form,
6155or -1, if it doesn't. @var{request} describes the type of requested
496d7bb0
MK
6156speculation. If the return value equals 1 then @var{new_pat} is assigned
6157the generated speculative pattern.
6158@end deftypefn
6159
6160@deftypefn {Target Hook} int TARGET_SCHED_NEEDS_BLOCK_P (rtx @var{insn})
6161This hook is called by the insn scheduler during generation of recovery code
917f1b7e 6162for @var{insn}. It should return nonzero, if the corresponding check
496d7bb0
MK
6163instruction should branch to recovery code, or zero otherwise.
6164@end deftypefn
6165
6166@deftypefn {Target Hook} rtx TARGET_SCHED_GEN_CHECK (rtx @var{insn}, rtx @var{label}, int @var{mutate_p})
6167This hook is called by the insn scheduler to generate a pattern for recovery
64ee9490
EC
6168check instruction. If @var{mutate_p} is zero, then @var{insn} is a
6169speculative instruction for which the check should be generated.
6170@var{label} is either a label of a basic block, where recovery code should
6171be emitted, or a null pointer, when requested check doesn't branch to
6172recovery code (a simple check). If @var{mutate_p} is nonzero, then
6173a pattern for a branchy check corresponding to a simple check denoted by
496d7bb0
MK
6174@var{insn} should be generated. In this case @var{label} can't be null.
6175@end deftypefn
6176
6177@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC (rtx @var{insn})
6178This hook is used as a workaround for
6179@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being
6180called on the first instruction of the ready list. The hook is used to
6181discard speculative instruction that stand first in the ready list from
64ee9490 6182being scheduled on the current cycle. For non-speculative instructions,
917f1b7e 6183the hook should always return nonzero. For example, in the ia64 backend
496d7bb0
MK
6184the hook is used to cancel data speculative insns when the ALAT table
6185is nearly full.
6186@end deftypefn
6187
6188@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (unsigned int *@var{flags}, spec_info_t @var{spec_info})
64ee9490 6189This hook is used by the insn scheduler to find out what features should be
496d7bb0 6190enabled/used. @var{flags} initially may have either the SCHED_RGN or SCHED_EBB
64ee9490 6191bit set. This denotes the scheduler pass for which the data should be
496d7bb0 6192provided. The target backend should modify @var{flags} by modifying
917f1b7e 6193the bits corresponding to the following features: USE_DEPS_LIST, USE_GLAT,
64ee9490
EC
6194DETACH_LIFE_INFO, and DO_SPECULATION. For the DO_SPECULATION feature
6195an additional structure @var{spec_info} should be filled by the target.
496d7bb0
MK
6196The structure describes speculation types that can be used in the scheduler.
6197@end deftypefn
6198
feca2ed3
JW
6199@node Sections
6200@section Dividing the Output into Sections (Texts, Data, @dots{})
6201@c the above section title is WAY too long. maybe cut the part between
6202@c the (...)? --mew 10feb93
6203
6204An object file is divided into sections containing different types of
6205data. In the most common case, there are three sections: the @dfn{text
6206section}, which holds instructions and read-only data; the @dfn{data
6207section}, which holds initialized writable data; and the @dfn{bss
6208section}, which holds uninitialized data. Some systems have other kinds
6209of sections.
6210
d6b5193b
RS
6211@file{varasm.c} provides several well-known sections, such as
6212@code{text_section}, @code{data_section} and @code{bss_section}.
6213The normal way of controlling a @code{@var{foo}_section} variable
6214is to define the associated @code{@var{FOO}_SECTION_ASM_OP} macro,
6215as described below. The macros are only read once, when @file{varasm.c}
6216initializes itself, so their values must be run-time constants.
6217They may however depend on command-line flags.
6218
6219@emph{Note:} Some run-time files, such @file{crtstuff.c}, also make
6220use of the @code{@var{FOO}_SECTION_ASM_OP} macros, and expect them
6221to be string literals.
6222
6223Some assemblers require a different string to be written every time a
6224section is selected. If your assembler falls into this category, you
6225should define the @code{TARGET_ASM_INIT_SECTIONS} hook and use
6226@code{get_unnamed_section} to set up the sections.
6227
6228You must always create a @code{text_section}, either by defining
6229@code{TEXT_SECTION_ASM_OP} or by initializing @code{text_section}
6230in @code{TARGET_ASM_INIT_SECTIONS}. The same is true of
6231@code{data_section} and @code{DATA_SECTION_ASM_OP}. If you do not
6232create a distinct @code{readonly_data_section}, the default is to
6233reuse @code{text_section}.
6234
6235All the other @file{varasm.c} sections are optional, and are null
6236if the target does not provide them.
feca2ed3 6237
a2c4f8e0 6238@defmac TEXT_SECTION_ASM_OP
047c1c92
HPN
6239A C expression whose value is a string, including spacing, containing the
6240assembler operation that should precede instructions and read-only data.
6241Normally @code{"\t.text"} is right.
a2c4f8e0 6242@end defmac
33c09f2f 6243
a2c4f8e0 6244@defmac HOT_TEXT_SECTION_NAME
194734e9
JH
6245If defined, a C string constant for the name of the section containing most
6246frequently executed functions of the program. If not defined, GCC will provide
6247a default definition if the target supports named sections.
a2c4f8e0 6248@end defmac
194734e9 6249
a2c4f8e0 6250@defmac UNLIKELY_EXECUTED_TEXT_SECTION_NAME
194734e9
JH
6251If defined, a C string constant for the name of the section containing unlikely
6252executed functions in the program.
a2c4f8e0 6253@end defmac
194734e9 6254
a2c4f8e0 6255@defmac DATA_SECTION_ASM_OP
047c1c92
HPN
6256A C expression whose value is a string, including spacing, containing the
6257assembler operation to identify the following data as writable initialized
6258data. Normally @code{"\t.data"} is right.
a2c4f8e0 6259@end defmac
feca2ed3 6260
d6b5193b
RS
6261@defmac SDATA_SECTION_ASM_OP
6262If defined, a C expression whose value is a string, including spacing,
6263containing the assembler operation to identify the following data as
6264initialized, writable small data.
6265@end defmac
6266
a2c4f8e0 6267@defmac READONLY_DATA_SECTION_ASM_OP
d48bc59a
RH
6268A C expression whose value is a string, including spacing, containing the
6269assembler operation to identify the following data as read-only initialized
6270data.
a2c4f8e0 6271@end defmac
d48bc59a 6272
a2c4f8e0 6273@defmac BSS_SECTION_ASM_OP
047c1c92
HPN
6274If defined, a C expression whose value is a string, including spacing,
6275containing the assembler operation to identify the following data as
6276uninitialized global data. If not defined, and neither
6277@code{ASM_OUTPUT_BSS} nor @code{ASM_OUTPUT_ALIGNED_BSS} are defined,
6278uninitialized global data will be output in the data section if
630d3d5a 6279@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be
047c1c92 6280used.
a2c4f8e0 6281@end defmac
feca2ed3 6282
d6b5193b
RS
6283@defmac SBSS_SECTION_ASM_OP
6284If defined, a C expression whose value is a string, including spacing,
6285containing the assembler operation to identify the following data as
6286uninitialized, writable small data.
6287@end defmac
6288
a2c4f8e0 6289@defmac INIT_SECTION_ASM_OP
047c1c92
HPN
6290If defined, a C expression whose value is a string, including spacing,
6291containing the assembler operation to identify the following data as
6292initialization code. If not defined, GCC will assume such a section does
98bfa2fb
RS
6293not exist. This section has no corresponding @code{init_section}
6294variable; it is used entirely in runtime code.
a2c4f8e0 6295@end defmac
feca2ed3 6296
a2c4f8e0 6297@defmac FINI_SECTION_ASM_OP
047c1c92
HPN
6298If defined, a C expression whose value is a string, including spacing,
6299containing the assembler operation to identify the following data as
6300finalization code. If not defined, GCC will assume such a section does
98bfa2fb
RS
6301not exist. This section has no corresponding @code{fini_section}
6302variable; it is used entirely in runtime code.
a2c4f8e0 6303@end defmac
750054a2 6304
7abc66b1
JB
6305@defmac INIT_ARRAY_SECTION_ASM_OP
6306If defined, a C expression whose value is a string, including spacing,
6307containing the assembler operation to identify the following data as
6308part of the @code{.init_array} (or equivalent) section. If not
6309defined, GCC will assume such a section does not exist. Do not define
6310both this macro and @code{INIT_SECTION_ASM_OP}.
6311@end defmac
083cad55 6312
7abc66b1
JB
6313@defmac FINI_ARRAY_SECTION_ASM_OP
6314If defined, a C expression whose value is a string, including spacing,
6315containing the assembler operation to identify the following data as
6316part of the @code{.fini_array} (or equivalent) section. If not
6317defined, GCC will assume such a section does not exist. Do not define
6318both this macro and @code{FINI_SECTION_ASM_OP}.
6319@end defmac
6320
a2c4f8e0 6321@defmac CRT_CALL_STATIC_FUNCTION (@var{section_op}, @var{function})
cea3bd3e
RH
6322If defined, an ASM statement that switches to a different section
6323via @var{section_op}, calls @var{function}, and switches back to
6324the text section. This is used in @file{crtstuff.c} if
6325@code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls
6326to initialization and finalization functions from the init and fini
6327sections. By default, this macro uses a simple function call. Some
1b2dd04a
AO
6328ports need hand-crafted assembly code to avoid dependencies on
6329registers initialized in the function prologue or to ensure that
6330constant pools don't end up too far way in the text section.
a2c4f8e0 6331@end defmac
1b2dd04a 6332
a0cfeb0f
DD
6333@defmac TARGET_LIBGCC_SDATA_SECTION
6334If defined, a string which names the section into which small
6335variables defined in crtstuff and libgcc should go. This is useful
6336when the target has options for optimizing access to small data, and
6337you want the crtstuff and libgcc routines to be conservative in what
6338they expect of your application yet liberal in what your application
6339expects. For example, for targets with a @code{.sdata} section (like
6340MIPS), you could compile crtstuff with @code{-G 0} so that it doesn't
6341require small data support from your application, but use this macro
6342to put small data into @code{.sdata} so that your application can
6343access these variables whether it uses small data or not.
726e9992 6344@end defmac
a0cfeb0f 6345
a2c4f8e0 6346@defmac FORCE_CODE_SECTION_ALIGN
cea3bd3e
RH
6347If defined, an ASM statement that aligns a code section to some
6348arbitrary boundary. This is used to force all fragments of the
6349@code{.init} and @code{.fini} sections to have to same alignment
6350and thus prevent the linker from having to add any padding.
a2c4f8e0 6351@end defmac
cea3bd3e 6352
a2c4f8e0 6353@defmac JUMP_TABLES_IN_TEXT_SECTION
df2a54e9 6354Define this macro to be an expression with a nonzero value if jump
75197b37
BS
6355tables (for @code{tablejump} insns) should be output in the text
6356section, along with the assembler instructions. Otherwise, the
6357readonly data section is used.
feca2ed3
JW
6358
6359This macro is irrelevant if there is no separate readonly data section.
a2c4f8e0 6360@end defmac
feca2ed3 6361
d6b5193b
RS
6362@deftypefn {Target Hook} void TARGET_ASM_INIT_SECTIONS (void)
6363Define this hook if you need to do something special to set up the
6364@file{varasm.c} sections, or if your target has some special sections
6365of its own that you need to create.
6366
6367GCC calls this hook after processing the command line, but before writing
6368any assembly code, and before calling any of the section-returning hooks
6369described below.
6370@end deftypefn
6371
6372@deftypefn {Target Hook} {section *} TARGET_ASM_SELECT_SECTION (tree @var{exp}, int @var{reloc}, unsigned HOST_WIDE_INT @var{align})
6373Return the section into which @var{exp} should be placed. You can
ae46c4e0
RH
6374assume that @var{exp} is either a @code{VAR_DECL} node or a constant of
6375some sort. @var{reloc} indicates whether the initial value of @var{exp}
6376requires link-time relocations. Bit 0 is set when variable contains
6377local relocations only, while bit 1 is set for global relocations.
d6b5193b 6378@var{align} is the constant alignment in bits.
ae46c4e0
RH
6379
6380The default version of this function takes care of putting read-only
6381variables in @code{readonly_data_section}.
09afda70
GK
6382
6383See also @var{USE_SELECT_SECTION_FOR_FUNCTIONS}.
ae46c4e0
RH
6384@end deftypefn
6385
09afda70
GK
6386@defmac USE_SELECT_SECTION_FOR_FUNCTIONS
6387Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called
6388for @code{FUNCTION_DECL}s as well as for variables and constants.
6389
6390In the case of a @code{FUNCTION_DECL}, @var{reloc} will be zero if the
6391function has been determined to be likely to be called, and nonzero if
6392it is unlikely to be called.
6393@end defmac
6394
ae46c4e0
RH
6395@deftypefn {Target Hook} void TARGET_ASM_UNIQUE_SECTION (tree @var{decl}, int @var{reloc})
6396Build up a unique section name, expressed as a @code{STRING_CST} node,
6397and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
6398As with @code{TARGET_ASM_SELECT_SECTION}, @var{reloc} indicates whether
6399the initial value of @var{exp} requires link-time relocations.
6400
6401The default version of this function appends the symbol name to the
6402ELF section name that would normally be used for the symbol. For
6403example, the function @code{foo} would be placed in @code{.text.foo}.
6404Whatever the actual target object format, this is often good enough.
6405@end deftypefn
6406
d6b5193b
RS
6407@deftypefn {Target Hook} {section *} TARGET_ASM_FUNCTION_RODATA_SECTION (tree @var{decl})
6408Return the readonly data section associated with
ab5c8549 6409@samp{DECL_SECTION_NAME (@var{decl})}.
d6b5193b
RS
6410The default version of this function selects @code{.gnu.linkonce.r.name} if
6411the function's section is @code{.gnu.linkonce.t.name}, @code{.rodata.name}
6412if function is in @code{.text.name}, and the normal readonly-data section
6413otherwise.
ab5c8549
JJ
6414@end deftypefn
6415
d6b5193b
RS
6416@deftypefn {Target Hook} {section *} TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode @var{mode}, rtx @var{x}, unsigned HOST_WIDE_INT @var{align})
6417Return the section into which a constant @var{x}, of mode @var{mode},
6418should be placed. You can assume that @var{x} is some kind of
b64a1b53 6419constant in RTL@. The argument @var{mode} is redundant except in the
d6b5193b
RS
6420case of a @code{const_int} rtx. @var{align} is the constant alignment
6421in bits.
b64a1b53
RH
6422
6423The default version of this function takes care of putting symbolic
6424constants in @code{flag_pic} mode in @code{data_section} and everything
6425else in @code{readonly_data_section}.
6426@end deftypefn
6427
c6a2438a 6428@deftypefn {Target Hook} void TARGET_ENCODE_SECTION_INFO (tree @var{decl}, rtx @var{rtl}, int @var{new_decl_p})
fb49053f
RH
6429Define this hook if references to a symbol or a constant must be
6430treated differently depending on something about the variable or
6431function named by the symbol (such as what section it is in).
6432
c6a2438a
ZW
6433The hook is executed immediately after rtl has been created for
6434@var{decl}, which may be a variable or function declaration or
6435an entry in the constant pool. In either case, @var{rtl} is the
6436rtl in question. Do @emph{not} use @code{DECL_RTL (@var{decl})}
0864034e 6437in this hook; that field may not have been initialized yet.
c6a2438a
ZW
6438
6439In the case of a constant, it is safe to assume that the rtl is
6440a @code{mem} whose address is a @code{symbol_ref}. Most decls
6441will also have this form, but that is not guaranteed. Global
6442register variables, for instance, will have a @code{reg} for their
6443rtl. (Normally the right thing to do with such unusual rtl is
6444leave it alone.)
fb49053f
RH
6445
6446The @var{new_decl_p} argument will be true if this is the first time
c6a2438a 6447that @code{TARGET_ENCODE_SECTION_INFO} has been invoked on this decl. It will
fb49053f
RH
6448be false for subsequent invocations, which will happen for duplicate
6449declarations. Whether or not anything must be done for the duplicate
6450declaration depends on whether the hook examines @code{DECL_ATTRIBUTES}.
c6a2438a 6451@var{new_decl_p} is always true when the hook is called for a constant.
fb49053f
RH
6452
6453@cindex @code{SYMBOL_REF_FLAG}, in @code{TARGET_ENCODE_SECTION_INFO}
c6a2438a
ZW
6454The usual thing for this hook to do is to record flags in the
6455@code{symbol_ref}, using @code{SYMBOL_REF_FLAG} or @code{SYMBOL_REF_FLAGS}.
6456Historically, the name string was modified if it was necessary to
6457encode more than one bit of information, but this practice is now
6458discouraged; use @code{SYMBOL_REF_FLAGS}.
6459
6460The default definition of this hook, @code{default_encode_section_info}
6461in @file{varasm.c}, sets a number of commonly-useful bits in
6462@code{SYMBOL_REF_FLAGS}. Check whether the default does what you need
6463before overriding it.
fb49053f
RH
6464@end deftypefn
6465
772c5265
RH
6466@deftypefn {Target Hook} const char *TARGET_STRIP_NAME_ENCODING (const char *name)
6467Decode @var{name} and return the real name part, sans
6468the characters that @code{TARGET_ENCODE_SECTION_INFO}
6469may have added.
6470@end deftypefn
6471
47754fd5
RH
6472@deftypefn {Target Hook} bool TARGET_IN_SMALL_DATA_P (tree @var{exp})
6473Returns true if @var{exp} should be placed into a ``small data'' section.
6474The default version of this hook always returns false.
6475@end deftypefn
6476
e2a6476e
DE
6477@deftypevar {Target Hook} bool TARGET_HAVE_SRODATA_SECTION
6478Contains the value true if the target places read-only
6479``small data'' into a separate section. The default value is false.
6480@end deftypevar
6481
47754fd5
RH
6482@deftypefn {Target Hook} bool TARGET_BINDS_LOCAL_P (tree @var{exp})
6483Returns true if @var{exp} names an object for which name resolution
6484rules must resolve to the current ``module'' (dynamic shared library
6485or executable image).
6486
6487The default version of this hook implements the name resolution rules
6488for ELF, which has a looser model of global name binding than other
6489currently supported object file formats.
6490@end deftypefn
6491
e2a6476e
DE
6492@deftypevar {Target Hook} bool TARGET_HAVE_TLS
6493Contains the value true if the target supports thread-local storage.
6494The default value is false.
6495@end deftypevar
6496
6497
feca2ed3
JW
6498@node PIC
6499@section Position Independent Code
6500@cindex position independent code
6501@cindex PIC
6502
6503This section describes macros that help implement generation of position
6504independent code. Simply defining these macros is not enough to
6505generate valid PIC; you must also add support to the macros
6506@code{GO_IF_LEGITIMATE_ADDRESS} and @code{PRINT_OPERAND_ADDRESS}, as
6507well as @code{LEGITIMIZE_ADDRESS}. You must modify the definition of
6508@samp{movsi} to do something appropriate when the source operand
6509contains a symbolic address. You may also need to alter the handling of
6510switch statements so that they use relative addresses.
6511@c i rearranged the order of the macros above to try to force one of
6512@c them to the next line, to eliminate an overfull hbox. --mew 10feb93
6513
a2c4f8e0 6514@defmac PIC_OFFSET_TABLE_REGNUM
feca2ed3
JW
6515The register number of the register used to address a table of static
6516data addresses in memory. In some cases this register is defined by a
161d7b59 6517processor's ``application binary interface'' (ABI)@. When this macro
feca2ed3
JW
6518is defined, RTL is generated for this register once, as with the stack
6519pointer and frame pointer registers. If this macro is not defined, it
6520is up to the machine-dependent files to allocate such a register (if
003b9f78 6521necessary). Note that this register must be fixed when in use (e.g.@:
12beba6f 6522when @code{flag_pic} is true).
a2c4f8e0 6523@end defmac
feca2ed3 6524
a2c4f8e0 6525@defmac PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
feca2ed3
JW
6526Define this macro if the register defined by
6527@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls. Do not define
ed4db1ee 6528this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined.
a2c4f8e0 6529@end defmac
feca2ed3 6530
a2c4f8e0 6531@defmac LEGITIMATE_PIC_OPERAND_P (@var{x})
feca2ed3
JW
6532A C expression that is nonzero if @var{x} is a legitimate immediate
6533operand on the target machine when generating position independent code.
6534You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not
6535check this. You can also assume @var{flag_pic} is true, so you need not
6536check it either. You need not define this macro if all constants
6537(including @code{SYMBOL_REF}) can be immediate operands when generating
6538position independent code.
a2c4f8e0 6539@end defmac
feca2ed3
JW
6540
6541@node Assembler Format
6542@section Defining the Output Assembler Language
6543
6544This section describes macros whose principal purpose is to describe how
648c546a 6545to write instructions in assembler language---rather than what the
feca2ed3
JW
6546instructions do.
6547
6548@menu
6549* File Framework:: Structural information for the assembler file.
6550* Data Output:: Output of constants (numbers, strings, addresses).
6551* Uninitialized Data:: Output of uninitialized variables.
6552* Label Output:: Output and generation of labels.
6553* Initialization:: General principles of initialization
6554 and termination routines.
6555* Macros for Initialization::
6556 Specific macros that control the handling of
6557 initialization and termination routines.
6558* Instruction Output:: Output of actual instructions.
6559* Dispatch Tables:: Output of jump tables.
6560* Exception Region Output:: Output of exception region code.
6561* Alignment Output:: Pseudo ops for alignment and skipping data.
6562@end menu
6563
6564@node File Framework
6565@subsection The Overall Framework of an Assembler File
6566@cindex assembler format
6567@cindex output of assembler code
6568
6569@c prevent bad page break with this line
1bc7c5b6
ZW
6570This describes the overall framework of an assembly file.
6571
6572@deftypefn {Target Hook} void TARGET_ASM_FILE_START ()
6573@findex default_file_start
6574Output to @code{asm_out_file} any text which the assembler expects to
6575find at the beginning of a file. The default behavior is controlled
6576by two flags, documented below. Unless your target's assembler is
6577quite unusual, if you override the default, you should call
6578@code{default_file_start} at some point in your target hook. This
6579lets other target files rely on these variables.
6580@end deftypefn
feca2ed3 6581
1bc7c5b6
ZW
6582@deftypevr {Target Hook} bool TARGET_ASM_FILE_START_APP_OFF
6583If this flag is true, the text of the macro @code{ASM_APP_OFF} will be
6584printed as the very first line in the assembly file, unless
6585@option{-fverbose-asm} is in effect. (If that macro has been defined
6586to the empty string, this variable has no effect.) With the normal
6587definition of @code{ASM_APP_OFF}, the effect is to notify the GNU
6588assembler that it need not bother stripping comments or extra
6589whitespace from its input. This allows it to work a bit faster.
6590
6591The default is false. You should not set it to true unless you have
6592verified that your port does not generate any extra whitespace or
6593comments that will cause GAS to issue errors in NO_APP mode.
6594@end deftypevr
6595
6596@deftypevr {Target Hook} bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
6597If this flag is true, @code{output_file_directive} will be called
6598for the primary source file, immediately after printing
6599@code{ASM_APP_OFF} (if that is enabled). Most ELF assemblers expect
6600this to be done. The default is false.
6601@end deftypevr
feca2ed3 6602
a5fe455b
ZW
6603@deftypefn {Target Hook} void TARGET_ASM_FILE_END ()
6604Output to @code{asm_out_file} any text which the assembler expects
6605to find at the end of a file. The default is to output nothing.
6606@end deftypefn
feca2ed3 6607
a5fe455b
ZW
6608@deftypefun void file_end_indicate_exec_stack ()
6609Some systems use a common convention, the @samp{.note.GNU-stack}
6610special section, to indicate whether or not an object file relies on
6611the stack being executable. If your system uses this convention, you
6612should define @code{TARGET_ASM_FILE_END} to this function. If you
6613need to do other things in that hook, have your hook function call
6614this function.
6615@end deftypefun
feca2ed3 6616
a2c4f8e0 6617@defmac ASM_COMMENT_START
feca2ed3
JW
6618A C string constant describing how to begin a comment in the target
6619assembler language. The compiler assumes that the comment will end at
6620the end of the line.
a2c4f8e0 6621@end defmac
feca2ed3 6622
a2c4f8e0 6623@defmac ASM_APP_ON
feca2ed3
JW
6624A C string constant for text to be output before each @code{asm}
6625statement or group of consecutive ones. Normally this is
6626@code{"#APP"}, which is a comment that has no effect on most
6627assemblers but tells the GNU assembler that it must check the lines
6628that follow for all valid assembler constructs.
a2c4f8e0 6629@end defmac
feca2ed3 6630
a2c4f8e0 6631@defmac ASM_APP_OFF
feca2ed3
JW
6632A C string constant for text to be output after each @code{asm}
6633statement or group of consecutive ones. Normally this is
6634@code{"#NO_APP"}, which tells the GNU assembler to resume making the
6635time-saving assumptions that are valid for ordinary compiler output.
a2c4f8e0 6636@end defmac
feca2ed3 6637
a2c4f8e0 6638@defmac ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
feca2ed3
JW
6639A C statement to output COFF information or DWARF debugging information
6640which indicates that filename @var{name} is the current source file to
6641the stdio stream @var{stream}.
6642
6643This macro need not be defined if the standard form of output
6644for the file format in use is appropriate.
a2c4f8e0 6645@end defmac
feca2ed3 6646
a2c4f8e0 6647@defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string})
e9a25f70
JL
6648A C statement to output the string @var{string} to the stdio stream
6649@var{stream}. If you do not call the function @code{output_quoted_string}
a3a15b4d 6650in your config files, GCC will only call it to output filenames to
e9a25f70
JL
6651the assembler source. So you can use it to canonicalize the format
6652of the filename using this macro.
a2c4f8e0 6653@end defmac
e9a25f70 6654
a2c4f8e0 6655@defmac ASM_OUTPUT_IDENT (@var{stream}, @var{string})
feca2ed3
JW
6656A C statement to output something to the assembler file to handle a
6657@samp{#ident} directive containing the text @var{string}. If this
6658macro is not defined, nothing is output for a @samp{#ident} directive.
a2c4f8e0 6659@end defmac
feca2ed3 6660
7c262518
RH
6661@deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name}, unsigned int @var{flags}, unsigned int @var{align})
6662Output assembly directives to switch to section @var{name}. The section
6663should have attributes as specified by @var{flags}, which is a bit mask
6664of the @code{SECTION_*} flags defined in @file{output.h}. If @var{align}
df2a54e9 6665is nonzero, it contains an alignment in bytes to be used for the section,
f282ffb3 6666otherwise some target default should be used. Only targets that must
7c262518
RH
6667specify an alignment within the section directive need pay attention to
6668@var{align} -- we will still use @code{ASM_OUTPUT_ALIGN}.
6669@end deftypefn
6670
6671@deftypefn {Target Hook} bool TARGET_HAVE_NAMED_SECTIONS
6672This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}.
6673@end deftypefn
6674
434aeebb
RS
6675@anchor{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}
6676@deftypefn {Target Hook} bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
6677This flag is true if we can create zeroed data by switching to a BSS
6678section and then using @code{ASM_OUTPUT_SKIP} to allocate the space.
6679This is true on most ELF targets.
6680@end deftypefn
6681
7c262518
RH
6682@deftypefn {Target Hook} {unsigned int} TARGET_SECTION_TYPE_FLAGS (tree @var{decl}, const char *@var{name}, int @var{reloc})
6683Choose a set of section attributes for use by @code{TARGET_ASM_NAMED_SECTION}
6684based on a variable or function decl, a section name, and whether or not the
6685declaration's initializer may contain runtime relocations. @var{decl} may be
6686 null, in which case read-write data should be assumed.
6687
224504d2 6688The default version of this function handles choosing code vs data,
7c262518
RH
6689read-only vs read-write data, and @code{flag_pic}. You should only
6690need to override this if your target has special flags that might be
6691set via @code{__attribute__}.
6692@end deftypefn
6693
e0d9d0dd
NC
6694@deftypefn {Target Hook} {int} TARGET_ASM_RECORD_GCC_SWITCHES (print_switch_type @var{type}, const char * @var{text})
6695Provides the target with the ability to record the gcc command line
6696switches that have been passed to the compiler, and options that are
6697enabled. The @var{type} argument specifies what is being recorded.
6698It can take the following values:
6699
6700@table @gcctabopt
6701@item SWITCH_TYPE_PASSED
6702@var{text} is a command line switch that has been set by the user.
6703
6704@item SWITCH_TYPE_ENABLED
6705@var{text} is an option which has been enabled. This might be as a
6706direct result of a command line switch, or because it is enabled by
6707default or because it has been enabled as a side effect of a different
6708command line switch. For example, the @option{-O2} switch enables
6709various different individual optimization passes.
6710
6711@item SWITCH_TYPE_DESCRIPTIVE
6712@var{text} is either NULL or some descriptive text which should be
6713ignored. If @var{text} is NULL then it is being used to warn the
6714target hook that either recording is starting or ending. The first
6715time @var{type} is SWITCH_TYPE_DESCRIPTIVE and @var{text} is NULL, the
6716warning is for start up and the second time the warning is for
6717wind down. This feature is to allow the target hook to make any
6718necessary preparations before it starts to record switches and to
6719perform any necessary tidying up after it has finished recording
6720switches.
6721
6722@item SWITCH_TYPE_LINE_START
6723This option can be ignored by this target hook.
6724
6725@item SWITCH_TYPE_LINE_END
6726This option can be ignored by this target hook.
6727@end table
6728
6729The hook's return value must be zero. Other return values may be
6730supported in the future.
6731
6732By default this hook is set to NULL, but an example implementation is
6733provided for ELF based targets. Called @var{elf_record_gcc_switches},
6734it records the switches as ASCII text inside a new, string mergeable
6735section in the assembler output file. The name of the new section is
6736provided by the @code{TARGET_ASM_RECORD_GCC_SWITCHES_SECTION} target
6737hook.
6738@end deftypefn
6739
6740@deftypefn {Target Hook} {const char *} TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
6741This is the name of the section that will be created by the example
6742ELF implementation of the @code{TARGET_ASM_RECORD_GCC_SWITCHES} target
6743hook.
6744@end deftypefn
6745
feca2ed3
JW
6746@need 2000
6747@node Data Output
6748@subsection Output of Data
6749
301d03af
RS
6750
6751@deftypevr {Target Hook} {const char *} TARGET_ASM_BYTE_OP
6752@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_HI_OP
6753@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_SI_OP
6754@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_DI_OP
6755@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_TI_OP
6756@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_HI_OP
6757@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_SI_OP
6758@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_DI_OP
6759@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_TI_OP
6760These hooks specify assembly directives for creating certain kinds
6761of integer object. The @code{TARGET_ASM_BYTE_OP} directive creates a
6762byte-sized object, the @code{TARGET_ASM_ALIGNED_HI_OP} one creates an
6763aligned two-byte object, and so on. Any of the hooks may be
6764@code{NULL}, indicating that no suitable directive is available.
6765
6766The compiler will print these strings at the start of a new line,
6767followed immediately by the object's initial value. In most cases,
6768the string should contain a tab, a pseudo-op, and then another tab.
6769@end deftypevr
6770
6771@deftypefn {Target Hook} bool TARGET_ASM_INTEGER (rtx @var{x}, unsigned int @var{size}, int @var{aligned_p})
6772The @code{assemble_integer} function uses this hook to output an
6773integer object. @var{x} is the object's value, @var{size} is its size
6774in bytes and @var{aligned_p} indicates whether it is aligned. The
6775function should return @code{true} if it was able to output the
6776object. If it returns false, @code{assemble_integer} will try to
6777split the object into smaller parts.
6778
6779The default implementation of this hook will use the
6780@code{TARGET_ASM_BYTE_OP} family of strings, returning @code{false}
6781when the relevant string is @code{NULL}.
6782@end deftypefn
feca2ed3 6783
a2c4f8e0 6784@defmac OUTPUT_ADDR_CONST_EXTRA (@var{stream}, @var{x}, @var{fail})
422be3c3
AO
6785A C statement to recognize @var{rtx} patterns that
6786@code{output_addr_const} can't deal with, and output assembly code to
6787@var{stream} corresponding to the pattern @var{x}. This may be used to
6788allow machine-dependent @code{UNSPEC}s to appear within constants.
6789
6790If @code{OUTPUT_ADDR_CONST_EXTRA} fails to recognize a pattern, it must
6791@code{goto fail}, so that a standard error message is printed. If it
6792prints an error message itself, by calling, for example,
6793@code{output_operand_lossage}, it may just complete normally.
a2c4f8e0 6794@end defmac
422be3c3 6795
a2c4f8e0 6796@defmac ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len})
feca2ed3
JW
6797A C statement to output to the stdio stream @var{stream} an assembler
6798instruction to assemble a string constant containing the @var{len}
6799bytes at @var{ptr}. @var{ptr} will be a C expression of type
6800@code{char *} and @var{len} a C expression of type @code{int}.
6801
6802If the assembler has a @code{.ascii} pseudo-op as found in the
6803Berkeley Unix assembler, do not define the macro
6804@code{ASM_OUTPUT_ASCII}.
a2c4f8e0 6805@end defmac
feca2ed3 6806
a2c4f8e0 6807@defmac ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n})
67231816
RH
6808A C statement to output word @var{n} of a function descriptor for
6809@var{decl}. This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS}
6810is defined, and is otherwise unused.
a2c4f8e0 6811@end defmac
67231816 6812
a2c4f8e0 6813@defmac CONSTANT_POOL_BEFORE_FUNCTION
861bb6c1 6814You may define this macro as a C expression. You should define the
df2a54e9 6815expression to have a nonzero value if GCC should output the constant
861bb6c1 6816pool for a function before the code for the function, or a zero value if
a3a15b4d
JL
6817GCC should output the constant pool after the function. If you do
6818not define this macro, the usual case, GCC will output the constant
861bb6c1 6819pool before the function.
a2c4f8e0 6820@end defmac
861bb6c1 6821
a2c4f8e0 6822@defmac ASM_OUTPUT_POOL_PROLOGUE (@var{file}, @var{funname}, @var{fundecl}, @var{size})
feca2ed3
JW
6823A C statement to output assembler commands to define the start of the
6824constant pool for a function. @var{funname} is a string giving
6825the name of the function. Should the return type of the function
6826be required, it can be obtained via @var{fundecl}. @var{size}
6827is the size, in bytes, of the constant pool that will be written
6828immediately after this call.
6829
6830If no constant-pool prefix is required, the usual case, this macro need
6831not be defined.
a2c4f8e0 6832@end defmac
feca2ed3 6833
a2c4f8e0 6834@defmac ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto})
feca2ed3
JW
6835A C statement (with or without semicolon) to output a constant in the
6836constant pool, if it needs special treatment. (This macro need not do
6837anything for RTL expressions that can be output normally.)
6838
6839The argument @var{file} is the standard I/O stream to output the
6840assembler code on. @var{x} is the RTL expression for the constant to
6841output, and @var{mode} is the machine mode (in case @var{x} is a
6842@samp{const_int}). @var{align} is the required alignment for the value
6843@var{x}; you should output an assembler directive to force this much
6844alignment.
6845
6846The argument @var{labelno} is a number to use in an internal label for
6847the address of this pool entry. The definition of this macro is
6848responsible for outputting the label definition at the proper place.
6849Here is how to do this:
6850
3ab51846 6851@smallexample
4977bab6 6852@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno});
3ab51846 6853@end smallexample
feca2ed3
JW
6854
6855When you output a pool entry specially, you should end with a
6856@code{goto} to the label @var{jumpto}. This will prevent the same pool
6857entry from being output a second time in the usual manner.
6858
6859You need not define this macro if it would do nothing.
a2c4f8e0 6860@end defmac
feca2ed3 6861
a2c4f8e0 6862@defmac ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
861bb6c1
JL
6863A C statement to output assembler commands to at the end of the constant
6864pool for a function. @var{funname} is a string giving the name of the
6865function. Should the return type of the function be required, you can
6866obtain it via @var{fundecl}. @var{size} is the size, in bytes, of the
a3a15b4d 6867constant pool that GCC wrote immediately before this call.
861bb6c1
JL
6868
6869If no constant-pool epilogue is required, the usual case, you need not
6870define this macro.
a2c4f8e0 6871@end defmac
861bb6c1 6872
a2c4f8e0 6873@defmac IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C})
feca2ed3
JW
6874Define this macro as a C expression which is nonzero if @var{C} is
6875used as a logical line separator by the assembler.
6876
6877If you do not define this macro, the default is that only
6878the character @samp{;} is treated as a logical line separator.
a2c4f8e0 6879@end defmac
feca2ed3 6880
8ca83838 6881@deftypevr {Target Hook} {const char *} TARGET_ASM_OPEN_PAREN
baed53ac 6882@deftypevrx {Target Hook} {const char *} TARGET_ASM_CLOSE_PAREN
17b53c33
NB
6883These target hooks are C string constants, describing the syntax in the
6884assembler for grouping arithmetic expressions. If not overridden, they
6885default to normal parentheses, which is correct for most assemblers.
8ca83838 6886@end deftypevr
17b53c33 6887
feca2ed3
JW
6888 These macros are provided by @file{real.h} for writing the definitions
6889of @code{ASM_OUTPUT_DOUBLE} and the like:
6890
a2c4f8e0
ZW
6891@defmac REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l})
6892@defmacx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l})
6893@defmacx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l})
dadb213f
BE
6894@defmacx REAL_VALUE_TO_TARGET_DECIMAL32 (@var{x}, @var{l})
6895@defmacx REAL_VALUE_TO_TARGET_DECIMAL64 (@var{x}, @var{l})
6896@defmacx REAL_VALUE_TO_TARGET_DECIMAL128 (@var{x}, @var{l})
6897These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the
6898target's floating point representation, and store its bit pattern in
6899the variable @var{l}. For @code{REAL_VALUE_TO_TARGET_SINGLE} and
6900@code{REAL_VALUE_TO_TARGET_DECIMAL32}, this variable should be a
6901simple @code{long int}. For the others, it should be an array of
6902@code{long int}. The number of elements in this array is determined
6903by the size of the desired target floating point data type: 32 bits of
6904it go in each @code{long int} array element. Each array element holds
690532 bits of the result, even if @code{long int} is wider than 32 bits
6906on the host machine.
feca2ed3
JW
6907
6908The array element values are designed so that you can print them out
6909using @code{fprintf} in the order they should appear in the target
6910machine's memory.
a2c4f8e0 6911@end defmac
feca2ed3
JW
6912
6913@node Uninitialized Data
6914@subsection Output of Uninitialized Variables
6915
6916Each of the macros in this section is used to do the whole job of
6917outputting a single uninitialized variable.
6918
a2c4f8e0 6919@defmac ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6920A C statement (sans semicolon) to output to the stdio stream
6921@var{stream} the assembler definition of a common-label named
6922@var{name} whose size is @var{size} bytes. The variable @var{rounded}
6923is the size rounded up to whatever alignment the caller wants.
6924
6925Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6926output the name itself; before and after that, output the additional
6927assembler syntax for defining the name, and a newline.
6928
6929This macro controls how the assembler definitions of uninitialized
6930common global variables are output.
a2c4f8e0 6931@end defmac
feca2ed3 6932
a2c4f8e0 6933@defmac ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment})
feca2ed3
JW
6934Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a
6935separate, explicit argument. If you define this macro, it is used in
6936place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in
6937handling the required alignment of the variable. The alignment is specified
6938as the number of bits.
a2c4f8e0 6939@end defmac
feca2ed3 6940
a2c4f8e0 6941@defmac ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
e9a25f70
JL
6942Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the
6943variable to be output, if there is one, or @code{NULL_TREE} if there
8760eaae 6944is no corresponding variable. If you define this macro, GCC will use it
e9a25f70
JL
6945in place of both @code{ASM_OUTPUT_COMMON} and
6946@code{ASM_OUTPUT_ALIGNED_COMMON}. Define this macro when you need to see
6947the variable's decl in order to chose what to output.
a2c4f8e0 6948@end defmac
e9a25f70 6949
a2c4f8e0 6950@defmac ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6951A C statement (sans semicolon) to output to the stdio stream
6952@var{stream} the assembler definition of uninitialized global @var{decl} named
6953@var{name} whose size is @var{size} bytes. The variable @var{rounded}
6954is the size rounded up to whatever alignment the caller wants.
6955
6956Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
6957defining this macro. If unable, use the expression
6958@code{assemble_name (@var{stream}, @var{name})} to output the name itself;
6959before and after that, output the additional assembler syntax for defining
6960the name, and a newline.
6961
434aeebb
RS
6962There are two ways of handling global BSS. One is to define either
6963this macro or its aligned counterpart, @code{ASM_OUTPUT_ALIGNED_BSS}.
6964The other is to have @code{TARGET_ASM_SELECT_SECTION} return a
6965switchable BSS section (@pxref{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}).
6966You do not need to do both.
6967
6968Some languages do not have @code{common} data, and require a
6969non-common form of global BSS in order to handle uninitialized globals
6970efficiently. C++ is one example of this. However, if the target does
6971not support global BSS, the front end may choose to make globals
6972common in order to save space in the object file.
a2c4f8e0 6973@end defmac
feca2ed3 6974
a2c4f8e0 6975@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
feca2ed3
JW
6976Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
6977separate, explicit argument. If you define this macro, it is used in
6978place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
6979handling the required alignment of the variable. The alignment is specified
6980as the number of bits.
6981
6982Try to use function @code{asm_output_aligned_bss} defined in file
6983@file{varasm.c} when defining this macro.
a2c4f8e0 6984@end defmac
feca2ed3 6985
a2c4f8e0 6986@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
feca2ed3
JW
6987A C statement (sans semicolon) to output to the stdio stream
6988@var{stream} the assembler definition of a local-common-label named
6989@var{name} whose size is @var{size} bytes. The variable @var{rounded}
6990is the size rounded up to whatever alignment the caller wants.
6991
6992Use the expression @code{assemble_name (@var{stream}, @var{name})} to
6993output the name itself; before and after that, output the additional
6994assembler syntax for defining the name, and a newline.
6995
6996This macro controls how the assembler definitions of uninitialized
6997static variables are output.
a2c4f8e0 6998@end defmac
feca2ed3 6999
a2c4f8e0 7000@defmac ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment})
feca2ed3
JW
7001Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a
7002separate, explicit argument. If you define this macro, it is used in
7003place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in
7004handling the required alignment of the variable. The alignment is specified
7005as the number of bits.
a2c4f8e0 7006@end defmac
feca2ed3 7007
a2c4f8e0 7008@defmac ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
e9a25f70
JL
7009Like @code{ASM_OUTPUT_ALIGNED_DECL} except that @var{decl} of the
7010variable to be output, if there is one, or @code{NULL_TREE} if there
8760eaae 7011is no corresponding variable. If you define this macro, GCC will use it
e9a25f70
JL
7012in place of both @code{ASM_OUTPUT_DECL} and
7013@code{ASM_OUTPUT_ALIGNED_DECL}. Define this macro when you need to see
7014the variable's decl in order to chose what to output.
a2c4f8e0 7015@end defmac
e9a25f70 7016
feca2ed3
JW
7017@node Label Output
7018@subsection Output and Generation of Labels
7019
7020@c prevent bad page break with this line
7021This is about outputting labels.
7022
feca2ed3 7023@findex assemble_name
a2c4f8e0 7024@defmac ASM_OUTPUT_LABEL (@var{stream}, @var{name})
feca2ed3
JW
7025A C statement (sans semicolon) to output to the stdio stream
7026@var{stream} the assembler definition of a label named @var{name}.
7027Use the expression @code{assemble_name (@var{stream}, @var{name})} to
7028output the name itself; before and after that, output the additional
4ad5e05d
KG
7029assembler syntax for defining the name, and a newline. A default
7030definition of this macro is provided which is correct for most systems.
a2c4f8e0 7031@end defmac
feca2ed3 7032
57829bc4
MM
7033@findex assemble_name_raw
7034@defmac ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{name})
e374d5c9 7035Identical to @code{ASM_OUTPUT_LABEL}, except that @var{name} is known
57829bc4
MM
7036to refer to a compiler-generated label. The default definition uses
7037@code{assemble_name_raw}, which is like @code{assemble_name} except
7038that it is more efficient.
7039@end defmac
7040
a2c4f8e0 7041@defmac SIZE_ASM_OP
2be2ac70
ZW
7042A C string containing the appropriate assembler directive to specify the
7043size of a symbol, without any arguments. On systems that use ELF, the
7044default (in @file{config/elfos.h}) is @samp{"\t.size\t"}; on other
7045systems, the default is not to define this macro.
7046
7047Define this macro only if it is correct to use the default definitions
7048of @code{ASM_OUTPUT_SIZE_DIRECTIVE} and @code{ASM_OUTPUT_MEASURED_SIZE}
7049for your system. If you need your own custom definitions of those
7050macros, or if you do not need explicit symbol sizes at all, do not
7051define this macro.
a2c4f8e0 7052@end defmac
2be2ac70 7053
a2c4f8e0 7054@defmac ASM_OUTPUT_SIZE_DIRECTIVE (@var{stream}, @var{name}, @var{size})
2be2ac70
ZW
7055A C statement (sans semicolon) to output to the stdio stream
7056@var{stream} a directive telling the assembler that the size of the
7057symbol @var{name} is @var{size}. @var{size} is a @code{HOST_WIDE_INT}.
7058If you define @code{SIZE_ASM_OP}, a default definition of this macro is
7059provided.
a2c4f8e0 7060@end defmac
2be2ac70 7061
a2c4f8e0 7062@defmac ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name})
2be2ac70
ZW
7063A C statement (sans semicolon) to output to the stdio stream
7064@var{stream} a directive telling the assembler to calculate the size of
99086d59 7065the symbol @var{name} by subtracting its address from the current
73774972 7066address.
99086d59
ZW
7067
7068If you define @code{SIZE_ASM_OP}, a default definition of this macro is
7069provided. The default assumes that the assembler recognizes a special
7070@samp{.} symbol as referring to the current address, and can calculate
7071the difference between this and another symbol. If your assembler does
7072not recognize @samp{.} or cannot do calculations with it, you will need
7073to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
a2c4f8e0 7074@end defmac
2be2ac70 7075
a2c4f8e0 7076@defmac TYPE_ASM_OP
2be2ac70
ZW
7077A C string containing the appropriate assembler directive to specify the
7078type of a symbol, without any arguments. On systems that use ELF, the
7079default (in @file{config/elfos.h}) is @samp{"\t.type\t"}; on other
7080systems, the default is not to define this macro.
7081
7082Define this macro only if it is correct to use the default definition of
7083@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own
7084custom definition of this macro, or if you do not need explicit symbol
7085types at all, do not define this macro.
a2c4f8e0 7086@end defmac
2be2ac70 7087
a2c4f8e0 7088@defmac TYPE_OPERAND_FMT
2be2ac70
ZW
7089A C string which specifies (using @code{printf} syntax) the format of
7090the second operand to @code{TYPE_ASM_OP}. On systems that use ELF, the
7091default (in @file{config/elfos.h}) is @samp{"@@%s"}; on other systems,
7092the default is not to define this macro.
7093
7094Define this macro only if it is correct to use the default definition of
7095@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own
7096custom definition of this macro, or if you do not need explicit symbol
7097types at all, do not define this macro.
a2c4f8e0 7098@end defmac
2be2ac70 7099
a2c4f8e0 7100@defmac ASM_OUTPUT_TYPE_DIRECTIVE (@var{stream}, @var{type})
2be2ac70
ZW
7101A C statement (sans semicolon) to output to the stdio stream
7102@var{stream} a directive telling the assembler that the type of the
7103symbol @var{name} is @var{type}. @var{type} is a C string; currently,
7104that string is always either @samp{"function"} or @samp{"object"}, but
7105you should not count on this.
7106
7107If you define @code{TYPE_ASM_OP} and @code{TYPE_OPERAND_FMT}, a default
7108definition of this macro is provided.
a2c4f8e0 7109@end defmac
2be2ac70 7110
a2c4f8e0 7111@defmac ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl})
feca2ed3
JW
7112A C statement (sans semicolon) to output to the stdio stream
7113@var{stream} any text necessary for declaring the name @var{name} of a
7114function which is being defined. This macro is responsible for
7115outputting the label definition (perhaps using
7116@code{ASM_OUTPUT_LABEL}). The argument @var{decl} is the
7117@code{FUNCTION_DECL} tree node representing the function.
7118
7119If this macro is not defined, then the function name is defined in the
7120usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
7121
2be2ac70
ZW
7122You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
7123of this macro.
a2c4f8e0 7124@end defmac
2be2ac70 7125
a2c4f8e0 7126@defmac ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl})
feca2ed3
JW
7127A C statement (sans semicolon) to output to the stdio stream
7128@var{stream} any text necessary for declaring the size of a function
7129which is being defined. The argument @var{name} is the name of the
7130function. The argument @var{decl} is the @code{FUNCTION_DECL} tree node
7131representing the function.
7132
7133If this macro is not defined, then the function size is not defined.
7134
2be2ac70
ZW
7135You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition
7136of this macro.
a2c4f8e0 7137@end defmac
2be2ac70 7138
a2c4f8e0 7139@defmac ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl})
feca2ed3
JW
7140A C statement (sans semicolon) to output to the stdio stream
7141@var{stream} any text necessary for declaring the name @var{name} of an
7142initialized variable which is being defined. This macro must output the
7143label definition (perhaps using @code{ASM_OUTPUT_LABEL}). The argument
7144@var{decl} is the @code{VAR_DECL} tree node representing the variable.
7145
7146If this macro is not defined, then the variable name is defined in the
7147usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
7148
2be2ac70
ZW
7149You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} and/or
7150@code{ASM_OUTPUT_SIZE_DIRECTIVE} in the definition of this macro.
a2c4f8e0 7151@end defmac
2be2ac70 7152
18f3e349
GK
7153@defmac ASM_DECLARE_CONSTANT_NAME (@var{stream}, @var{name}, @var{exp}, @var{size})
7154A C statement (sans semicolon) to output to the stdio stream
7155@var{stream} any text necessary for declaring the name @var{name} of a
7156constant which is being defined. This macro is responsible for
7157outputting the label definition (perhaps using
7158@code{ASM_OUTPUT_LABEL}). The argument @var{exp} is the
7159value of the constant, and @var{size} is the size of the constant
7160in bytes. @var{name} will be an internal label.
7161
7162If this macro is not defined, then the @var{name} is defined in the
7163usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
7164
7165You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
7166of this macro.
7167@end defmac
7168
a2c4f8e0 7169@defmac ASM_DECLARE_REGISTER_GLOBAL (@var{stream}, @var{decl}, @var{regno}, @var{name})
1cb36a98
RH
7170A C statement (sans semicolon) to output to the stdio stream
7171@var{stream} any text necessary for claiming a register @var{regno}
7172for a global variable @var{decl} with name @var{name}.
7173
7174If you don't define this macro, that is equivalent to defining it to do
7175nothing.
a2c4f8e0 7176@end defmac
1cb36a98 7177
a2c4f8e0 7178@defmac ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend})
feca2ed3
JW
7179A C statement (sans semicolon) to finish up declaring a variable name
7180once the compiler has processed its initializer fully and thus has had a
7181chance to determine the size of an array when controlled by an
7182initializer. This is used on systems where it's necessary to declare
7183something about the size of the object.
7184
7185If you don't define this macro, that is equivalent to defining it to do
7186nothing.
7187
2be2ac70
ZW
7188You may wish to use @code{ASM_OUTPUT_SIZE_DIRECTIVE} and/or
7189@code{ASM_OUTPUT_MEASURED_SIZE} in the definition of this macro.
a2c4f8e0 7190@end defmac
2be2ac70 7191
5eb99654
KG
7192@deftypefn {Target Hook} void TARGET_ASM_GLOBALIZE_LABEL (FILE *@var{stream}, const char *@var{name})
7193This target hook is a function to output to the stdio stream
feca2ed3 7194@var{stream} some commands that will make the label @var{name} global;
5eb99654 7195that is, available for reference from other files.
feca2ed3 7196
5eb99654
KG
7197The default implementation relies on a proper definition of
7198@code{GLOBAL_ASM_OP}.
b65d23aa 7199@end deftypefn
072cdaed 7200
812b587e
SE
7201@deftypefn {Target Hook} void TARGET_ASM_GLOBALIZE_DECL_NAME (FILE *@var{stream}, tree @var{decl})
7202This target hook is a function to output to the stdio stream
7203@var{stream} some commands that will make the name associated with @var{decl}
7204global; that is, available for reference from other files.
7205
7206The default implementation uses the TARGET_ASM_GLOBALIZE_LABEL target hook.
7207@end deftypefn
7208
a2c4f8e0 7209@defmac ASM_WEAKEN_LABEL (@var{stream}, @var{name})
feca2ed3
JW
7210A C statement (sans semicolon) to output to the stdio stream
7211@var{stream} some commands that will make the label @var{name} weak;
7212that is, available for reference from other files but only used if
7213no other definition is available. Use the expression
7214@code{assemble_name (@var{stream}, @var{name})} to output the name
7215itself; before and after that, output the additional assembler syntax
7216for making that name weak, and a newline.
7217
79c4e63f
AM
7218If you don't define this macro or @code{ASM_WEAKEN_DECL}, GCC will not
7219support weak symbols and you should not define the @code{SUPPORTS_WEAK}
7220macro.
a2c4f8e0 7221@end defmac
79c4e63f 7222
a2c4f8e0 7223@defmac ASM_WEAKEN_DECL (@var{stream}, @var{decl}, @var{name}, @var{value})
79c4e63f
AM
7224Combines (and replaces) the function of @code{ASM_WEAKEN_LABEL} and
7225@code{ASM_OUTPUT_WEAK_ALIAS}, allowing access to the associated function
7226or variable decl. If @var{value} is not @code{NULL}, this C statement
7227should output to the stdio stream @var{stream} assembler code which
7228defines (equates) the weak symbol @var{name} to have the value
7229@var{value}. If @var{value} is @code{NULL}, it should output commands
7230to make @var{name} weak.
a2c4f8e0 7231@end defmac
feca2ed3 7232
ff2d10c1
AO
7233@defmac ASM_OUTPUT_WEAKREF (@var{stream}, @var{decl}, @var{name}, @var{value})
7234Outputs a directive that enables @var{name} to be used to refer to
7235symbol @var{value} with weak-symbol semantics. @code{decl} is the
7236declaration of @code{name}.
7237@end defmac
7238
a2c4f8e0 7239@defmac SUPPORTS_WEAK
feca2ed3
JW
7240A C expression which evaluates to true if the target supports weak symbols.
7241
7242If you don't define this macro, @file{defaults.h} provides a default
79c4e63f
AM
7243definition. If either @code{ASM_WEAKEN_LABEL} or @code{ASM_WEAKEN_DECL}
7244is defined, the default definition is @samp{1}; otherwise, it is
7245@samp{0}. Define this macro if you want to control weak symbol support
7246with a compiler flag such as @option{-melf}.
a2c4f8e0 7247@end defmac
feca2ed3 7248
a2c4f8e0 7249@defmac MAKE_DECL_ONE_ONLY (@var{decl})
feca2ed3
JW
7250A C statement (sans semicolon) to mark @var{decl} to be emitted as a
7251public symbol such that extra copies in multiple translation units will
7252be discarded by the linker. Define this macro if your object file
7253format provides support for this concept, such as the @samp{COMDAT}
7254section flags in the Microsoft Windows PE/COFF format, and this support
7255requires changes to @var{decl}, such as putting it in a separate section.
a2c4f8e0 7256@end defmac
feca2ed3 7257
a2c4f8e0 7258@defmac SUPPORTS_ONE_ONLY
feca2ed3
JW
7259A C expression which evaluates to true if the target supports one-only
7260semantics.
7261
7262If you don't define this macro, @file{varasm.c} provides a default
7263definition. If @code{MAKE_DECL_ONE_ONLY} is defined, the default
7264definition is @samp{1}; otherwise, it is @samp{0}. Define this macro if
e9a25f70 7265you want to control one-only symbol support with a compiler flag, or if
feca2ed3
JW
7266setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
7267be emitted as one-only.
a2c4f8e0 7268@end defmac
feca2ed3 7269
93638d7a
AM
7270@deftypefn {Target Hook} void TARGET_ASM_ASSEMBLE_VISIBILITY (tree @var{decl}, const char *@var{visibility})
7271This target hook is a function to output to @var{asm_out_file} some
7272commands that will make the symbol(s) associated with @var{decl} have
7273hidden, protected or internal visibility as specified by @var{visibility}.
7274@end deftypefn
7275
0524c91d 7276@defmac TARGET_WEAK_NOT_IN_ARCHIVE_TOC
4746cf84 7277A C expression that evaluates to true if the target's linker expects
0524c91d 7278that weak symbols do not appear in a static archive's table of contents.
f676971a 7279The default is @code{0}.
0524c91d
MA
7280
7281Leaving weak symbols out of an archive's table of contents means that,
7282if a symbol will only have a definition in one translation unit and
7283will have undefined references from other translation units, that
7284symbol should not be weak. Defining this macro to be nonzero will
7285thus have the effect that certain symbols that would normally be weak
7286(explicit template instantiations, and vtables for polymorphic classes
7287with noninline key methods) will instead be nonweak.
7288
7289The C++ ABI requires this macro to be zero. Define this macro for
7290targets where full C++ ABI compliance is impossible and where linker
7291restrictions require weak symbols to be left out of a static archive's
7292table of contents.
4746cf84
MA
7293@end defmac
7294
a2c4f8e0 7295@defmac ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name})
feca2ed3
JW
7296A C statement (sans semicolon) to output to the stdio stream
7297@var{stream} any text necessary for declaring the name of an external
7298symbol named @var{name} which is referenced in this compilation but
7299not defined. The value of @var{decl} is the tree node for the
7300declaration.
7301
7302This macro need not be defined if it does not need to output anything.
7303The GNU assembler and most Unix assemblers don't require anything.
a2c4f8e0 7304@end defmac
feca2ed3 7305
6773a41c
RO
7306@deftypefn {Target Hook} void TARGET_ASM_EXTERNAL_LIBCALL (rtx @var{symref})
7307This target hook is a function to output to @var{asm_out_file} an assembler
feca2ed3 7308pseudo-op to declare a library function name external. The name of the
6773a41c
RO
7309library function is given by @var{symref}, which is a @code{symbol_ref}.
7310@end deftypefn
feca2ed3 7311
8e3e233b
DP
7312@deftypefn {Target Hook} void TARGET_ASM_MARK_DECL_PRESERVED (tree @var{decl})
7313This target hook is a function to output to @var{asm_out_file} an assembler
7314directive to annotate used symbol. Darwin target use .no_dead_code_strip
7315directive.
7316@end deftypefn
7317
a2c4f8e0 7318@defmac ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
feca2ed3
JW
7319A C statement (sans semicolon) to output to the stdio stream
7320@var{stream} a reference in assembler syntax to a label named
7321@var{name}. This should add @samp{_} to the front of the name, if that
7322is customary on your operating system, as it is in most Berkeley Unix
7323systems. This macro is used in @code{assemble_name}.
a2c4f8e0 7324@end defmac
feca2ed3 7325
a2c4f8e0 7326@defmac ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym})
99c8c61c 7327A C statement (sans semicolon) to output a reference to
2f0b7af6 7328@code{SYMBOL_REF} @var{sym}. If not defined, @code{assemble_name}
99c8c61c
AO
7329will be used to output the name of the symbol. This macro may be used
7330to modify the way a symbol is referenced depending on information
fb49053f 7331encoded by @code{TARGET_ENCODE_SECTION_INFO}.
a2c4f8e0 7332@end defmac
99c8c61c 7333
a2c4f8e0 7334@defmac ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf})
2f0b7af6 7335A C statement (sans semicolon) to output a reference to @var{buf}, the
4226378a 7336result of @code{ASM_GENERATE_INTERNAL_LABEL}. If not defined,
2f0b7af6
GK
7337@code{assemble_name} will be used to output the name of the symbol.
7338This macro is not used by @code{output_asm_label}, or the @code{%l}
7339specifier that calls it; the intention is that this macro should be set
4226378a
PK
7340when it is necessary to output a label differently when its address is
7341being taken.
a2c4f8e0 7342@end defmac
2f0b7af6 7343
4977bab6
ZW
7344@deftypefn {Target Hook} void TARGET_ASM_INTERNAL_LABEL (FILE *@var{stream}, const char *@var{prefix}, unsigned long @var{labelno})
7345A function to output to the stdio stream @var{stream} a label whose
7346name is made from the string @var{prefix} and the number @var{labelno}.
feca2ed3
JW
7347
7348It is absolutely essential that these labels be distinct from the labels
7349used for user-level functions and variables. Otherwise, certain programs
7350will have name conflicts with internal labels.
7351
7352It is desirable to exclude internal labels from the symbol table of the
7353object file. Most assemblers have a naming convention for labels that
7354should be excluded; on many systems, the letter @samp{L} at the
7355beginning of a label has this effect. You should find out what
7356convention your system uses, and follow it.
7357
8a36672b 7358The default version of this function utilizes @code{ASM_GENERATE_INTERNAL_LABEL}.
4977bab6 7359@end deftypefn
feca2ed3 7360
a2c4f8e0 7361@defmac ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num})
8215347e
JW
7362A C statement to output to the stdio stream @var{stream} a debug info
7363label whose name is made from the string @var{prefix} and the number
7364@var{num}. This is useful for VLIW targets, where debug info labels
7365may need to be treated differently than branch target labels. On some
7366systems, branch target labels must be at the beginning of instruction
7367bundles, but debug info labels can occur in the middle of instruction
7368bundles.
7369
4977bab6 7370If this macro is not defined, then @code{(*targetm.asm_out.internal_label)} will be
8215347e 7371used.
a2c4f8e0 7372@end defmac
8215347e 7373
a2c4f8e0 7374@defmac ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num})
feca2ed3
JW
7375A C statement to store into the string @var{string} a label whose name
7376is made from the string @var{prefix} and the number @var{num}.
7377
7378This string, when output subsequently by @code{assemble_name}, should
4977bab6 7379produce the output that @code{(*targetm.asm_out.internal_label)} would produce
feca2ed3
JW
7380with the same @var{prefix} and @var{num}.
7381
7382If the string begins with @samp{*}, then @code{assemble_name} will
7383output the rest of the string unchanged. It is often convenient for
7384@code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way. If the
7385string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets
7386to output the string, and may change it. (Of course,
7387@code{ASM_OUTPUT_LABELREF} is also part of your machine description, so
7388you should know what it does on your machine.)
a2c4f8e0 7389@end defmac
feca2ed3 7390
a2c4f8e0 7391@defmac ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number})
feca2ed3
JW
7392A C expression to assign to @var{outvar} (which is a variable of type
7393@code{char *}) a newly allocated string made from the string
7394@var{name} and the number @var{number}, with some suitable punctuation
7395added. Use @code{alloca} to get space for the string.
7396
7397The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to
7398produce an assembler label for an internal static variable whose name is
7399@var{name}. Therefore, the string must be such as to result in valid
7400assembler code. The argument @var{number} is different each time this
7401macro is executed; it prevents conflicts between similarly-named
7402internal static variables in different scopes.
7403
7404Ideally this string should not be a valid C identifier, to prevent any
7405conflict with the user's own symbols. Most assemblers allow periods
7406or percent signs in assembler symbols; putting at least one of these
7407between the name and the number will suffice.
7408
4977bab6
ZW
7409If this macro is not defined, a default definition will be provided
7410which is correct for most systems.
a2c4f8e0 7411@end defmac
4977bab6 7412
a2c4f8e0 7413@defmac ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value})
feca2ed3
JW
7414A C statement to output to the stdio stream @var{stream} assembler code
7415which defines (equates) the symbol @var{name} to have the value @var{value}.
7416
203cb4ef 7417@findex SET_ASM_OP
aee96fe9 7418If @code{SET_ASM_OP} is defined, a default definition is provided which is
feca2ed3 7419correct for most systems.
a2c4f8e0 7420@end defmac
810e3c45 7421
a2c4f8e0 7422@defmac ASM_OUTPUT_DEF_FROM_DECLS (@var{stream}, @var{decl_of_name}, @var{decl_of_value})
e4faf1eb 7423A C statement to output to the stdio stream @var{stream} assembler code
3b7a2e58 7424which defines (equates) the symbol whose tree node is @var{decl_of_name}
e4faf1eb
NC
7425to have the value of the tree node @var{decl_of_value}. This macro will
7426be used in preference to @samp{ASM_OUTPUT_DEF} if it is defined and if
7427the tree nodes are available.
7428
203cb4ef 7429@findex SET_ASM_OP
aee96fe9 7430If @code{SET_ASM_OP} is defined, a default definition is provided which is
956d6950 7431correct for most systems.
a2c4f8e0 7432@end defmac
956d6950 7433
083b6717
JDA
7434@defmac TARGET_DEFERRED_OUTPUT_DEFS (@var{decl_of_name}, @var{decl_of_value})
7435A C statement that evaluates to true if the assembler code which defines
7436(equates) the symbol whose tree node is @var{decl_of_name} to have the value
7437of the tree node @var{decl_of_value} should be emitted near the end of the
7438current compilation unit. The default is to not defer output of defines.
7439This macro affects defines output by @samp{ASM_OUTPUT_DEF} and
7440@samp{ASM_OUTPUT_DEF_FROM_DECLS}.
7441@end defmac
7442
a2c4f8e0 7443@defmac ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value})
810e3c45
JM
7444A C statement to output to the stdio stream @var{stream} assembler code
7445which defines (equates) the weak symbol @var{name} to have the value
3aa8ab7b
L
7446@var{value}. If @var{value} is @code{NULL}, it defines @var{name} as
7447an undefined weak symbol.
810e3c45
JM
7448
7449Define this macro if the target only supports weak aliases; define
aee96fe9 7450@code{ASM_OUTPUT_DEF} instead if possible.
a2c4f8e0 7451@end defmac
810e3c45 7452
a2c4f8e0 7453@defmac OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name})
feca2ed3 7454Define this macro to override the default assembler names used for
2147b154 7455Objective-C methods.
feca2ed3
JW
7456
7457The default name is a unique method number followed by the name of the
7458class (e.g.@: @samp{_1_Foo}). For methods in categories, the name of
7459the category is also included in the assembler name (e.g.@:
7460@samp{_1_Foo_Bar}).
7461
7462These names are safe on most systems, but make debugging difficult since
7463the method's selector is not present in the name. Therefore, particular
7464systems define other ways of computing names.
7465
7466@var{buf} is an expression of type @code{char *} which gives you a
7467buffer in which to store the name; its length is as long as
7468@var{class_name}, @var{cat_name} and @var{sel_name} put together, plus
746950 characters extra.
7470
7471The argument @var{is_inst} specifies whether the method is an instance
7472method or a class method; @var{class_name} is the name of the class;
59d42021 7473@var{cat_name} is the name of the category (or @code{NULL} if the method is not
feca2ed3
JW
7474in a category); and @var{sel_name} is the name of the selector.
7475
7476On systems where the assembler can handle quoted names, you can use this
7477macro to provide more human-readable names.
a2c4f8e0 7478@end defmac
28df0b5a 7479
a2c4f8e0 7480@defmac ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name})
f60b945b
SS
7481A C statement (sans semicolon) to output to the stdio stream
7482@var{stream} commands to declare that the label @var{name} is an
7483Objective-C class reference. This is only needed for targets whose
7484linkers have special support for NeXT-style runtimes.
a2c4f8e0 7485@end defmac
f60b945b 7486
a2c4f8e0 7487@defmac ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name})
28df0b5a
SS
7488A C statement (sans semicolon) to output to the stdio stream
7489@var{stream} commands to declare that the label @var{name} is an
7490unresolved Objective-C class reference. This is only needed for targets
7491whose linkers have special support for NeXT-style runtimes.
a2c4f8e0 7492@end defmac
feca2ed3
JW
7493
7494@node Initialization
7495@subsection How Initialization Functions Are Handled
7496@cindex initialization routines
7497@cindex termination routines
7498@cindex constructors, output of
7499@cindex destructors, output of
7500
7501The compiled code for certain languages includes @dfn{constructors}
7502(also called @dfn{initialization routines})---functions to initialize
7503data in the program when the program is started. These functions need
7504to be called before the program is ``started''---that is to say, before
7505@code{main} is called.
7506
7507Compiling some languages generates @dfn{destructors} (also called
7508@dfn{termination routines}) that should be called when the program
7509terminates.
7510
7511To make the initialization and termination functions work, the compiler
7512must output something in the assembler code to cause those functions to
7513be called at the appropriate time. When you port the compiler to a new
7514system, you need to specify how to do this.
7515
7516There are two major ways that GCC currently supports the execution of
7517initialization and termination functions. Each way has two variants.
7518Much of the structure is common to all four variations.
7519
7520@findex __CTOR_LIST__
7521@findex __DTOR_LIST__
7522The linker must build two lists of these functions---a list of
7523initialization functions, called @code{__CTOR_LIST__}, and a list of
7524termination functions, called @code{__DTOR_LIST__}.
7525
7526Each list always begins with an ignored function pointer (which may hold
75270, @minus{}1, or a count of the function pointers after it, depending on
7528the environment). This is followed by a series of zero or more function
7529pointers to constructors (or destructors), followed by a function
7530pointer containing zero.
7531
7532Depending on the operating system and its executable file format, either
7533@file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup
7534time and exit time. Constructors are called in reverse order of the
7535list; destructors in forward order.
7536
7537The best way to handle static constructors works only for object file
7538formats which provide arbitrarily-named sections. A section is set
7539aside for a list of constructors, and another for a list of destructors.
7540Traditionally these are called @samp{.ctors} and @samp{.dtors}. Each
7541object file that defines an initialization function also puts a word in
7542the constructor section to point to that function. The linker
7543accumulates all these words into one contiguous @samp{.ctors} section.
7544Termination functions are handled similarly.
7545
2cc07db4
RH
7546This method will be chosen as the default by @file{target-def.h} if
7547@code{TARGET_ASM_NAMED_SECTION} is defined. A target that does not
f282ffb3 7548support arbitrary sections, but does support special designated
2cc07db4
RH
7549constructor and destructor sections may define @code{CTORS_SECTION_ASM_OP}
7550and @code{DTORS_SECTION_ASM_OP} to achieve the same effect.
feca2ed3
JW
7551
7552When arbitrary sections are available, there are two variants, depending
7553upon how the code in @file{crtstuff.c} is called. On systems that
2cc07db4 7554support a @dfn{.init} section which is executed at program startup,
feca2ed3 7555parts of @file{crtstuff.c} are compiled into that section. The
05739753 7556program is linked by the @command{gcc} driver like this:
feca2ed3 7557
3ab51846 7558@smallexample
2cc07db4 7559ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o
3ab51846 7560@end smallexample
feca2ed3 7561
2cc07db4
RH
7562The prologue of a function (@code{__init}) appears in the @code{.init}
7563section of @file{crti.o}; the epilogue appears in @file{crtn.o}. Likewise
7564for the function @code{__fini} in the @dfn{.fini} section. Normally these
7565files are provided by the operating system or by the GNU C library, but
7566are provided by GCC for a few targets.
7567
7568The objects @file{crtbegin.o} and @file{crtend.o} are (for most targets)
7569compiled from @file{crtstuff.c}. They contain, among other things, code
7570fragments within the @code{.init} and @code{.fini} sections that branch
7571to routines in the @code{.text} section. The linker will pull all parts
7572of a section together, which results in a complete @code{__init} function
7573that invokes the routines we need at startup.
feca2ed3
JW
7574
7575To use this variant, you must define the @code{INIT_SECTION_ASM_OP}
7576macro properly.
7577
2cc07db4
RH
7578If no init section is available, when GCC compiles any function called
7579@code{main} (or more accurately, any function designated as a program
7580entry point by the language front end calling @code{expand_main_function}),
7581it inserts a procedure call to @code{__main} as the first executable code
7582after the function prologue. The @code{__main} function is defined
7583in @file{libgcc2.c} and runs the global constructors.
feca2ed3
JW
7584
7585In file formats that don't support arbitrary sections, there are again
7586two variants. In the simplest variant, the GNU linker (GNU @code{ld})
7587and an `a.out' format must be used. In this case,
2cc07db4 7588@code{TARGET_ASM_CONSTRUCTOR} is defined to produce a @code{.stabs}
feca2ed3
JW
7589entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__},
7590and with the address of the void function containing the initialization
7591code as its value. The GNU linker recognizes this as a request to add
2cc07db4 7592the value to a @dfn{set}; the values are accumulated, and are eventually
feca2ed3
JW
7593placed in the executable as a vector in the format described above, with
7594a leading (ignored) count and a trailing zero element.
2cc07db4 7595@code{TARGET_ASM_DESTRUCTOR} is handled similarly. Since no init
feca2ed3
JW
7596section is available, the absence of @code{INIT_SECTION_ASM_OP} causes
7597the compilation of @code{main} to call @code{__main} as above, starting
7598the initialization process.
7599
7600The last variant uses neither arbitrary sections nor the GNU linker.
7601This is preferable when you want to do dynamic linking and when using
161d7b59 7602file formats which the GNU linker does not support, such as `ECOFF'@. In
2cc07db4
RH
7603this case, @code{TARGET_HAVE_CTORS_DTORS} is false, initialization and
7604termination functions are recognized simply by their names. This requires
7605an extra program in the linkage step, called @command{collect2}. This program
7606pretends to be the linker, for use with GCC; it does its job by running
7607the ordinary linker, but also arranges to include the vectors of
7608initialization and termination functions. These functions are called
7609via @code{__main} as described above. In order to use this method,
7610@code{use_collect2} must be defined in the target in @file{config.gcc}.
feca2ed3
JW
7611
7612@ifinfo
7613The following section describes the specific macros that control and
7614customize the handling of initialization and termination functions.
7615@end ifinfo
7616
7617@node Macros for Initialization
7618@subsection Macros Controlling Initialization Routines
7619
7620Here are the macros that control how the compiler handles initialization
7621and termination functions:
7622
a2c4f8e0 7623@defmac INIT_SECTION_ASM_OP
047c1c92
HPN
7624If defined, a C string constant, including spacing, for the assembler
7625operation to identify the following data as initialization code. If not
7626defined, GCC will assume such a section does not exist. When you are
7627using special sections for initialization and termination functions, this
7628macro also controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to
7629run the initialization functions.
a2c4f8e0 7630@end defmac
feca2ed3 7631
a2c4f8e0 7632@defmac HAS_INIT_SECTION
feca2ed3 7633If defined, @code{main} will not call @code{__main} as described above.
2cc07db4
RH
7634This macro should be defined for systems that control start-up code
7635on a symbol-by-symbol basis, such as OSF/1, and should not
7636be defined explicitly for systems that support @code{INIT_SECTION_ASM_OP}.
a2c4f8e0 7637@end defmac
feca2ed3 7638
a2c4f8e0 7639@defmac LD_INIT_SWITCH
feca2ed3
JW
7640If defined, a C string constant for a switch that tells the linker that
7641the following symbol is an initialization routine.
a2c4f8e0 7642@end defmac
feca2ed3 7643
a2c4f8e0 7644@defmac LD_FINI_SWITCH
feca2ed3
JW
7645If defined, a C string constant for a switch that tells the linker that
7646the following symbol is a finalization routine.
a2c4f8e0 7647@end defmac
feca2ed3 7648
a2c4f8e0 7649@defmac COLLECT_SHARED_INIT_FUNC (@var{stream}, @var{func})
414e05cf
RE
7650If defined, a C statement that will write a function that can be
7651automatically called when a shared library is loaded. The function
7652should call @var{func}, which takes no arguments. If not defined, and
7653the object format requires an explicit initialization function, then a
172270b3 7654function called @code{_GLOBAL__DI} will be generated.
414e05cf
RE
7655
7656This function and the following one are used by collect2 when linking a
f282ffb3 7657shared library that needs constructors or destructors, or has DWARF2
414e05cf 7658exception tables embedded in the code.
a2c4f8e0 7659@end defmac
414e05cf 7660
a2c4f8e0 7661@defmac COLLECT_SHARED_FINI_FUNC (@var{stream}, @var{func})
414e05cf
RE
7662If defined, a C statement that will write a function that can be
7663automatically called when a shared library is unloaded. The function
7664should call @var{func}, which takes no arguments. If not defined, and
7665the object format requires an explicit finalization function, then a
172270b3 7666function called @code{_GLOBAL__DD} will be generated.
a2c4f8e0 7667@end defmac
414e05cf 7668
a2c4f8e0 7669@defmac INVOKE__main
feca2ed3
JW
7670If defined, @code{main} will call @code{__main} despite the presence of
7671@code{INIT_SECTION_ASM_OP}. This macro should be defined for systems
7672where the init section is not actually run automatically, but is still
7673useful for collecting the lists of constructors and destructors.
a2c4f8e0 7674@end defmac
feca2ed3 7675
a2c4f8e0 7676@defmac SUPPORTS_INIT_PRIORITY
ea4f1fce
JO
7677If nonzero, the C++ @code{init_priority} attribute is supported and the
7678compiler should emit instructions to control the order of initialization
7679of objects. If zero, the compiler will issue an error message upon
7680encountering an @code{init_priority} attribute.
a2c4f8e0 7681@end defmac
2cc07db4
RH
7682
7683@deftypefn {Target Hook} bool TARGET_HAVE_CTORS_DTORS
7684This value is true if the target supports some ``native'' method of
7685collecting constructors and destructors to be run at startup and exit.
7686It is false if we must use @command{collect2}.
7687@end deftypefn
7688
7689@deftypefn {Target Hook} void TARGET_ASM_CONSTRUCTOR (rtx @var{symbol}, int @var{priority})
7690If defined, a function that outputs assembler code to arrange to call
7691the function referenced by @var{symbol} at initialization time.
ea4f1fce 7692
2cc07db4
RH
7693Assume that @var{symbol} is a @code{SYMBOL_REF} for a function taking
7694no arguments and with no return value. If the target supports initialization
7695priorities, @var{priority} is a value between 0 and @code{MAX_INIT_PRIORITY};
7696otherwise it must be @code{DEFAULT_INIT_PRIORITY}.
7697
14976c58 7698If this macro is not defined by the target, a suitable default will
2cc07db4
RH
7699be chosen if (1) the target supports arbitrary section names, (2) the
7700target defines @code{CTORS_SECTION_ASM_OP}, or (3) @code{USE_COLLECT2}
7701is not defined.
7702@end deftypefn
7703
7704@deftypefn {Target Hook} void TARGET_ASM_DESTRUCTOR (rtx @var{symbol}, int @var{priority})
7705This is like @code{TARGET_ASM_CONSTRUCTOR} but used for termination
feca2ed3 7706functions rather than initialization functions.
2cc07db4 7707@end deftypefn
14686fcd 7708
2cc07db4
RH
7709If @code{TARGET_HAVE_CTORS_DTORS} is true, the initialization routine
7710generated for the generated object file will have static linkage.
feca2ed3 7711
2cc07db4
RH
7712If your system uses @command{collect2} as the means of processing
7713constructors, then that program normally uses @command{nm} to scan
7714an object file for constructor functions to be called.
14686fcd 7715
4a023207 7716On certain kinds of systems, you can define this macro to make
2cc07db4 7717@command{collect2} work faster (and, in some cases, make it work at all):
feca2ed3 7718
a2c4f8e0 7719@defmac OBJECT_FORMAT_COFF
feca2ed3 7720Define this macro if the system uses COFF (Common Object File Format)
2cc07db4 7721object files, so that @command{collect2} can assume this format and scan
feca2ed3 7722object files directly for dynamic constructor/destructor functions.
feca2ed3 7723
4a023207 7724This macro is effective only in a native compiler; @command{collect2} as
2cc07db4 7725part of a cross compiler always uses @command{nm} for the target machine.
a2c4f8e0 7726@end defmac
feca2ed3 7727
a2c4f8e0 7728@defmac REAL_NM_FILE_NAME
feca2ed3 7729Define this macro as a C string constant containing the file name to use
2cc07db4
RH
7730to execute @command{nm}. The default is to search the path normally for
7731@command{nm}.
feca2ed3
JW
7732
7733If your system supports shared libraries and has a program to list the
7734dynamic dependencies of a given library or executable, you can define
7735these macros to enable support for running initialization and
7736termination functions in shared libraries:
a2c4f8e0 7737@end defmac
feca2ed3 7738
a2c4f8e0 7739@defmac LDD_SUFFIX
2cc07db4
RH
7740Define this macro to a C string constant containing the name of the program
7741which lists dynamic dependencies, like @command{"ldd"} under SunOS 4.
a2c4f8e0 7742@end defmac
feca2ed3 7743
a2c4f8e0 7744@defmac PARSE_LDD_OUTPUT (@var{ptr})
feca2ed3 7745Define this macro to be C code that extracts filenames from the output
aee96fe9 7746of the program denoted by @code{LDD_SUFFIX}. @var{ptr} is a variable
feca2ed3
JW
7747of type @code{char *} that points to the beginning of a line of output
7748from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the
aee96fe9
JM
7749code must advance @var{ptr} to the beginning of the filename on that
7750line. Otherwise, it must set @var{ptr} to @code{NULL}.
a2c4f8e0 7751@end defmac
feca2ed3
JW
7752
7753@node Instruction Output
7754@subsection Output of Assembler Instructions
7755
7756@c prevent bad page break with this line
7757This describes assembler instruction output.
7758
a2c4f8e0 7759@defmac REGISTER_NAMES
feca2ed3
JW
7760A C initializer containing the assembler's names for the machine
7761registers, each one as a C string constant. This is what translates
7762register numbers in the compiler into assembler language.
a2c4f8e0 7763@end defmac
feca2ed3 7764
a2c4f8e0 7765@defmac ADDITIONAL_REGISTER_NAMES
feca2ed3
JW
7766If defined, a C initializer for an array of structures containing a name
7767and a register number. This macro defines additional names for hard
7768registers, thus allowing the @code{asm} option in declarations to refer
7769to registers using alternate names.
a2c4f8e0 7770@end defmac
feca2ed3 7771
a2c4f8e0 7772@defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
feca2ed3
JW
7773Define this macro if you are using an unusual assembler that
7774requires different names for the machine instructions.
7775
7776The definition is a C statement or statements which output an
7777assembler instruction opcode to the stdio stream @var{stream}. The
7778macro-operand @var{ptr} is a variable of type @code{char *} which
7779points to the opcode name in its ``internal'' form---the form that is
7780written in the machine description. The definition should output the
7781opcode name to @var{stream}, performing any translation you desire, and
7782increment the variable @var{ptr} to point at the end of the opcode
7783so that it will not be output twice.
7784
7785In fact, your macro definition may process less than the entire opcode
7786name, or more than the opcode name; but if you want to process text
7787that includes @samp{%}-sequences to substitute operands, you must take
7788care of the substitution yourself. Just be sure to increment
7789@var{ptr} over whatever text should not be output normally.
7790
37bef197 7791@findex recog_data.operand
feca2ed3 7792If you need to look at the operand values, they can be found as the
37bef197 7793elements of @code{recog_data.operand}.
feca2ed3
JW
7794
7795If the macro definition does nothing, the instruction is output
7796in the usual way.
a2c4f8e0 7797@end defmac
feca2ed3 7798
a2c4f8e0 7799@defmac FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands})
feca2ed3
JW
7800If defined, a C statement to be executed just prior to the output of
7801assembler code for @var{insn}, to modify the extracted operands so
7802they will be output differently.
7803
7804Here the argument @var{opvec} is the vector containing the operands
7805extracted from @var{insn}, and @var{noperands} is the number of
7806elements of the vector which contain meaningful data for this insn.
7807The contents of this vector are what will be used to convert the insn
7808template into assembler code, so you can change the assembler output
7809by changing the contents of the vector.
7810
7811This macro is useful when various assembler syntaxes share a single
7812file of instruction patterns; by defining this macro differently, you
7813can cause a large class of instructions to be output differently (such
7814as with rearranged operands). Naturally, variations in assembler
7815syntax affecting individual insn patterns ought to be handled by
7816writing conditional output routines in those patterns.
7817
7818If this macro is not defined, it is equivalent to a null statement.
a2c4f8e0 7819@end defmac
feca2ed3 7820
a2c4f8e0 7821@defmac PRINT_OPERAND (@var{stream}, @var{x}, @var{code})
feca2ed3
JW
7822A C compound statement to output to stdio stream @var{stream} the
7823assembler syntax for an instruction operand @var{x}. @var{x} is an
7824RTL expression.
7825
7826@var{code} is a value that can be used to specify one of several ways
7827of printing the operand. It is used when identical operands must be
7828printed differently depending on the context. @var{code} comes from
7829the @samp{%} specification that was used to request printing of the
7830operand. If the specification was just @samp{%@var{digit}} then
7831@var{code} is 0; if the specification was @samp{%@var{ltr}
7832@var{digit}} then @var{code} is the ASCII code for @var{ltr}.
7833
7834@findex reg_names
7835If @var{x} is a register, this macro should print the register's name.
7836The names can be found in an array @code{reg_names} whose type is
7837@code{char *[]}. @code{reg_names} is initialized from
7838@code{REGISTER_NAMES}.
7839
7840When the machine description has a specification @samp{%@var{punct}}
7841(a @samp{%} followed by a punctuation character), this macro is called
7842with a null pointer for @var{x} and the punctuation character for
7843@var{code}.
a2c4f8e0 7844@end defmac
feca2ed3 7845
a2c4f8e0 7846@defmac PRINT_OPERAND_PUNCT_VALID_P (@var{code})
feca2ed3
JW
7847A C expression which evaluates to true if @var{code} is a valid
7848punctuation character for use in the @code{PRINT_OPERAND} macro. If
7849@code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no
7850punctuation characters (except for the standard one, @samp{%}) are used
7851in this way.
a2c4f8e0 7852@end defmac
feca2ed3 7853
a2c4f8e0 7854@defmac PRINT_OPERAND_ADDRESS (@var{stream}, @var{x})
feca2ed3
JW
7855A C compound statement to output to stdio stream @var{stream} the
7856assembler syntax for an instruction operand that is a memory reference
7857whose address is @var{x}. @var{x} is an RTL expression.
7858
fb49053f 7859@cindex @code{TARGET_ENCODE_SECTION_INFO} usage
feca2ed3 7860On some machines, the syntax for a symbolic address depends on the
fb49053f
RH
7861section that the address refers to. On these machines, define the hook
7862@code{TARGET_ENCODE_SECTION_INFO} to store the information into the
a2c4f8e0
ZW
7863@code{symbol_ref}, and then check for it here. @xref{Assembler
7864Format}.
7865@end defmac
feca2ed3 7866
feca2ed3 7867@findex dbr_sequence_length
a2c4f8e0 7868@defmac DBR_OUTPUT_SEQEND (@var{file})
feca2ed3
JW
7869A C statement, to be executed after all slot-filler instructions have
7870been output. If necessary, call @code{dbr_sequence_length} to
7871determine the number of slots filled in a sequence (zero if not
7872currently outputting a sequence), to decide how many no-ops to output,
7873or whatever.
7874
7875Don't define this macro if it has nothing to do, but it is helpful in
7876reading assembly output if the extent of the delay sequence is made
e979f9e8 7877explicit (e.g.@: with white space).
a2c4f8e0 7878@end defmac
feca2ed3
JW
7879
7880@findex final_sequence
7881Note that output routines for instructions with delay slots must be
e979f9e8
JM
7882prepared to deal with not being output as part of a sequence
7883(i.e.@: when the scheduling pass is not run, or when no slot fillers could be
feca2ed3
JW
7884found.) The variable @code{final_sequence} is null when not
7885processing a sequence, otherwise it contains the @code{sequence} rtx
7886being output.
7887
feca2ed3 7888@findex asm_fprintf
a2c4f8e0
ZW
7889@defmac REGISTER_PREFIX
7890@defmacx LOCAL_LABEL_PREFIX
7891@defmacx USER_LABEL_PREFIX
7892@defmacx IMMEDIATE_PREFIX
feca2ed3
JW
7893If defined, C string expressions to be used for the @samp{%R}, @samp{%L},
7894@samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see
7895@file{final.c}). These are useful when a single @file{md} file must
7896support multiple assembler formats. In that case, the various @file{tm.h}
7897files can define these macros differently.
a2c4f8e0 7898@end defmac
feca2ed3 7899
a2c4f8e0 7900@defmac ASM_FPRINTF_EXTENSIONS (@var{file}, @var{argptr}, @var{format})
3b7a2e58 7901If defined this macro should expand to a series of @code{case}
fe0503ea
NC
7902statements which will be parsed inside the @code{switch} statement of
7903the @code{asm_fprintf} function. This allows targets to define extra
7904printf formats which may useful when generating their assembler
4bd0bee9 7905statements. Note that uppercase letters are reserved for future
fe0503ea
NC
7906generic extensions to asm_fprintf, and so are not available to target
7907specific code. The output file is given by the parameter @var{file}.
7908The varargs input pointer is @var{argptr} and the rest of the format
7909string, starting the character after the one that is being switched
7910upon, is pointed to by @var{format}.
a2c4f8e0 7911@end defmac
fe0503ea 7912
a2c4f8e0 7913@defmac ASSEMBLER_DIALECT
feca2ed3
JW
7914If your target supports multiple dialects of assembler language (such as
7915different opcodes), define this macro as a C expression that gives the
7916numeric index of the assembler language dialect to use, with zero as the
7917first variant.
7918
7919If this macro is defined, you may use constructs of the form
c237e94a 7920@smallexample
f282ffb3 7921@samp{@{option0|option1|option2@dots{}@}}
c237e94a
ZW
7922@end smallexample
7923@noindent
7924in the output templates of patterns (@pxref{Output Template}) or in the
7925first argument of @code{asm_fprintf}. This construct outputs
7926@samp{option0}, @samp{option1}, @samp{option2}, etc., if the value of
7927@code{ASSEMBLER_DIALECT} is zero, one, two, etc. Any special characters
7928within these strings retain their usual meaning. If there are fewer
7929alternatives within the braces than the value of
7930@code{ASSEMBLER_DIALECT}, the construct outputs nothing.
feca2ed3
JW
7931
7932If you do not define this macro, the characters @samp{@{}, @samp{|} and
7933@samp{@}} do not have any special meaning when used in templates or
7934operands to @code{asm_fprintf}.
7935
7936Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX},
7937@code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express
e5e809f4 7938the variations in assembler language syntax with that mechanism. Define
feca2ed3
JW
7939@code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax
7940if the syntax variant are larger and involve such things as different
7941opcodes or operand order.
a2c4f8e0 7942@end defmac
feca2ed3 7943
a2c4f8e0 7944@defmac ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno})
feca2ed3
JW
7945A C expression to output to @var{stream} some assembler code
7946which will push hard register number @var{regno} onto the stack.
7947The code need not be optimal, since this macro is used only when
7948profiling.
a2c4f8e0 7949@end defmac
feca2ed3 7950
a2c4f8e0 7951@defmac ASM_OUTPUT_REG_POP (@var{stream}, @var{regno})
feca2ed3
JW
7952A C expression to output to @var{stream} some assembler code
7953which will pop hard register number @var{regno} off of the stack.
7954The code need not be optimal, since this macro is used only when
7955profiling.
a2c4f8e0 7956@end defmac
feca2ed3
JW
7957
7958@node Dispatch Tables
7959@subsection Output of Dispatch Tables
7960
7961@c prevent bad page break with this line
7962This concerns dispatch tables.
7963
feca2ed3 7964@cindex dispatch table
a2c4f8e0 7965@defmac ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{body}, @var{value}, @var{rel})
feca2ed3
JW
7966A C statement to output to the stdio stream @var{stream} an assembler
7967pseudo-instruction to generate a difference between two labels.
7968@var{value} and @var{rel} are the numbers of two internal labels. The
7969definitions of these labels are output using
4977bab6 7970@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same
feca2ed3
JW
7971way here. For example,
7972
3ab51846 7973@smallexample
feca2ed3
JW
7974fprintf (@var{stream}, "\t.word L%d-L%d\n",
7975 @var{value}, @var{rel})
3ab51846 7976@end smallexample
feca2ed3
JW
7977
7978You must provide this macro on machines where the addresses in a
f0523f02 7979dispatch table are relative to the table's own address. If defined, GCC
161d7b59 7980will also use this macro on all machines when producing PIC@.
aee96fe9 7981@var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the
33f7f353 7982mode and flags can be read.
a2c4f8e0 7983@end defmac
feca2ed3 7984
a2c4f8e0 7985@defmac ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value})
feca2ed3
JW
7986This macro should be provided on machines where the addresses
7987in a dispatch table are absolute.
7988
7989The definition should be a C statement to output to the stdio stream
7990@var{stream} an assembler pseudo-instruction to generate a reference to
7991a label. @var{value} is the number of an internal label whose
4977bab6 7992definition is output using @code{(*targetm.asm_out.internal_label)}.
feca2ed3
JW
7993For example,
7994
3ab51846 7995@smallexample
feca2ed3 7996fprintf (@var{stream}, "\t.word L%d\n", @var{value})
3ab51846 7997@end smallexample
a2c4f8e0 7998@end defmac
feca2ed3 7999
a2c4f8e0 8000@defmac ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
feca2ed3
JW
8001Define this if the label before a jump-table needs to be output
8002specially. The first three arguments are the same as for
4977bab6 8003@code{(*targetm.asm_out.internal_label)}; the fourth argument is the
feca2ed3
JW
8004jump-table which follows (a @code{jump_insn} containing an
8005@code{addr_vec} or @code{addr_diff_vec}).
8006
8007This feature is used on system V to output a @code{swbeg} statement
8008for the table.
8009
8010If this macro is not defined, these labels are output with
4977bab6 8011@code{(*targetm.asm_out.internal_label)}.
a2c4f8e0 8012@end defmac
feca2ed3 8013
a2c4f8e0 8014@defmac ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table})
feca2ed3
JW
8015Define this if something special must be output at the end of a
8016jump-table. The definition should be a C statement to be executed
8017after the assembler code for the table is written. It should write
8018the appropriate code to stdio stream @var{stream}. The argument
8019@var{table} is the jump-table insn, and @var{num} is the label-number
8020of the preceding label.
8021
8022If this macro is not defined, nothing special is output at the end of
8023the jump-table.
a2c4f8e0 8024@end defmac
feca2ed3 8025
eeab4d81 8026@deftypefn {Target Hook} void TARGET_ASM_EMIT_UNWIND_LABEL (@var{stream}, @var{decl}, @var{for_eh}, @var{empty})
8a36672b 8027This target hook emits a label at the beginning of each FDE@. It
4746cf84
MA
8028should be defined on targets where FDEs need special labels, and it
8029should write the appropriate label, for the FDE associated with the
8030function declaration @var{decl}, to the stdio stream @var{stream}.
eeab4d81
MS
8031The third argument, @var{for_eh}, is a boolean: true if this is for an
8032exception table. The fourth argument, @var{empty}, is a boolean:
8a36672b 8033true if this is a placeholder label for an omitted FDE@.
4746cf84
MA
8034
8035The default is that FDEs are not given nonlocal labels.
8036@end deftypefn
8037
083cad55
EC
8038@deftypefn {Target Hook} void TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL (@var{stream})
8039This target hook emits a label at the beginning of the exception table.
8040It should be defined on targets where it is desirable for the table
8041to be broken up according to function.
8042
8043The default is that no label is emitted.
8044@end deftypefn
8045
8046@deftypefn {Target Hook} void TARGET_UNWIND_EMIT (FILE * @var{stream}, rtx @var{insn})
951120ea
PB
8047This target hook emits and assembly directives required to unwind the
8048given instruction. This is only used when TARGET_UNWIND_INFO is set.
8049@end deftypefn
8050
02f52e19 8051@node Exception Region Output
feca2ed3
JW
8052@subsection Assembler Commands for Exception Regions
8053
8054@c prevent bad page break with this line
8055
8056This describes commands marking the start and the end of an exception
8057region.
8058
a2c4f8e0 8059@defmac EH_FRAME_SECTION_NAME
7c262518
RH
8060If defined, a C string constant for the name of the section containing
8061exception handling frame unwind information. If not defined, GCC will
8062provide a default definition if the target supports named sections.
8063@file{crtstuff.c} uses this macro to switch to the appropriate section.
0021b564
JM
8064
8065You should define this symbol if your target supports DWARF 2 frame
8066unwind information and the default definition does not work.
a2c4f8e0 8067@end defmac
0021b564 8068
a2c4f8e0 8069@defmac EH_FRAME_IN_DATA_SECTION
02c9b1ca
RH
8070If defined, DWARF 2 frame unwind information will be placed in the
8071data section even though the target supports named sections. This
8072might be necessary, for instance, if the system linker does garbage
8073collection and sections cannot be marked as not to be collected.
8074
8075Do not define this macro unless @code{TARGET_ASM_NAMED_SECTION} is
8076also defined.
a2c4f8e0 8077@end defmac
02c9b1ca 8078
1a35e62d
MM
8079@defmac EH_TABLES_CAN_BE_READ_ONLY
8080Define this macro to 1 if your target is such that no frame unwind
8081information encoding used with non-PIC code will ever require a
8082runtime relocation, but the linker may not support merging read-only
8083and read-write sections into a single read-write section.
8084@end defmac
8085
a2c4f8e0 8086@defmac MASK_RETURN_ADDR
aee96fe9 8087An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so
feca2ed3 8088that it does not contain any extraneous set bits in it.
a2c4f8e0 8089@end defmac
0021b564 8090
a2c4f8e0 8091@defmac DWARF2_UNWIND_INFO
0021b564
JM
8092Define this macro to 0 if your target supports DWARF 2 frame unwind
8093information, but it does not yet work with exception handling.
8094Otherwise, if your target supports this information (if it defines
8095@samp{INCOMING_RETURN_ADDR_RTX} and either @samp{UNALIGNED_INT_ASM_OP}
4f6c2131 8096or @samp{OBJECT_FORMAT_ELF}), GCC will provide a default definition of 1.
0021b564 8097
5cf58f28
PB
8098If @code{TARGET_UNWIND_INFO} is defined, the target specific unwinder
8099will be used in all cases. Defining this macro will enable the generation
8100of DWARF 2 frame debugging information.
0021b564 8101
5cf58f28
PB
8102If @code{TARGET_UNWIND_INFO} is not defined, and this macro is defined to 1,
8103the DWARF 2 unwinder will be the default exception handling mechanism;
4f6c2131
EB
8104otherwise, the @code{setjmp}/@code{longjmp}-based scheme will be used by
8105default.
a2c4f8e0 8106@end defmac
0021b564 8107
951120ea
PB
8108@defmac TARGET_UNWIND_INFO
8109Define this macro if your target has ABI specified unwind tables. Usually
8110these will be output by @code{TARGET_UNWIND_EMIT}.
8111@end defmac
8112
4f6c2131 8113@deftypevar {Target Hook} bool TARGET_UNWIND_TABLES_DEFAULT
617a1b71
PB
8114This variable should be set to @code{true} if the target ABI requires unwinding
8115tables even when exceptions are not used.
8116@end deftypevar
8117
c14aea87
RO
8118@defmac MUST_USE_SJLJ_EXCEPTIONS
8119This macro need only be defined if @code{DWARF2_UNWIND_INFO} is
8120runtime-variable. In that case, @file{except.h} cannot correctly
4f6c2131
EB
8121determine the corresponding definition of @code{MUST_USE_SJLJ_EXCEPTIONS},
8122so the target must provide it directly.
8123@end defmac
8124
8125@defmac DONT_USE_BUILTIN_SETJMP
8126Define this macro to 1 if the @code{setjmp}/@code{longjmp}-based scheme
8127should use the @code{setjmp}/@code{longjmp} functions from the C library
8128instead of the @code{__builtin_setjmp}/@code{__builtin_longjmp} machinery.
c14aea87
RO
8129@end defmac
8130
a2c4f8e0 8131@defmac DWARF_CIE_DATA_ALIGNMENT
27c35f4b
HPN
8132This macro need only be defined if the target might save registers in the
8133function prologue at an offset to the stack pointer that is not aligned to
8134@code{UNITS_PER_WORD}. The definition should be the negative minimum
8135alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive
8136minimum alignment otherwise. @xref{SDB and DWARF}. Only applicable if
8137the target supports DWARF 2 frame unwind information.
a2c4f8e0 8138@end defmac
feca2ed3 8139
7606e68f
SS
8140@deftypevar {Target Hook} bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
8141Contains the value true if the target should add a zero word onto the
8142end of a Dwarf-2 frame info section when used for exception handling.
8143Default value is false if @code{EH_FRAME_SECTION_NAME} is defined, and
8144true otherwise.
8145@end deftypevar
8146
96714395
AH
8147@deftypefn {Target Hook} rtx TARGET_DWARF_REGISTER_SPAN (rtx @var{reg})
8148Given a register, this hook should return a parallel of registers to
8149represent where to find the register pieces. Define this hook if the
8150register and its mode are represented in Dwarf in non-contiguous
8151locations, or if the register should be represented in more than one
8152register in Dwarf. Otherwise, this hook should return @code{NULL_RTX}.
8153If not defined, the default is to return @code{NULL_RTX}.
8154@end deftypefn
8155
617a1b71
PB
8156@deftypefn {Target Hook} bool TARGET_ASM_TTYPE (rtx @var{sym})
8157This hook is used to output a reference from a frame unwinding table to
8158the type_info object identified by @var{sym}. It should return @code{true}
8159if the reference was output. Returning @code{false} will cause the
8160reference to be output using the normal Dwarf2 routines.
8161@end deftypefn
8162
8163@deftypefn {Target Hook} bool TARGET_ARM_EABI_UNWINDER
8164This hook should be set to @code{true} on targets that use an ARM EABI
8165based unwinding library, and @code{false} on other targets. This effects
8166the format of unwinding tables, and how the unwinder in entered after
8167running a cleanup. The default is @code{false}.
8168@end deftypefn
8169
feca2ed3
JW
8170@node Alignment Output
8171@subsection Assembler Commands for Alignment
8172
8173@c prevent bad page break with this line
8174This describes commands for alignment.
8175
a2c4f8e0 8176@defmac JUMP_ALIGN (@var{label})
247a370b 8177The alignment (log base 2) to put in front of @var{label}, which is
f710504c 8178a common destination of jumps and has no fallthru incoming edge.
25e22dc0
JH
8179
8180This macro need not be defined if you don't want any special alignment
8181to be done at such a time. Most machine descriptions do not currently
8182define the macro.
efa3896a 8183
3446405d
JH
8184Unless it's necessary to inspect the @var{label} parameter, it is better
8185to set the variable @var{align_jumps} in the target's
c21cd8b1 8186@code{OVERRIDE_OPTIONS}. Otherwise, you should try to honor the user's
247a370b 8187selection in @var{align_jumps} in a @code{JUMP_ALIGN} implementation.
a2c4f8e0 8188@end defmac
247a370b 8189
a2c4f8e0 8190@defmac LABEL_ALIGN_AFTER_BARRIER (@var{label})
247a370b
JH
8191The alignment (log base 2) to put in front of @var{label}, which follows
8192a @code{BARRIER}.
8193
8194This macro need not be defined if you don't want any special alignment
8195to be done at such a time. Most machine descriptions do not currently
8196define the macro.
a2c4f8e0 8197@end defmac
3446405d 8198
a2c4f8e0 8199@defmac LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
02f52e19 8200The maximum number of bytes to skip when applying
efa3896a
GK
8201@code{LABEL_ALIGN_AFTER_BARRIER}. This works only if
8202@code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
a2c4f8e0 8203@end defmac
efa3896a 8204
a2c4f8e0 8205@defmac LOOP_ALIGN (@var{label})
fc470718 8206The alignment (log base 2) to put in front of @var{label}, which follows
aee96fe9 8207a @code{NOTE_INSN_LOOP_BEG} note.
feca2ed3
JW
8208
8209This macro need not be defined if you don't want any special alignment
8210to be done at such a time. Most machine descriptions do not currently
8211define the macro.
8212
efa3896a 8213Unless it's necessary to inspect the @var{label} parameter, it is better
aee96fe9 8214to set the variable @code{align_loops} in the target's
c21cd8b1 8215@code{OVERRIDE_OPTIONS}. Otherwise, you should try to honor the user's
aee96fe9 8216selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation.
a2c4f8e0 8217@end defmac
efa3896a 8218
a2c4f8e0 8219@defmac LOOP_ALIGN_MAX_SKIP
efa3896a
GK
8220The maximum number of bytes to skip when applying @code{LOOP_ALIGN}.
8221This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
a2c4f8e0 8222@end defmac
efa3896a 8223
a2c4f8e0 8224@defmac LABEL_ALIGN (@var{label})
fc470718 8225The alignment (log base 2) to put in front of @var{label}.
aee96fe9 8226If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment,
fc470718
R
8227the maximum of the specified values is used.
8228
efa3896a 8229Unless it's necessary to inspect the @var{label} parameter, it is better
aee96fe9 8230to set the variable @code{align_labels} in the target's
c21cd8b1 8231@code{OVERRIDE_OPTIONS}. Otherwise, you should try to honor the user's
aee96fe9 8232selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation.
a2c4f8e0 8233@end defmac
efa3896a 8234
a2c4f8e0 8235@defmac LABEL_ALIGN_MAX_SKIP
efa3896a
GK
8236The maximum number of bytes to skip when applying @code{LABEL_ALIGN}.
8237This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
a2c4f8e0 8238@end defmac
efa3896a 8239
a2c4f8e0 8240@defmac ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
feca2ed3
JW
8241A C statement to output to the stdio stream @var{stream} an assembler
8242instruction to advance the location counter by @var{nbytes} bytes.
8243Those bytes should be zero when loaded. @var{nbytes} will be a C
606e938d 8244expression of type @code{unsigned HOST_WIDE_INT}.
a2c4f8e0 8245@end defmac
feca2ed3 8246
a2c4f8e0 8247@defmac ASM_NO_SKIP_IN_TEXT
feca2ed3 8248Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the
556e0f21 8249text section because it fails to put zeros in the bytes that are skipped.
feca2ed3
JW
8250This is true on many Unix systems, where the pseudo--op to skip bytes
8251produces no-op instructions rather than zeros when used in the text
8252section.
a2c4f8e0 8253@end defmac
feca2ed3 8254
a2c4f8e0 8255@defmac ASM_OUTPUT_ALIGN (@var{stream}, @var{power})
feca2ed3
JW
8256A C statement to output to the stdio stream @var{stream} an assembler
8257command to advance the location counter to a multiple of 2 to the
8258@var{power} bytes. @var{power} will be a C expression of type @code{int}.
a2c4f8e0 8259@end defmac
26f63a77 8260
a2c4f8e0 8261@defmac ASM_OUTPUT_ALIGN_WITH_NOP (@var{stream}, @var{power})
8e16ab99
SF
8262Like @code{ASM_OUTPUT_ALIGN}, except that the ``nop'' instruction is used
8263for padding, if necessary.
a2c4f8e0 8264@end defmac
8e16ab99 8265
a2c4f8e0 8266@defmac ASM_OUTPUT_MAX_SKIP_ALIGN (@var{stream}, @var{power}, @var{max_skip})
26f63a77
JL
8267A C statement to output to the stdio stream @var{stream} an assembler
8268command to advance the location counter to a multiple of 2 to the
8269@var{power} bytes, but only if @var{max_skip} or fewer bytes are needed to
8270satisfy the alignment request. @var{power} and @var{max_skip} will be
8271a C expression of type @code{int}.
a2c4f8e0 8272@end defmac
feca2ed3
JW
8273
8274@need 3000
8275@node Debugging Info
8276@section Controlling Debugging Information Format
8277
8278@c prevent bad page break with this line
8279This describes how to specify debugging information.
8280
8281@menu
8282* All Debuggers:: Macros that affect all debugging formats uniformly.
8283* DBX Options:: Macros enabling specific options in DBX format.
8284* DBX Hooks:: Hook macros for varying DBX format.
8285* File Names and DBX:: Macros controlling output of file names in DBX format.
8286* SDB and DWARF:: Macros for SDB (COFF) and DWARF formats.
5f98259a 8287* VMS Debug:: Macros for VMS debug format.
feca2ed3
JW
8288@end menu
8289
8290@node All Debuggers
8291@subsection Macros Affecting All Debugging Formats
8292
8293@c prevent bad page break with this line
8294These macros affect all debugging formats.
8295
a2c4f8e0 8296@defmac DBX_REGISTER_NUMBER (@var{regno})
feca2ed3 8297A C expression that returns the DBX register number for the compiler
4617e3b5
KG
8298register number @var{regno}. In the default macro provided, the value
8299of this expression will be @var{regno} itself. But sometimes there are
8300some registers that the compiler knows about and DBX does not, or vice
8301versa. In such cases, some register may need to have one number in the
8302compiler and another for DBX@.
feca2ed3 8303
a3a15b4d 8304If two registers have consecutive numbers inside GCC, and they can be
feca2ed3
JW
8305used as a pair to hold a multiword value, then they @emph{must} have
8306consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}.
8307Otherwise, debuggers will be unable to access such a pair, because they
8308expect register pairs to be consecutive in their own numbering scheme.
8309
8310If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that
8311does not preserve register pairs, then what you must do instead is
8312redefine the actual register numbering scheme.
a2c4f8e0 8313@end defmac
feca2ed3 8314
a2c4f8e0 8315@defmac DEBUGGER_AUTO_OFFSET (@var{x})
feca2ed3
JW
8316A C expression that returns the integer offset value for an automatic
8317variable having address @var{x} (an RTL expression). The default
8318computation assumes that @var{x} is based on the frame-pointer and
8319gives the offset from the frame-pointer. This is required for targets
8320that produce debugging output for DBX or COFF-style debugging output
8321for SDB and allow the frame-pointer to be eliminated when the
630d3d5a 8322@option{-g} options is used.
a2c4f8e0 8323@end defmac
feca2ed3 8324
a2c4f8e0 8325@defmac DEBUGGER_ARG_OFFSET (@var{offset}, @var{x})
feca2ed3
JW
8326A C expression that returns the integer offset value for an argument
8327having address @var{x} (an RTL expression). The nominal offset is
8328@var{offset}.
a2c4f8e0 8329@end defmac
feca2ed3 8330
a2c4f8e0 8331@defmac PREFERRED_DEBUGGING_TYPE
a3a15b4d 8332A C expression that returns the type of debugging output GCC should
630d3d5a 8333produce when the user specifies just @option{-g}. Define
a3a15b4d 8334this if you have arranged for GCC to support more than one format of
e5e809f4 8335debugging output. Currently, the allowable values are @code{DBX_DEBUG},
5f98259a
RK
8336@code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG},
8337@code{XCOFF_DEBUG}, @code{VMS_DEBUG}, and @code{VMS_AND_DWARF2_DEBUG}.
feca2ed3 8338
630d3d5a 8339When the user specifies @option{-ggdb}, GCC normally also uses the
e5e809f4 8340value of this macro to select the debugging output format, but with two
16201823 8341exceptions. If @code{DWARF2_DEBUGGING_INFO} is defined, GCC uses the
e5e809f4 8342value @code{DWARF2_DEBUG}. Otherwise, if @code{DBX_DEBUGGING_INFO} is
a3a15b4d 8343defined, GCC uses @code{DBX_DEBUG}.
deabc777 8344
feca2ed3 8345The value of this macro only affects the default debugging output; the
630d3d5a 8346user can always get a specific type of output by using @option{-gstabs},
def66b10 8347@option{-gcoff}, @option{-gdwarf-2}, @option{-gxcoff}, or @option{-gvms}.
a2c4f8e0 8348@end defmac
feca2ed3
JW
8349
8350@node DBX Options
8351@subsection Specific Options for DBX Output
8352
8353@c prevent bad page break with this line
8354These are specific options for DBX output.
8355
a2c4f8e0 8356@defmac DBX_DEBUGGING_INFO
a3a15b4d 8357Define this macro if GCC should produce debugging output for DBX
630d3d5a 8358in response to the @option{-g} option.
a2c4f8e0 8359@end defmac
feca2ed3 8360
a2c4f8e0 8361@defmac XCOFF_DEBUGGING_INFO
a3a15b4d 8362Define this macro if GCC should produce XCOFF format debugging output
630d3d5a 8363in response to the @option{-g} option. This is a variant of DBX format.
a2c4f8e0 8364@end defmac
feca2ed3 8365
a2c4f8e0 8366@defmac DEFAULT_GDB_EXTENSIONS
a3a15b4d 8367Define this macro to control whether GCC should by default generate
feca2ed3
JW
8368GDB's extended version of DBX debugging information (assuming DBX-format
8369debugging information is enabled at all). If you don't define the
8370macro, the default is 1: always generate the extended information
8371if there is any occasion to.
a2c4f8e0 8372@end defmac
feca2ed3 8373
a2c4f8e0 8374@defmac DEBUG_SYMS_TEXT
feca2ed3
JW
8375Define this macro if all @code{.stabs} commands should be output while
8376in the text section.
a2c4f8e0 8377@end defmac
feca2ed3 8378
a2c4f8e0 8379@defmac ASM_STABS_OP
047c1c92
HPN
8380A C string constant, including spacing, naming the assembler pseudo op to
8381use instead of @code{"\t.stabs\t"} to define an ordinary debugging symbol.
8382If you don't define this macro, @code{"\t.stabs\t"} is used. This macro
8383applies only to DBX debugging information format.
a2c4f8e0 8384@end defmac
feca2ed3 8385
a2c4f8e0 8386@defmac ASM_STABD_OP
047c1c92
HPN
8387A C string constant, including spacing, naming the assembler pseudo op to
8388use instead of @code{"\t.stabd\t"} to define a debugging symbol whose
8389value is the current location. If you don't define this macro,
8390@code{"\t.stabd\t"} is used. This macro applies only to DBX debugging
8391information format.
a2c4f8e0 8392@end defmac
feca2ed3 8393
a2c4f8e0 8394@defmac ASM_STABN_OP
047c1c92
HPN
8395A C string constant, including spacing, naming the assembler pseudo op to
8396use instead of @code{"\t.stabn\t"} to define a debugging symbol with no
8397name. If you don't define this macro, @code{"\t.stabn\t"} is used. This
8398macro applies only to DBX debugging information format.
a2c4f8e0 8399@end defmac
feca2ed3 8400
a2c4f8e0 8401@defmac DBX_NO_XREFS
feca2ed3
JW
8402Define this macro if DBX on your system does not support the construct
8403@samp{xs@var{tagname}}. On some systems, this construct is used to
8404describe a forward reference to a structure named @var{tagname}.
8405On other systems, this construct is not supported at all.
a2c4f8e0 8406@end defmac
feca2ed3 8407
a2c4f8e0 8408@defmac DBX_CONTIN_LENGTH
feca2ed3
JW
8409A symbol name in DBX-format debugging information is normally
8410continued (split into two separate @code{.stabs} directives) when it
8411exceeds a certain length (by default, 80 characters). On some
8412operating systems, DBX requires this splitting; on others, splitting
8413must not be done. You can inhibit splitting by defining this macro
8414with the value zero. You can override the default splitting-length by
8415defining this macro as an expression for the length you desire.
a2c4f8e0 8416@end defmac
feca2ed3 8417
a2c4f8e0 8418@defmac DBX_CONTIN_CHAR
feca2ed3
JW
8419Normally continuation is indicated by adding a @samp{\} character to
8420the end of a @code{.stabs} string when a continuation follows. To use
8421a different character instead, define this macro as a character
8422constant for the character you want to use. Do not define this macro
8423if backslash is correct for your system.
a2c4f8e0 8424@end defmac
feca2ed3 8425
a2c4f8e0 8426@defmac DBX_STATIC_STAB_DATA_SECTION
feca2ed3
JW
8427Define this macro if it is necessary to go to the data section before
8428outputting the @samp{.stabs} pseudo-op for a non-global static
8429variable.
a2c4f8e0 8430@end defmac
feca2ed3 8431
a2c4f8e0 8432@defmac DBX_TYPE_DECL_STABS_CODE
feca2ed3
JW
8433The value to use in the ``code'' field of the @code{.stabs} directive
8434for a typedef. The default is @code{N_LSYM}.
a2c4f8e0 8435@end defmac
feca2ed3 8436
a2c4f8e0 8437@defmac DBX_STATIC_CONST_VAR_CODE
feca2ed3
JW
8438The value to use in the ``code'' field of the @code{.stabs} directive
8439for a static variable located in the text section. DBX format does not
8440provide any ``right'' way to do this. The default is @code{N_FUN}.
a2c4f8e0 8441@end defmac
feca2ed3 8442
a2c4f8e0 8443@defmac DBX_REGPARM_STABS_CODE
feca2ed3
JW
8444The value to use in the ``code'' field of the @code{.stabs} directive
8445for a parameter passed in registers. DBX format does not provide any
8446``right'' way to do this. The default is @code{N_RSYM}.
a2c4f8e0 8447@end defmac
feca2ed3 8448
a2c4f8e0 8449@defmac DBX_REGPARM_STABS_LETTER
feca2ed3
JW
8450The letter to use in DBX symbol data to identify a symbol as a parameter
8451passed in registers. DBX format does not customarily provide any way to
8452do this. The default is @code{'P'}.
a2c4f8e0 8453@end defmac
feca2ed3 8454
a2c4f8e0 8455@defmac DBX_FUNCTION_FIRST
feca2ed3
JW
8456Define this macro if the DBX information for a function and its
8457arguments should precede the assembler code for the function. Normally,
8458in DBX format, the debugging information entirely follows the assembler
8459code.
a2c4f8e0 8460@end defmac
feca2ed3 8461
a2c4f8e0 8462@defmac DBX_BLOCKS_FUNCTION_RELATIVE
3e487b21
ZW
8463Define this macro, with value 1, if the value of a symbol describing
8464the scope of a block (@code{N_LBRAC} or @code{N_RBRAC}) should be
8465relative to the start of the enclosing function. Normally, GCC uses
8466an absolute address.
8467@end defmac
8468
8469@defmac DBX_LINES_FUNCTION_RELATIVE
8470Define this macro, with value 1, if the value of a symbol indicating
8471the current line number (@code{N_SLINE}) should be relative to the
8472start of the enclosing function. Normally, GCC uses an absolute address.
a2c4f8e0 8473@end defmac
feca2ed3 8474
a2c4f8e0 8475@defmac DBX_USE_BINCL
f0523f02 8476Define this macro if GCC should generate @code{N_BINCL} and
feca2ed3 8477@code{N_EINCL} stabs for included header files, as on Sun systems. This
f0523f02
JM
8478macro also directs GCC to output a type number as a pair of a file
8479number and a type number within the file. Normally, GCC does not
feca2ed3
JW
8480generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single
8481number for a type number.
a2c4f8e0 8482@end defmac
feca2ed3
JW
8483
8484@node DBX Hooks
8485@subsection Open-Ended Hooks for DBX Format
8486
8487@c prevent bad page break with this line
8488These are hooks for DBX format.
8489
a2c4f8e0 8490@defmac DBX_OUTPUT_LBRAC (@var{stream}, @var{name})
feca2ed3
JW
8491Define this macro to say how to output to @var{stream} the debugging
8492information for the start of a scope level for variable names. The
8493argument @var{name} is the name of an assembler symbol (for use with
8494@code{assemble_name}) whose value is the address where the scope begins.
a2c4f8e0 8495@end defmac
feca2ed3 8496
a2c4f8e0 8497@defmac DBX_OUTPUT_RBRAC (@var{stream}, @var{name})
feca2ed3 8498Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level.
a2c4f8e0 8499@end defmac
feca2ed3 8500
a2c4f8e0 8501@defmac DBX_OUTPUT_NFUN (@var{stream}, @var{lscope_label}, @var{decl})
374b0b7d
AM
8502Define this macro if the target machine requires special handling to
8503output an @code{N_FUN} entry for the function @var{decl}.
a2c4f8e0 8504@end defmac
374b0b7d 8505
3e487b21
ZW
8506@defmac DBX_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter})
8507A C statement to output DBX debugging information before code for line
8508number @var{line} of the current source file to the stdio stream
8a36672b 8509@var{stream}. @var{counter} is the number of time the macro was
3e487b21
ZW
8510invoked, including the current invocation; it is intended to generate
8511unique labels in the assembly output.
8512
8513This macro should not be defined if the default output is correct, or
8514if it can be made correct by defining @code{DBX_LINES_FUNCTION_RELATIVE}.
8515@end defmac
8516
a2c4f8e0 8517@defmac NO_DBX_FUNCTION_END
feca2ed3 8518Some stabs encapsulation formats (in particular ECOFF), cannot handle the
c771326b 8519@code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extension construct.
feca2ed3
JW
8520On those machines, define this macro to turn this feature off without
8521disturbing the rest of the gdb extensions.
a2c4f8e0 8522@end defmac
feca2ed3 8523
5d865dac
EB
8524@defmac NO_DBX_BNSYM_ENSYM
8525Some assemblers cannot handle the @code{.stabd BNSYM/ENSYM,0,0} gdb dbx
8526extension construct. On those machines, define this macro to turn this
8527feature off without disturbing the rest of the gdb extensions.
8528@end defmac
8529
feca2ed3
JW
8530@node File Names and DBX
8531@subsection File Names in DBX Format
8532
8533@c prevent bad page break with this line
8534This describes file names in DBX format.
8535
a2c4f8e0 8536@defmac DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
feca2ed3 8537A C statement to output DBX debugging information to the stdio stream
93a27b7b 8538@var{stream}, which indicates that file @var{name} is the main source
feca2ed3
JW
8539file---the file specified as the input file for compilation.
8540This macro is called only once, at the beginning of compilation.
8541
8542This macro need not be defined if the standard form of output
8543for DBX debugging information is appropriate.
93a27b7b
ZW
8544
8545It may be necessary to refer to a label equal to the beginning of the
8546text section. You can use @samp{assemble_name (stream, ltext_label_name)}
8547to do so. If you do this, you must also set the variable
8548@var{used_ltext_label_name} to @code{true}.
a2c4f8e0 8549@end defmac
feca2ed3 8550
93a27b7b
ZW
8551@defmac NO_DBX_MAIN_SOURCE_DIRECTORY
8552Define this macro, with value 1, if GCC should not emit an indication
8553of the current directory for compilation and current source language at
8554the beginning of the file.
8555@end defmac
feca2ed3 8556
93a27b7b
ZW
8557@defmac NO_DBX_GCC_MARKER
8558Define this macro, with value 1, if GCC should not emit an indication
8559that this object file was compiled by GCC@. The default is to emit
8560an @code{N_OPT} stab at the beginning of every source file, with
8561@samp{gcc2_compiled.} for the string and value 0.
a2c4f8e0 8562@end defmac
feca2ed3 8563
a2c4f8e0 8564@defmac DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
feca2ed3 8565A C statement to output DBX debugging information at the end of
93a27b7b
ZW
8566compilation of the main source file @var{name}. Output should be
8567written to the stdio stream @var{stream}.
feca2ed3
JW
8568
8569If you don't define this macro, nothing special is output at the end
8570of compilation, which is correct for most machines.
a2c4f8e0 8571@end defmac
feca2ed3 8572
3e487b21
ZW
8573@defmac DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
8574Define this macro @emph{instead of} defining
8575@code{DBX_OUTPUT_MAIN_SOURCE_FILE_END}, if what needs to be output at
8576the end of compilation is a @code{N_SO} stab with an empty string,
8577whose value is the highest absolute text address in the file.
8578@end defmac
8579
feca2ed3
JW
8580@need 2000
8581@node SDB and DWARF
8582@subsection Macros for SDB and DWARF Output
8583
8584@c prevent bad page break with this line
8585Here are macros for SDB and DWARF output.
8586
a2c4f8e0 8587@defmac SDB_DEBUGGING_INFO
a3a15b4d 8588Define this macro if GCC should produce COFF-style debugging output
630d3d5a 8589for SDB in response to the @option{-g} option.
a2c4f8e0 8590@end defmac
feca2ed3 8591
a2c4f8e0 8592@defmac DWARF2_DEBUGGING_INFO
a3a15b4d 8593Define this macro if GCC should produce dwarf version 2 format
630d3d5a 8594debugging output in response to the @option{-g} option.
f3ff3f4a 8595
a1c496cb
EC
8596@deftypefn {Target Hook} int TARGET_DWARF_CALLING_CONVENTION (tree @var{function})
8597Define this to enable the dwarf attribute @code{DW_AT_calling_convention} to
8598be emitted for each function. Instead of an integer return the enum
8599value for the @code{DW_CC_} tag.
8600@end deftypefn
8601
861bb6c1
JL
8602To support optional call frame debugging information, you must also
8603define @code{INCOMING_RETURN_ADDR_RTX} and either set
8604@code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
8605prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
08c148a8 8606as appropriate from @code{TARGET_ASM_FUNCTION_PROLOGUE} if you don't.
a2c4f8e0 8607@end defmac
861bb6c1 8608
a2c4f8e0 8609@defmac DWARF2_FRAME_INFO
a3a15b4d 8610Define this macro to a nonzero value if GCC should always output
9ec36da5 8611Dwarf 2 frame information. If @code{DWARF2_UNWIND_INFO}
a3a15b4d 8612(@pxref{Exception Region Output} is nonzero, GCC will output this
9ec36da5 8613information not matter how you define @code{DWARF2_FRAME_INFO}.
a2c4f8e0 8614@end defmac
9ec36da5 8615
a2c4f8e0 8616@defmac DWARF2_ASM_LINE_DEBUG_INFO
b2244e22
JW
8617Define this macro to be a nonzero value if the assembler can generate Dwarf 2
8618line debug info sections. This will result in much more compact line number
8619tables, and hence is desirable if it works.
a2c4f8e0 8620@end defmac
b2244e22 8621
a2c4f8e0 8622@defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2})
7606e68f 8623A C statement to issue assembly directives that create a difference
192d0f89 8624@var{lab1} minus @var{lab2}, using an integer of the given @var{size}.
a2c4f8e0 8625@end defmac
7606e68f 8626
192d0f89 8627@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label}, @var{section})
7606e68f 8628A C statement to issue assembly directives that create a
192d0f89
GK
8629section-relative reference to the given @var{label}, using an integer of the
8630given @var{size}. The label is known to be defined in the given @var{section}.
a2c4f8e0 8631@end defmac
7606e68f 8632
a2c4f8e0 8633@defmac ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label})
7606e68f 8634A C statement to issue assembly directives that create a self-relative
192d0f89 8635reference to the given @var{label}, using an integer of the given @var{size}.
a2c4f8e0 8636@end defmac
7606e68f 8637
fdbe66f2
EB
8638@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *@var{FILE}, int @var{size}, rtx @var{x})
8639If defined, this target hook is a function which outputs a DTP-relative
8640reference to the given TLS symbol of the specified size.
8641@end deftypefn
8642
a2c4f8e0 8643@defmac PUT_SDB_@dots{}
feca2ed3
JW
8644Define these macros to override the assembler syntax for the special
8645SDB assembler directives. See @file{sdbout.c} for a list of these
8646macros and their arguments. If the standard syntax is used, you need
8647not define them yourself.
a2c4f8e0 8648@end defmac
feca2ed3 8649
a2c4f8e0 8650@defmac SDB_DELIM
feca2ed3
JW
8651Some assemblers do not support a semicolon as a delimiter, even between
8652SDB assembler directives. In that case, define this macro to be the
8653delimiter to use (usually @samp{\n}). It is not necessary to define
8654a new set of @code{PUT_SDB_@var{op}} macros if this is the only change
8655required.
a2c4f8e0 8656@end defmac
feca2ed3 8657
a2c4f8e0 8658@defmac SDB_ALLOW_UNKNOWN_REFERENCES
feca2ed3
JW
8659Define this macro to allow references to unknown structure,
8660union, or enumeration tags to be emitted. Standard COFF does not
8661allow handling of unknown references, MIPS ECOFF has support for
8662it.
a2c4f8e0 8663@end defmac
feca2ed3 8664
a2c4f8e0 8665@defmac SDB_ALLOW_FORWARD_REFERENCES
feca2ed3
JW
8666Define this macro to allow references to structure, union, or
8667enumeration tags that have not yet been seen to be handled. Some
8668assemblers choke if forward tags are used, while some require it.
a2c4f8e0 8669@end defmac
feca2ed3 8670
3e487b21
ZW
8671@defmac SDB_OUTPUT_SOURCE_LINE (@var{stream}, @var{line})
8672A C statement to output SDB debugging information before code for line
8673number @var{line} of the current source file to the stdio stream
8674@var{stream}. The default is to emit an @code{.ln} directive.
8675@end defmac
8676
5f98259a
RK
8677@need 2000
8678@node VMS Debug
8679@subsection Macros for VMS Debug Format
8680
8681@c prevent bad page break with this line
8682Here are macros for VMS debug format.
8683
a2c4f8e0 8684@defmac VMS_DEBUGGING_INFO
5f98259a
RK
8685Define this macro if GCC should produce debugging output for VMS
8686in response to the @option{-g} option. The default behavior for VMS
8687is to generate minimal debug info for a traceback in the absence of
8688@option{-g} unless explicitly overridden with @option{-g0}. This
8689behavior is controlled by @code{OPTIMIZATION_OPTIONS} and
8690@code{OVERRIDE_OPTIONS}.
a2c4f8e0 8691@end defmac
5f98259a 8692
b216cd4a 8693@node Floating Point
feca2ed3
JW
8694@section Cross Compilation and Floating Point
8695@cindex cross compilation and floating point
8696@cindex floating point and cross compilation
8697
b216cd4a 8698While all modern machines use twos-complement representation for integers,
feca2ed3
JW
8699there are a variety of representations for floating point numbers. This
8700means that in a cross-compiler the representation of floating point numbers
8701in the compiled program may be different from that used in the machine
8702doing the compilation.
8703
feca2ed3 8704Because different representation systems may offer different amounts of
b216cd4a
ZW
8705range and precision, all floating point constants must be represented in
8706the target machine's format. Therefore, the cross compiler cannot
8707safely use the host machine's floating point arithmetic; it must emulate
8708the target's arithmetic. To ensure consistency, GCC always uses
8709emulation to work with floating point values, even when the host and
8710target floating point formats are identical.
8711
8712The following macros are provided by @file{real.h} for the compiler to
8713use. All parts of the compiler which generate or optimize
ba31d94e
ZW
8714floating-point calculations must use these macros. They may evaluate
8715their operands more than once, so operands must not have side effects.
feca2ed3 8716
b216cd4a
ZW
8717@defmac REAL_VALUE_TYPE
8718The C data type to be used to hold a floating point value in the target
8719machine's format. Typically this is a @code{struct} containing an
8720array of @code{HOST_WIDE_INT}, but all code should treat it as an opaque
8721quantity.
8722@end defmac
8723
8724@deftypefn Macro int REAL_VALUES_EQUAL (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8725Compares for equality the two values, @var{x} and @var{y}. If the target
8726floating point format supports negative zeroes and/or NaNs,
8727@samp{REAL_VALUES_EQUAL (-0.0, 0.0)} is true, and
8728@samp{REAL_VALUES_EQUAL (NaN, NaN)} is false.
8729@end deftypefn
8730
8731@deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
8732Tests whether @var{x} is less than @var{y}.
8733@end deftypefn
8734
b216cd4a
ZW
8735@deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x})
8736Truncates @var{x} to a signed integer, rounding toward zero.
8737@end deftypefn
8738
8739@deftypefn Macro {unsigned HOST_WIDE_INT} REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE @var{x})
8740Truncates @var{x} to an unsigned integer, rounding toward zero. If
8741@var{x} is negative, returns zero.
8742@end deftypefn
8743
b216cd4a
ZW
8744@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *@var{string}, enum machine_mode @var{mode})
8745Converts @var{string} into a floating point number in the target machine's
8746representation for mode @var{mode}. This routine can handle both
8747decimal and hexadecimal floating point constants, using the syntax
8748defined by the C language for both.
8749@end deftypefn
feca2ed3 8750
15e5ad76 8751@deftypefn Macro int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE @var{x})
ce3649d2 8752Returns 1 if @var{x} is negative (including negative zero), 0 otherwise.
15e5ad76
ZW
8753@end deftypefn
8754
b216cd4a
ZW
8755@deftypefn Macro int REAL_VALUE_ISINF (REAL_VALUE_TYPE @var{x})
8756Determines whether @var{x} represents infinity (positive or negative).
8757@end deftypefn
8758
8759@deftypefn Macro int REAL_VALUE_ISNAN (REAL_VALUE_TYPE @var{x})
8760Determines whether @var{x} represents a ``NaN'' (not-a-number).
8761@end deftypefn
8762
8763@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})
8764Calculates an arithmetic operation on the two floating point values
8765@var{x} and @var{y}, storing the result in @var{output} (which must be a
8766variable).
8767
8768The operation to be performed is specified by @var{code}. Only the
8769following codes are supported: @code{PLUS_EXPR}, @code{MINUS_EXPR},
8770@code{MULT_EXPR}, @code{RDIV_EXPR}, @code{MAX_EXPR}, @code{MIN_EXPR}.
8771
8772If @code{REAL_ARITHMETIC} is asked to evaluate division by zero and the
8773target's floating point format cannot represent infinity, it will call
8774@code{abort}. Callers should check for this situation first, using
8775@code{MODE_HAS_INFINITIES}. @xref{Storage Layout}.
8776@end deftypefn
8777
8778@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x})
8779Returns the negative of the floating point value @var{x}.
8780@end deftypefn
8781
15e5ad76
ZW
8782@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x})
8783Returns the absolute value of @var{x}.
8784@end deftypefn
8785
b216cd4a
ZW
8786@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE @var{mode}, enum machine_mode @var{x})
8787Truncates the floating point value @var{x} to fit in @var{mode}. The
8788return value is still a full-size @code{REAL_VALUE_TYPE}, but it has an
8789appropriate bit pattern to be output asa floating constant whose
8790precision accords with mode @var{mode}.
8791@end deftypefn
8792
8793@deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT @var{high}, REAL_VALUE_TYPE @var{x})
8794Converts a floating point value @var{x} into a double-precision integer
8795which is then stored into @var{low} and @var{high}. If the value is not
8796integral, it is truncated.
8797@end deftypefn
8798
8799@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
8800Converts a double-precision integer found in @var{low} and @var{high},
8801into a floating point value which is then stored into @var{x}. The
8802value is truncated to fit in mode @var{mode}.
8803@end deftypefn
feca2ed3 8804
9f09b1f2
R
8805@node Mode Switching
8806@section Mode Switching Instructions
8807@cindex mode switching
8808The following macros control mode switching optimizations:
8809
a2c4f8e0 8810@defmac OPTIMIZE_MODE_SWITCHING (@var{entity})
9f09b1f2
R
8811Define this macro if the port needs extra instructions inserted for mode
8812switching in an optimizing compilation.
8813
8814For an example, the SH4 can perform both single and double precision
8815floating point operations, but to perform a single precision operation,
8816the FPSCR PR bit has to be cleared, while for a double precision
8817operation, this bit has to be set. Changing the PR bit requires a general
8818purpose register as a scratch register, hence these FPSCR sets have to
e979f9e8 8819be inserted before reload, i.e.@: you can't put this into instruction emitting
18dbd950 8820or @code{TARGET_MACHINE_DEPENDENT_REORG}.
9f09b1f2
R
8821
8822You can have multiple entities that are mode-switched, and select at run time
8823which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should
14976c58 8824return nonzero for any @var{entity} that needs mode-switching.
9f09b1f2
R
8825If you define this macro, you also have to define
8826@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{MODE_NEEDED},
8827@code{MODE_PRIORITY_TO_MODE} and @code{EMIT_MODE_SET}.
73774972
EC
8828@code{MODE_AFTER}, @code{MODE_ENTRY}, and @code{MODE_EXIT}
8829are optional.
a2c4f8e0 8830@end defmac
9f09b1f2 8831
a2c4f8e0 8832@defmac NUM_MODES_FOR_MODE_SWITCHING
9f09b1f2
R
8833If you define @code{OPTIMIZE_MODE_SWITCHING}, you have to define this as
8834initializer for an array of integers. Each initializer element
8835N refers to an entity that needs mode switching, and specifies the number
8836of different modes that might need to be set for this entity.
78466c0e
JM
8837The position of the initializer in the initializer---starting counting at
8838zero---determines the integer that is used to refer to the mode-switched
9f09b1f2
R
8839entity in question.
8840In macros that take mode arguments / yield a mode result, modes are
630d3d5a 8841represented as numbers 0 @dots{} N @minus{} 1. N is used to specify that no mode
9f09b1f2 8842switch is needed / supplied.
a2c4f8e0 8843@end defmac
9f09b1f2 8844
a2c4f8e0 8845@defmac MODE_NEEDED (@var{entity}, @var{insn})
9f09b1f2
R
8846@var{entity} is an integer specifying a mode-switched entity. If
8847@code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to
8848return an integer value not larger than the corresponding element in
aee96fe9
JM
8849@code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must
8850be switched into prior to the execution of @var{insn}.
a2c4f8e0 8851@end defmac
9f09b1f2 8852
73774972
EC
8853@defmac MODE_AFTER (@var{mode}, @var{insn})
8854If this macro is defined, it is evaluated for every @var{insn} during
8a36672b 8855mode switching. It determines the mode that an insn results in (if
73774972
EC
8856different from the incoming mode).
8857@end defmac
8858
8859@defmac MODE_ENTRY (@var{entity})
8860If this macro is defined, it is evaluated for every @var{entity} that needs
8a36672b
JM
8861mode switching. It should evaluate to an integer, which is a mode that
8862@var{entity} is assumed to be switched to at function entry. If @code{MODE_ENTRY}
73774972
EC
8863is defined then @code{MODE_EXIT} must be defined.
8864@end defmac
8865
8866@defmac MODE_EXIT (@var{entity})
9f09b1f2 8867If this macro is defined, it is evaluated for every @var{entity} that needs
8a36672b
JM
8868mode switching. It should evaluate to an integer, which is a mode that
8869@var{entity} is assumed to be switched to at function exit. If @code{MODE_EXIT}
73774972 8870is defined then @code{MODE_ENTRY} must be defined.
a2c4f8e0 8871@end defmac
9f09b1f2 8872
a2c4f8e0 8873@defmac MODE_PRIORITY_TO_MODE (@var{entity}, @var{n})
aee96fe9
JM
8874This macro specifies the order in which modes for @var{entity} are processed.
88750 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the
9f09b1f2 8876lowest. The value of the macro should be an integer designating a mode
aee96fe9 8877for @var{entity}. For any fixed @var{entity}, @code{mode_priority_to_mode}
630d3d5a 8878(@var{entity}, @var{n}) shall be a bijection in 0 @dots{}
aee96fe9 8879@code{num_modes_for_mode_switching[@var{entity}] - 1}.
a2c4f8e0 8880@end defmac
9f09b1f2 8881
a2c4f8e0 8882@defmac EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live})
9f09b1f2
R
8883Generate one or more insns to set @var{entity} to @var{mode}.
8884@var{hard_reg_live} is the set of hard registers live at the point where
8885the insn(s) are to be inserted.
a2c4f8e0 8886@end defmac
9f09b1f2 8887
91d231cb
JM
8888@node Target Attributes
8889@section Defining target-specific uses of @code{__attribute__}
8890@cindex target attributes
8891@cindex machine attributes
8892@cindex attributes, target-specific
8893
8894Target-specific attributes may be defined for functions, data and types.
8895These are described using the following target hooks; they also need to
8896be documented in @file{extend.texi}.
8897
8898@deftypevr {Target Hook} {const struct attribute_spec *} TARGET_ATTRIBUTE_TABLE
8899If defined, this target hook points to an array of @samp{struct
8900attribute_spec} (defined in @file{tree.h}) specifying the machine
8901specific attributes for this target and some of the restrictions on the
8902entities to which these attributes are applied and the arguments they
8903take.
8904@end deftypevr
8905
8906@deftypefn {Target Hook} int TARGET_COMP_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
8907If defined, this target hook is a function which returns zero if the attributes on
8908@var{type1} and @var{type2} are incompatible, one if they are compatible,
8909and two if they are nearly compatible (which causes a warning to be
8910generated). If this is not defined, machine-specific attributes are
8911supposed always to be compatible.
8912@end deftypefn
8913
8914@deftypefn {Target Hook} void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree @var{type})
8915If defined, this target hook is a function which assigns default attributes to
8916newly defined @var{type}.
8917@end deftypefn
8918
8919@deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
8920Define this target hook if the merging of type attributes needs special
8921handling. If defined, the result is a list of the combined
8922@code{TYPE_ATTRIBUTES} of @var{type1} and @var{type2}. It is assumed
8923that @code{comptypes} has already been called and returned 1. This
8924function may call @code{merge_attributes} to handle machine-independent
8925merging.
8926@end deftypefn
8927
8928@deftypefn {Target Hook} tree TARGET_MERGE_DECL_ATTRIBUTES (tree @var{olddecl}, tree @var{newdecl})
8929Define this target hook if the merging of decl attributes needs special
8930handling. If defined, the result is a list of the combined
8931@code{DECL_ATTRIBUTES} of @var{olddecl} and @var{newdecl}.
8932@var{newdecl} is a duplicate declaration of @var{olddecl}. Examples of
8933when this is needed are when one attribute overrides another, or when an
8934attribute is nullified by a subsequent definition. This function may
8935call @code{merge_attributes} to handle machine-independent merging.
8936
8937@findex TARGET_DLLIMPORT_DECL_ATTRIBUTES
b2ca3702
MM
8938If the only target-specific handling you require is @samp{dllimport}
8939for Microsoft Windows targets, you should define the macro
8940@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES} to @code{1}. The compiler
8941will then define a function called
8942@code{merge_dllimport_decl_attributes} which can then be defined as
8943the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}. You can also
8944add @code{handle_dll_attribute} in the attribute table for your port
8945to perform initial processing of the @samp{dllimport} and
8946@samp{dllexport} attributes. This is done in @file{i386/cygwin.h} and
8947@file{i386/i386.c}, for example.
91d231cb
JM
8948@end deftypefn
8949
43d9ad1d
DS
8950@deftypefn {Target Hook} bool TARGET_VALID_DLLIMPORT_ATTRIBUTE_P (tree @var{decl})
8951@var{decl} is a variable or function with @code{__attribute__((dllimport))}
8952specified. Use this hook if the target needs to add extra validation
8953checks to @code{handle_dll_attribute}.
8954@end deftypefn
8955
63c5b495 8956@defmac TARGET_DECLSPEC
1a141fe1 8957Define this macro to a nonzero value if you want to treat
63c5b495
MM
8958@code{__declspec(X)} as equivalent to @code{__attribute((X))}. By
8959default, this behavior is enabled only for targets that define
8960@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}. The current implementation
8961of @code{__declspec} is via a built-in macro, but you should not rely
8962on this implementation detail.
8963@end defmac
8964
91d231cb
JM
8965@deftypefn {Target Hook} void TARGET_INSERT_ATTRIBUTES (tree @var{node}, tree *@var{attr_ptr})
8966Define this target hook if you want to be able to add attributes to a decl
8967when it is being created. This is normally useful for back ends which
8968wish to implement a pragma by using the attributes which correspond to
8969the pragma's effect. The @var{node} argument is the decl which is being
8970created. The @var{attr_ptr} argument is a pointer to the attribute list
8971for this decl. The list itself should not be modified, since it may be
8972shared with other decls, but attributes may be chained on the head of
8973the list and @code{*@var{attr_ptr}} modified to point to the new
8974attributes, or a copy of the list may be made if further changes are
8975needed.
8976@end deftypefn
8977
8978@deftypefn {Target Hook} bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (tree @var{fndecl})
8979@cindex inlining
8980This target hook returns @code{true} if it is ok to inline @var{fndecl}
8981into the current function, despite its having target-specific
8982attributes, @code{false} otherwise. By default, if a function has a
8983target specific attribute attached to it, it will not be inlined.
8984@end deftypefn
8985
d604bca3
MH
8986@node MIPS Coprocessors
8987@section Defining coprocessor specifics for MIPS targets.
8988@cindex MIPS coprocessor-definition macros
8989
8990The MIPS specification allows MIPS implementations to have as many as 4
2dd76960 8991coprocessors, each with as many as 32 private registers. GCC supports
d604bca3
MH
8992accessing these registers and transferring values between the registers
8993and memory using asm-ized variables. For example:
8994
8995@smallexample
8996 register unsigned int cp0count asm ("c0r1");
8997 unsigned int d;
8998
8999 d = cp0count + 3;
9000@end smallexample
9001
9002(``c0r1'' is the default name of register 1 in coprocessor 0; alternate
9003names may be added as described below, or the default names may be
9004overridden entirely in @code{SUBTARGET_CONDITIONAL_REGISTER_USAGE}.)
9005
9006Coprocessor registers are assumed to be epilogue-used; sets to them will
9007be preserved even if it does not appear that the register is used again
9008later in the function.
9009
9010Another note: according to the MIPS spec, coprocessor 1 (if present) is
8a36672b 9011the FPU@. One accesses COP1 registers through standard mips
d604bca3
MH
9012floating-point support; they are not included in this mechanism.
9013
9014There is one macro used in defining the MIPS coprocessor interface which
9015you may want to override in subtargets; it is described below.
9016
a2c4f8e0 9017@defmac ALL_COP_ADDITIONAL_REGISTER_NAMES
d604bca3
MH
9018A comma-separated list (with leading comma) of pairs describing the
9019alternate names of coprocessor registers. The format of each entry should be
9020@smallexample
9021@{ @var{alternatename}, @var{register_number}@}
9022@end smallexample
9023Default: empty.
a2c4f8e0 9024@end defmac
d604bca3 9025
7bb1ad93
GK
9026@node PCH Target
9027@section Parameters for Precompiled Header Validity Checking
9028@cindex parameters, precompiled headers
9029
8d932be3
RS
9030@deftypefn {Target Hook} void *TARGET_GET_PCH_VALIDITY (size_t *@var{sz})
9031This hook returns the data needed by @code{TARGET_PCH_VALID_P} and sets
9032@samp{*@var{sz}} to the size of the data in bytes.
7bb1ad93
GK
9033@end deftypefn
9034
8d932be3
RS
9035@deftypefn {Target Hook} const char *TARGET_PCH_VALID_P (const void *@var{data}, size_t @var{sz})
9036This hook checks whether the options used to create a PCH file are
9037compatible with the current settings. It returns @code{NULL}
9038if so and a suitable error message if not. Error messages will
9039be presented to the user and must be localized using @samp{_(@var{msg})}.
9040
9041@var{data} is the data that was returned by @code{TARGET_GET_PCH_VALIDITY}
9042when the PCH file was created and @var{sz} is the size of that data in bytes.
9043It's safe to assume that the data was created by the same version of the
9044compiler, so no format checking is needed.
9045
9046The default definition of @code{default_pch_valid_p} should be
9047suitable for most targets.
9048@end deftypefn
9049
9050@deftypefn {Target Hook} const char *TARGET_CHECK_PCH_TARGET_FLAGS (int @var{pch_flags})
9051If this hook is nonnull, the default implementation of
9052@code{TARGET_PCH_VALID_P} will use it to check for compatible values
9053of @code{target_flags}. @var{pch_flags} specifies the value that
9054@code{target_flags} had when the PCH file was created. The return
9055value is the same as for @code{TARGET_PCH_VALID_P}.
7bb1ad93
GK
9056@end deftypefn
9057
4185ae53
PB
9058@node C++ ABI
9059@section C++ ABI parameters
9060@cindex parameters, c++ abi
9061
9062@deftypefn {Target Hook} tree TARGET_CXX_GUARD_TYPE (void)
9063Define this hook to override the integer type used for guard variables.
9064These are used to implement one-time construction of static objects. The
9065default is long_long_integer_type_node.
9066@end deftypefn
9067
9068@deftypefn {Target Hook} bool TARGET_CXX_GUARD_MASK_BIT (void)
f676971a 9069This hook determines how guard variables are used. It should return
4185ae53
PB
9070@code{false} (the default) if first byte should be used. A return value of
9071@code{true} indicates the least significant bit should be used.
9072@end deftypefn
9073
46e995e0
PB
9074@deftypefn {Target Hook} tree TARGET_CXX_GET_COOKIE_SIZE (tree @var{type})
9075This hook returns the size of the cookie to use when allocating an array
9076whose elements have the indicated @var{type}. Assumes that it is already
9077known that a cookie is needed. The default is
9078@code{max(sizeof (size_t), alignof(type))}, as defined in section 2.7 of the
8a36672b 9079IA64/Generic C++ ABI@.
46e995e0
PB
9080@end deftypefn
9081
9082@deftypefn {Target Hook} bool TARGET_CXX_COOKIE_HAS_SIZE (void)
9083This hook should return @code{true} if the element size should be stored in
9084array cookies. The default is to return @code{false}.
9085@end deftypefn
9086
d59c7b4b
NC
9087@deftypefn {Target Hook} int TARGET_CXX_IMPORT_EXPORT_CLASS (tree @var{type}, int @var{import_export})
9088If defined by a backend this hook allows the decision made to export
9089class @var{type} to be overruled. Upon entry @var{import_export}
78466c0e 9090will contain 1 if the class is going to be exported, @minus{}1 if it is going
d59c7b4b
NC
9091to be imported and 0 otherwise. This function should return the
9092modified value and perform any other actions necessary to support the
9093backend's targeted operating system.
9094@end deftypefn
9095
44d10c10
PB
9096@deftypefn {Target Hook} bool TARGET_CXX_CDTOR_RETURNS_THIS (void)
9097This hook should return @code{true} if constructors and destructors return
9098the address of the object created/destroyed. The default is to return
9099@code{false}.
9100@end deftypefn
9101
af287697
MM
9102@deftypefn {Target Hook} bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void)
9103This hook returns true if the key method for a class (i.e., the method
9104which, if defined in the current translation unit, causes the virtual
9105table to be emitted) may be an inline function. Under the standard
9106Itanium C++ ABI the key method may be an inline function so long as
9107the function is not declared inline in the class definition. Under
9108some variants of the ABI, an inline function can never be the key
9109method. The default is to return @code{true}.
9110@end deftypefn
9111
1e731102
MM
9112@deftypefn {Target Hook} void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree @var{decl})
9113@var{decl} is a virtual table, virtual table table, typeinfo object,
9114or other similar implicit class data object that will be emitted with
9115external linkage in this translation unit. No ELF visibility has been
9116explicitly specified. If the target needs to specify a visibility
9117other than that of the containing class, use this hook to set
9118@code{DECL_VISIBILITY} and @code{DECL_VISIBILITY_SPECIFIED}.
9119@end deftypefn
9120
9121@deftypefn {Target Hook} bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void)
9122This hook returns true (the default) if virtual tables and other
9123similar implicit class data objects are always COMDAT if they have
9124external linkage. If this hook returns false, then class data for
9125classes whose virtual table will be emitted in only one translation
9126unit will not be COMDAT.
505970fc
MM
9127@end deftypefn
9128
157600d0
GK
9129@deftypefn {Target Hook} bool TARGET_CXX_LIBRARY_RTTI_COMDAT (void)
9130This hook returns true (the default) if the RTTI information for
9131the basic types which is defined in the C++ runtime should always
9132be COMDAT, false if it should not be COMDAT.
9133@end deftypefn
9134
9f62c3e3
PB
9135@deftypefn {Target Hook} bool TARGET_CXX_USE_AEABI_ATEXIT (void)
9136This hook returns true if @code{__aeabi_atexit} (as defined by the ARM EABI)
9137should be used to register static destructors when @option{-fuse-cxa-atexit}
9138is in effect. The default is to return false to use @code{__cxa_atexit}.
9139@end deftypefn
9140
97388150
DS
9141@deftypefn {Target Hook} bool TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT (void)
9142This hook returns true if the target @code{atexit} function can be used
9143in the same manner as @code{__cxa_atexit} to register C++ static
9144destructors. This requires that @code{atexit}-registered functions in
9145shared libraries are run in the correct order when the libraries are
9146unloaded. The default is to return false.
9147@end deftypefn
9148
43d9ad1d
DS
9149@deftypefn {Target Hook} void TARGET_CXX_ADJUST_CLASS_AT_DEFINITION (tree @var{type})
9150@var{type} is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that has just been
9151defined. Use this hook to make adjustments to the class (eg, tweak
9152visibility or perform any other required target modifications).
9153@end deftypefn
9154
feca2ed3
JW
9155@node Misc
9156@section Miscellaneous Parameters
9157@cindex parameters, miscellaneous
9158
9159@c prevent bad page break with this line
9160Here are several miscellaneous parameters.
9161
e543e219
ZW
9162@defmac HAS_LONG_COND_BRANCH
9163Define this boolean macro to indicate whether or not your architecture
9164has conditional branches that can span all of memory. It is used in
9165conjunction with an optimization that partitions hot and cold basic
9166blocks into separate sections of the executable. If this macro is
9167set to false, gcc will convert any conditional branches that attempt
9168to cross between sections into unconditional branches or indirect jumps.
9169@end defmac
9170
9171@defmac HAS_LONG_UNCOND_BRANCH
9172Define this boolean macro to indicate whether or not your architecture
9173has unconditional branches that can span all of memory. It is used in
9174conjunction with an optimization that partitions hot and cold basic
9175blocks into separate sections of the executable. If this macro is
9176set to false, gcc will convert any unconditional branches that attempt
9177to cross between sections into indirect jumps.
a2c4f8e0 9178@end defmac
8fe0ca0c 9179
a2c4f8e0 9180@defmac CASE_VECTOR_MODE
feca2ed3
JW
9181An alias for a machine mode name. This is the machine mode that
9182elements of a jump-table should have.
a2c4f8e0 9183@end defmac
feca2ed3 9184
a2c4f8e0 9185@defmac CASE_VECTOR_SHORTEN_MODE (@var{min_offset}, @var{max_offset}, @var{body})
33f7f353
JR
9186Optional: return the preferred mode for an @code{addr_diff_vec}
9187when the minimum and maximum offset are known. If you define this,
9188it enables extra code in branch shortening to deal with @code{addr_diff_vec}.
4226378a 9189To make this work, you also have to define @code{INSN_ALIGN} and
33f7f353 9190make the alignment for @code{addr_diff_vec} explicit.
391aaa6b 9191The @var{body} argument is provided so that the offset_unsigned and scale
33f7f353 9192flags can be updated.
a2c4f8e0 9193@end defmac
33f7f353 9194
a2c4f8e0 9195@defmac CASE_VECTOR_PC_RELATIVE
18543a22 9196Define this macro to be a C expression to indicate when jump-tables
9c49953c
KH
9197should contain relative addresses. You need not define this macro if
9198jump-tables never contain relative addresses, or jump-tables should
9199contain relative addresses only when @option{-fPIC} or @option{-fPIC}
9200is in effect.
a2c4f8e0 9201@end defmac
feca2ed3 9202
a2c4f8e0 9203@defmac CASE_VALUES_THRESHOLD
feca2ed3
JW
9204Define this to be the smallest number of different values for which it
9205is best to use a jump-table instead of a tree of conditional branches.
9206The default is four for machines with a @code{casesi} instruction and
9207five otherwise. This is best for most machines.
a2c4f8e0 9208@end defmac
feca2ed3 9209
a2c4f8e0 9210@defmac CASE_USE_BIT_TESTS
9bb231fd
RS
9211Define this macro to be a C expression to indicate whether C switch
9212statements may be implemented by a sequence of bit tests. This is
9213advantageous on processors that can efficiently implement left shift
9214of 1 by the number of bits held in a register, but inappropriate on
9215targets that would require a loop. By default, this macro returns
9216@code{true} if the target defines an @code{ashlsi3} pattern, and
9217@code{false} otherwise.
a2c4f8e0 9218@end defmac
9bb231fd 9219
a2c4f8e0 9220@defmac WORD_REGISTER_OPERATIONS
feca2ed3
JW
9221Define this macro if operations between registers with integral mode
9222smaller than a word are always performed on the entire register.
9223Most RISC machines have this property and most CISC machines do not.
a2c4f8e0 9224@end defmac
feca2ed3 9225
7be4d808 9226@defmac LOAD_EXTEND_OP (@var{mem_mode})
feca2ed3 9227Define this macro to be a C expression indicating when insns that read
7be4d808
R
9228memory in @var{mem_mode}, an integral mode narrower than a word, set the
9229bits outside of @var{mem_mode} to be either the sign-extension or the
feca2ed3 9230zero-extension of the data read. Return @code{SIGN_EXTEND} for values
7be4d808 9231of @var{mem_mode} for which the
feca2ed3 9232insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
f822d252 9233@code{UNKNOWN} for other modes.
feca2ed3 9234
7be4d808 9235This macro is not called with @var{mem_mode} non-integral or with a width
feca2ed3
JW
9236greater than or equal to @code{BITS_PER_WORD}, so you may return any
9237value in this case. Do not define this macro if it would always return
f822d252 9238@code{UNKNOWN}. On machines where this macro is defined, you will normally
feca2ed3 9239define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
7be4d808 9240
f822d252 9241You may return a non-@code{UNKNOWN} value even if for some hard registers
7be4d808
R
9242the sign extension is not performed, if for the @code{REGNO_REG_CLASS}
9243of these hard registers @code{CANNOT_CHANGE_MODE_CLASS} returns nonzero
9244when the @var{from} mode is @var{mem_mode} and the @var{to} mode is any
9245integral mode larger than this but not larger than @code{word_mode}.
9246
f822d252 9247You must return @code{UNKNOWN} if for some hard registers that allow this
7be4d808
R
9248mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to
9249@code{word_mode}, but that they can change to another integral mode that
9250is larger then @var{mem_mode} but still smaller than @code{word_mode}.
a2c4f8e0 9251@end defmac
feca2ed3 9252
a2c4f8e0 9253@defmac SHORT_IMMEDIATES_SIGN_EXTEND
77643ab8
MM
9254Define this macro if loading short immediate values into registers sign
9255extends.
a2c4f8e0 9256@end defmac
77643ab8 9257
a2c4f8e0 9258@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC
feca2ed3
JW
9259Define this macro if the same instructions that convert a floating
9260point number to a signed fixed point number also convert validly to an
9261unsigned one.
a2c4f8e0 9262@end defmac
feca2ed3 9263
bc23502b
PB
9264@deftypefn {Target Hook} int TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum machine_mode @var{mode})
9265When @option{-ffast-math} is in effect, GCC tries to optimize
9266divisions by the same divisor, by turning them into multiplications by
9267the reciprocal. This target hook specifies the minimum number of divisions
9268that should be there for GCC to perform the optimization for a variable
9269of mode @var{mode}. The default implementation returns 3 if the machine
9270has an instruction for the division, and 2 if it does not.
9271@end deftypefn
9272
a2c4f8e0 9273@defmac MOVE_MAX
feca2ed3
JW
9274The maximum number of bytes that a single instruction can move quickly
9275between memory and registers or between two memory locations.
a2c4f8e0 9276@end defmac
feca2ed3 9277
a2c4f8e0 9278@defmac MAX_MOVE_MAX
feca2ed3
JW
9279The maximum number of bytes that a single instruction can move quickly
9280between memory and registers or between two memory locations. If this
9281is undefined, the default is @code{MOVE_MAX}. Otherwise, it is the
9282constant value that is the largest value that @code{MOVE_MAX} can have
9283at run-time.
a2c4f8e0 9284@end defmac
feca2ed3 9285
a2c4f8e0 9286@defmac SHIFT_COUNT_TRUNCATED
feca2ed3
JW
9287A C expression that is nonzero if on this machine the number of bits
9288actually used for the count of a shift operation is equal to the number
9289of bits needed to represent the size of the object being shifted. When
df2a54e9 9290this macro is nonzero, the compiler will assume that it is safe to omit
feca2ed3
JW
9291a sign-extend, zero-extend, and certain bitwise `and' instructions that
9292truncates the count of a shift operation. On machines that have
c771326b 9293instructions that act on bit-fields at variable positions, which may
feca2ed3
JW
9294include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED}
9295also enables deletion of truncations of the values that serve as
c771326b 9296arguments to bit-field instructions.
feca2ed3
JW
9297
9298If both types of instructions truncate the count (for shifts) and
c771326b 9299position (for bit-field operations), or if no variable-position bit-field
feca2ed3
JW
9300instructions exist, you should define this macro.
9301
9302However, on some machines, such as the 80386 and the 680x0, truncation
9303only applies to shift operations and not the (real or pretended)
c771326b 9304bit-field operations. Define @code{SHIFT_COUNT_TRUNCATED} to be zero on
feca2ed3
JW
9305such machines. Instead, add patterns to the @file{md} file that include
9306the implied truncation of the shift instructions.
9307
9308You need not define this macro if it would always have the value of zero.
a2c4f8e0 9309@end defmac
feca2ed3 9310
273a2526
RS
9311@anchor{TARGET_SHIFT_TRUNCATION_MASK}
9312@deftypefn {Target Hook} int TARGET_SHIFT_TRUNCATION_MASK (enum machine_mode @var{mode})
9313This function describes how the standard shift patterns for @var{mode}
9314deal with shifts by negative amounts or by more than the width of the mode.
9315@xref{shift patterns}.
9316
9317On many machines, the shift patterns will apply a mask @var{m} to the
9318shift count, meaning that a fixed-width shift of @var{x} by @var{y} is
9319equivalent to an arbitrary-width shift of @var{x} by @var{y & m}. If
9320this is true for mode @var{mode}, the function should return @var{m},
9321otherwise it should return 0. A return value of 0 indicates that no
9322particular behavior is guaranteed.
9323
9324Note that, unlike @code{SHIFT_COUNT_TRUNCATED}, this function does
9325@emph{not} apply to general shift rtxes; it applies only to instructions
9326that are generated by the named shift patterns.
9327
9328The default implementation of this function returns
9329@code{GET_MODE_BITSIZE (@var{mode}) - 1} if @code{SHIFT_COUNT_TRUNCATED}
9330and 0 otherwise. This definition is always safe, but if
9331@code{SHIFT_COUNT_TRUNCATED} is false, and some shift patterns
9332nevertheless truncate the shift count, you may get better code
9333by overriding it.
9334@end deftypefn
9335
a2c4f8e0 9336@defmac TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec})
feca2ed3
JW
9337A C expression which is nonzero if on this machine it is safe to
9338``convert'' an integer of @var{inprec} bits to one of @var{outprec}
9339bits (where @var{outprec} is smaller than @var{inprec}) by merely
9340operating on it as if it had only @var{outprec} bits.
9341
9342On many machines, this expression can be 1.
9343
9344@c rearranged this, removed the phrase "it is reported that". this was
9345@c to fix an overfull hbox. --mew 10feb93
9346When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for
9347modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result.
9348If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in
9349such cases may improve things.
a2c4f8e0 9350@end defmac
feca2ed3 9351
b12cbf2c 9352@deftypefn {Target Hook} int TARGET_MODE_REP_EXTENDED (enum machine_mode @var{mode}, enum machine_mode @var{rep_mode})
66a4ad37 9353The representation of an integral mode can be such that the values
b12cbf2c
AN
9354are always extended to a wider integral mode. Return
9355@code{SIGN_EXTEND} if values of @var{mode} are represented in
9356sign-extended form to @var{rep_mode}. Return @code{UNKNOWN}
9357otherwise. (Currently, none of the targets use zero-extended
9358representation this way so unlike @code{LOAD_EXTEND_OP},
9359@code{TARGET_MODE_REP_EXTENDED} is expected to return either
9360@code{SIGN_EXTEND} or @code{UNKNOWN}. Also no target extends
9361@var{mode} to @var{mode_rep} so that @var{mode_rep} is not the next
9362widest integral mode and currently we take advantage of this fact.)
9363
9364Similarly to @code{LOAD_EXTEND_OP} you may return a non-@code{UNKNOWN}
9365value even if the extension is not performed on certain hard registers
9366as long as for the @code{REGNO_REG_CLASS} of these hard registers
9367@code{CANNOT_CHANGE_MODE_CLASS} returns nonzero.
9368
9369Note that @code{TARGET_MODE_REP_EXTENDED} and @code{LOAD_EXTEND_OP}
9370describe two related properties. If you define
9371@code{TARGET_MODE_REP_EXTENDED (mode, word_mode)} you probably also want
9372to define @code{LOAD_EXTEND_OP (mode)} to return the same type of
9373extension.
9374
9375In order to enforce the representation of @code{mode},
9376@code{TRULY_NOOP_TRUNCATION} should return false when truncating to
9377@code{mode}.
9378@end deftypefn
9379
a2c4f8e0 9380@defmac STORE_FLAG_VALUE
feca2ed3
JW
9381A C expression describing the value returned by a comparison operator
9382with an integral mode and stored by a store-flag instruction
9383(@samp{s@var{cond}}) when the condition is true. This description must
9384apply to @emph{all} the @samp{s@var{cond}} patterns and all the
9385comparison operators whose results have a @code{MODE_INT} mode.
9386
630d3d5a
JM
9387A value of 1 or @minus{}1 means that the instruction implementing the
9388comparison operator returns exactly 1 or @minus{}1 when the comparison is true
feca2ed3
JW
9389and 0 when the comparison is false. Otherwise, the value indicates
9390which bits of the result are guaranteed to be 1 when the comparison is
9391true. This value is interpreted in the mode of the comparison
9392operation, which is given by the mode of the first operand in the
9393@samp{s@var{cond}} pattern. Either the low bit or the sign bit of
9394@code{STORE_FLAG_VALUE} be on. Presently, only those bits are used by
9395the compiler.
9396
630d3d5a 9397If @code{STORE_FLAG_VALUE} is neither 1 or @minus{}1, the compiler will
feca2ed3
JW
9398generate code that depends only on the specified bits. It can also
9399replace comparison operators with equivalent operations if they cause
9400the required bits to be set, even if the remaining bits are undefined.
9401For example, on a machine whose comparison operators return an
9402@code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as
9403@samp{0x80000000}, saying that just the sign bit is relevant, the
9404expression
9405
9406@smallexample
9407(ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0))
9408@end smallexample
9409
9410@noindent
9411can be converted to
9412
9413@smallexample
9414(ashift:SI @var{x} (const_int @var{n}))
9415@end smallexample
9416
9417@noindent
9418where @var{n} is the appropriate shift count to move the bit being
9419tested into the sign bit.
9420
9421There is no way to describe a machine that always sets the low-order bit
9422for a true value, but does not guarantee the value of any other bits,
9423but we do not know of any machine that has such an instruction. If you
a3a15b4d 9424are trying to port GCC to such a machine, include an instruction to
feca2ed3 9425perform a logical-and of the result with 1 in the pattern for the
b11cc610 9426comparison operators and let us know at @email{gcc@@gcc.gnu.org}.
feca2ed3
JW
9427
9428Often, a machine will have multiple instructions that obtain a value
9429from a comparison (or the condition codes). Here are rules to guide the
9430choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions
9431to be used:
9432
9433@itemize @bullet
9434@item
9435Use the shortest sequence that yields a valid definition for
9436@code{STORE_FLAG_VALUE}. It is more efficient for the compiler to
9437``normalize'' the value (convert it to, e.g., 1 or 0) than for the
9438comparison operators to do so because there may be opportunities to
9439combine the normalization with other operations.
9440
9441@item
630d3d5a 9442For equal-length sequences, use a value of 1 or @minus{}1, with @minus{}1 being
feca2ed3
JW
9443slightly preferred on machines with expensive jumps and 1 preferred on
9444other machines.
9445
9446@item
9447As a second choice, choose a value of @samp{0x80000001} if instructions
9448exist that set both the sign and low-order bits but do not define the
9449others.
9450
9451@item
9452Otherwise, use a value of @samp{0x80000000}.
9453@end itemize
9454
9455Many machines can produce both the value chosen for
9456@code{STORE_FLAG_VALUE} and its negation in the same number of
9457instructions. On those machines, you should also define a pattern for
9458those cases, e.g., one matching
9459
9460@smallexample
9461(set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C})))
9462@end smallexample
9463
9464Some machines can also perform @code{and} or @code{plus} operations on
9465condition code values with less instructions than the corresponding
9466@samp{s@var{cond}} insn followed by @code{and} or @code{plus}. On those
9467machines, define the appropriate patterns. Use the names @code{incscc}
9468and @code{decscc}, respectively, for the patterns which perform
9469@code{plus} or @code{minus} operations on condition code values. See
9470@file{rs6000.md} for some examples. The GNU Superoptizer can be used to
9471find such instruction sequences on other machines.
9472
06f31100
RS
9473If this macro is not defined, the default value, 1, is used. You need
9474not define @code{STORE_FLAG_VALUE} if the machine has no store-flag
9475instructions, or if the value generated by these instructions is 1.
a2c4f8e0 9476@end defmac
feca2ed3 9477
a2c4f8e0 9478@defmac FLOAT_STORE_FLAG_VALUE (@var{mode})
df2a54e9 9479A C expression that gives a nonzero @code{REAL_VALUE_TYPE} value that is
feca2ed3 9480returned when comparison operators with floating-point results are true.
fc7ca5fd 9481Define this macro on machines that have comparison operations that return
feca2ed3
JW
9482floating-point values. If there are no such operations, do not define
9483this macro.
a2c4f8e0 9484@end defmac
feca2ed3 9485
fc7ca5fd 9486@defmac VECTOR_STORE_FLAG_VALUE (@var{mode})
a4d05547 9487A C expression that gives a rtx representing the nonzero true element
fc7ca5fd
RS
9488for vector comparisons. The returned rtx should be valid for the inner
9489mode of @var{mode} which is guaranteed to be a vector mode. Define
9490this macro on machines that have vector comparison operations that
9491return a vector result. If there are no such operations, do not define
9492this macro. Typically, this macro is defined as @code{const1_rtx} or
9493@code{constm1_rtx}. This macro may return @code{NULL_RTX} to prevent
9494the compiler optimizing such vector comparison operations for the
9495given mode.
9496@end defmac
9497
a2c4f8e0
ZW
9498@defmac CLZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value})
9499@defmacx CTZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value})
7dba8395
RH
9500A C expression that evaluates to true if the architecture defines a value
9501for @code{clz} or @code{ctz} with a zero operand. If so, @var{value}
9502should be set to this value. If this macro is not defined, the value of
9503@code{clz} or @code{ctz} is assumed to be undefined.
9504
9505This macro must be defined if the target's expansion for @code{ffs}
9506relies on a particular value to get correct results. Otherwise it
9507is not necessary, though it may be used to optimize some corner cases.
9508
9509Note that regardless of this macro the ``definedness'' of @code{clz}
9510and @code{ctz} at zero do @emph{not} extend to the builtin functions
9511visible to the user. Thus one may be free to adjust the value at will
9512to match the target expansion of these operations without fear of
8a36672b 9513breaking the API@.
a2c4f8e0 9514@end defmac
7dba8395 9515
a2c4f8e0 9516@defmac Pmode
feca2ed3
JW
9517An alias for the machine mode for pointers. On most machines, define
9518this to be the integer mode corresponding to the width of a hardware
9519pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines.
9520On some machines you must define this to be one of the partial integer
9521modes, such as @code{PSImode}.
9522
9523The width of @code{Pmode} must be at least as large as the value of
9524@code{POINTER_SIZE}. If it is not equal, you must define the macro
9525@code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended
9526to @code{Pmode}.
a2c4f8e0 9527@end defmac
feca2ed3 9528
a2c4f8e0 9529@defmac FUNCTION_MODE
feca2ed3
JW
9530An alias for the machine mode used for memory references to functions
9531being called, in @code{call} RTL expressions. On most machines this
9532should be @code{QImode}.
a2c4f8e0 9533@end defmac
feca2ed3 9534
a2c4f8e0 9535@defmac STDC_0_IN_SYSTEM_HEADERS
ee773fcc
NB
9536In normal operation, the preprocessor expands @code{__STDC__} to the
9537constant 1, to signify that GCC conforms to ISO Standard C@. On some
9538hosts, like Solaris, the system compiler uses a different convention,
9539where @code{__STDC__} is normally 0, but is 1 if the user specifies
9540strict conformance to the C Standard.
9541
9542Defining @code{STDC_0_IN_SYSTEM_HEADERS} makes GNU CPP follows the host
9543convention when processing system header files, but when processing user
9544files @code{__STDC__} will always expand to 1.
a2c4f8e0 9545@end defmac
ee773fcc 9546
a2c4f8e0 9547@defmac NO_IMPLICIT_EXTERN_C
161d7b59 9548Define this macro if the system header files support C++ as well as C@.
feca2ed3
JW
9549This macro inhibits the usual method of using system header files in
9550C++, which is to pretend that the file's contents are enclosed in
9551@samp{extern "C" @{@dots{}@}}.
a2c4f8e0 9552@end defmac
feca2ed3 9553
feca2ed3
JW
9554@findex #pragma
9555@findex pragma
a2c4f8e0 9556@defmac REGISTER_TARGET_PRAGMAS ()
8b97c5f8 9557Define this macro if you want to implement any target-specific pragmas.
a5da89c6 9558If defined, it is a C expression which makes a series of calls to
b5b3e36a
DJ
9559@code{c_register_pragma} or @code{c_register_pragma_with_expansion}
9560for each pragma. The macro may also do any
a5da89c6 9561setup required for the pragmas.
8b97c5f8
ZW
9562
9563The primary reason to define this macro is to provide compatibility with
9564other compilers for the same target. In general, we discourage
161d7b59 9565definition of target-specific pragmas for GCC@.
feca2ed3 9566
c237e94a 9567If the pragma can be implemented by attributes then you should consider
91d231cb 9568defining the target hook @samp{TARGET_INSERT_ATTRIBUTES} as well.
f09db6e0 9569
8b97c5f8
ZW
9570Preprocessor macros that appear on pragma lines are not expanded. All
9571@samp{#pragma} directives that do not match any registered pragma are
630d3d5a 9572silently ignored, unless the user specifies @option{-Wunknown-pragmas}.
a2c4f8e0 9573@end defmac
8b97c5f8 9574
c58b209a 9575@deftypefun void c_register_pragma (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *))
b5b3e36a 9576@deftypefunx void c_register_pragma_with_expansion (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *))
8b97c5f8 9577
b5b3e36a
DJ
9578Each call to @code{c_register_pragma} or
9579@code{c_register_pragma_with_expansion} establishes one pragma. The
8b97c5f8
ZW
9580@var{callback} routine will be called when the preprocessor encounters a
9581pragma of the form
9582
9583@smallexample
9584#pragma [@var{space}] @var{name} @dots{}
9585@end smallexample
9586
a5da89c6
NB
9587@var{space} is the case-sensitive namespace of the pragma, or
9588@code{NULL} to put the pragma in the global namespace. The callback
9589routine receives @var{pfile} as its first argument, which can be passed
51fabca5 9590on to cpplib's functions if necessary. You can lex tokens after the
75ce3d48 9591@var{name} by calling @code{pragma_lex}. Tokens that are not read by the
51fabca5 9592callback will be silently ignored. The end of the line is indicated by
b5b3e36a
DJ
9593a token of type @code{CPP_EOF}. Macro expansion occurs on the
9594arguments of pragmas registered with
9595@code{c_register_pragma_with_expansion} but not on the arguments of
9596pragmas registered with @code{c_register_pragma}.
8b97c5f8
ZW
9597
9598For an example use of this routine, see @file{c4x.h} and the callback
51fabca5 9599routines defined in @file{c4x-c.c}.
aac69a49 9600
75ce3d48 9601Note that the use of @code{pragma_lex} is specific to the C and C++
aac69a49 9602compilers. It will not work in the Java or Fortran compilers, or any
75ce3d48 9603other language compilers for that matter. Thus if @code{pragma_lex} is going
aac69a49 9604to be called from target-specific code, it must only be done so when
c771326b 9605building the C and C++ compilers. This can be done by defining the
aac69a49 9606variables @code{c_target_objs} and @code{cxx_target_objs} in the
aee96fe9 9607target entry in the @file{config.gcc} file. These variables should name
aac69a49 9608the target-specific, language-specific object file which contains the
75ce3d48 9609code that uses @code{pragma_lex}. Note it will also be necessary to add a
aac69a49
NC
9610rule to the makefile fragment pointed to by @code{tmake_file} that shows
9611how to build this object file.
8b97c5f8
ZW
9612@end deftypefun
9613
e2af664c
NC
9614@findex #pragma
9615@findex pragma
a2c4f8e0 9616@defmac HANDLE_SYSV_PRAGMA
e2af664c
NC
9617Define this macro (to a value of 1) if you want the System V style
9618pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
9619[=<value>]} to be supported by gcc.
9620
9621The pack pragma specifies the maximum alignment (in bytes) of fields
9622within a structure, in much the same way as the @samp{__aligned__} and
9623@samp{__packed__} @code{__attribute__}s do. A pack value of zero resets
c21cd8b1 9624the behavior to the default.
e2af664c 9625
e4850f36 9626A subtlety for Microsoft Visual C/C++ style bit-field packing
431ae0bf 9627(e.g.@: -mms-bitfields) for targets that support it:
e4850f36
DR
9628When a bit-field is inserted into a packed record, the whole size
9629of the underlying type is used by one or more same-size adjacent
9630bit-fields (that is, if its long:3, 32 bits is used in the record,
9631and any additional adjacent long bit-fields are packed into the same
8a36672b 9632chunk of 32 bits. However, if the size changes, a new field of that
e4850f36
DR
9633size is allocated).
9634
9635If both MS bit-fields and @samp{__attribute__((packed))} are used,
8a36672b 9636the latter will take precedence. If @samp{__attribute__((packed))} is
e4850f36
DR
9637used on a single field when MS bit-fields are in use, it will take
9638precedence for that field, but the alignment of the rest of the structure
9639may affect its placement.
9640
e2af664c
NC
9641The weak pragma only works if @code{SUPPORTS_WEAK} and
9642@code{ASM_WEAKEN_LABEL} are defined. If enabled it allows the creation
9643of specifically named weak labels, optionally with a value.
a2c4f8e0 9644@end defmac
e2af664c 9645
e2af664c
NC
9646@findex #pragma
9647@findex pragma
a2c4f8e0 9648@defmac HANDLE_PRAGMA_PACK_PUSH_POP
e2af664c 9649Define this macro (to a value of 1) if you want to support the Win32
467cecf3
JB
9650style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
9651pack(pop)}. The @samp{pack(push,[@var{n}])} pragma specifies the maximum
9652alignment (in bytes) of fields within a structure, in much the same way as
9653the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do. A
c21cd8b1 9654pack value of zero resets the behavior to the default. Successive
e2af664c
NC
9655invocations of this pragma cause the previous values to be stacked, so
9656that invocations of @samp{#pragma pack(pop)} will return to the previous
9657value.
a2c4f8e0 9658@end defmac
feca2ed3 9659
b5b3e36a
DJ
9660@defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
9661Define this macro, as well as
9662@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
9663arguments of @samp{#pragma pack}.
9664@end defmac
9665
467cecf3
JB
9666@defmac TARGET_DEFAULT_PACK_STRUCT
9667If your target requires a structure packing default other than 0 (meaning
0bdcd332 9668the machine default), define this macro to the necessary value (in bytes).
8b7d4300 9669This must be a value that would also be valid to use with
467cecf3
JB
9670@samp{#pragma pack()} (that is, a small power of two).
9671@end defmac
9672
a2c4f8e0 9673@defmac DOLLARS_IN_IDENTIFIERS
b1822ccc
NB
9674Define this macro to control use of the character @samp{$} in
9675identifier names for the C family of languages. 0 means @samp{$} is
9676not allowed by default; 1 means it is allowed. 1 is the default;
9677there is no need to define this macro in that case.
a2c4f8e0 9678@end defmac
feca2ed3 9679
a2c4f8e0 9680@defmac NO_DOLLAR_IN_LABEL
feca2ed3
JW
9681Define this macro if the assembler does not accept the character
9682@samp{$} in label names. By default constructors and destructors in
9683G++ have @samp{$} in the identifiers. If this macro is defined,
9684@samp{.} is used instead.
a2c4f8e0 9685@end defmac
feca2ed3 9686
a2c4f8e0 9687@defmac NO_DOT_IN_LABEL
feca2ed3
JW
9688Define this macro if the assembler does not accept the character
9689@samp{.} in label names. By default constructors and destructors in G++
9690have names that use @samp{.}. If this macro is defined, these names
9691are rewritten to avoid @samp{.}.
a2c4f8e0 9692@end defmac
feca2ed3 9693
a2c4f8e0 9694@defmac INSN_SETS_ARE_DELAYED (@var{insn})
feca2ed3
JW
9695Define this macro as a C expression that is nonzero if it is safe for the
9696delay slot scheduler to place instructions in the delay slot of @var{insn},
9697even if they appear to use a resource set or clobbered in @var{insn}.
a3a15b4d 9698@var{insn} is always a @code{jump_insn} or an @code{insn}; GCC knows that
feca2ed3
JW
9699every @code{call_insn} has this behavior. On machines where some @code{insn}
9700or @code{jump_insn} is really a function call and hence has this behavior,
9701you should define this macro.
9702
9703You need not define this macro if it would always return zero.
a2c4f8e0 9704@end defmac
feca2ed3 9705
a2c4f8e0 9706@defmac INSN_REFERENCES_ARE_DELAYED (@var{insn})
feca2ed3
JW
9707Define this macro as a C expression that is nonzero if it is safe for the
9708delay slot scheduler to place instructions in the delay slot of @var{insn},
9709even if they appear to set or clobber a resource referenced in @var{insn}.
9710@var{insn} is always a @code{jump_insn} or an @code{insn}. On machines where
9711some @code{insn} or @code{jump_insn} is really a function call and its operands
9712are registers whose use is actually in the subroutine it calls, you should
9713define this macro. Doing so allows the delay slot scheduler to move
9714instructions which copy arguments into the argument registers into the delay
9715slot of @var{insn}.
9716
9717You need not define this macro if it would always return zero.
a2c4f8e0 9718@end defmac
feca2ed3 9719
a2c4f8e0 9720@defmac MULTIPLE_SYMBOL_SPACES
15072eb1
ZW
9721Define this macro as a C expression that is nonzero if, in some cases,
9722global symbols from one translation unit may not be bound to undefined
9723symbols in another translation unit without user intervention. For
9724instance, under Microsoft Windows symbols must be explicitly imported
9725from shared libraries (DLLs).
9726
9727You need not define this macro if it would always evaluate to zero.
a2c4f8e0 9728@end defmac
861bb6c1 9729
61158923 9730@deftypefn {Target Hook} tree TARGET_MD_ASM_CLOBBERS (tree @var{outputs}, tree @var{inputs}, tree @var{clobbers})
67dfe110 9731This target hook should add to @var{clobbers} @code{STRING_CST} trees for
61158923 9732any hard regs the port wishes to automatically clobber for an asm.
67dfe110 9733It should return the result of the last @code{tree_cons} used to add a
61158923
HPN
9734clobber. The @var{outputs}, @var{inputs} and @var{clobber} lists are the
9735corresponding parameters to the asm and may be inspected to avoid
9736clobbering a register that is an input or output of the asm. You can use
91b4415a 9737@code{tree_overlaps_hard_reg_set}, declared in @file{tree.h}, to test
61158923 9738for overlap with regards to asm-declared registers.
67dfe110 9739@end deftypefn
57bcb97a 9740
a2c4f8e0 9741@defmac MATH_LIBRARY
71d718e0
JM
9742Define this macro as a C string constant for the linker argument to link
9743in the system math library, or @samp{""} if the target does not have a
9744separate math library.
9745
9746You need only define this macro if the default of @samp{"-lm"} is wrong.
a2c4f8e0 9747@end defmac
512b62fb 9748
a2c4f8e0 9749@defmac LIBRARY_PATH_ENV
512b62fb
JM
9750Define this macro as a C string constant for the environment variable that
9751specifies where the linker should look for libraries.
9752
9753You need only define this macro if the default of @samp{"LIBRARY_PATH"}
9754is wrong.
a2c4f8e0 9755@end defmac
e09d24ff 9756
4969c0d8
L
9757@defmac TARGET_POSIX_IO
9758Define this macro if the target supports the following POSIX@ file
9759functions, access, mkdir and file locking with fcntl / F_SETLKW@.
9760Defining @code{TARGET_POSIX_IO} will enable the test coverage code
e09d24ff 9761to use file locking when exiting a program, which avoids race conditions
4969c0d8 9762if the program has forked. It will also create directories at run-time
709a840a 9763for cross-profiling.
a2c4f8e0 9764@end defmac
0c99ec5c 9765
a2c4f8e0 9766@defmac MAX_CONDITIONAL_EXECUTE
0c99ec5c
RH
9767
9768A C expression for the maximum number of instructions to execute via
9769conditional execution instructions instead of a branch. A value of
9770@code{BRANCH_COST}+1 is the default if the machine does not use cc0, and
97711 if it does use cc0.
a2c4f8e0 9772@end defmac
90280148 9773
a2c4f8e0 9774@defmac IFCVT_MODIFY_TESTS (@var{ce_info}, @var{true_expr}, @var{false_expr})
c05ffc49
BS
9775Used if the target needs to perform machine-dependent modifications on the
9776conditionals used for turning basic blocks into conditionally executed code.
9777@var{ce_info} points to a data structure, @code{struct ce_if_block}, which
9778contains information about the currently processed blocks. @var{true_expr}
9779and @var{false_expr} are the tests that are used for converting the
9780then-block and the else-block, respectively. Set either @var{true_expr} or
9781@var{false_expr} to a null pointer if the tests cannot be converted.
a2c4f8e0 9782@end defmac
c05ffc49 9783
a2c4f8e0 9784@defmac IFCVT_MODIFY_MULTIPLE_TESTS (@var{ce_info}, @var{bb}, @var{true_expr}, @var{false_expr})
c05ffc49
BS
9785Like @code{IFCVT_MODIFY_TESTS}, but used when converting more complicated
9786if-statements into conditions combined by @code{and} and @code{or} operations.
9787@var{bb} contains the basic block that contains the test that is currently
9788being processed and about to be turned into a condition.
a2c4f8e0 9789@end defmac
90280148 9790
a2c4f8e0 9791@defmac IFCVT_MODIFY_INSN (@var{ce_info}, @var{pattern}, @var{insn})
c05ffc49
BS
9792A C expression to modify the @var{PATTERN} of an @var{INSN} that is to
9793be converted to conditional execution format. @var{ce_info} points to
9794a data structure, @code{struct ce_if_block}, which contains information
9795about the currently processed blocks.
a2c4f8e0 9796@end defmac
90280148 9797
a2c4f8e0 9798@defmac IFCVT_MODIFY_FINAL (@var{ce_info})
90280148 9799A C expression to perform any final machine dependent modifications in
c05ffc49
BS
9800converting code to conditional execution. The involved basic blocks
9801can be found in the @code{struct ce_if_block} structure that is pointed
9802to by @var{ce_info}.
a2c4f8e0 9803@end defmac
90280148 9804
a2c4f8e0 9805@defmac IFCVT_MODIFY_CANCEL (@var{ce_info})
90280148 9806A C expression to cancel any machine dependent modifications in
c05ffc49
BS
9807converting code to conditional execution. The involved basic blocks
9808can be found in the @code{struct ce_if_block} structure that is pointed
9809to by @var{ce_info}.
a2c4f8e0 9810@end defmac
c05ffc49 9811
a2c4f8e0 9812@defmac IFCVT_INIT_EXTRA_FIELDS (@var{ce_info})
c05ffc49
BS
9813A C expression to initialize any extra fields in a @code{struct ce_if_block}
9814structure, which are defined by the @code{IFCVT_EXTRA_FIELDS} macro.
a2c4f8e0 9815@end defmac
c05ffc49 9816
a2c4f8e0 9817@defmac IFCVT_EXTRA_FIELDS
c05ffc49 9818If defined, it should expand to a set of field declarations that will be
c0478a66 9819added to the @code{struct ce_if_block} structure. These should be initialized
c05ffc49 9820by the @code{IFCVT_INIT_EXTRA_FIELDS} macro.
a2c4f8e0 9821@end defmac
c05ffc49 9822
18dbd950
RS
9823@deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_REORG ()
9824If non-null, this hook performs a target-specific pass over the
9825instruction stream. The compiler will run it at all optimization levels,
9826just before the point at which it normally does delayed-branch scheduling.
9827
9828The exact purpose of the hook varies from target to target. Some use
9829it to do transformations that are necessary for correctness, such as
9830laying out in-function constant pools or avoiding hardware hazards.
9831Others use it as an opportunity to do some machine-dependent optimizations.
9832
9833You need not implement the hook if it has nothing to do. The default
9834definition is null.
9835@end deftypefn
9836
f6155fda
SS
9837@deftypefn {Target Hook} void TARGET_INIT_BUILTINS ()
9838Define this hook if you have any machine-specific built-in functions
9839that need to be defined. It should be a function that performs the
4a1d48f6
BS
9840necessary setup.
9841
c771326b 9842Machine specific built-in functions can be useful to expand special machine
4a1d48f6
BS
9843instructions that would otherwise not normally be generated because
9844they have no equivalent in the source language (for example, SIMD vector
9845instructions or prefetch instructions).
9846
6e34d3a3
JM
9847To create a built-in function, call the function
9848@code{lang_hooks.builtin_function}
c771326b 9849which is defined by the language front end. You can use any type nodes set
4a1d48f6 9850up by @code{build_common_tree_nodes} and @code{build_common_tree_nodes_2};
c237e94a 9851only language front ends that use those two functions will call
f6155fda 9852@samp{TARGET_INIT_BUILTINS}.
acdcefcc 9853@end deftypefn
4a1d48f6 9854
f6155fda 9855@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 9856
c771326b 9857Expand a call to a machine specific built-in function that was set up by
f6155fda
SS
9858@samp{TARGET_INIT_BUILTINS}. @var{exp} is the expression for the
9859function call; the result should go to @var{target} if that is
9860convenient, and have mode @var{mode} if that is convenient.
9861@var{subtarget} may be used as the target for computing one of
9862@var{exp}'s operands. @var{ignore} is nonzero if the value is to be
9863ignored. This function should return the result of the call to the
9864built-in function.
acdcefcc 9865@end deftypefn
4a1d48f6 9866
4268e4cf
PB
9867@deftypefn {Target Hook} tree TARGET_RESOLVE_OVERLOADED_BUILTIN (tree @var{fndecl}, tree @var{arglist})
9868
9869Select a replacement for a machine specific built-in function that
9870was set up by @samp{TARGET_INIT_BUILTINS}. This is done
9871@emph{before} regular type checking, and so allows the target to
9872implement a crude form of function overloading. @var{fndecl} is the
9873declaration of the built-in function. @var{arglist} is the list of
9874arguments passed to the built-in function. The result is a
9875complete expression that implements the operation, usually
9876another @code{CALL_EXPR}.
9877@end deftypefn
9878
a05a80fc
KH
9879@deftypefn {Target Hook} tree TARGET_FOLD_BUILTIN (tree @var{fndecl}, tree @var{arglist}, bool @var{ignore})
9880
9881Fold a call to a machine specific built-in function that was set up by
9882@samp{TARGET_INIT_BUILTINS}. @var{fndecl} is the declaration of the
9883built-in function. @var{arglist} is the list of arguments passed to
9884the built-in function. The result is another tree containing a
9885simplified expression for the call's result. If @var{ignore} is true
9886the value will be ignored.
d6c2b67d
PB
9887@end deftypefn
9888
e7e64a25 9889@deftypefn {Target Hook} const char * TARGET_INVALID_WITHIN_DOLOOP (rtx @var{insn})
a71a498d 9890
e7e64a25
AS
9891Take an instruction in @var{insn} and return NULL if it is valid within a
9892low-overhead loop, otherwise return a string why doloop could not be applied.
a71a498d 9893
e7e64a25
AS
9894Many targets use special registers for low-overhead looping. For any
9895instruction that clobbers these this function should return a string indicating
083cad55 9896the reason why the doloop could not be applied.
a71a498d 9897By default, the RTL loop optimizer does not use a present doloop pattern for
083cad55 9898loops containing function calls or branch on table instructions.
a71a498d
AS
9899@end deftypefn
9900
a2c4f8e0 9901@defmac MD_CAN_REDIRECT_BRANCH (@var{branch1}, @var{branch2})
6e7b03e1 9902
4fe9b91c 9903Take a branch insn in @var{branch1} and another in @var{branch2}.
6e7b03e1
AH
9904Return true if redirecting @var{branch1} to the destination of
9905@var{branch2} is possible.
9906
9907On some targets, branches may have a limited range. Optimizing the
9908filling of delay slots can result in branches being redirected, and this
9909may in turn cause a branch offset to overflow.
a2c4f8e0 9910@end defmac
6e7b03e1 9911
8ddf681a
R
9912@deftypefn {Target Hook} bool TARGET_COMMUTATIVE_P (rtx @var{x}, @var{outer_code})
9913This target hook returns @code{true} if @var{x} is considered to be commutative.
9914Usually, this is just COMMUTATIVE_P (@var{x}), but the HP PA doesn't consider
9915PLUS to be commutative inside a MEM. @var{outer_code} is the rtx code
9916of the enclosing rtl, if known, otherwise it is UNKNOWN.
9917@end deftypefn
9918
b48f503c 9919@deftypefn {Target Hook} rtx TARGET_ALLOCATE_INITIAL_VALUE (rtx @var{hard_reg})
385b6e2d
R
9920
9921When the initial value of a hard register has been copied in a pseudo
4fe9b91c 9922register, it is often not necessary to actually allocate another register
385b6e2d 9923to this pseudo register, because the original hard register or a stack slot
b48f503c
KK
9924it has been saved into can be used. @code{TARGET_ALLOCATE_INITIAL_VALUE}
9925is called at the start of register allocation once for each hard register
9926that had its initial value copied by using
385b6e2d
R
9927@code{get_func_hard_reg_initial_val} or @code{get_hard_reg_initial_val}.
9928Possible values are @code{NULL_RTX}, if you don't want
9929to do any special allocation, a @code{REG} rtx---that would typically be
9930the hard register itself, if it is known not to be clobbered---or a
9931@code{MEM}.
9932If you are returning a @code{MEM}, this is only a hint for the allocator;
9933it might decide to use another register anyways.
b48f503c
KK
9934You may use @code{current_function_leaf_function} in the hook, functions
9935that use @code{REG_N_SETS}, to determine if the hard
385b6e2d 9936register in question will not be clobbered.
b48f503c
KK
9937The default value of this hook is @code{NULL}, which disables any special
9938allocation.
9939@end deftypefn
385b6e2d 9940
a2c4f8e0 9941@defmac TARGET_OBJECT_SUFFIX
807633e5
ZW
9942Define this macro to be a C string representing the suffix for object
9943files on your target machine. If you do not define this macro, GCC will
9944use @samp{.o} as the suffix for object files.
a2c4f8e0 9945@end defmac
807633e5 9946
a2c4f8e0 9947@defmac TARGET_EXECUTABLE_SUFFIX
807633e5
ZW
9948Define this macro to be a C string representing the suffix to be
9949automatically added to executable files on your target machine. If you
9950do not define this macro, GCC will use the null string as the suffix for
9951executable files.
a2c4f8e0 9952@end defmac
807633e5 9953
a2c4f8e0 9954@defmac COLLECT_EXPORT_LIST
807633e5
ZW
9955If defined, @code{collect2} will scan the individual object files
9956specified on its command line and create an export list for the linker.
9957Define this macro for systems like AIX, where the linker discards
9958object files that are not referenced from @code{main} and uses export
9959lists.
a2c4f8e0 9960@end defmac
807633e5 9961
a2c4f8e0 9962@defmac MODIFY_JNI_METHOD_CALL (@var{mdecl})
55ae46b1
RM
9963Define this macro to a C expression representing a variant of the
9964method call @var{mdecl}, if Java Native Interface (JNI) methods
9965must be invoked differently from other methods on your target.
95fef11f 9966For example, on 32-bit Microsoft Windows, JNI methods must be invoked using
55ae46b1
RM
9967the @code{stdcall} calling convention and this macro is then
9968defined as this expression:
9969
9970@smallexample
9971build_type_attribute_variant (@var{mdecl},
9972 build_tree_list
9973 (get_identifier ("stdcall"),
9974 NULL))
9975@end smallexample
a2c4f8e0 9976@end defmac
e4ec2cac
AO
9977
9978@deftypefn {Target Hook} bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
9979This target hook returns @code{true} past the point in which new jump
9980instructions could be created. On machines that require a register for
9981every jump such as the SHmedia ISA of SH5, this point would typically be
9982reload, so this target hook should be defined to a function such as:
9983
9984@smallexample
9985static bool
9986cannot_modify_jumps_past_reload_p ()
9987@{
9988 return (reload_completed || reload_in_progress);
9989@}
9990@end smallexample
9991@end deftypefn
fe3ad572 9992
a3424f5c 9993@deftypefn {Target Hook} int TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
fe3ad572
SC
9994This target hook returns a register class for which branch target register
9995optimizations should be applied. All registers in this class should be
c0cbdbd9 9996usable interchangeably. After reload, registers in this class will be
fe3ad572
SC
9997re-allocated and loads will be hoisted out of loops and be subjected
9998to inter-block scheduling.
9999@end deftypefn
10000
10001@deftypefn {Target Hook} bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool @var{after_prologue_epilogue_gen})
10002Branch target register optimization will by default exclude callee-saved
10003registers
10004that are not already live during the current function; if this target hook
10005returns true, they will be included. The target code must than make sure
10006that all target registers in the class returned by
10007@samp{TARGET_BRANCH_TARGET_REGISTER_CLASS} that might need saving are
10008saved. @var{after_prologue_epilogue_gen} indicates if prologues and
10009epilogues have already been generated. Note, even if you only return
10010true when @var{after_prologue_epilogue_gen} is false, you still are likely
10011to have to make special provisions in @code{INITIAL_ELIMINATION_OFFSET}
10012to reserve space for caller-saved target registers.
10013@end deftypefn
2082e02f
RS
10014
10015@defmac POWI_MAX_MULTS
73774972 10016If defined, this macro is interpreted as a signed integer C expression
2082e02f
RS
10017that specifies the maximum number of floating point multiplications
10018that should be emitted when expanding exponentiation by an integer
10019constant inline. When this value is defined, exponentiation requiring
10020more than this number of multiplications is implemented by calling the
10021system library's @code{pow}, @code{powf} or @code{powl} routines.
10022The default value places no upper bound on the multiplication count.
10023@end defmac
94d1613b 10024
3dd53121 10025@deftypefn Macro void TARGET_EXTRA_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc})
94d1613b
MS
10026This target hook should register any extra include files for the
10027target. The parameter @var{stdinc} indicates if normal include files
3dd53121
AP
10028are present. The parameter @var{sysroot} is the system root directory.
10029The parameter @var{iprefix} is the prefix for the gcc directory.
10030@end deftypefn
10031
10032@deftypefn Macro void TARGET_EXTRA_PRE_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc})
10033This target hook should register any extra include files for the
10034target before any standard headers. The parameter @var{stdinc}
10035indicates if normal include files are present. The parameter
10036@var{sysroot} is the system root directory. The parameter
10037@var{iprefix} is the prefix for the gcc directory.
94d1613b
MS
10038@end deftypefn
10039
10040@deftypefn Macro void TARGET_OPTF (char *@var{path})
10041This target hook should register special include paths for the target.
10042The parameter @var{path} is the include to register. On Darwin
10043systems, this is used for Framework includes, which have semantics
10044that are different from @option{-I}.
10045@end deftypefn
4a77e08c
DS
10046
10047@deftypefn {Target Hook} bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl})
10048This target hook returns @code{true} if it is safe to use a local alias
10049for a virtual function @var{fndecl} when constructing thunks,
8a36672b 10050@code{false} otherwise. By default, the hook returns @code{true} for all
431ae0bf 10051functions, if a target supports aliases (i.e.@: defines
4a77e08c
DS
10052@code{ASM_OUTPUT_DEF}), @code{false} otherwise,
10053@end deftypefn
a2bec818
DJ
10054
10055@defmac TARGET_FORMAT_TYPES
10056If defined, this macro is the name of a global variable containing
10057target-specific format checking information for the @option{-Wformat}
10058option. The default is to have no target-specific format checks.
10059@end defmac
10060
10061@defmac TARGET_N_FORMAT_TYPES
10062If defined, this macro is the number of entries in
10063@code{TARGET_FORMAT_TYPES}.
10064@end defmac
e50e6b88 10065
445cf5eb
JM
10066@deftypefn {Target Hook} bool TARGET_RELAXED_ORDERING
10067If set to @code{true}, means that the target's memory model does not
10068guarantee that loads which do not depend on one another will access
10069main memory in the order of the instruction stream; if ordering is
10070important, an explicit memory barrier must be used. This is true of
10071many recent processors which implement a policy of ``relaxed,''
10072``weak,'' or ``release'' memory consistency, such as Alpha, PowerPC,
10073and ia64. The default is @code{false}.
10074@end deftypefn
10075
4d3e6fae 10076@deftypefn {Target Hook} const char *TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN (tree @var{typelist}, tree @var{funcdecl}, tree @var{val})
083cad55
EC
10077If defined, this macro returns the diagnostic message when it is
10078illegal to pass argument @var{val} to function @var{funcdecl}
4d3e6fae
FJ
10079with prototype @var{typelist}.
10080@end deftypefn
10081
4de67c26
JM
10082@deftypefn {Target Hook} {const char *} TARGET_INVALID_CONVERSION (tree @var{fromtype}, tree @var{totype})
10083If defined, this macro returns the diagnostic message when it is
10084invalid to convert from @var{fromtype} to @var{totype}, or @code{NULL}
10085if validity should be determined by the front end.
10086@end deftypefn
10087
10088@deftypefn {Target Hook} {const char *} TARGET_INVALID_UNARY_OP (int @var{op}, tree @var{type})
10089If defined, this macro returns the diagnostic message when it is
10090invalid to apply operation @var{op} (where unary plus is denoted by
10091@code{CONVERT_EXPR}) to an operand of type @var{type}, or @code{NULL}
10092if validity should be determined by the front end.
10093@end deftypefn
10094
10095@deftypefn {Target Hook} {const char *} TARGET_INVALID_BINARY_OP (int @var{op}, tree @var{type1}, tree @var{type2})
10096If defined, this macro returns the diagnostic message when it is
10097invalid to apply operation @var{op} to operands of types @var{type1}
10098and @var{type2}, or @code{NULL} if validity should be determined by
10099the front end.
10100@end deftypefn
10101
e50e6b88
DS
10102@defmac TARGET_USE_JCR_SECTION
10103This macro determines whether to use the JCR section to register Java
10104classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both
10105SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0.
10106@end defmac
64ee9490
EC
10107
10108@defmac OBJC_JBLEN
10109This macro determines the size of the objective C jump buffer for the
10110NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value.
10111@end defmac