OpenCores
URL https://opencores.org/ocsvn/openrisc/openrisc/trunk

Subversion Repositories openrisc

[/] [openrisc/] [trunk/] [gnu-stable/] [gcc-4.5.1/] [gcc/] [doc/] [tm.texi] - Blame information for rev 843

Go to most recent revision | Details | Compare with Previous | View Log

Line No. Rev Author Line
1 284 jeremybenn
@c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001,
2
@c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010
3
@c Free Software Foundation, Inc.
4
@c This is part of the GCC manual.
5
@c For copying conditions, see the file gcc.texi.
6
 
7
@node Target Macros
8
@chapter Target Description Macros and Functions
9
@cindex machine description macros
10
@cindex target description macros
11
@cindex macros, target description
12
@cindex @file{tm.h} macros
13
 
14
In addition to the file @file{@var{machine}.md}, a machine description
15
includes a C header file conventionally given the name
16
@file{@var{machine}.h} and a C source file named @file{@var{machine}.c}.
17
The header file defines numerous macros that convey the information
18
about the target machine that does not fit into the scheme of the
19
@file{.md} file.  The file @file{tm.h} should be a link to
20
@file{@var{machine}.h}.  The header file @file{config.h} includes
21
@file{tm.h} and most compiler source files include @file{config.h}.  The
22
source file defines a variable @code{targetm}, which is a structure
23
containing pointers to functions and data relating to the target
24
machine.  @file{@var{machine}.c} should also contain their definitions,
25
if they are not defined elsewhere in GCC, and other functions called
26
through the macros defined in the @file{.h} file.
27
 
28
@menu
29
* Target Structure::    The @code{targetm} variable.
30
* Driver::              Controlling how the driver runs the compilation passes.
31
* Run-time Target::     Defining @samp{-m} options like @option{-m68000} and @option{-m68020}.
32
* Per-Function Data::   Defining data structures for per-function information.
33
* Storage Layout::      Defining sizes and alignments of data.
34
* Type Layout::         Defining sizes and properties of basic user data types.
35
* Registers::           Naming and describing the hardware registers.
36
* Register Classes::    Defining the classes of hardware registers.
37
* Old Constraints::     The old way to define machine-specific constraints.
38
* Stack and Calling::   Defining which way the stack grows and by how much.
39
* Varargs::             Defining the varargs macros.
40
* Trampolines::         Code set up at run time to enter a nested function.
41
* Library Calls::       Controlling how library routines are implicitly called.
42
* Addressing Modes::    Defining addressing modes valid for memory operands.
43
* Anchored Addresses::  Defining how @option{-fsection-anchors} should work.
44
* Condition Code::      Defining how insns update the condition code.
45
* Costs::               Defining relative costs of different operations.
46
* Scheduling::          Adjusting the behavior of the instruction scheduler.
47
* Sections::            Dividing storage into text, data, and other sections.
48
* PIC::                 Macros for position independent code.
49
* Assembler Format::    Defining how to write insns and pseudo-ops to output.
50
* Debugging Info::      Defining the format of debugging output.
51
* Floating Point::      Handling floating point for cross-compilers.
52
* Mode Switching::      Insertion of mode-switching instructions.
53
* Target Attributes::   Defining target-specific uses of @code{__attribute__}.
54
* Emulated TLS::        Emulated TLS support.
55
* MIPS Coprocessors::   MIPS coprocessor support and how to customize it.
56
* PCH Target::          Validity checking for precompiled headers.
57
* C++ ABI::             Controlling C++ ABI changes.
58
* Named Address Spaces:: Adding support for named address spaces
59
* Misc::                Everything else.
60
@end menu
61
 
62
@node Target Structure
63
@section The Global @code{targetm} Variable
64
@cindex target hooks
65
@cindex target functions
66
 
67
@deftypevar {struct gcc_target} targetm
68
The target @file{.c} file must define the global @code{targetm} variable
69
which contains pointers to functions and data relating to the target
70
machine.  The variable is declared in @file{target.h};
71
@file{target-def.h} defines the macro @code{TARGET_INITIALIZER} which is
72
used to initialize the variable, and macros for the default initializers
73
for elements of the structure.  The @file{.c} file should override those
74
macros for which the default definition is inappropriate.  For example:
75
@smallexample
76
#include "target.h"
77
#include "target-def.h"
78
 
79
/* @r{Initialize the GCC target structure.}  */
80
 
81
#undef TARGET_COMP_TYPE_ATTRIBUTES
82
#define TARGET_COMP_TYPE_ATTRIBUTES @var{machine}_comp_type_attributes
83
 
84
struct gcc_target targetm = TARGET_INITIALIZER;
85
@end smallexample
86
@end deftypevar
87
 
88
Where a macro should be defined in the @file{.c} file in this manner to
89
form part of the @code{targetm} structure, it is documented below as a
90
``Target Hook'' with a prototype.  Many macros will change in future
91
from being defined in the @file{.h} file to being part of the
92
@code{targetm} structure.
93
 
94
@node Driver
95
@section Controlling the Compilation Driver, @file{gcc}
96
@cindex driver
97
@cindex controlling the compilation driver
98
 
99
@c prevent bad page break with this line
100
You can control the compilation driver.
101
 
102
@defmac SWITCH_TAKES_ARG (@var{char})
103
A C expression which determines whether the option @option{-@var{char}}
104
takes arguments.  The value should be the number of arguments that
105
option takes--zero, for many options.
106
 
107
By default, this macro is defined as
108
@code{DEFAULT_SWITCH_TAKES_ARG}, which handles the standard options
109
properly.  You need not define @code{SWITCH_TAKES_ARG} unless you
110
wish to add additional options which take arguments.  Any redefinition
111
should call @code{DEFAULT_SWITCH_TAKES_ARG} and then check for
112
additional options.
113
@end defmac
114
 
115
@defmac WORD_SWITCH_TAKES_ARG (@var{name})
116
A C expression which determines whether the option @option{-@var{name}}
117
takes arguments.  The value should be the number of arguments that
118
option takes--zero, for many options.  This macro rather than
119
@code{SWITCH_TAKES_ARG} is used for multi-character option names.
120
 
121
By default, this macro is defined as
122
@code{DEFAULT_WORD_SWITCH_TAKES_ARG}, which handles the standard options
123
properly.  You need not define @code{WORD_SWITCH_TAKES_ARG} unless you
124
wish to add additional options which take arguments.  Any redefinition
125
should call @code{DEFAULT_WORD_SWITCH_TAKES_ARG} and then check for
126
additional options.
127
@end defmac
128
 
129
@defmac SWITCH_CURTAILS_COMPILATION (@var{char})
130
A C expression which determines whether the option @option{-@var{char}}
131
stops compilation before the generation of an executable.  The value is
132
boolean, nonzero if the option does stop an executable from being
133
generated, zero otherwise.
134
 
135
By default, this macro is defined as
136
@code{DEFAULT_SWITCH_CURTAILS_COMPILATION}, which handles the standard
137
options properly.  You need not define
138
@code{SWITCH_CURTAILS_COMPILATION} unless you wish to add additional
139
options which affect the generation of an executable.  Any redefinition
140
should call @code{DEFAULT_SWITCH_CURTAILS_COMPILATION} and then check
141
for additional options.
142
@end defmac
143
 
144
@defmac SWITCHES_NEED_SPACES
145
A string-valued C expression which enumerates the options for which
146
the linker needs a space between the option and its argument.
147
 
148
If this macro is not defined, the default value is @code{""}.
149
@end defmac
150
 
151
@defmac TARGET_OPTION_TRANSLATE_TABLE
152
If defined, a list of pairs of strings, the first of which is a
153
potential command line target to the @file{gcc} driver program, and the
154
second of which is a space-separated (tabs and other whitespace are not
155
supported) list of options with which to replace the first option.  The
156
target defining this list is responsible for assuring that the results
157
are valid.  Replacement options may not be the @code{--opt} style, they
158
must be the @code{-opt} style.  It is the intention of this macro to
159
provide a mechanism for substitution that affects the multilibs chosen,
160
such as one option that enables many options, some of which select
161
multilibs.  Example nonsensical definition, where @option{-malt-abi},
162
@option{-EB}, and @option{-mspoo} cause different multilibs to be chosen:
163
 
164
@smallexample
165
#define TARGET_OPTION_TRANSLATE_TABLE \
166
@{ "-fast",   "-march=fast-foo -malt-abi -I/usr/fast-foo" @}, \
167
@{ "-compat", "-EB -malign=4 -mspoo" @}
168
@end smallexample
169
@end defmac
170
 
171
@defmac DRIVER_SELF_SPECS
172
A list of specs for the driver itself.  It should be a suitable
173
initializer for an array of strings, with no surrounding braces.
174
 
175
The driver applies these specs to its own command line between loading
176
default @file{specs} files (but not command-line specified ones) and
177
choosing the multilib directory or running any subcommands.  It
178
applies them in the order given, so each spec can depend on the
179
options added by earlier ones.  It is also possible to remove options
180
using @samp{%<@var{option}} in the usual way.
181
 
182
This macro can be useful when a port has several interdependent target
183
options.  It provides a way of standardizing the command line so
184
that the other specs are easier to write.
185
 
186
Do not define this macro if it does not need to do anything.
187
@end defmac
188
 
189
@defmac OPTION_DEFAULT_SPECS
190
A list of specs used to support configure-time default options (i.e.@:
191
@option{--with} options) in the driver.  It should be a suitable initializer
192
for an array of structures, each containing two strings, without the
193
outermost pair of surrounding braces.
194
 
195
The first item in the pair is the name of the default.  This must match
196
the code in @file{config.gcc} for the target.  The second item is a spec
197
to apply if a default with this name was specified.  The string
198
@samp{%(VALUE)} in the spec will be replaced by the value of the default
199
everywhere it occurs.
200
 
201
The driver will apply these specs to its own command line between loading
202
default @file{specs} files and processing @code{DRIVER_SELF_SPECS}, using
203
the same mechanism as @code{DRIVER_SELF_SPECS}.
204
 
205
Do not define this macro if it does not need to do anything.
206
@end defmac
207
 
208
@defmac CPP_SPEC
209
A C string constant that tells the GCC driver program options to
210
pass to CPP@.  It can also specify how to translate options you
211
give to GCC into options for GCC to pass to the CPP@.
212
 
213
Do not define this macro if it does not need to do anything.
214
@end defmac
215
 
216
@defmac CPLUSPLUS_CPP_SPEC
217
This macro is just like @code{CPP_SPEC}, but is used for C++, rather
218
than C@.  If you do not define this macro, then the value of
219
@code{CPP_SPEC} (if any) will be used instead.
220
@end defmac
221
 
222
@defmac CC1_SPEC
223
A C string constant that tells the GCC driver program options to
224
pass to @code{cc1}, @code{cc1plus}, @code{f771}, and the other language
225
front ends.
226
It can also specify how to translate options you give to GCC into options
227
for GCC to pass to front ends.
228
 
229
Do not define this macro if it does not need to do anything.
230
@end defmac
231
 
232
@defmac CC1PLUS_SPEC
233
A C string constant that tells the GCC driver program options to
234
pass to @code{cc1plus}.  It can also specify how to translate options you
235
give to GCC into options for GCC to pass to the @code{cc1plus}.
236
 
237
Do not define this macro if it does not need to do anything.
238
Note that everything defined in CC1_SPEC is already passed to
239
@code{cc1plus} so there is no need to duplicate the contents of
240
CC1_SPEC in CC1PLUS_SPEC@.
241
@end defmac
242
 
243
@defmac ASM_SPEC
244
A C string constant that tells the GCC driver program options to
245
pass to the assembler.  It can also specify how to translate options
246
you give to GCC into options for GCC to pass to the assembler.
247
See the file @file{sun3.h} for an example of this.
248
 
249
Do not define this macro if it does not need to do anything.
250
@end defmac
251
 
252
@defmac ASM_FINAL_SPEC
253
A C string constant that tells the GCC driver program how to
254
run any programs which cleanup after the normal assembler.
255
Normally, this is not needed.  See the file @file{mips.h} for
256
an example of this.
257
 
258
Do not define this macro if it does not need to do anything.
259
@end defmac
260
 
261
@defmac AS_NEEDS_DASH_FOR_PIPED_INPUT
262
Define this macro, with no value, if the driver should give the assembler
263
an argument consisting of a single dash, @option{-}, to instruct it to
264
read from its standard input (which will be a pipe connected to the
265
output of the compiler proper).  This argument is given after any
266
@option{-o} option specifying the name of the output file.
267
 
268
If you do not define this macro, the assembler is assumed to read its
269
standard input if given no non-option arguments.  If your assembler
270
cannot read standard input at all, use a @samp{%@{pipe:%e@}} construct;
271
see @file{mips.h} for instance.
272
@end defmac
273
 
274
@defmac LINK_SPEC
275
A C string constant that tells the GCC driver program options to
276
pass to the linker.  It can also specify how to translate options you
277
give to GCC into options for GCC to pass to the linker.
278
 
279
Do not define this macro if it does not need to do anything.
280
@end defmac
281
 
282
@defmac LIB_SPEC
283
Another C string constant used much like @code{LINK_SPEC}.  The difference
284
between the two is that @code{LIB_SPEC} is used at the end of the
285
command given to the linker.
286
 
287
If this macro is not defined, a default is provided that
288
loads the standard C library from the usual place.  See @file{gcc.c}.
289
@end defmac
290
 
291
@defmac LIBGCC_SPEC
292
Another C string constant that tells the GCC driver program
293
how and when to place a reference to @file{libgcc.a} into the
294
linker command line.  This constant is placed both before and after
295
the value of @code{LIB_SPEC}.
296
 
297
If this macro is not defined, the GCC driver provides a default that
298
passes the string @option{-lgcc} to the linker.
299
@end defmac
300
 
301
@defmac REAL_LIBGCC_SPEC
302
By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the
303
@code{LIBGCC_SPEC} is not directly used by the driver program but is
304
instead modified to refer to different versions of @file{libgcc.a}
305
depending on the values of the command line flags @option{-static},
306
@option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}.  On
307
targets where these modifications are inappropriate, define
308
@code{REAL_LIBGCC_SPEC} instead.  @code{REAL_LIBGCC_SPEC} tells the
309
driver how to place a reference to @file{libgcc} on the link command
310
line, but, unlike @code{LIBGCC_SPEC}, it is used unmodified.
311
@end defmac
312
 
313
@defmac USE_LD_AS_NEEDED
314
A macro that controls the modifications to @code{LIBGCC_SPEC}
315
mentioned in @code{REAL_LIBGCC_SPEC}.  If nonzero, a spec will be
316
generated that uses --as-needed and the shared libgcc in place of the
317
static exception handler library, when linking without any of
318
@code{-static}, @code{-static-libgcc}, or @code{-shared-libgcc}.
319
@end defmac
320
 
321
@defmac LINK_EH_SPEC
322
If defined, this C string constant is added to @code{LINK_SPEC}.
323
When @code{USE_LD_AS_NEEDED} is zero or undefined, it also affects
324
the modifications to @code{LIBGCC_SPEC} mentioned in
325
@code{REAL_LIBGCC_SPEC}.
326
@end defmac
327
 
328
@defmac STARTFILE_SPEC
329
Another C string constant used much like @code{LINK_SPEC}.  The
330
difference between the two is that @code{STARTFILE_SPEC} is used at
331
the very beginning of the command given to the linker.
332
 
333
If this macro is not defined, a default is provided that loads the
334
standard C startup file from the usual place.  See @file{gcc.c}.
335
@end defmac
336
 
337
@defmac ENDFILE_SPEC
338
Another C string constant used much like @code{LINK_SPEC}.  The
339
difference between the two is that @code{ENDFILE_SPEC} is used at
340
the very end of the command given to the linker.
341
 
342
Do not define this macro if it does not need to do anything.
343
@end defmac
344
 
345
@defmac THREAD_MODEL_SPEC
346
GCC @code{-v} will print the thread model GCC was configured to use.
347
However, this doesn't work on platforms that are multilibbed on thread
348
models, such as AIX 4.3.  On such platforms, define
349
@code{THREAD_MODEL_SPEC} such that it evaluates to a string without
350
blanks that names one of the recognized thread models.  @code{%*}, the
351
default value of this macro, will expand to the value of
352
@code{thread_file} set in @file{config.gcc}.
353
@end defmac
354
 
355
@defmac SYSROOT_SUFFIX_SPEC
356
Define this macro to add a suffix to the target sysroot when GCC is
357
configured with a sysroot.  This will cause GCC to search for usr/lib,
358
et al, within sysroot+suffix.
359
@end defmac
360
 
361
@defmac SYSROOT_HEADERS_SUFFIX_SPEC
362
Define this macro to add a headers_suffix to the target sysroot when
363
GCC is configured with a sysroot.  This will cause GCC to pass the
364
updated sysroot+headers_suffix to CPP, causing it to search for
365
usr/include, et al, within sysroot+headers_suffix.
366
@end defmac
367
 
368
@defmac EXTRA_SPECS
369
Define this macro to provide additional specifications to put in the
370
@file{specs} file that can be used in various specifications like
371
@code{CC1_SPEC}.
372
 
373
The definition should be an initializer for an array of structures,
374
containing a string constant, that defines the specification name, and a
375
string constant that provides the specification.
376
 
377
Do not define this macro if it does not need to do anything.
378
 
379
@code{EXTRA_SPECS} is useful when an architecture contains several
380
related targets, which have various @code{@dots{}_SPECS} which are similar
381
to each other, and the maintainer would like one central place to keep
382
these definitions.
383
 
384
For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to
385
define either @code{_CALL_SYSV} when the System V calling sequence is
386
used or @code{_CALL_AIX} when the older AIX-based calling sequence is
387
used.
388
 
389
The @file{config/rs6000/rs6000.h} target file defines:
390
 
391
@smallexample
392
#define EXTRA_SPECS \
393
  @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @},
394
 
395
#define CPP_SYS_DEFAULT ""
396
@end smallexample
397
 
398
The @file{config/rs6000/sysv.h} target file defines:
399
@smallexample
400
#undef CPP_SPEC
401
#define CPP_SPEC \
402
"%@{posix: -D_POSIX_SOURCE @} \
403
%@{mcall-sysv: -D_CALL_SYSV @} \
404
%@{!mcall-sysv: %(cpp_sysv_default) @} \
405
%@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}"
406
 
407
#undef CPP_SYSV_DEFAULT
408
#define CPP_SYSV_DEFAULT "-D_CALL_SYSV"
409
@end smallexample
410
 
411
while the @file{config/rs6000/eabiaix.h} target file defines
412
@code{CPP_SYSV_DEFAULT} as:
413
 
414
@smallexample
415
#undef CPP_SYSV_DEFAULT
416
#define CPP_SYSV_DEFAULT "-D_CALL_AIX"
417
@end smallexample
418
@end defmac
419
 
420
@defmac LINK_LIBGCC_SPECIAL_1
421
Define this macro if the driver program should find the library
422
@file{libgcc.a}.  If you do not define this macro, the driver program will pass
423
the argument @option{-lgcc} to tell the linker to do the search.
424
@end defmac
425
 
426
@defmac LINK_GCC_C_SEQUENCE_SPEC
427
The sequence in which libgcc and libc are specified to the linker.
428
By default this is @code{%G %L %G}.
429
@end defmac
430
 
431
@defmac LINK_COMMAND_SPEC
432
A C string constant giving the complete command line need to execute the
433
linker.  When you do this, you will need to update your port each time a
434
change is made to the link command line within @file{gcc.c}.  Therefore,
435
define this macro only if you need to completely redefine the command
436
line for invoking the linker and there is no other way to accomplish
437
the effect you need.  Overriding this macro may be avoidable by overriding
438
@code{LINK_GCC_C_SEQUENCE_SPEC} instead.
439
@end defmac
440
 
441
@defmac LINK_ELIMINATE_DUPLICATE_LDIRECTORIES
442
A nonzero value causes @command{collect2} to remove duplicate @option{-L@var{directory}} search
443
directories from linking commands.  Do not give it a nonzero value if
444
removing duplicate search directories changes the linker's semantics.
445
@end defmac
446
 
447
@defmac MULTILIB_DEFAULTS
448
Define this macro as a C expression for the initializer of an array of
449
string to tell the driver program which options are defaults for this
450
target and thus do not need to be handled specially when using
451
@code{MULTILIB_OPTIONS}.
452
 
453
Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in
454
the target makefile fragment or if none of the options listed in
455
@code{MULTILIB_OPTIONS} are set by default.
456
@xref{Target Fragment}.
457
@end defmac
458
 
459
@defmac RELATIVE_PREFIX_NOT_LINKDIR
460
Define this macro to tell @command{gcc} that it should only translate
461
a @option{-B} prefix into a @option{-L} linker option if the prefix
462
indicates an absolute file name.
463
@end defmac
464
 
465
@defmac MD_EXEC_PREFIX
466
If defined, this macro is an additional prefix to try after
467
@code{STANDARD_EXEC_PREFIX}.  @code{MD_EXEC_PREFIX} is not searched
468
when the @option{-b} option is used, or the compiler is built as a cross
469
compiler.  If you define @code{MD_EXEC_PREFIX}, then be sure to add it
470
to the list of directories used to find the assembler in @file{configure.in}.
471
@end defmac
472
 
473
@defmac STANDARD_STARTFILE_PREFIX
474
Define this macro as a C string constant if you wish to override the
475
standard choice of @code{libdir} as the default prefix to
476
try when searching for startup files such as @file{crt0.o}.
477
@code{STANDARD_STARTFILE_PREFIX} is not searched when the compiler
478
is built as a cross compiler.
479
@end defmac
480
 
481
@defmac STANDARD_STARTFILE_PREFIX_1
482
Define this macro as a C string constant if you wish to override the
483
standard choice of @code{/lib} as a prefix to try after the default prefix
484
when searching for startup files such as @file{crt0.o}.
485
@code{STANDARD_STARTFILE_PREFIX_1} is not searched when the compiler
486
is built as a cross compiler.
487
@end defmac
488
 
489
@defmac STANDARD_STARTFILE_PREFIX_2
490
Define this macro as a C string constant if you wish to override the
491
standard choice of @code{/lib} as yet another prefix to try after the
492
default prefix when searching for startup files such as @file{crt0.o}.
493
@code{STANDARD_STARTFILE_PREFIX_2} is not searched when the compiler
494
is built as a cross compiler.
495
@end defmac
496
 
497
@defmac MD_STARTFILE_PREFIX
498
If defined, this macro supplies an additional prefix to try after the
499
standard prefixes.  @code{MD_EXEC_PREFIX} is not searched when the
500
@option{-b} option is used, or when the compiler is built as a cross
501
compiler.
502
@end defmac
503
 
504
@defmac MD_STARTFILE_PREFIX_1
505
If defined, this macro supplies yet another prefix to try after the
506
standard prefixes.  It is not searched when the @option{-b} option is
507
used, or when the compiler is built as a cross compiler.
508
@end defmac
509
 
510
@defmac INIT_ENVIRONMENT
511
Define this macro as a C string constant if you wish to set environment
512
variables for programs called by the driver, such as the assembler and
513
loader.  The driver passes the value of this macro to @code{putenv} to
514
initialize the necessary environment variables.
515
@end defmac
516
 
517
@defmac LOCAL_INCLUDE_DIR
518
Define this macro as a C string constant if you wish to override the
519
standard choice of @file{/usr/local/include} as the default prefix to
520
try when searching for local header files.  @code{LOCAL_INCLUDE_DIR}
521
comes before @code{SYSTEM_INCLUDE_DIR} in the search order.
522
 
523
Cross compilers do not search either @file{/usr/local/include} or its
524
replacement.
525
@end defmac
526
 
527
@defmac MODIFY_TARGET_NAME
528
Define this macro if you wish to define command-line switches that
529
modify the default target name.
530
 
531
For each switch, you can include a string to be appended to the first
532
part of the configuration name or a string to be deleted from the
533
configuration name, if present.  The definition should be an initializer
534
for an array of structures.  Each array element should have three
535
elements: the switch name (a string constant, including the initial
536
dash), one of the enumeration codes @code{ADD} or @code{DELETE} to
537
indicate whether the string should be inserted or deleted, and the string
538
to be inserted or deleted (a string constant).
539
 
540
For example, on a machine where @samp{64} at the end of the
541
configuration name denotes a 64-bit target and you want the @option{-32}
542
and @option{-64} switches to select between 32- and 64-bit targets, you would
543
code
544
 
545
@smallexample
546
#define MODIFY_TARGET_NAME \
547
  @{ @{ "-32", DELETE, "64"@}, \
548
     @{"-64", ADD, "64"@}@}
549
@end smallexample
550
@end defmac
551
 
552
@defmac SYSTEM_INCLUDE_DIR
553
Define this macro as a C string constant if you wish to specify a
554
system-specific directory to search for header files before the standard
555
directory.  @code{SYSTEM_INCLUDE_DIR} comes before
556
@code{STANDARD_INCLUDE_DIR} in the search order.
557
 
558
Cross compilers do not use this macro and do not search the directory
559
specified.
560
@end defmac
561
 
562
@defmac STANDARD_INCLUDE_DIR
563
Define this macro as a C string constant if you wish to override the
564
standard choice of @file{/usr/include} as the default prefix to
565
try when searching for header files.
566
 
567
Cross compilers ignore this macro and do not search either
568
@file{/usr/include} or its replacement.
569
@end defmac
570
 
571
@defmac STANDARD_INCLUDE_COMPONENT
572
The ``component'' corresponding to @code{STANDARD_INCLUDE_DIR}.
573
See @code{INCLUDE_DEFAULTS}, below, for the description of components.
574
If you do not define this macro, no component is used.
575
@end defmac
576
 
577
@defmac INCLUDE_DEFAULTS
578
Define this macro if you wish to override the entire default search path
579
for include files.  For a native compiler, the default search path
580
usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR},
581
@code{SYSTEM_INCLUDE_DIR}, @code{GPLUSPLUS_INCLUDE_DIR}, and
582
@code{STANDARD_INCLUDE_DIR}.  In addition, @code{GPLUSPLUS_INCLUDE_DIR}
583
and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile},
584
and specify private search areas for GCC@.  The directory
585
@code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs.
586
 
587
The definition should be an initializer for an array of structures.
588
Each array element should have four elements: the directory name (a
589
string constant), the component name (also a string constant), a flag
590
for C++-only directories,
591
and a flag showing that the includes in the directory don't need to be
592
wrapped in @code{extern @samp{C}} when compiling C++.  Mark the end of
593
the array with a null element.
594
 
595
The component name denotes what GNU package the include file is part of,
596
if any, in all uppercase letters.  For example, it might be @samp{GCC}
597
or @samp{BINUTILS}.  If the package is part of a vendor-supplied
598
operating system, code the component name as @samp{0}.
599
 
600
For example, here is the definition used for VAX/VMS:
601
 
602
@smallexample
603
#define INCLUDE_DEFAULTS \
604
@{                                       \
605
  @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@},   \
606
  @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@},    \
607
  @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@},  \
608
  @{ ".", 0, 0, 0@},                      \
609
  @{ 0, 0, 0, 0@}                         \
610
@}
611
@end smallexample
612
@end defmac
613
 
614
Here is the order of prefixes tried for exec files:
615
 
616
@enumerate
617
@item
618
Any prefixes specified by the user with @option{-B}.
619
 
620
@item
621
The environment variable @code{GCC_EXEC_PREFIX} or, if @code{GCC_EXEC_PREFIX}
622
is not set and the compiler has not been installed in the configure-time
623
@var{prefix}, the location in which the compiler has actually been installed.
624
 
625
@item
626
The directories specified by the environment variable @code{COMPILER_PATH}.
627
 
628
@item
629
The macro @code{STANDARD_EXEC_PREFIX}, if the compiler has been installed
630
in the configured-time @var{prefix}.
631
 
632
@item
633
The location @file{/usr/libexec/gcc/}, but only if this is a native compiler.
634
 
635
@item
636
The location @file{/usr/lib/gcc/}, but only if this is a native compiler.
637
 
638
@item
639
The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native
640
compiler.
641
@end enumerate
642
 
643
Here is the order of prefixes tried for startfiles:
644
 
645
@enumerate
646
@item
647
Any prefixes specified by the user with @option{-B}.
648
 
649
@item
650
The environment variable @code{GCC_EXEC_PREFIX} or its automatically determined
651
value based on the installed toolchain location.
652
 
653
@item
654
The directories specified by the environment variable @code{LIBRARY_PATH}
655
(or port-specific name; native only, cross compilers do not use this).
656
 
657
@item
658
The macro @code{STANDARD_EXEC_PREFIX}, but only if the toolchain is installed
659
in the configured @var{prefix} or this is a native compiler.
660
 
661
@item
662
The location @file{/usr/lib/gcc/}, but only if this is a native compiler.
663
 
664
@item
665
The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native
666
compiler.
667
 
668
@item
669
The macro @code{MD_STARTFILE_PREFIX}, if defined, but only if this is a
670
native compiler, or we have a target system root.
671
 
672
@item
673
The macro @code{MD_STARTFILE_PREFIX_1}, if defined, but only if this is a
674
native compiler, or we have a target system root.
675
 
676
@item
677
The macro @code{STANDARD_STARTFILE_PREFIX}, with any sysroot modifications.
678
If this path is relative it will be prefixed by @code{GCC_EXEC_PREFIX} and
679
the machine suffix or @code{STANDARD_EXEC_PREFIX} and the machine suffix.
680
 
681
@item
682
The macro @code{STANDARD_STARTFILE_PREFIX_1}, but only if this is a native
683
compiler, or we have a target system root. The default for this macro is
684
@file{/lib/}.
685
 
686
@item
687
The macro @code{STANDARD_STARTFILE_PREFIX_2}, but only if this is a native
688
compiler, or we have a target system root. The default for this macro is
689
@file{/usr/lib/}.
690
@end enumerate
691
 
692
@node Run-time Target
693
@section Run-time Target Specification
694
@cindex run-time target specification
695
@cindex predefined macros
696
@cindex target specifications
697
 
698
@c prevent bad page break with this line
699
Here are run-time target specifications.
700
 
701
@defmac TARGET_CPU_CPP_BUILTINS ()
702
This function-like macro expands to a block of code that defines
703
built-in preprocessor macros and assertions for the target CPU, using
704
the functions @code{builtin_define}, @code{builtin_define_std} and
705
@code{builtin_assert}.  When the front end
706
calls this macro it provides a trailing semicolon, and since it has
707
finished command line option processing your code can use those
708
results freely.
709
 
710
@code{builtin_assert} takes a string in the form you pass to the
711
command-line option @option{-A}, such as @code{cpu=mips}, and creates
712
the assertion.  @code{builtin_define} takes a string in the form
713
accepted by option @option{-D} and unconditionally defines the macro.
714
 
715
@code{builtin_define_std} takes a string representing the name of an
716
object-like macro.  If it doesn't lie in the user's namespace,
717
@code{builtin_define_std} defines it unconditionally.  Otherwise, it
718
defines a version with two leading underscores, and another version
719
with two leading and trailing underscores, and defines the original
720
only if an ISO standard was not requested on the command line.  For
721
example, passing @code{unix} defines @code{__unix}, @code{__unix__}
722
and possibly @code{unix}; passing @code{_mips} defines @code{__mips},
723
@code{__mips__} and possibly @code{_mips}, and passing @code{_ABI64}
724
defines only @code{_ABI64}.
725
 
726
You can also test for the C dialect being compiled.  The variable
727
@code{c_language} is set to one of @code{clk_c}, @code{clk_cplusplus}
728
or @code{clk_objective_c}.  Note that if we are preprocessing
729
assembler, this variable will be @code{clk_c} but the function-like
730
macro @code{preprocessing_asm_p()} will return true, so you might want
731
to check for that first.  If you need to check for strict ANSI, the
732
variable @code{flag_iso} can be used.  The function-like macro
733
@code{preprocessing_trad_p()} can be used to check for traditional
734
preprocessing.
735
@end defmac
736
 
737
@defmac TARGET_OS_CPP_BUILTINS ()
738
Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
739
and is used for the target operating system instead.
740
@end defmac
741
 
742
@defmac TARGET_OBJFMT_CPP_BUILTINS ()
743
Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional
744
and is used for the target object format.  @file{elfos.h} uses this
745
macro to define @code{__ELF__}, so you probably do not need to define
746
it yourself.
747
@end defmac
748
 
749
@deftypevar {extern int} target_flags
750
This variable is declared in @file{options.h}, which is included before
751
any target-specific headers.
752
@end deftypevar
753
 
754
@deftypevr {Target Hook} int TARGET_DEFAULT_TARGET_FLAGS
755
This variable specifies the initial value of @code{target_flags}.
756
Its default setting is 0.
757
@end deftypevr
758
 
759
@cindex optional hardware or system features
760
@cindex features, optional, in system conventions
761
 
762
@deftypefn {Target Hook} bool TARGET_HANDLE_OPTION (size_t @var{code}, const char *@var{arg}, int @var{value})
763
This hook is called whenever the user specifies one of the
764
target-specific options described by the @file{.opt} definition files
765
(@pxref{Options}).  It has the opportunity to do some option-specific
766
processing and should return true if the option is valid.  The default
767
definition does nothing but return true.
768
 
769
@var{code} specifies the @code{OPT_@var{name}} enumeration value
770
associated with the selected option; @var{name} is just a rendering of
771
the option name in which non-alphanumeric characters are replaced by
772
underscores.  @var{arg} specifies the string argument and is null if
773
no argument was given.  If the option is flagged as a @code{UInteger}
774
(@pxref{Option properties}), @var{value} is the numeric value of the
775
argument.  Otherwise @var{value} is 1 if the positive form of the
776
option was used and 0 if the ``no-'' form was.
777
@end deftypefn
778
 
779
@deftypefn {Target Hook} bool TARGET_HANDLE_C_OPTION (size_t @var{code}, const char *@var{arg}, int @var{value})
780
This target hook is called whenever the user specifies one of the
781
target-specific C language family options described by the @file{.opt}
782
definition files(@pxref{Options}).  It has the opportunity to do some
783
option-specific processing and should return true if the option is
784
valid.  The arguments are like for @code{TARGET_HANDLE_OPTION}.  The
785
default definition does nothing but return false.
786
 
787
In general, you should use @code{TARGET_HANDLE_OPTION} to handle
788
options.  However, if processing an option requires routines that are
789
only available in the C (and related language) front ends, then you
790
should use @code{TARGET_HANDLE_C_OPTION} instead.
791
@end deftypefn
792
 
793
@defmac TARGET_VERSION
794
This macro is a C statement to print on @code{stderr} a string
795
describing the particular machine description choice.  Every machine
796
description should define @code{TARGET_VERSION}.  For example:
797
 
798
@smallexample
799
#ifdef MOTOROLA
800
#define TARGET_VERSION \
801
  fprintf (stderr, " (68k, Motorola syntax)");
802
#else
803
#define TARGET_VERSION \
804
  fprintf (stderr, " (68k, MIT syntax)");
805
#endif
806
@end smallexample
807
@end defmac
808
 
809
@defmac OVERRIDE_OPTIONS
810
Sometimes certain combinations of command options do not make sense on
811
a particular target machine.  You can define a macro
812
@code{OVERRIDE_OPTIONS} to take account of this.  This macro, if
813
defined, is executed once just after all the command options have been
814
parsed.
815
 
816
Don't use this macro to turn on various extra optimizations for
817
@option{-O}.  That is what @code{OPTIMIZATION_OPTIONS} is for.
818
 
819
If you need to do something whenever the optimization level is
820
changed via the optimize attribute or pragma, see
821
@code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE}
822
@end defmac
823
 
824
@deftypefn {Target Hook} void TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE (void)
825
This target function is similar to the macro @code{OVERRIDE_OPTIONS}
826
but is called when the optimize level is changed via an attribute or
827
pragma or when it is reset at the end of the code affected by the
828
attribute or pragma.  It is not called at the beginning of compilation
829
when @code{OVERRIDE_OPTIONS} is called so if you want to perform these
830
actions then, you should have @code{OVERRIDE_OPTIONS} call
831
@code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE}.
832
@end deftypefn
833
 
834
@defmac C_COMMON_OVERRIDE_OPTIONS
835
This is similar to @code{OVERRIDE_OPTIONS} but is only used in the C
836
language frontends (C, Objective-C, C++, Objective-C++) and so can be
837
used to alter option flag variables which only exist in those
838
frontends.
839
@end defmac
840
 
841
@defmac OPTIMIZATION_OPTIONS (@var{level}, @var{size})
842
Some machines may desire to change what optimizations are performed for
843
various optimization levels.   This macro, if defined, is executed once
844
just after the optimization level is determined and before the remainder
845
of the command options have been parsed.  Values set in this macro are
846
used as the default values for the other command line options.
847
 
848
@var{level} is the optimization level specified; 2 if @option{-O2} is
849
specified, 1 if @option{-O} is specified, and 0 if neither is specified.
850
 
851
@var{size} is nonzero if @option{-Os} is specified and zero otherwise.
852
 
853
This macro is run once at program startup and when the optimization
854
options are changed via @code{#pragma GCC optimize} or by using the
855
@code{optimize} attribute.
856
 
857
@strong{Do not examine @code{write_symbols} in
858
this macro!} The debugging options are not supposed to alter the
859
generated code.
860
@end defmac
861
 
862
@deftypefn {Target Hook} void TARGET_HELP (void)
863
This hook is called in response to the user invoking
864
@option{--target-help} on the command line.  It gives the target a
865
chance to display extra information on the target specific command
866
line options found in its @file{.opt} file.
867
@end deftypefn
868
 
869
@defmac CAN_DEBUG_WITHOUT_FP
870
Define this macro if debugging can be performed even without a frame
871
pointer.  If this macro is defined, GCC will turn on the
872
@option{-fomit-frame-pointer} option whenever @option{-O} is specified.
873
@end defmac
874
 
875
@node Per-Function Data
876
@section Defining data structures for per-function information.
877
@cindex per-function data
878
@cindex data structures
879
 
880
If the target needs to store information on a per-function basis, GCC
881
provides a macro and a couple of variables to allow this.  Note, just
882
using statics to store the information is a bad idea, since GCC supports
883
nested functions, so you can be halfway through encoding one function
884
when another one comes along.
885
 
886
GCC defines a data structure called @code{struct function} which
887
contains all of the data specific to an individual function.  This
888
structure contains a field called @code{machine} whose type is
889
@code{struct machine_function *}, which can be used by targets to point
890
to their own specific data.
891
 
892
If a target needs per-function specific data it should define the type
893
@code{struct machine_function} and also the macro @code{INIT_EXPANDERS}.
894
This macro should be used to initialize the function pointer
895
@code{init_machine_status}.  This pointer is explained below.
896
 
897
One typical use of per-function, target specific data is to create an
898
RTX to hold the register containing the function's return address.  This
899
RTX can then be used to implement the @code{__builtin_return_address}
900
function, for level 0.
901
 
902
Note---earlier implementations of GCC used a single data area to hold
903
all of the per-function information.  Thus when processing of a nested
904
function began the old per-function data had to be pushed onto a
905
stack, and when the processing was finished, it had to be popped off the
906
stack.  GCC used to provide function pointers called
907
@code{save_machine_status} and @code{restore_machine_status} to handle
908
the saving and restoring of the target specific information.  Since the
909
single data area approach is no longer used, these pointers are no
910
longer supported.
911
 
912
@defmac INIT_EXPANDERS
913
Macro called to initialize any target specific information.  This macro
914
is called once per function, before generation of any RTL has begun.
915
The intention of this macro is to allow the initialization of the
916
function pointer @code{init_machine_status}.
917
@end defmac
918
 
919
@deftypevar {void (*)(struct function *)} init_machine_status
920
If this function pointer is non-@code{NULL} it will be called once per
921
function, before function compilation starts, in order to allow the
922
target to perform any target specific initialization of the
923
@code{struct function} structure.  It is intended that this would be
924
used to initialize the @code{machine} of that structure.
925
 
926
@code{struct machine_function} structures are expected to be freed by GC@.
927
Generally, any memory that they reference must be allocated by using
928
@code{ggc_alloc}, including the structure itself.
929
@end deftypevar
930
 
931
@node Storage Layout
932
@section Storage Layout
933
@cindex storage layout
934
 
935
Note that the definitions of the macros in this table which are sizes or
936
alignments measured in bits do not need to be constant.  They can be C
937
expressions that refer to static variables, such as the @code{target_flags}.
938
@xref{Run-time Target}.
939
 
940
@defmac BITS_BIG_ENDIAN
941
Define this macro to have the value 1 if the most significant bit in a
942
byte has the lowest number; otherwise define it to have the value zero.
943
This means that bit-field instructions count from the most significant
944
bit.  If the machine has no bit-field instructions, then this must still
945
be defined, but it doesn't matter which value it is defined to.  This
946
macro need not be a constant.
947
 
948
This macro does not affect the way structure fields are packed into
949
bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}.
950
@end defmac
951
 
952
@defmac BYTES_BIG_ENDIAN
953
Define this macro to have the value 1 if the most significant byte in a
954
word has the lowest number.  This macro need not be a constant.
955
@end defmac
956
 
957
@defmac WORDS_BIG_ENDIAN
958
Define this macro to have the value 1 if, in a multiword object, the
959
most significant word has the lowest number.  This applies to both
960
memory locations and registers; GCC fundamentally assumes that the
961
order of words in memory is the same as the order in registers.  This
962
macro need not be a constant.
963
@end defmac
964
 
965
@defmac LIBGCC2_WORDS_BIG_ENDIAN
966
Define this macro if @code{WORDS_BIG_ENDIAN} is not constant.  This must be a
967
constant value with the same meaning as @code{WORDS_BIG_ENDIAN}, which will be
968
used only when compiling @file{libgcc2.c}.  Typically the value will be set
969
based on preprocessor defines.
970
@end defmac
971
 
972
@defmac FLOAT_WORDS_BIG_ENDIAN
973
Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or
974
@code{TFmode} floating point numbers are stored in memory with the word
975
containing the sign bit at the lowest address; otherwise define it to
976
have the value 0.  This macro need not be a constant.
977
 
978
You need not define this macro if the ordering is the same as for
979
multi-word integers.
980
@end defmac
981
 
982
@defmac BITS_PER_UNIT
983
Define this macro to be the number of bits in an addressable storage
984
unit (byte).  If you do not define this macro the default is 8.
985
@end defmac
986
 
987
@defmac BITS_PER_WORD
988
Number of bits in a word.  If you do not define this macro, the default
989
is @code{BITS_PER_UNIT * UNITS_PER_WORD}.
990
@end defmac
991
 
992
@defmac MAX_BITS_PER_WORD
993
Maximum number of bits in a word.  If this is undefined, the default is
994
@code{BITS_PER_WORD}.  Otherwise, it is the constant value that is the
995
largest value that @code{BITS_PER_WORD} can have at run-time.
996
@end defmac
997
 
998
@defmac UNITS_PER_WORD
999
Number of storage units in a word; normally the size of a general-purpose
1000
register, a power of two from 1 or 8.
1001
@end defmac
1002
 
1003
@defmac MIN_UNITS_PER_WORD
1004
Minimum number of units in a word.  If this is undefined, the default is
1005
@code{UNITS_PER_WORD}.  Otherwise, it is the constant value that is the
1006
smallest value that @code{UNITS_PER_WORD} can have at run-time.
1007
@end defmac
1008
 
1009
@defmac UNITS_PER_SIMD_WORD (@var{mode})
1010
Number of units in the vectors that the vectorizer can produce for
1011
scalar mode @var{mode}.  The default is equal to @code{UNITS_PER_WORD},
1012
because the vectorizer can do some transformations even in absence of
1013
specialized @acronym{SIMD} hardware.
1014
@end defmac
1015
 
1016
@defmac POINTER_SIZE
1017
Width of a pointer, in bits.  You must specify a value no wider than the
1018
width of @code{Pmode}.  If it is not equal to the width of @code{Pmode},
1019
you must define @code{POINTERS_EXTEND_UNSIGNED}.  If you do not specify
1020
a value the default is @code{BITS_PER_WORD}.
1021
@end defmac
1022
 
1023
@defmac POINTERS_EXTEND_UNSIGNED
1024
A C expression that determines how pointers should be extended from
1025
@code{ptr_mode} to either @code{Pmode} or @code{word_mode}.  It is
1026
greater than zero if pointers should be zero-extended, zero if they
1027
should be sign-extended, and negative if some other sort of conversion
1028
is needed.  In the last case, the extension is done by the target's
1029
@code{ptr_extend} instruction.
1030
 
1031
You need not define this macro if the @code{ptr_mode}, @code{Pmode}
1032
and @code{word_mode} are all the same width.
1033
@end defmac
1034
 
1035
@defmac PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type})
1036
A macro to update @var{m} and @var{unsignedp} when an object whose type
1037
is @var{type} and which has the specified mode and signedness is to be
1038
stored in a register.  This macro is only called when @var{type} is a
1039
scalar type.
1040
 
1041
On most RISC machines, which only have operations that operate on a full
1042
register, define this macro to set @var{m} to @code{word_mode} if
1043
@var{m} is an integer mode narrower than @code{BITS_PER_WORD}.  In most
1044
cases, only integer modes should be widened because wider-precision
1045
floating-point operations are usually more expensive than their narrower
1046
counterparts.
1047
 
1048
For most machines, the macro definition does not change @var{unsignedp}.
1049
However, some machines, have instructions that preferentially handle
1050
either signed or unsigned quantities of certain modes.  For example, on
1051
the DEC Alpha, 32-bit loads from memory and 32-bit add instructions
1052
sign-extend the result to 64 bits.  On such machines, set
1053
@var{unsignedp} according to which kind of extension is more efficient.
1054
 
1055
Do not define this macro if it would never modify @var{m}.
1056
@end defmac
1057
 
1058
@deftypefn {Target Hook} {enum machine_mode} TARGET_PROMOTE_FUNCTION_MODE (const_tree @var{type}, enum machine_mode @var{mode}, int *@var{punsignedp}, const_tree @var{funtype}, int @var{for_return})
1059
Like @code{PROMOTE_MODE}, but it is applied to outgoing function arguments or
1060
function return values.  The target hook should return the new mode
1061
and possibly change @code{*@var{punsignedp}} if the promotion should
1062
change signedness.  This function is called only for scalar @emph{or
1063
pointer} types.
1064
 
1065
@var{for_return} allows to distinguish the promotion of arguments and
1066
return values.  If it is @code{1}, a return value is being promoted and
1067
@code{TARGET_FUNCTION_VALUE} must perform the same promotions done here.
1068
If it is @code{2}, the returned mode should be that of the register in
1069
which an incoming parameter is copied, or the outgoing result is computed;
1070
then the hook should return the same mode as @code{promote_mode}, though
1071
the signedness may be different.
1072
 
1073
The default is to not promote arguments and return values.  You can
1074
also define the hook to @code{default_promote_function_mode_always_promote}
1075
if you would like to apply the same rules given by @code{PROMOTE_MODE}.
1076
@end deftypefn
1077
 
1078
@defmac PARM_BOUNDARY
1079
Normal alignment required for function parameters on the stack, in
1080
bits.  All stack parameters receive at least this much alignment
1081
regardless of data type.  On most machines, this is the same as the
1082
size of an integer.
1083
@end defmac
1084
 
1085
@defmac STACK_BOUNDARY
1086
Define this macro to the minimum alignment enforced by hardware for the
1087
stack pointer on this machine.  The definition is a C expression for the
1088
desired alignment (measured in bits).  This value is used as a default
1089
if @code{PREFERRED_STACK_BOUNDARY} is not defined.  On most machines,
1090
this should be the same as @code{PARM_BOUNDARY}.
1091
@end defmac
1092
 
1093
@defmac PREFERRED_STACK_BOUNDARY
1094
Define this macro if you wish to preserve a certain alignment for the
1095
stack pointer, greater than what the hardware enforces.  The definition
1096
is a C expression for the desired alignment (measured in bits).  This
1097
macro must evaluate to a value equal to or larger than
1098
@code{STACK_BOUNDARY}.
1099
@end defmac
1100
 
1101
@defmac INCOMING_STACK_BOUNDARY
1102
Define this macro if the incoming stack boundary may be different
1103
from @code{PREFERRED_STACK_BOUNDARY}.  This macro must evaluate
1104
to a value equal to or larger than @code{STACK_BOUNDARY}.
1105
@end defmac
1106
 
1107
@defmac FUNCTION_BOUNDARY
1108
Alignment required for a function entry point, in bits.
1109
@end defmac
1110
 
1111
@defmac BIGGEST_ALIGNMENT
1112
Biggest alignment that any data type can require on this machine, in
1113
bits.  Note that this is not the biggest alignment that is supported,
1114
just the biggest alignment that, when violated, may cause a fault.
1115
@end defmac
1116
 
1117
@defmac MALLOC_ABI_ALIGNMENT
1118
Alignment, in bits, a C conformant malloc implementation has to
1119
provide.  If not defined, the default value is @code{BITS_PER_WORD}.
1120
@end defmac
1121
 
1122
@defmac ATTRIBUTE_ALIGNED_VALUE
1123
Alignment used by the @code{__attribute__ ((aligned))} construct.  If
1124
not defined, the default value is @code{BIGGEST_ALIGNMENT}.
1125
@end defmac
1126
 
1127
@defmac MINIMUM_ATOMIC_ALIGNMENT
1128
If defined, the smallest alignment, in bits, that can be given to an
1129
object that can be referenced in one operation, without disturbing any
1130
nearby object.  Normally, this is @code{BITS_PER_UNIT}, but may be larger
1131
on machines that don't have byte or half-word store operations.
1132
@end defmac
1133
 
1134
@defmac BIGGEST_FIELD_ALIGNMENT
1135
Biggest alignment that any structure or union field can require on this
1136
machine, in bits.  If defined, this overrides @code{BIGGEST_ALIGNMENT} for
1137
structure and union fields only, unless the field alignment has been set
1138
by the @code{__attribute__ ((aligned (@var{n})))} construct.
1139
@end defmac
1140
 
1141
@defmac ADJUST_FIELD_ALIGN (@var{field}, @var{computed})
1142
An expression for the alignment of a structure field @var{field} if the
1143
alignment computed in the usual way (including applying of
1144
@code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the
1145
alignment) is @var{computed}.  It overrides alignment only if the
1146
field alignment has not been set by the
1147
@code{__attribute__ ((aligned (@var{n})))} construct.
1148
@end defmac
1149
 
1150
@defmac MAX_STACK_ALIGNMENT
1151
Biggest stack alignment guaranteed by the backend.  Use this macro
1152
to specify the maximum alignment of a variable on stack.
1153
 
1154
If not defined, the default value is @code{STACK_BOUNDARY}.
1155
 
1156
@c FIXME: The default should be @code{PREFERRED_STACK_BOUNDARY}.
1157
@c But the fix for PR 32893 indicates that we can only guarantee
1158
@c maximum stack alignment on stack up to @code{STACK_BOUNDARY}, not
1159
@c @code{PREFERRED_STACK_BOUNDARY}, if stack alignment isn't supported.
1160
@end defmac
1161
 
1162
@defmac MAX_OFILE_ALIGNMENT
1163
Biggest alignment supported by the object file format of this machine.
1164
Use this macro to limit the alignment which can be specified using the
1165
@code{__attribute__ ((aligned (@var{n})))} construct.  If not defined,
1166
the default value is @code{BIGGEST_ALIGNMENT}.
1167
 
1168
On systems that use ELF, the default (in @file{config/elfos.h}) is
1169
the largest supported 32-bit ELF section alignment representable on
1170
a 32-bit host e.g. @samp{(((unsigned HOST_WIDEST_INT) 1 << 28) * 8)}.
1171
On 32-bit ELF the largest supported section alignment in bits is
1172
@samp{(0x80000000 * 8)}, but this is not representable on 32-bit hosts.
1173
@end defmac
1174
 
1175
@defmac DATA_ALIGNMENT (@var{type}, @var{basic-align})
1176
If defined, a C expression to compute the alignment for a variable in
1177
the static store.  @var{type} is the data type, and @var{basic-align} is
1178
the alignment that the object would ordinarily have.  The value of this
1179
macro is used instead of that alignment to align the object.
1180
 
1181
If this macro is not defined, then @var{basic-align} is used.
1182
 
1183
@findex strcpy
1184
One use of this macro is to increase alignment of medium-size data to
1185
make it all fit in fewer cache lines.  Another is to cause character
1186
arrays to be word-aligned so that @code{strcpy} calls that copy
1187
constants to character arrays can be done inline.
1188
@end defmac
1189
 
1190
@defmac CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align})
1191
If defined, a C expression to compute the alignment given to a constant
1192
that is being placed in memory.  @var{constant} is the constant and
1193
@var{basic-align} is the alignment that the object would ordinarily
1194
have.  The value of this macro is used instead of that alignment to
1195
align the object.
1196
 
1197
If this macro is not defined, then @var{basic-align} is used.
1198
 
1199
The typical use of this macro is to increase alignment for string
1200
constants to be word aligned so that @code{strcpy} calls that copy
1201
constants can be done inline.
1202
@end defmac
1203
 
1204
@defmac LOCAL_ALIGNMENT (@var{type}, @var{basic-align})
1205
If defined, a C expression to compute the alignment for a variable in
1206
the local store.  @var{type} is the data type, and @var{basic-align} is
1207
the alignment that the object would ordinarily have.  The value of this
1208
macro is used instead of that alignment to align the object.
1209
 
1210
If this macro is not defined, then @var{basic-align} is used.
1211
 
1212
One use of this macro is to increase alignment of medium-size data to
1213
make it all fit in fewer cache lines.
1214
@end defmac
1215
 
1216
@defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align})
1217
If defined, a C expression to compute the alignment for stack slot.
1218
@var{type} is the data type, @var{mode} is the widest mode available,
1219
and @var{basic-align} is the alignment that the slot would ordinarily
1220
have.  The value of this macro is used instead of that alignment to
1221
align the slot.
1222
 
1223
If this macro is not defined, then @var{basic-align} is used when
1224
@var{type} is @code{NULL}.  Otherwise, @code{LOCAL_ALIGNMENT} will
1225
be used.
1226
 
1227
This macro is to set alignment of stack slot to the maximum alignment
1228
of all possible modes which the slot may have.
1229
@end defmac
1230
 
1231
@defmac LOCAL_DECL_ALIGNMENT (@var{decl})
1232
If defined, a C expression to compute the alignment for a local
1233
variable @var{decl}.
1234
 
1235
If this macro is not defined, then
1236
@code{LOCAL_ALIGNMENT (TREE_TYPE (@var{decl}), DECL_ALIGN (@var{decl}))}
1237
is used.
1238
 
1239
One use of this macro is to increase alignment of medium-size data to
1240
make it all fit in fewer cache lines.
1241
@end defmac
1242
 
1243
@defmac MINIMUM_ALIGNMENT (@var{exp}, @var{mode}, @var{align})
1244
If defined, a C expression to compute the minimum required alignment
1245
for dynamic stack realignment purposes for @var{exp} (a type or decl),
1246
@var{mode}, assuming normal alignment @var{align}.
1247
 
1248
If this macro is not defined, then @var{align} will be used.
1249
@end defmac
1250
 
1251
@defmac EMPTY_FIELD_BOUNDARY
1252
Alignment in bits to be given to a structure bit-field that follows an
1253
empty field such as @code{int : 0;}.
1254
 
1255
If @code{PCC_BITFIELD_TYPE_MATTERS} is true, it overrides this macro.
1256
@end defmac
1257
 
1258
@defmac STRUCTURE_SIZE_BOUNDARY
1259
Number of bits which any structure or union's size must be a multiple of.
1260
Each structure or union's size is rounded up to a multiple of this.
1261
 
1262
If you do not define this macro, the default is the same as
1263
@code{BITS_PER_UNIT}.
1264
@end defmac
1265
 
1266
@defmac STRICT_ALIGNMENT
1267
Define this macro to be the value 1 if instructions will fail to work
1268
if given data not on the nominal alignment.  If instructions will merely
1269
go slower in that case, define this macro as 0.
1270
@end defmac
1271
 
1272
@defmac PCC_BITFIELD_TYPE_MATTERS
1273
Define this if you wish to imitate the way many other C compilers handle
1274
alignment of bit-fields and the structures that contain them.
1275
 
1276
The behavior is that the type written for a named bit-field (@code{int},
1277
@code{short}, or other integer type) imposes an alignment for the entire
1278
structure, as if the structure really did contain an ordinary field of
1279
that type.  In addition, the bit-field is placed within the structure so
1280
that it would fit within such a field, not crossing a boundary for it.
1281
 
1282
Thus, on most machines, a named bit-field whose type is written as
1283
@code{int} would not cross a four-byte boundary, and would force
1284
four-byte alignment for the whole structure.  (The alignment used may
1285
not be four bytes; it is controlled by the other alignment parameters.)
1286
 
1287
An unnamed bit-field will not affect the alignment of the containing
1288
structure.
1289
 
1290
If the macro is defined, its definition should be a C expression;
1291
a nonzero value for the expression enables this behavior.
1292
 
1293
Note that if this macro is not defined, or its value is zero, some
1294
bit-fields may cross more than one alignment boundary.  The compiler can
1295
support such references if there are @samp{insv}, @samp{extv}, and
1296
@samp{extzv} insns that can directly reference memory.
1297
 
1298
The other known way of making bit-fields work is to define
1299
@code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}.
1300
Then every structure can be accessed with fullwords.
1301
 
1302
Unless the machine has bit-field instructions or you define
1303
@code{STRUCTURE_SIZE_BOUNDARY} that way, you must define
1304
@code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value.
1305
 
1306
If your aim is to make GCC use the same conventions for laying out
1307
bit-fields as are used by another compiler, here is how to investigate
1308
what the other compiler does.  Compile and run this program:
1309
 
1310
@smallexample
1311
struct foo1
1312
@{
1313
  char x;
1314
  char :0;
1315
  char y;
1316
@};
1317
 
1318
struct foo2
1319
@{
1320
  char x;
1321
  int :0;
1322
  char y;
1323
@};
1324
 
1325
main ()
1326
@{
1327
  printf ("Size of foo1 is %d\n",
1328
          sizeof (struct foo1));
1329
  printf ("Size of foo2 is %d\n",
1330
          sizeof (struct foo2));
1331
  exit (0);
1332
@}
1333
@end smallexample
1334
 
1335
If this prints 2 and 5, then the compiler's behavior is what you would
1336
get from @code{PCC_BITFIELD_TYPE_MATTERS}.
1337
@end defmac
1338
 
1339
@defmac BITFIELD_NBYTES_LIMITED
1340
Like @code{PCC_BITFIELD_TYPE_MATTERS} except that its effect is limited
1341
to aligning a bit-field within the structure.
1342
@end defmac
1343
 
1344
@deftypefn {Target Hook} bool TARGET_ALIGN_ANON_BITFIELD (void)
1345
When @code{PCC_BITFIELD_TYPE_MATTERS} is true this hook will determine
1346
whether unnamed bitfields affect the alignment of the containing
1347
structure.  The hook should return true if the structure should inherit
1348
the alignment requirements of an unnamed bitfield's type.
1349
@end deftypefn
1350
 
1351
@deftypefn {Target Hook} bool TARGET_NARROW_VOLATILE_BITFIELD (void)
1352
This target hook should return @code{true} if accesses to volatile bitfields
1353
should use the narrowest mode possible.  It should return @code{false} if
1354
these accesses should use the bitfield container type.
1355
 
1356
The default is @code{!TARGET_STRICT_ALIGN}.
1357
@end deftypefn
1358
 
1359
@defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode})
1360
Return 1 if a structure or array containing @var{field} should be accessed using
1361
@code{BLKMODE}.
1362
 
1363
If @var{field} is the only field in the structure, @var{mode} is its
1364
mode, otherwise @var{mode} is VOIDmode.  @var{mode} is provided in the
1365
case where structures of one field would require the structure's mode to
1366
retain the field's mode.
1367
 
1368
Normally, this is not needed.
1369
@end defmac
1370
 
1371
@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified})
1372
Define this macro as an expression for the alignment of a type (given
1373
by @var{type} as a tree node) if the alignment computed in the usual
1374
way is @var{computed} and the alignment explicitly specified was
1375
@var{specified}.
1376
 
1377
The default is to use @var{specified} if it is larger; otherwise, use
1378
the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT}
1379
@end defmac
1380
 
1381
@defmac MAX_FIXED_MODE_SIZE
1382
An integer expression for the size in bits of the largest integer
1383
machine mode that should actually be used.  All integer machine modes of
1384
this size or smaller can be used for structures and unions with the
1385
appropriate sizes.  If this macro is undefined, @code{GET_MODE_BITSIZE
1386
(DImode)} is assumed.
1387
@end defmac
1388
 
1389
@defmac STACK_SAVEAREA_MODE (@var{save_level})
1390
If defined, an expression of type @code{enum machine_mode} that
1391
specifies the mode of the save area operand of a
1392
@code{save_stack_@var{level}} named pattern (@pxref{Standard Names}).
1393
@var{save_level} is one of @code{SAVE_BLOCK}, @code{SAVE_FUNCTION}, or
1394
@code{SAVE_NONLOCAL} and selects which of the three named patterns is
1395
having its mode specified.
1396
 
1397
You need not define this macro if it always returns @code{Pmode}.  You
1398
would most commonly define this macro if the
1399
@code{save_stack_@var{level}} patterns need to support both a 32- and a
1400
64-bit mode.
1401
@end defmac
1402
 
1403
@defmac STACK_SIZE_MODE
1404
If defined, an expression of type @code{enum machine_mode} that
1405
specifies the mode of the size increment operand of an
1406
@code{allocate_stack} named pattern (@pxref{Standard Names}).
1407
 
1408
You need not define this macro if it always returns @code{word_mode}.
1409
You would most commonly define this macro if the @code{allocate_stack}
1410
pattern needs to support both a 32- and a 64-bit mode.
1411
@end defmac
1412
 
1413
@deftypefn {Target Hook} {enum machine_mode} TARGET_LIBGCC_CMP_RETURN_MODE (void)
1414
This target hook should return the mode to be used for the return value
1415
of compare instructions expanded to libgcc calls.  If not defined
1416
@code{word_mode} is returned which is the right choice for a majority of
1417
targets.
1418
@end deftypefn
1419
 
1420
@deftypefn {Target Hook} {enum machine_mode} TARGET_LIBGCC_SHIFT_COUNT_MODE (void)
1421
This target hook should return the mode to be used for the shift count operand
1422
of shift instructions expanded to libgcc calls.  If not defined
1423
@code{word_mode} is returned which is the right choice for a majority of
1424
targets.
1425
@end deftypefn
1426
 
1427
@deftypefn {Target Hook} {enum machine_mode} TARGET_UNWIND_WORD_MODE (void)
1428
Return machine mode to be used for @code{_Unwind_Word} type.
1429
The default is to use @code{word_mode}.
1430
@end deftypefn
1431
 
1432
@defmac ROUND_TOWARDS_ZERO
1433
If defined, this macro should be true if the prevailing rounding
1434
mode is towards zero.
1435
 
1436
Defining this macro only affects the way @file{libgcc.a} emulates
1437
floating-point arithmetic.
1438
 
1439
Not defining this macro is equivalent to returning zero.
1440
@end defmac
1441
 
1442
@defmac LARGEST_EXPONENT_IS_NORMAL (@var{size})
1443
This macro should return true if floats with @var{size}
1444
bits do not have a NaN or infinity representation, but use the largest
1445
exponent for normal numbers instead.
1446
 
1447
Defining this macro only affects the way @file{libgcc.a} emulates
1448
floating-point arithmetic.
1449
 
1450
The default definition of this macro returns false for all sizes.
1451
@end defmac
1452
 
1453
@deftypefn {Target Hook} bool TARGET_MS_BITFIELD_LAYOUT_P (const_tree @var{record_type})
1454
This target hook returns @code{true} if bit-fields in the given
1455
@var{record_type} are to be laid out following the rules of Microsoft
1456
Visual C/C++, namely: (i) a bit-field won't share the same storage
1457
unit with the previous bit-field if their underlying types have
1458
different sizes, and the bit-field will be aligned to the highest
1459
alignment of the underlying types of itself and of the previous
1460
bit-field; (ii) a zero-sized bit-field will affect the alignment of
1461
the whole enclosing structure, even if it is unnamed; except that
1462
(iii) a zero-sized bit-field will be disregarded unless it follows
1463
another bit-field of nonzero size.  If this hook returns @code{true},
1464
other macros that control bit-field layout are ignored.
1465
 
1466
When a bit-field is inserted into a packed record, the whole size
1467
of the underlying type is used by one or more same-size adjacent
1468
bit-fields (that is, if its long:3, 32 bits is used in the record,
1469
and any additional adjacent long bit-fields are packed into the same
1470
chunk of 32 bits.  However, if the size changes, a new field of that
1471
size is allocated).  In an unpacked record, this is the same as using
1472
alignment, but not equivalent when packing.
1473
 
1474
If both MS bit-fields and @samp{__attribute__((packed))} are used,
1475
the latter will take precedence.  If @samp{__attribute__((packed))} is
1476
used on a single field when MS bit-fields are in use, it will take
1477
precedence for that field, but the alignment of the rest of the structure
1478
may affect its placement.
1479
@end deftypefn
1480
 
1481
@deftypefn {Target Hook} bool TARGET_DECIMAL_FLOAT_SUPPORTED_P (void)
1482
Returns true if the target supports decimal floating point.
1483
@end deftypefn
1484
 
1485
@deftypefn {Target Hook} bool TARGET_FIXED_POINT_SUPPORTED_P (void)
1486
Returns true if the target supports fixed-point arithmetic.
1487
@end deftypefn
1488
 
1489
@deftypefn {Target Hook} void TARGET_EXPAND_TO_RTL_HOOK (void)
1490
This hook is called just before expansion into rtl, allowing the target
1491
to perform additional initializations or analysis before the expansion.
1492
For example, the rs6000 port uses it to allocate a scratch stack slot
1493
for use in copying SDmode values between memory and floating point
1494
registers whenever the function being expanded has any SDmode
1495
usage.
1496
@end deftypefn
1497
 
1498
@deftypefn {Target Hook} void TARGET_INSTANTIATE_DECLS (void)
1499
This hook allows the backend to perform additional instantiations on rtl
1500
that are not actually in any insns yet, but will be later.
1501
@end deftypefn
1502
 
1503
@deftypefn {Target Hook} {const char *} TARGET_MANGLE_TYPE (const_tree @var{type})
1504
If your target defines any fundamental types, or any types your target
1505
uses should be mangled differently from the default, define this hook
1506
to return the appropriate encoding for these types as part of a C++
1507
mangled name.  The @var{type} argument is the tree structure representing
1508
the type to be mangled.  The hook may be applied to trees which are
1509
not target-specific fundamental types; it should return @code{NULL}
1510
for all such types, as well as arguments it does not recognize.  If the
1511
return value is not @code{NULL}, it must point to a statically-allocated
1512
string constant.
1513
 
1514
Target-specific fundamental types might be new fundamental types or
1515
qualified versions of ordinary fundamental types.  Encode new
1516
fundamental types as @samp{@w{u @var{n} @var{name}}}, where @var{name}
1517
is the name used for the type in source code, and @var{n} is the
1518
length of @var{name} in decimal.  Encode qualified versions of
1519
ordinary types as @samp{@w{U @var{n} @var{name} @var{code}}}, where
1520
@var{name} is the name used for the type qualifier in source code,
1521
@var{n} is the length of @var{name} as above, and @var{code} is the
1522
code used to represent the unqualified version of this type.  (See
1523
@code{write_builtin_type} in @file{cp/mangle.c} for the list of
1524
codes.)  In both cases the spaces are for clarity; do not include any
1525
spaces in your string.
1526
 
1527
This hook is applied to types prior to typedef resolution.  If the mangled
1528
name for a particular type depends only on that type's main variant, you
1529
can perform typedef resolution yourself using @code{TYPE_MAIN_VARIANT}
1530
before mangling.
1531
 
1532
The default version of this hook always returns @code{NULL}, which is
1533
appropriate for a target that does not define any new fundamental
1534
types.
1535
@end deftypefn
1536
 
1537
@node Type Layout
1538
@section Layout of Source Language Data Types
1539
 
1540
These macros define the sizes and other characteristics of the standard
1541
basic data types used in programs being compiled.  Unlike the macros in
1542
the previous section, these apply to specific features of C and related
1543
languages, rather than to fundamental aspects of storage layout.
1544
 
1545
@defmac INT_TYPE_SIZE
1546
A C expression for the size in bits of the type @code{int} on the
1547
target machine.  If you don't define this, the default is one word.
1548
@end defmac
1549
 
1550
@defmac SHORT_TYPE_SIZE
1551
A C expression for the size in bits of the type @code{short} on the
1552
target machine.  If you don't define this, the default is half a word.
1553
(If this would be less than one storage unit, it is rounded up to one
1554
unit.)
1555
@end defmac
1556
 
1557
@defmac LONG_TYPE_SIZE
1558
A C expression for the size in bits of the type @code{long} on the
1559
target machine.  If you don't define this, the default is one word.
1560
@end defmac
1561
 
1562
@defmac ADA_LONG_TYPE_SIZE
1563
On some machines, the size used for the Ada equivalent of the type
1564
@code{long} by a native Ada compiler differs from that used by C@.  In
1565
that situation, define this macro to be a C expression to be used for
1566
the size of that type.  If you don't define this, the default is the
1567
value of @code{LONG_TYPE_SIZE}.
1568
@end defmac
1569
 
1570
@defmac LONG_LONG_TYPE_SIZE
1571
A C expression for the size in bits of the type @code{long long} on the
1572
target machine.  If you don't define this, the default is two
1573
words.  If you want to support GNU Ada on your machine, the value of this
1574
macro must be at least 64.
1575
@end defmac
1576
 
1577
@defmac CHAR_TYPE_SIZE
1578
A C expression for the size in bits of the type @code{char} on the
1579
target machine.  If you don't define this, the default is
1580
@code{BITS_PER_UNIT}.
1581
@end defmac
1582
 
1583
@defmac BOOL_TYPE_SIZE
1584
A C expression for the size in bits of the C++ type @code{bool} and
1585
C99 type @code{_Bool} on the target machine.  If you don't define
1586
this, and you probably shouldn't, the default is @code{CHAR_TYPE_SIZE}.
1587
@end defmac
1588
 
1589
@defmac FLOAT_TYPE_SIZE
1590
A C expression for the size in bits of the type @code{float} on the
1591
target machine.  If you don't define this, the default is one word.
1592
@end defmac
1593
 
1594
@defmac DOUBLE_TYPE_SIZE
1595
A C expression for the size in bits of the type @code{double} on the
1596
target machine.  If you don't define this, the default is two
1597
words.
1598
@end defmac
1599
 
1600
@defmac LONG_DOUBLE_TYPE_SIZE
1601
A C expression for the size in bits of the type @code{long double} on
1602
the target machine.  If you don't define this, the default is two
1603
words.
1604
@end defmac
1605
 
1606
@defmac SHORT_FRACT_TYPE_SIZE
1607
A C expression for the size in bits of the type @code{short _Fract} on
1608
the target machine.  If you don't define this, the default is
1609
@code{BITS_PER_UNIT}.
1610
@end defmac
1611
 
1612
@defmac FRACT_TYPE_SIZE
1613
A C expression for the size in bits of the type @code{_Fract} on
1614
the target machine.  If you don't define this, the default is
1615
@code{BITS_PER_UNIT * 2}.
1616
@end defmac
1617
 
1618
@defmac LONG_FRACT_TYPE_SIZE
1619
A C expression for the size in bits of the type @code{long _Fract} on
1620
the target machine.  If you don't define this, the default is
1621
@code{BITS_PER_UNIT * 4}.
1622
@end defmac
1623
 
1624
@defmac LONG_LONG_FRACT_TYPE_SIZE
1625
A C expression for the size in bits of the type @code{long long _Fract} on
1626
the target machine.  If you don't define this, the default is
1627
@code{BITS_PER_UNIT * 8}.
1628
@end defmac
1629
 
1630
@defmac SHORT_ACCUM_TYPE_SIZE
1631
A C expression for the size in bits of the type @code{short _Accum} on
1632
the target machine.  If you don't define this, the default is
1633
@code{BITS_PER_UNIT * 2}.
1634
@end defmac
1635
 
1636
@defmac ACCUM_TYPE_SIZE
1637
A C expression for the size in bits of the type @code{_Accum} on
1638
the target machine.  If you don't define this, the default is
1639
@code{BITS_PER_UNIT * 4}.
1640
@end defmac
1641
 
1642
@defmac LONG_ACCUM_TYPE_SIZE
1643
A C expression for the size in bits of the type @code{long _Accum} on
1644
the target machine.  If you don't define this, the default is
1645
@code{BITS_PER_UNIT * 8}.
1646
@end defmac
1647
 
1648
@defmac LONG_LONG_ACCUM_TYPE_SIZE
1649
A C expression for the size in bits of the type @code{long long _Accum} on
1650
the target machine.  If you don't define this, the default is
1651
@code{BITS_PER_UNIT * 16}.
1652
@end defmac
1653
 
1654
@defmac LIBGCC2_LONG_DOUBLE_TYPE_SIZE
1655
Define this macro if @code{LONG_DOUBLE_TYPE_SIZE} is not constant or
1656
if you want routines in @file{libgcc2.a} for a size other than
1657
@code{LONG_DOUBLE_TYPE_SIZE}.  If you don't define this, the
1658
default is @code{LONG_DOUBLE_TYPE_SIZE}.
1659
@end defmac
1660
 
1661
@defmac LIBGCC2_HAS_DF_MODE
1662
Define this macro if neither @code{LIBGCC2_DOUBLE_TYPE_SIZE} nor
1663
@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is
1664
@code{DFmode} but you want @code{DFmode} routines in @file{libgcc2.a}
1665
anyway.  If you don't define this and either @code{LIBGCC2_DOUBLE_TYPE_SIZE}
1666
or @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64 then the default is 1,
1667
otherwise it is 0.
1668
@end defmac
1669
 
1670
@defmac LIBGCC2_HAS_XF_MODE
1671
Define this macro if @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is not
1672
@code{XFmode} but you want @code{XFmode} routines in @file{libgcc2.a}
1673
anyway.  If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE}
1674
is 80 then the default is 1, otherwise it is 0.
1675
@end defmac
1676
 
1677
@defmac LIBGCC2_HAS_TF_MODE
1678
Define this macro if @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is not
1679
@code{TFmode} but you want @code{TFmode} routines in @file{libgcc2.a}
1680
anyway.  If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE}
1681
is 128 then the default is 1, otherwise it is 0.
1682
@end defmac
1683
 
1684
@defmac SF_SIZE
1685
@defmacx DF_SIZE
1686
@defmacx XF_SIZE
1687
@defmacx TF_SIZE
1688
Define these macros to be the size in bits of the mantissa of
1689
@code{SFmode}, @code{DFmode}, @code{XFmode} and @code{TFmode} values,
1690
if the defaults in @file{libgcc2.h} are inappropriate.  By default,
1691
@code{FLT_MANT_DIG} is used for @code{SF_SIZE}, @code{LDBL_MANT_DIG}
1692
for @code{XF_SIZE} and @code{TF_SIZE}, and @code{DBL_MANT_DIG} or
1693
@code{LDBL_MANT_DIG} for @code{DF_SIZE} according to whether
1694
@code{LIBGCC2_DOUBLE_TYPE_SIZE} or
1695
@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64.
1696
@end defmac
1697
 
1698
@defmac TARGET_FLT_EVAL_METHOD
1699
A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h},
1700
assuming, if applicable, that the floating-point control word is in its
1701
default state.  If you do not define this macro the value of
1702
@code{FLT_EVAL_METHOD} will be zero.
1703
@end defmac
1704
 
1705
@defmac WIDEST_HARDWARE_FP_SIZE
1706
A C expression for the size in bits of the widest floating-point format
1707
supported by the hardware.  If you define this macro, you must specify a
1708
value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}.
1709
If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE}
1710
is the default.
1711
@end defmac
1712
 
1713
@defmac DEFAULT_SIGNED_CHAR
1714
An expression whose value is 1 or 0, according to whether the type
1715
@code{char} should be signed or unsigned by default.  The user can
1716
always override this default with the options @option{-fsigned-char}
1717
and @option{-funsigned-char}.
1718
@end defmac
1719
 
1720
@deftypefn {Target Hook} bool TARGET_DEFAULT_SHORT_ENUMS (void)
1721
This target hook should return true if the compiler should give an
1722
@code{enum} type only as many bytes as it takes to represent the range
1723
of possible values of that type.  It should return false if all
1724
@code{enum} types should be allocated like @code{int}.
1725
 
1726
The default is to return false.
1727
@end deftypefn
1728
 
1729
@defmac SIZE_TYPE
1730
A C expression for a string describing the name of the data type to use
1731
for size values.  The typedef name @code{size_t} is defined using the
1732
contents of the string.
1733
 
1734
The string can contain more than one keyword.  If so, separate them with
1735
spaces, and write first any length keyword, then @code{unsigned} if
1736
appropriate, and finally @code{int}.  The string must exactly match one
1737
of the data type names defined in the function
1738
@code{init_decl_processing} in the file @file{c-decl.c}.  You may not
1739
omit @code{int} or change the order---that would cause the compiler to
1740
crash on startup.
1741
 
1742
If you don't define this macro, the default is @code{"long unsigned
1743
int"}.
1744
@end defmac
1745
 
1746
@defmac PTRDIFF_TYPE
1747
A C expression for a string describing the name of the data type to use
1748
for the result of subtracting two pointers.  The typedef name
1749
@code{ptrdiff_t} is defined using the contents of the string.  See
1750
@code{SIZE_TYPE} above for more information.
1751
 
1752
If you don't define this macro, the default is @code{"long int"}.
1753
@end defmac
1754
 
1755
@defmac WCHAR_TYPE
1756
A C expression for a string describing the name of the data type to use
1757
for wide characters.  The typedef name @code{wchar_t} is defined using
1758
the contents of the string.  See @code{SIZE_TYPE} above for more
1759
information.
1760
 
1761
If you don't define this macro, the default is @code{"int"}.
1762
@end defmac
1763
 
1764
@defmac WCHAR_TYPE_SIZE
1765
A C expression for the size in bits of the data type for wide
1766
characters.  This is used in @code{cpp}, which cannot make use of
1767
@code{WCHAR_TYPE}.
1768
@end defmac
1769
 
1770
@defmac WINT_TYPE
1771
A C expression for a string describing the name of the data type to
1772
use for wide characters passed to @code{printf} and returned from
1773
@code{getwc}.  The typedef name @code{wint_t} is defined using the
1774
contents of the string.  See @code{SIZE_TYPE} above for more
1775
information.
1776
 
1777
If you don't define this macro, the default is @code{"unsigned int"}.
1778
@end defmac
1779
 
1780
@defmac INTMAX_TYPE
1781
A C expression for a string describing the name of the data type that
1782
can represent any value of any standard or extended signed integer type.
1783
The typedef name @code{intmax_t} is defined using the contents of the
1784
string.  See @code{SIZE_TYPE} above for more information.
1785
 
1786
If you don't define this macro, the default is the first of
1787
@code{"int"}, @code{"long int"}, or @code{"long long int"} that has as
1788
much precision as @code{long long int}.
1789
@end defmac
1790
 
1791
@defmac UINTMAX_TYPE
1792
A C expression for a string describing the name of the data type that
1793
can represent any value of any standard or extended unsigned integer
1794
type.  The typedef name @code{uintmax_t} is defined using the contents
1795
of the string.  See @code{SIZE_TYPE} above for more information.
1796
 
1797
If you don't define this macro, the default is the first of
1798
@code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long
1799
unsigned int"} that has as much precision as @code{long long unsigned
1800
int}.
1801
@end defmac
1802
 
1803
@defmac SIG_ATOMIC_TYPE
1804
@defmacx INT8_TYPE
1805
@defmacx INT16_TYPE
1806
@defmacx INT32_TYPE
1807
@defmacx INT64_TYPE
1808
@defmacx UINT8_TYPE
1809
@defmacx UINT16_TYPE
1810
@defmacx UINT32_TYPE
1811
@defmacx UINT64_TYPE
1812
@defmacx INT_LEAST8_TYPE
1813
@defmacx INT_LEAST16_TYPE
1814
@defmacx INT_LEAST32_TYPE
1815
@defmacx INT_LEAST64_TYPE
1816
@defmacx UINT_LEAST8_TYPE
1817
@defmacx UINT_LEAST16_TYPE
1818
@defmacx UINT_LEAST32_TYPE
1819
@defmacx UINT_LEAST64_TYPE
1820
@defmacx INT_FAST8_TYPE
1821
@defmacx INT_FAST16_TYPE
1822
@defmacx INT_FAST32_TYPE
1823
@defmacx INT_FAST64_TYPE
1824
@defmacx UINT_FAST8_TYPE
1825
@defmacx UINT_FAST16_TYPE
1826
@defmacx UINT_FAST32_TYPE
1827
@defmacx UINT_FAST64_TYPE
1828
@defmacx INTPTR_TYPE
1829
@defmacx UINTPTR_TYPE
1830
C expressions for the standard types @code{sig_atomic_t},
1831
@code{int8_t}, @code{int16_t}, @code{int32_t}, @code{int64_t},
1832
@code{uint8_t}, @code{uint16_t}, @code{uint32_t}, @code{uint64_t},
1833
@code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t},
1834
@code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t},
1835
@code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t},
1836
@code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t},
1837
@code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t},
1838
@code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t}.  See
1839
@code{SIZE_TYPE} above for more information.
1840
 
1841
If any of these macros evaluates to a null pointer, the corresponding
1842
type is not supported; if GCC is configured to provide
1843
@code{<stdint.h>} in such a case, the header provided may not conform
1844
to C99, depending on the type in question.  The defaults for all of
1845
these macros are null pointers.
1846
@end defmac
1847
 
1848
@defmac TARGET_PTRMEMFUNC_VBIT_LOCATION
1849
The C++ compiler represents a pointer-to-member-function with a struct
1850
that looks like:
1851
 
1852
@smallexample
1853
  struct @{
1854
    union @{
1855
      void (*fn)();
1856
      ptrdiff_t vtable_index;
1857
    @};
1858
    ptrdiff_t delta;
1859
  @};
1860
@end smallexample
1861
 
1862
@noindent
1863
The C++ compiler must use one bit to indicate whether the function that
1864
will be called through a pointer-to-member-function is virtual.
1865
Normally, we assume that the low-order bit of a function pointer must
1866
always be zero.  Then, by ensuring that the vtable_index is odd, we can
1867
distinguish which variant of the union is in use.  But, on some
1868
platforms function pointers can be odd, and so this doesn't work.  In
1869
that case, we use the low-order bit of the @code{delta} field, and shift
1870
the remainder of the @code{delta} field to the left.
1871
 
1872
GCC will automatically make the right selection about where to store
1873
this bit using the @code{FUNCTION_BOUNDARY} setting for your platform.
1874
However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY}
1875
set such that functions always start at even addresses, but the lowest
1876
bit of pointers to functions indicate whether the function at that
1877
address is in ARM or Thumb mode.  If this is the case of your
1878
architecture, you should define this macro to
1879
@code{ptrmemfunc_vbit_in_delta}.
1880
 
1881
In general, you should not have to define this macro.  On architectures
1882
in which function addresses are always even, according to
1883
@code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to
1884
@code{ptrmemfunc_vbit_in_pfn}.
1885
@end defmac
1886
 
1887
@defmac TARGET_VTABLE_USES_DESCRIPTORS
1888
Normally, the C++ compiler uses function pointers in vtables.  This
1889
macro allows the target to change to use ``function descriptors''
1890
instead.  Function descriptors are found on targets for whom a
1891
function pointer is actually a small data structure.  Normally the
1892
data structure consists of the actual code address plus a data
1893
pointer to which the function's data is relative.
1894
 
1895
If vtables are used, the value of this macro should be the number
1896
of words that the function descriptor occupies.
1897
@end defmac
1898
 
1899
@defmac TARGET_VTABLE_ENTRY_ALIGN
1900
By default, the vtable entries are void pointers, the so the alignment
1901
is the same as pointer alignment.  The value of this macro specifies
1902
the alignment of the vtable entry in bits.  It should be defined only
1903
when special alignment is necessary. */
1904
@end defmac
1905
 
1906
@defmac TARGET_VTABLE_DATA_ENTRY_DISTANCE
1907
There are a few non-descriptor entries in the vtable at offsets below
1908
zero.  If these entries must be padded (say, to preserve the alignment
1909
specified by @code{TARGET_VTABLE_ENTRY_ALIGN}), set this to the number
1910
of words in each data entry.
1911
@end defmac
1912
 
1913
@node Registers
1914
@section Register Usage
1915
@cindex register usage
1916
 
1917
This section explains how to describe what registers the target machine
1918
has, and how (in general) they can be used.
1919
 
1920
The description of which registers a specific instruction can use is
1921
done with register classes; see @ref{Register Classes}.  For information
1922
on using registers to access a stack frame, see @ref{Frame Registers}.
1923
For passing values in registers, see @ref{Register Arguments}.
1924
For returning values in registers, see @ref{Scalar Return}.
1925
 
1926
@menu
1927
* Register Basics::             Number and kinds of registers.
1928
* Allocation Order::            Order in which registers are allocated.
1929
* Values in Registers::         What kinds of values each reg can hold.
1930
* Leaf Functions::              Renumbering registers for leaf functions.
1931
* Stack Registers::             Handling a register stack such as 80387.
1932
@end menu
1933
 
1934
@node Register Basics
1935
@subsection Basic Characteristics of Registers
1936
 
1937
@c prevent bad page break with this line
1938
Registers have various characteristics.
1939
 
1940
@defmac FIRST_PSEUDO_REGISTER
1941
Number of hardware registers known to the compiler.  They receive
1942
numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first
1943
pseudo register's number really is assigned the number
1944
@code{FIRST_PSEUDO_REGISTER}.
1945
@end defmac
1946
 
1947
@defmac FIXED_REGISTERS
1948
@cindex fixed register
1949
An initializer that says which registers are used for fixed purposes
1950
all throughout the compiled code and are therefore not available for
1951
general allocation.  These would include the stack pointer, the frame
1952
pointer (except on machines where that can be used as a general
1953
register when no frame pointer is needed), the program counter on
1954
machines where that is considered one of the addressable registers,
1955
and any other numbered register with a standard use.
1956
 
1957
This information is expressed as a sequence of numbers, separated by
1958
commas and surrounded by braces.  The @var{n}th number is 1 if
1959
register @var{n} is fixed, 0 otherwise.
1960
 
1961
The table initialized from this macro, and the table initialized by
1962
the following one, may be overridden at run time either automatically,
1963
by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by
1964
the user with the command options @option{-ffixed-@var{reg}},
1965
@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}.
1966
@end defmac
1967
 
1968
@defmac CALL_USED_REGISTERS
1969
@cindex call-used register
1970
@cindex call-clobbered register
1971
@cindex call-saved register
1972
Like @code{FIXED_REGISTERS} but has 1 for each register that is
1973
clobbered (in general) by function calls as well as for fixed
1974
registers.  This macro therefore identifies the registers that are not
1975
available for general allocation of values that must live across
1976
function calls.
1977
 
1978
If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler
1979
automatically saves it on function entry and restores it on function
1980
exit, if the register is used within the function.
1981
@end defmac
1982
 
1983
@defmac CALL_REALLY_USED_REGISTERS
1984
@cindex call-used register
1985
@cindex call-clobbered register
1986
@cindex call-saved register
1987
Like @code{CALL_USED_REGISTERS} except this macro doesn't require
1988
that the entire set of @code{FIXED_REGISTERS} be included.
1989
(@code{CALL_USED_REGISTERS} must be a superset of @code{FIXED_REGISTERS}).
1990
This macro is optional.  If not specified, it defaults to the value
1991
of @code{CALL_USED_REGISTERS}.
1992
@end defmac
1993
 
1994
@defmac HARD_REGNO_CALL_PART_CLOBBERED (@var{regno}, @var{mode})
1995
@cindex call-used register
1996
@cindex call-clobbered register
1997
@cindex call-saved register
1998
A C expression that is nonzero if it is not permissible to store a
1999
value of mode @var{mode} in hard register number @var{regno} across a
2000
call without some part of it being clobbered.  For most machines this
2001
macro need not be defined.  It is only required for machines that do not
2002
preserve the entire contents of a register across a call.
2003
@end defmac
2004
 
2005
@findex fixed_regs
2006
@findex call_used_regs
2007
@findex global_regs
2008
@findex reg_names
2009
@findex reg_class_contents
2010
@defmac CONDITIONAL_REGISTER_USAGE
2011
Zero or more C statements that may conditionally modify five variables
2012
@code{fixed_regs}, @code{call_used_regs}, @code{global_regs},
2013
@code{reg_names}, and @code{reg_class_contents}, to take into account
2014
any dependence of these register sets on target flags.  The first three
2015
of these are of type @code{char []} (interpreted as Boolean vectors).
2016
@code{global_regs} is a @code{const char *[]}, and
2017
@code{reg_class_contents} is a @code{HARD_REG_SET}.  Before the macro is
2018
called, @code{fixed_regs}, @code{call_used_regs},
2019
@code{reg_class_contents}, and @code{reg_names} have been initialized
2020
from @code{FIXED_REGISTERS}, @code{CALL_USED_REGISTERS},
2021
@code{REG_CLASS_CONTENTS}, and @code{REGISTER_NAMES}, respectively.
2022
@code{global_regs} has been cleared, and any @option{-ffixed-@var{reg}},
2023
@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}
2024
command options have been applied.
2025
 
2026
You need not define this macro if it has no work to do.
2027
 
2028
@cindex disabling certain registers
2029
@cindex controlling register usage
2030
If the usage of an entire class of registers depends on the target
2031
flags, you may indicate this to GCC by using this macro to modify
2032
@code{fixed_regs} and @code{call_used_regs} to 1 for each of the
2033
registers in the classes which should not be used by GCC@.  Also define
2034
the macro @code{REG_CLASS_FROM_LETTER} / @code{REG_CLASS_FROM_CONSTRAINT}
2035
to return @code{NO_REGS} if it
2036
is called with a letter for a class that shouldn't be used.
2037
 
2038
(However, if this class is not included in @code{GENERAL_REGS} and all
2039
of the insn patterns whose constraints permit this class are
2040
controlled by target switches, then GCC will automatically avoid using
2041
these registers when the target switches are opposed to them.)
2042
@end defmac
2043
 
2044
@defmac INCOMING_REGNO (@var{out})
2045
Define this macro if the target machine has register windows.  This C
2046
expression returns the register number as seen by the called function
2047
corresponding to the register number @var{out} as seen by the calling
2048
function.  Return @var{out} if register number @var{out} is not an
2049
outbound register.
2050
@end defmac
2051
 
2052
@defmac OUTGOING_REGNO (@var{in})
2053
Define this macro if the target machine has register windows.  This C
2054
expression returns the register number as seen by the calling function
2055
corresponding to the register number @var{in} as seen by the called
2056
function.  Return @var{in} if register number @var{in} is not an inbound
2057
register.
2058
@end defmac
2059
 
2060
@defmac LOCAL_REGNO (@var{regno})
2061
Define this macro if the target machine has register windows.  This C
2062
expression returns true if the register is call-saved but is in the
2063
register window.  Unlike most call-saved registers, such registers
2064
need not be explicitly restored on function exit or during non-local
2065
gotos.
2066
@end defmac
2067
 
2068
@defmac PC_REGNUM
2069
If the program counter has a register number, define this as that
2070
register number.  Otherwise, do not define it.
2071
@end defmac
2072
 
2073
@node Allocation Order
2074
@subsection Order of Allocation of Registers
2075
@cindex order of register allocation
2076
@cindex register allocation order
2077
 
2078
@c prevent bad page break with this line
2079
Registers are allocated in order.
2080
 
2081
@defmac REG_ALLOC_ORDER
2082
If defined, an initializer for a vector of integers, containing the
2083
numbers of hard registers in the order in which GCC should prefer
2084
to use them (from most preferred to least).
2085
 
2086
If this macro is not defined, registers are used lowest numbered first
2087
(all else being equal).
2088
 
2089
One use of this macro is on machines where the highest numbered
2090
registers must always be saved and the save-multiple-registers
2091
instruction supports only sequences of consecutive registers.  On such
2092
machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists
2093
the highest numbered allocable register first.
2094
@end defmac
2095
 
2096
@defmac ORDER_REGS_FOR_LOCAL_ALLOC
2097
A C statement (sans semicolon) to choose the order in which to allocate
2098
hard registers for pseudo-registers local to a basic block.
2099
 
2100
Store the desired register order in the array @code{reg_alloc_order}.
2101
Element 0 should be the register to allocate first; element 1, the next
2102
register; and so on.
2103
 
2104
The macro body should not assume anything about the contents of
2105
@code{reg_alloc_order} before execution of the macro.
2106
 
2107
On most machines, it is not necessary to define this macro.
2108
@end defmac
2109
 
2110
@defmac IRA_HARD_REGNO_ADD_COST_MULTIPLIER (@var{regno})
2111
In some case register allocation order is not enough for the
2112
Integrated Register Allocator (@acronym{IRA}) to generate a good code.
2113
If this macro is defined, it should return a floating point value
2114
based on @var{regno}.  The cost of using @var{regno} for a pseudo will
2115
be increased by approximately the pseudo's usage frequency times the
2116
value returned by this macro.  Not defining this macro is equivalent
2117
to having it always return @code{0.0}.
2118
 
2119
On most machines, it is not necessary to define this macro.
2120
@end defmac
2121
 
2122
@node Values in Registers
2123
@subsection How Values Fit in Registers
2124
 
2125
This section discusses the macros that describe which kinds of values
2126
(specifically, which machine modes) each register can hold, and how many
2127
consecutive registers are needed for a given mode.
2128
 
2129
@defmac HARD_REGNO_NREGS (@var{regno}, @var{mode})
2130
A C expression for the number of consecutive hard registers, starting
2131
at register number @var{regno}, required to hold a value of mode
2132
@var{mode}.  This macro must never return zero, even if a register
2133
cannot hold the requested mode - indicate that with HARD_REGNO_MODE_OK
2134
and/or CANNOT_CHANGE_MODE_CLASS instead.
2135
 
2136
On a machine where all registers are exactly one word, a suitable
2137
definition of this macro is
2138
 
2139
@smallexample
2140
#define HARD_REGNO_NREGS(REGNO, MODE)            \
2141
   ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1)  \
2142
    / UNITS_PER_WORD)
2143
@end smallexample
2144
@end defmac
2145
 
2146
@defmac HARD_REGNO_NREGS_HAS_PADDING (@var{regno}, @var{mode})
2147
A C expression that is nonzero if a value of mode @var{mode}, stored
2148
in memory, ends with padding that causes it to take up more space than
2149
in registers starting at register number @var{regno} (as determined by
2150
multiplying GCC's notion of the size of the register when containing
2151
this mode by the number of registers returned by
2152
@code{HARD_REGNO_NREGS}).  By default this is zero.
2153
 
2154
For example, if a floating-point value is stored in three 32-bit
2155
registers but takes up 128 bits in memory, then this would be
2156
nonzero.
2157
 
2158
This macros only needs to be defined if there are cases where
2159
@code{subreg_get_info}
2160
would otherwise wrongly determine that a @code{subreg} can be
2161
represented by an offset to the register number, when in fact such a
2162
@code{subreg} would contain some of the padding not stored in
2163
registers and so not be representable.
2164
@end defmac
2165
 
2166
@defmac HARD_REGNO_NREGS_WITH_PADDING (@var{regno}, @var{mode})
2167
For values of @var{regno} and @var{mode} for which
2168
@code{HARD_REGNO_NREGS_HAS_PADDING} returns nonzero, a C expression
2169
returning the greater number of registers required to hold the value
2170
including any padding.  In the example above, the value would be four.
2171
@end defmac
2172
 
2173
@defmac REGMODE_NATURAL_SIZE (@var{mode})
2174
Define this macro if the natural size of registers that hold values
2175
of mode @var{mode} is not the word size.  It is a C expression that
2176
should give the natural size in bytes for the specified mode.  It is
2177
used by the register allocator to try to optimize its results.  This
2178
happens for example on SPARC 64-bit where the natural size of
2179
floating-point registers is still 32-bit.
2180
@end defmac
2181
 
2182
@defmac HARD_REGNO_MODE_OK (@var{regno}, @var{mode})
2183
A C expression that is nonzero if it is permissible to store a value
2184
of mode @var{mode} in hard register number @var{regno} (or in several
2185
registers starting with that one).  For a machine where all registers
2186
are equivalent, a suitable definition is
2187
 
2188
@smallexample
2189
#define HARD_REGNO_MODE_OK(REGNO, MODE) 1
2190
@end smallexample
2191
 
2192
You need not include code to check for the numbers of fixed registers,
2193
because the allocation mechanism considers them to be always occupied.
2194
 
2195
@cindex register pairs
2196
On some machines, double-precision values must be kept in even/odd
2197
register pairs.  You can implement that by defining this macro to reject
2198
odd register numbers for such modes.
2199
 
2200
The minimum requirement for a mode to be OK in a register is that the
2201
@samp{mov@var{mode}} instruction pattern support moves between the
2202
register and other hard register in the same class and that moving a
2203
value into the register and back out not alter it.
2204
 
2205
Since the same instruction used to move @code{word_mode} will work for
2206
all narrower integer modes, it is not necessary on any machine for
2207
@code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided
2208
you define patterns @samp{movhi}, etc., to take advantage of this.  This
2209
is useful because of the interaction between @code{HARD_REGNO_MODE_OK}
2210
and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes
2211
to be tieable.
2212
 
2213
Many machines have special registers for floating point arithmetic.
2214
Often people assume that floating point machine modes are allowed only
2215
in floating point registers.  This is not true.  Any registers that
2216
can hold integers can safely @emph{hold} a floating point machine
2217
mode, whether or not floating arithmetic can be done on it in those
2218
registers.  Integer move instructions can be used to move the values.
2219
 
2220
On some machines, though, the converse is true: fixed-point machine
2221
modes may not go in floating registers.  This is true if the floating
2222
registers normalize any value stored in them, because storing a
2223
non-floating value there would garble it.  In this case,
2224
@code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in
2225
floating registers.  But if the floating registers do not automatically
2226
normalize, if you can store any bit pattern in one and retrieve it
2227
unchanged without a trap, then any machine mode may go in a floating
2228
register, so you can define this macro to say so.
2229
 
2230
The primary significance of special floating registers is rather that
2231
they are the registers acceptable in floating point arithmetic
2232
instructions.  However, this is of no concern to
2233
@code{HARD_REGNO_MODE_OK}.  You handle it by writing the proper
2234
constraints for those instructions.
2235
 
2236
On some machines, the floating registers are especially slow to access,
2237
so that it is better to store a value in a stack frame than in such a
2238
register if floating point arithmetic is not being done.  As long as the
2239
floating registers are not in class @code{GENERAL_REGS}, they will not
2240
be used unless some pattern's constraint asks for one.
2241
@end defmac
2242
 
2243
@defmac HARD_REGNO_RENAME_OK (@var{from}, @var{to})
2244
A C expression that is nonzero if it is OK to rename a hard register
2245
@var{from} to another hard register @var{to}.
2246
 
2247
One common use of this macro is to prevent renaming of a register to
2248
another register that is not saved by a prologue in an interrupt
2249
handler.
2250
 
2251
The default is always nonzero.
2252
@end defmac
2253
 
2254
@defmac MODES_TIEABLE_P (@var{mode1}, @var{mode2})
2255
A C expression that is nonzero if a value of mode
2256
@var{mode1} is accessible in mode @var{mode2} without copying.
2257
 
2258
If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and
2259
@code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are always the same for
2260
any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1}, @var{mode2})}
2261
should be nonzero.  If they differ for any @var{r}, you should define
2262
this macro to return zero unless some other mechanism ensures the
2263
accessibility of the value in a narrower mode.
2264
 
2265
You should define this macro to return nonzero in as many cases as
2266
possible since doing so will allow GCC to perform better register
2267
allocation.
2268
@end defmac
2269
 
2270
@deftypefn {Target Hook} bool TARGET_HARD_REGNO_SCRATCH_OK (unsigned int @var{regno})
2271
This target hook should return @code{true} if it is OK to use a hard register
2272
@var{regno} as scratch reg in peephole2.
2273
 
2274
One common use of this macro is to prevent using of a register that
2275
is not saved by a prologue in an interrupt handler.
2276
 
2277
The default version of this hook always returns @code{true}.
2278
@end deftypefn
2279
 
2280
@defmac AVOID_CCMODE_COPIES
2281
Define this macro if the compiler should avoid copies to/from @code{CCmode}
2282
registers.  You should only define this macro if support for copying to/from
2283
@code{CCmode} is incomplete.
2284
@end defmac
2285
 
2286
@node Leaf Functions
2287
@subsection Handling Leaf Functions
2288
 
2289
@cindex leaf functions
2290
@cindex functions, leaf
2291
On some machines, a leaf function (i.e., one which makes no calls) can run
2292
more efficiently if it does not make its own register window.  Often this
2293
means it is required to receive its arguments in the registers where they
2294
are passed by the caller, instead of the registers where they would
2295
normally arrive.
2296
 
2297
The special treatment for leaf functions generally applies only when
2298
other conditions are met; for example, often they may use only those
2299
registers for its own variables and temporaries.  We use the term ``leaf
2300
function'' to mean a function that is suitable for this special
2301
handling, so that functions with no calls are not necessarily ``leaf
2302
functions''.
2303
 
2304
GCC assigns register numbers before it knows whether the function is
2305
suitable for leaf function treatment.  So it needs to renumber the
2306
registers in order to output a leaf function.  The following macros
2307
accomplish this.
2308
 
2309
@defmac LEAF_REGISTERS
2310
Name of a char vector, indexed by hard register number, which
2311
contains 1 for a register that is allowable in a candidate for leaf
2312
function treatment.
2313
 
2314
If leaf function treatment involves renumbering the registers, then the
2315
registers marked here should be the ones before renumbering---those that
2316
GCC would ordinarily allocate.  The registers which will actually be
2317
used in the assembler code, after renumbering, should not be marked with 1
2318
in this vector.
2319
 
2320
Define this macro only if the target machine offers a way to optimize
2321
the treatment of leaf functions.
2322
@end defmac
2323
 
2324
@defmac LEAF_REG_REMAP (@var{regno})
2325
A C expression whose value is the register number to which @var{regno}
2326
should be renumbered, when a function is treated as a leaf function.
2327
 
2328
If @var{regno} is a register number which should not appear in a leaf
2329
function before renumbering, then the expression should yield @minus{}1, which
2330
will cause the compiler to abort.
2331
 
2332
Define this macro only if the target machine offers a way to optimize the
2333
treatment of leaf functions, and registers need to be renumbered to do
2334
this.
2335
@end defmac
2336
 
2337
@findex current_function_is_leaf
2338
@findex current_function_uses_only_leaf_regs
2339
@code{TARGET_ASM_FUNCTION_PROLOGUE} and
2340
@code{TARGET_ASM_FUNCTION_EPILOGUE} must usually treat leaf functions
2341
specially.  They can test the C variable @code{current_function_is_leaf}
2342
which is nonzero for leaf functions.  @code{current_function_is_leaf} is
2343
set prior to local register allocation and is valid for the remaining
2344
compiler passes.  They can also test the C variable
2345
@code{current_function_uses_only_leaf_regs} which is nonzero for leaf
2346
functions which only use leaf registers.
2347
@code{current_function_uses_only_leaf_regs} is valid after all passes
2348
that modify the instructions have been run and is only useful if
2349
@code{LEAF_REGISTERS} is defined.
2350
@c changed this to fix overfull.  ALSO:  why the "it" at the beginning
2351
@c of the next paragraph?!  --mew 2feb93
2352
 
2353
@node Stack Registers
2354
@subsection Registers That Form a Stack
2355
 
2356
There are special features to handle computers where some of the
2357
``registers'' form a stack.  Stack registers are normally written by
2358
pushing onto the stack, and are numbered relative to the top of the
2359
stack.
2360
 
2361
Currently, GCC can only handle one group of stack-like registers, and
2362
they must be consecutively numbered.  Furthermore, the existing
2363
support for stack-like registers is specific to the 80387 floating
2364
point coprocessor.  If you have a new architecture that uses
2365
stack-like registers, you will need to do substantial work on
2366
@file{reg-stack.c} and write your machine description to cooperate
2367
with it, as well as defining these macros.
2368
 
2369
@defmac STACK_REGS
2370
Define this if the machine has any stack-like registers.
2371
@end defmac
2372
 
2373
@defmac STACK_REG_COVER_CLASS
2374
This is a cover class containing the stack registers.  Define this if
2375
the machine has any stack-like registers.
2376
@end defmac
2377
 
2378
@defmac FIRST_STACK_REG
2379
The number of the first stack-like register.  This one is the top
2380
of the stack.
2381
@end defmac
2382
 
2383
@defmac LAST_STACK_REG
2384
The number of the last stack-like register.  This one is the bottom of
2385
the stack.
2386
@end defmac
2387
 
2388
@node Register Classes
2389
@section Register Classes
2390
@cindex register class definitions
2391
@cindex class definitions, register
2392
 
2393
On many machines, the numbered registers are not all equivalent.
2394
For example, certain registers may not be allowed for indexed addressing;
2395
certain registers may not be allowed in some instructions.  These machine
2396
restrictions are described to the compiler using @dfn{register classes}.
2397
 
2398
You define a number of register classes, giving each one a name and saying
2399
which of the registers belong to it.  Then you can specify register classes
2400
that are allowed as operands to particular instruction patterns.
2401
 
2402
@findex ALL_REGS
2403
@findex NO_REGS
2404
In general, each register will belong to several classes.  In fact, one
2405
class must be named @code{ALL_REGS} and contain all the registers.  Another
2406
class must be named @code{NO_REGS} and contain no registers.  Often the
2407
union of two classes will be another class; however, this is not required.
2408
 
2409
@findex GENERAL_REGS
2410
One of the classes must be named @code{GENERAL_REGS}.  There is nothing
2411
terribly special about the name, but the operand constraint letters
2412
@samp{r} and @samp{g} specify this class.  If @code{GENERAL_REGS} is
2413
the same as @code{ALL_REGS}, just define it as a macro which expands
2414
to @code{ALL_REGS}.
2415
 
2416
Order the classes so that if class @var{x} is contained in class @var{y}
2417
then @var{x} has a lower class number than @var{y}.
2418
 
2419
The way classes other than @code{GENERAL_REGS} are specified in operand
2420
constraints is through machine-dependent operand constraint letters.
2421
You can define such letters to correspond to various classes, then use
2422
them in operand constraints.
2423
 
2424
You should define a class for the union of two classes whenever some
2425
instruction allows both classes.  For example, if an instruction allows
2426
either a floating point (coprocessor) register or a general register for a
2427
certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS}
2428
which includes both of them.  Otherwise you will get suboptimal code.
2429
 
2430
You must also specify certain redundant information about the register
2431
classes: for each class, which classes contain it and which ones are
2432
contained in it; for each pair of classes, the largest class contained
2433
in their union.
2434
 
2435
When a value occupying several consecutive registers is expected in a
2436
certain class, all the registers used must belong to that class.
2437
Therefore, register classes cannot be used to enforce a requirement for
2438
a register pair to start with an even-numbered register.  The way to
2439
specify this requirement is with @code{HARD_REGNO_MODE_OK}.
2440
 
2441
Register classes used for input-operands of bitwise-and or shift
2442
instructions have a special requirement: each such class must have, for
2443
each fixed-point machine mode, a subclass whose registers can transfer that
2444
mode to or from memory.  For example, on some machines, the operations for
2445
single-byte values (@code{QImode}) are limited to certain registers.  When
2446
this is so, each register class that is used in a bitwise-and or shift
2447
instruction must have a subclass consisting of registers from which
2448
single-byte values can be loaded or stored.  This is so that
2449
@code{PREFERRED_RELOAD_CLASS} can always have a possible value to return.
2450
 
2451
@deftp {Data type} {enum reg_class}
2452
An enumerated type that must be defined with all the register class names
2453
as enumerated values.  @code{NO_REGS} must be first.  @code{ALL_REGS}
2454
must be the last register class, followed by one more enumerated value,
2455
@code{LIM_REG_CLASSES}, which is not a register class but rather
2456
tells how many classes there are.
2457
 
2458
Each register class has a number, which is the value of casting
2459
the class name to type @code{int}.  The number serves as an index
2460
in many of the tables described below.
2461
@end deftp
2462
 
2463
@defmac N_REG_CLASSES
2464
The number of distinct register classes, defined as follows:
2465
 
2466
@smallexample
2467
#define N_REG_CLASSES (int) LIM_REG_CLASSES
2468
@end smallexample
2469
@end defmac
2470
 
2471
@defmac REG_CLASS_NAMES
2472
An initializer containing the names of the register classes as C string
2473
constants.  These names are used in writing some of the debugging dumps.
2474
@end defmac
2475
 
2476
@defmac REG_CLASS_CONTENTS
2477
An initializer containing the contents of the register classes, as integers
2478
which are bit masks.  The @var{n}th integer specifies the contents of class
2479
@var{n}.  The way the integer @var{mask} is interpreted is that
2480
register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1.
2481
 
2482
When the machine has more than 32 registers, an integer does not suffice.
2483
Then the integers are replaced by sub-initializers, braced groupings containing
2484
several integers.  Each sub-initializer must be suitable as an initializer
2485
for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}.
2486
In this situation, the first integer in each sub-initializer corresponds to
2487
registers 0 through 31, the second integer to registers 32 through 63, and
2488
so on.
2489
@end defmac
2490
 
2491
@defmac REGNO_REG_CLASS (@var{regno})
2492
A C expression whose value is a register class containing hard register
2493
@var{regno}.  In general there is more than one such class; choose a class
2494
which is @dfn{minimal}, meaning that no smaller class also contains the
2495
register.
2496
@end defmac
2497
 
2498
@defmac BASE_REG_CLASS
2499
A macro whose definition is the name of the class to which a valid
2500
base register must belong.  A base register is one used in an address
2501
which is the register value plus a displacement.
2502
@end defmac
2503
 
2504
@defmac MODE_BASE_REG_CLASS (@var{mode})
2505
This is a variation of the @code{BASE_REG_CLASS} macro which allows
2506
the selection of a base register in a mode dependent manner.  If
2507
@var{mode} is VOIDmode then it should return the same value as
2508
@code{BASE_REG_CLASS}.
2509
@end defmac
2510
 
2511
@defmac MODE_BASE_REG_REG_CLASS (@var{mode})
2512
A C expression whose value is the register class to which a valid
2513
base register must belong in order to be used in a base plus index
2514
register address.  You should define this macro if base plus index
2515
addresses have different requirements than other base register uses.
2516
@end defmac
2517
 
2518
@defmac MODE_CODE_BASE_REG_CLASS (@var{mode}, @var{outer_code}, @var{index_code})
2519
A C expression whose value is the register class to which a valid
2520
base register must belong.  @var{outer_code} and @var{index_code} define the
2521
context in which the base register occurs.  @var{outer_code} is the code of
2522
the immediately enclosing expression (@code{MEM} for the top level of an
2523
address, @code{ADDRESS} for something that occurs in an
2524
@code{address_operand}).  @var{index_code} is the code of the corresponding
2525
index expression if @var{outer_code} is @code{PLUS}; @code{SCRATCH} otherwise.
2526
@end defmac
2527
 
2528
@defmac INDEX_REG_CLASS
2529
A macro whose definition is the name of the class to which a valid
2530
index register must belong.  An index register is one used in an
2531
address where its value is either multiplied by a scale factor or
2532
added to another register (as well as added to a displacement).
2533
@end defmac
2534
 
2535
@defmac REGNO_OK_FOR_BASE_P (@var{num})
2536
A C expression which is nonzero if register number @var{num} is
2537
suitable for use as a base register in operand addresses.
2538
Like @code{TARGET_LEGITIMATE_ADDRESS_P}, this macro should also
2539
define a strict and a non-strict variant.  Both variants behave
2540
the same for hard register; for pseudos, the strict variant will
2541
pass only those that have been allocated to a valid hard registers,
2542
while the non-strict variant will pass all pseudos.
2543
 
2544
@findex REG_OK_STRICT
2545
Compiler source files that want to use the strict variant of this and
2546
other macros define the macro @code{REG_OK_STRICT}.  You should use an
2547
@code{#ifdef REG_OK_STRICT} conditional to define the strict variant in
2548
that case and the non-strict variant otherwise.
2549
@end defmac
2550
 
2551
@defmac REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode})
2552
A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that
2553
that expression may examine the mode of the memory reference in
2554
@var{mode}.  You should define this macro if the mode of the memory
2555
reference affects whether a register may be used as a base register.  If
2556
you define this macro, the compiler will use it instead of
2557
@code{REGNO_OK_FOR_BASE_P}.  The mode may be @code{VOIDmode} for
2558
addresses that appear outside a @code{MEM}, i.e., as an
2559
@code{address_operand}.
2560
 
2561
This macro also has strict and non-strict variants.
2562
@end defmac
2563
 
2564
@defmac REGNO_MODE_OK_FOR_REG_BASE_P (@var{num}, @var{mode})
2565
A C expression which is nonzero if register number @var{num} is suitable for
2566
use as a base register in base plus index operand addresses, accessing
2567
memory in mode @var{mode}.  It may be either a suitable hard register or a
2568
pseudo register that has been allocated such a hard register.  You should
2569
define this macro if base plus index addresses have different requirements
2570
than other base register uses.
2571
 
2572
Use of this macro is deprecated; please use the more general
2573
@code{REGNO_MODE_CODE_OK_FOR_BASE_P}.
2574
 
2575
This macro also has strict and non-strict variants.
2576
@end defmac
2577
 
2578
@defmac REGNO_MODE_CODE_OK_FOR_BASE_P (@var{num}, @var{mode}, @var{outer_code}, @var{index_code})
2579
A C expression that is just like @code{REGNO_MODE_OK_FOR_BASE_P}, except
2580
that that expression may examine the context in which the register
2581
appears in the memory reference.  @var{outer_code} is the code of the
2582
immediately enclosing expression (@code{MEM} if at the top level of the
2583
address, @code{ADDRESS} for something that occurs in an
2584
@code{address_operand}).  @var{index_code} is the code of the
2585
corresponding index expression if @var{outer_code} is @code{PLUS};
2586
@code{SCRATCH} otherwise.  The mode may be @code{VOIDmode} for addresses
2587
that appear outside a @code{MEM}, i.e., as an @code{address_operand}.
2588
 
2589
This macro also has strict and non-strict variants.
2590
@end defmac
2591
 
2592
@defmac REGNO_OK_FOR_INDEX_P (@var{num})
2593
A C expression which is nonzero if register number @var{num} is
2594
suitable for use as an index register in operand addresses.  It may be
2595
either a suitable hard register or a pseudo register that has been
2596
allocated such a hard register.
2597
 
2598
The difference between an index register and a base register is that
2599
the index register may be scaled.  If an address involves the sum of
2600
two registers, neither one of them scaled, then either one may be
2601
labeled the ``base'' and the other the ``index''; but whichever
2602
labeling is used must fit the machine's constraints of which registers
2603
may serve in each capacity.  The compiler will try both labelings,
2604
looking for one that is valid, and will reload one or both registers
2605
only if neither labeling works.
2606
 
2607
This macro also has strict and non-strict variants.
2608
@end defmac
2609
 
2610
@defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class})
2611
A C expression that places additional restrictions on the register class
2612
to use when it is necessary to copy value @var{x} into a register in class
2613
@var{class}.  The value is a register class; perhaps @var{class}, or perhaps
2614
another, smaller class.  On many machines, the following definition is
2615
safe:
2616
 
2617
@smallexample
2618
#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS
2619
@end smallexample
2620
 
2621
Sometimes returning a more restrictive class makes better code.  For
2622
example, on the 68000, when @var{x} is an integer constant that is in range
2623
for a @samp{moveq} instruction, the value of this macro is always
2624
@code{DATA_REGS} as long as @var{class} includes the data registers.
2625
Requiring a data register guarantees that a @samp{moveq} will be used.
2626
 
2627
One case where @code{PREFERRED_RELOAD_CLASS} must not return
2628
@var{class} is if @var{x} is a legitimate constant which cannot be
2629
loaded into some register class.  By returning @code{NO_REGS} you can
2630
force @var{x} into a memory location.  For example, rs6000 can load
2631
immediate values into general-purpose registers, but does not have an
2632
instruction for loading an immediate value into a floating-point
2633
register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when
2634
@var{x} is a floating-point constant.  If the constant can't be loaded
2635
into any kind of register, code generation will be better if
2636
@code{LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead
2637
of using @code{PREFERRED_RELOAD_CLASS}.
2638
 
2639
If an insn has pseudos in it after register allocation, reload will go
2640
through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS}
2641
to find the best one.  Returning @code{NO_REGS}, in this case, makes
2642
reload add a @code{!} in front of the constraint: the x86 back-end uses
2643
this feature to discourage usage of 387 registers when math is done in
2644
the SSE registers (and vice versa).
2645
@end defmac
2646
 
2647
@defmac PREFERRED_OUTPUT_RELOAD_CLASS (@var{x}, @var{class})
2648
Like @code{PREFERRED_RELOAD_CLASS}, but for output reloads instead of
2649
input reloads.  If you don't define this macro, the default is to use
2650
@var{class}, unchanged.
2651
 
2652
You can also use @code{PREFERRED_OUTPUT_RELOAD_CLASS} to discourage
2653
reload from using some alternatives, like @code{PREFERRED_RELOAD_CLASS}.
2654
@end defmac
2655
 
2656
@defmac LIMIT_RELOAD_CLASS (@var{mode}, @var{class})
2657
A C expression that places additional restrictions on the register class
2658
to use when it is necessary to be able to hold a value of mode
2659
@var{mode} in a reload register for which class @var{class} would
2660
ordinarily be used.
2661
 
2662
Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when
2663
there are certain modes that simply can't go in certain reload classes.
2664
 
2665
The value is a register class; perhaps @var{class}, or perhaps another,
2666
smaller class.
2667
 
2668
Don't define this macro unless the target machine has limitations which
2669
require the macro to do something nontrivial.
2670
@end defmac
2671
 
2672
@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})
2673
Many machines have some registers that cannot be copied directly to or
2674
from memory or even from other types of registers.  An example is the
2675
@samp{MQ} register, which on most machines, can only be copied to or
2676
from general registers, but not memory.  Below, we shall be using the
2677
term 'intermediate register' when a move operation cannot be performed
2678
directly, but has to be done by copying the source into the intermediate
2679
register first, and then copying the intermediate register to the
2680
destination.  An intermediate register always has the same mode as
2681
source and destination.  Since it holds the actual value being copied,
2682
reload might apply optimizations to re-use an intermediate register
2683
and eliding the copy from the source when it can determine that the
2684
intermediate register still holds the required value.
2685
 
2686
Another kind of secondary reload is required on some machines which
2687
allow copying all registers to and from memory, but require a scratch
2688
register for stores to some memory locations (e.g., those with symbolic
2689
address on the RT, and those with certain symbolic address on the SPARC
2690
when compiling PIC)@.  Scratch registers need not have the same mode
2691
as the value being copied, and usually hold a different value than
2692
that being copied.  Special patterns in the md file are needed to
2693
describe how the copy is performed with the help of the scratch register;
2694
these patterns also describe the number, register class(es) and mode(s)
2695
of the scratch register(s).
2696
 
2697
In some cases, both an intermediate and a scratch register are required.
2698
 
2699
For input reloads, this target hook is called with nonzero @var{in_p},
2700
and @var{x} is an rtx that needs to be copied to a register of class
2701
@var{reload_class} in @var{reload_mode}.  For output reloads, this target
2702
hook is called with zero @var{in_p}, and a register of class @var{reload_class}
2703
needs to be copied to rtx @var{x} in @var{reload_mode}.
2704
 
2705
If copying a register of @var{reload_class} from/to @var{x} requires
2706
an intermediate register, the hook @code{secondary_reload} should
2707
return the register class required for this intermediate register.
2708
If no intermediate register is required, it should return NO_REGS.
2709
If more than one intermediate register is required, describe the one
2710
that is closest in the copy chain to the reload register.
2711
 
2712
If scratch registers are needed, you also have to describe how to
2713
perform the copy from/to the reload register to/from this
2714
closest intermediate register.  Or if no intermediate register is
2715
required, but still a scratch register is needed, describe the
2716
copy  from/to the reload register to/from the reload operand @var{x}.
2717
 
2718
You do this by setting @code{sri->icode} to the instruction code of a pattern
2719
in the md file which performs the move.  Operands 0 and 1 are the output
2720
and input of this copy, respectively.  Operands from operand 2 onward are
2721
for scratch operands.  These scratch operands must have a mode, and a
2722
single-register-class
2723
@c [later: or memory]
2724
output constraint.
2725
 
2726
When an intermediate register is used, the @code{secondary_reload}
2727
hook will be called again to determine how to copy the intermediate
2728
register to/from the reload operand @var{x}, so your hook must also
2729
have code to handle the register class of the intermediate operand.
2730
 
2731
@c [For later: maybe we'll allow multi-alternative reload patterns -
2732
@c   the port maintainer could name a mov<mode> pattern that has clobbers -
2733
@c   and match the constraints of input and output to determine the required
2734
@c   alternative.  A restriction would be that constraints used to match
2735
@c   against reloads registers would have to be written as register class
2736
@c   constraints, or we need a new target macro / hook that tells us if an
2737
@c   arbitrary constraint can match an unknown register of a given class.
2738
@c   Such a macro / hook would also be useful in other places.]
2739
 
2740
 
2741
@var{x} might be a pseudo-register or a @code{subreg} of a
2742
pseudo-register, which could either be in a hard register or in memory.
2743
Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is
2744
in memory and the hard register number if it is in a register.
2745
 
2746
Scratch operands in memory (constraint @code{"=m"} / @code{"=&m"}) are
2747
currently not supported.  For the time being, you will have to continue
2748
to use @code{SECONDARY_MEMORY_NEEDED} for that purpose.
2749
 
2750
@code{copy_cost} also uses this target hook to find out how values are
2751
copied.  If you want it to include some extra cost for the need to allocate
2752
(a) scratch register(s), set @code{sri->extra_cost} to the additional cost.
2753
Or if two dependent moves are supposed to have a lower cost than the sum
2754
of the individual moves due to expected fortuitous scheduling and/or special
2755
forwarding logic, you can set @code{sri->extra_cost} to a negative amount.
2756
@end deftypefn
2757
 
2758
@defmac SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2759
@defmacx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2760
@defmacx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x})
2761
These macros are obsolete, new ports should use the target hook
2762
@code{TARGET_SECONDARY_RELOAD} instead.
2763
 
2764
These are obsolete macros, replaced by the @code{TARGET_SECONDARY_RELOAD}
2765
target hook.  Older ports still define these macros to indicate to the
2766
reload phase that it may
2767
need to allocate at least one register for a reload in addition to the
2768
register to contain the data.  Specifically, if copying @var{x} to a
2769
register @var{class} in @var{mode} requires an intermediate register,
2770
you were supposed to define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the
2771
largest register class all of whose registers can be used as
2772
intermediate registers or scratch registers.
2773
 
2774
If copying a register @var{class} in @var{mode} to @var{x} requires an
2775
intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS}
2776
was supposed to be defined be defined to return the largest register
2777
class required.  If the
2778
requirements for input and output reloads were the same, the macro
2779
@code{SECONDARY_RELOAD_CLASS} should have been used instead of defining both
2780
macros identically.
2781
 
2782
The values returned by these macros are often @code{GENERAL_REGS}.
2783
Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x}
2784
can be directly copied to or from a register of @var{class} in
2785
@var{mode} without requiring a scratch register.  Do not define this
2786
macro if it would always return @code{NO_REGS}.
2787
 
2788
If a scratch register is required (either with or without an
2789
intermediate register), you were supposed to define patterns for
2790
@samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required
2791
(@pxref{Standard Names}.  These patterns, which were normally
2792
implemented with a @code{define_expand}, should be similar to the
2793
@samp{mov@var{m}} patterns, except that operand 2 is the scratch
2794
register.
2795
 
2796
These patterns need constraints for the reload register and scratch
2797
register that
2798
contain a single register class.  If the original reload register (whose
2799
class is @var{class}) can meet the constraint given in the pattern, the
2800
value returned by these macros is used for the class of the scratch
2801
register.  Otherwise, two additional reload registers are required.
2802
Their classes are obtained from the constraints in the insn pattern.
2803
 
2804
@var{x} might be a pseudo-register or a @code{subreg} of a
2805
pseudo-register, which could either be in a hard register or in memory.
2806
Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is
2807
in memory and the hard register number if it is in a register.
2808
 
2809
These macros should not be used in the case where a particular class of
2810
registers can only be copied to memory and not to another class of
2811
registers.  In that case, secondary reload registers are not needed and
2812
would not be helpful.  Instead, a stack location must be used to perform
2813
the copy and the @code{mov@var{m}} pattern should use memory as an
2814
intermediate storage.  This case often occurs between floating-point and
2815
general registers.
2816
@end defmac
2817
 
2818
@defmac SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m})
2819
Certain machines have the property that some registers cannot be copied
2820
to some other registers without using memory.  Define this macro on
2821
those machines to be a C expression that is nonzero if objects of mode
2822
@var{m} in registers of @var{class1} can only be copied to registers of
2823
class @var{class2} by storing a register of @var{class1} into memory
2824
and loading that memory location into a register of @var{class2}.
2825
 
2826
Do not define this macro if its value would always be zero.
2827
@end defmac
2828
 
2829
@defmac SECONDARY_MEMORY_NEEDED_RTX (@var{mode})
2830
Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler
2831
allocates a stack slot for a memory location needed for register copies.
2832
If this macro is defined, the compiler instead uses the memory location
2833
defined by this macro.
2834
 
2835
Do not define this macro if you do not define
2836
@code{SECONDARY_MEMORY_NEEDED}.
2837
@end defmac
2838
 
2839
@defmac SECONDARY_MEMORY_NEEDED_MODE (@var{mode})
2840
When the compiler needs a secondary memory location to copy between two
2841
registers of mode @var{mode}, it normally allocates sufficient memory to
2842
hold a quantity of @code{BITS_PER_WORD} bits and performs the store and
2843
load operations in a mode that many bits wide and whose class is the
2844
same as that of @var{mode}.
2845
 
2846
This is right thing to do on most machines because it ensures that all
2847
bits of the register are copied and prevents accesses to the registers
2848
in a narrower mode, which some machines prohibit for floating-point
2849
registers.
2850
 
2851
However, this default behavior is not correct on some machines, such as
2852
the DEC Alpha, that store short integers in floating-point registers
2853
differently than in integer registers.  On those machines, the default
2854
widening will not work correctly and you must define this macro to
2855
suppress that widening in some cases.  See the file @file{alpha.h} for
2856
details.
2857
 
2858
Do not define this macro if you do not define
2859
@code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that
2860
is @code{BITS_PER_WORD} bits wide is correct for your machine.
2861
@end defmac
2862
 
2863
@defmac SMALL_REGISTER_CLASSES
2864
On some machines, it is risky to let hard registers live across arbitrary
2865
insns.  Typically, these machines have instructions that require values
2866
to be in specific registers (like an accumulator), and reload will fail
2867
if the required hard register is used for another purpose across such an
2868
insn.
2869
 
2870
Define @code{SMALL_REGISTER_CLASSES} to be an expression with a nonzero
2871
value on these machines.  When this macro has a nonzero value, the
2872
compiler will try to minimize the lifetime of hard registers.
2873
 
2874
It is always safe to define this macro with a nonzero value, but if you
2875
unnecessarily define it, you will reduce the amount of optimizations
2876
that can be performed in some cases.  If you do not define this macro
2877
with a nonzero value when it is required, the compiler will run out of
2878
spill registers and print a fatal error message.  For most machines, you
2879
should not define this macro at all.
2880
@end defmac
2881
 
2882
@defmac CLASS_LIKELY_SPILLED_P (@var{class})
2883
A C expression whose value is nonzero if pseudos that have been assigned
2884
to registers of class @var{class} would likely be spilled because
2885
registers of @var{class} are needed for spill registers.
2886
 
2887
The default value of this macro returns 1 if @var{class} has exactly one
2888
register and zero otherwise.  On most machines, this default should be
2889
used.  Only define this macro to some other expression if pseudos
2890
allocated by @file{local-alloc.c} end up in memory because their hard
2891
registers were needed for spill registers.  If this macro returns nonzero
2892
for those classes, those pseudos will only be allocated by
2893
@file{global.c}, which knows how to reallocate the pseudo to another
2894
register.  If there would not be another register available for
2895
reallocation, you should not change the definition of this macro since
2896
the only effect of such a definition would be to slow down register
2897
allocation.
2898
@end defmac
2899
 
2900
@defmac CLASS_MAX_NREGS (@var{class}, @var{mode})
2901
A C expression for the maximum number of consecutive registers
2902
of class @var{class} needed to hold a value of mode @var{mode}.
2903
 
2904
This is closely related to the macro @code{HARD_REGNO_NREGS}.  In fact,
2905
the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})}
2906
should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno},
2907
@var{mode})} for all @var{regno} values in the class @var{class}.
2908
 
2909
This macro helps control the handling of multiple-word values
2910
in the reload pass.
2911
@end defmac
2912
 
2913
@defmac CANNOT_CHANGE_MODE_CLASS (@var{from}, @var{to}, @var{class})
2914
If defined, a C expression that returns nonzero for a @var{class} for which
2915
a change from mode @var{from} to mode @var{to} is invalid.
2916
 
2917
For the example, loading 32-bit integer or floating-point objects into
2918
floating-point registers on the Alpha extends them to 64 bits.
2919
Therefore loading a 64-bit object and then storing it as a 32-bit object
2920
does not store the low-order 32 bits, as would be the case for a normal
2921
register.  Therefore, @file{alpha.h} defines @code{CANNOT_CHANGE_MODE_CLASS}
2922
as below:
2923
 
2924
@smallexample
2925
#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \
2926
  (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \
2927
   ? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0)
2928
@end smallexample
2929
@end defmac
2930
 
2931
@deftypefn {Target Hook} {const enum reg_class *} TARGET_IRA_COVER_CLASSES (void)
2932
Return an array of cover classes for the Integrated Register Allocator
2933
(@acronym{IRA}).  Cover classes are a set of non-intersecting register
2934
classes covering all hard registers used for register allocation
2935
purposes.  If a move between two registers in the same cover class is
2936
possible, it should be cheaper than a load or store of the registers.
2937
The array is terminated by a @code{LIM_REG_CLASSES} element.
2938
 
2939
The order of cover classes in the array is important.  If two classes
2940
have the same cost of usage for a pseudo, the class occurred first in
2941
the array is chosen for the pseudo.
2942
 
2943
This hook is called once at compiler startup, after the command-line
2944
options have been processed. It is then re-examined by every call to
2945
@code{target_reinit}.
2946
 
2947
The default implementation returns @code{IRA_COVER_CLASSES}, if defined,
2948
otherwise there is no default implementation.  You must define either this
2949
macro or @code{IRA_COVER_CLASSES} in order to use the integrated register
2950
allocator with Chaitin-Briggs coloring. If the macro is not defined,
2951
the only available coloring algorithm is Chow's priority coloring.
2952
@end deftypefn
2953
 
2954
@defmac IRA_COVER_CLASSES
2955
See the documentation for @code{TARGET_IRA_COVER_CLASSES}.
2956
@end defmac
2957
 
2958
@node Old Constraints
2959
@section Obsolete Macros for Defining Constraints
2960
@cindex defining constraints, obsolete method
2961
@cindex constraints, defining, obsolete method
2962
 
2963
Machine-specific constraints can be defined with these macros instead
2964
of the machine description constructs described in @ref{Define
2965
Constraints}.  This mechanism is obsolete.  New ports should not use
2966
it; old ports should convert to the new mechanism.
2967
 
2968
@defmac CONSTRAINT_LEN (@var{char}, @var{str})
2969
For the constraint at the start of @var{str}, which starts with the letter
2970
@var{c}, return the length.  This allows you to have register class /
2971
constant / extra constraints that are longer than a single letter;
2972
you don't need to define this macro if you can do with single-letter
2973
constraints only.  The definition of this macro should use
2974
DEFAULT_CONSTRAINT_LEN for all the characters that you don't want
2975
to handle specially.
2976
There are some sanity checks in genoutput.c that check the constraint lengths
2977
for the md file, so you can also use this macro to help you while you are
2978
transitioning from a byzantine single-letter-constraint scheme: when you
2979
return a negative length for a constraint you want to re-use, genoutput
2980
will complain about every instance where it is used in the md file.
2981
@end defmac
2982
 
2983
@defmac REG_CLASS_FROM_LETTER (@var{char})
2984
A C expression which defines the machine-dependent operand constraint
2985
letters for register classes.  If @var{char} is such a letter, the
2986
value should be the register class corresponding to it.  Otherwise,
2987
the value should be @code{NO_REGS}.  The register letter @samp{r},
2988
corresponding to class @code{GENERAL_REGS}, will not be passed
2989
to this macro; you do not need to handle it.
2990
@end defmac
2991
 
2992
@defmac REG_CLASS_FROM_CONSTRAINT (@var{char}, @var{str})
2993
Like @code{REG_CLASS_FROM_LETTER}, but you also get the constraint string
2994
passed in @var{str}, so that you can use suffixes to distinguish between
2995
different variants.
2996
@end defmac
2997
 
2998
@defmac CONST_OK_FOR_LETTER_P (@var{value}, @var{c})
2999
A C expression that defines the machine-dependent operand constraint
3000
letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify
3001
particular ranges of integer values.  If @var{c} is one of those
3002
letters, the expression should check that @var{value}, an integer, is in
3003
the appropriate range and return 1 if so, 0 otherwise.  If @var{c} is
3004
not one of those letters, the value should be 0 regardless of
3005
@var{value}.
3006
@end defmac
3007
 
3008
@defmac CONST_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str})
3009
Like @code{CONST_OK_FOR_LETTER_P}, but you also get the constraint
3010
string passed in @var{str}, so that you can use suffixes to distinguish
3011
between different variants.
3012
@end defmac
3013
 
3014
@defmac CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c})
3015
A C expression that defines the machine-dependent operand constraint
3016
letters that specify particular ranges of @code{const_double} values
3017
(@samp{G} or @samp{H}).
3018
 
3019
If @var{c} is one of those letters, the expression should check that
3020
@var{value}, an RTX of code @code{const_double}, is in the appropriate
3021
range and return 1 if so, 0 otherwise.  If @var{c} is not one of those
3022
letters, the value should be 0 regardless of @var{value}.
3023
 
3024
@code{const_double} is used for all floating-point constants and for
3025
@code{DImode} fixed-point constants.  A given letter can accept either
3026
or both kinds of values.  It can use @code{GET_MODE} to distinguish
3027
between these kinds.
3028
@end defmac
3029
 
3030
@defmac CONST_DOUBLE_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str})
3031
Like @code{CONST_DOUBLE_OK_FOR_LETTER_P}, but you also get the constraint
3032
string passed in @var{str}, so that you can use suffixes to distinguish
3033
between different variants.
3034
@end defmac
3035
 
3036
@defmac EXTRA_CONSTRAINT (@var{value}, @var{c})
3037
A C expression that defines the optional machine-dependent constraint
3038
letters that can be used to segregate specific types of operands, usually
3039
memory references, for the target machine.  Any letter that is not
3040
elsewhere defined and not matched by @code{REG_CLASS_FROM_LETTER} /
3041
@code{REG_CLASS_FROM_CONSTRAINT}
3042
may be used.  Normally this macro will not be defined.
3043
 
3044
If it is required for a particular target machine, it should return 1
3045
if @var{value} corresponds to the operand type represented by the
3046
constraint letter @var{c}.  If @var{c} is not defined as an extra
3047
constraint, the value returned should be 0 regardless of @var{value}.
3048
 
3049
For example, on the ROMP, load instructions cannot have their output
3050
in r0 if the memory reference contains a symbolic address.  Constraint
3051
letter @samp{Q} is defined as representing a memory address that does
3052
@emph{not} contain a symbolic address.  An alternative is specified with
3053
a @samp{Q} constraint on the input and @samp{r} on the output.  The next
3054
alternative specifies @samp{m} on the input and a register class that
3055
does not include r0 on the output.
3056
@end defmac
3057
 
3058
@defmac EXTRA_CONSTRAINT_STR (@var{value}, @var{c}, @var{str})
3059
Like @code{EXTRA_CONSTRAINT}, but you also get the constraint string passed
3060
in @var{str}, so that you can use suffixes to distinguish between different
3061
variants.
3062
@end defmac
3063
 
3064
@defmac EXTRA_MEMORY_CONSTRAINT (@var{c}, @var{str})
3065
A C expression that defines the optional machine-dependent constraint
3066
letters, amongst those accepted by @code{EXTRA_CONSTRAINT}, that should
3067
be treated like memory constraints by the reload pass.
3068
 
3069
It should return 1 if the operand type represented by the constraint
3070
at the start of @var{str}, the first letter of which is the letter @var{c},
3071
comprises a subset of all memory references including
3072
all those whose address is simply a base register.  This allows the reload
3073
pass to reload an operand, if it does not directly correspond to the operand
3074
type of @var{c}, by copying its address into a base register.
3075
 
3076
For example, on the S/390, some instructions do not accept arbitrary
3077
memory references, but only those that do not make use of an index
3078
register.  The constraint letter @samp{Q} is defined via
3079
@code{EXTRA_CONSTRAINT} as representing a memory address of this type.
3080
If the letter @samp{Q} is marked as @code{EXTRA_MEMORY_CONSTRAINT},
3081
a @samp{Q} constraint can handle any memory operand, because the
3082
reload pass knows it can be reloaded by copying the memory address
3083
into a base register if required.  This is analogous to the way
3084
an @samp{o} constraint can handle any memory operand.
3085
@end defmac
3086
 
3087
@defmac EXTRA_ADDRESS_CONSTRAINT (@var{c}, @var{str})
3088
A C expression that defines the optional machine-dependent constraint
3089
letters, amongst those accepted by @code{EXTRA_CONSTRAINT} /
3090
@code{EXTRA_CONSTRAINT_STR}, that should
3091
be treated like address constraints by the reload pass.
3092
 
3093
It should return 1 if the operand type represented by the constraint
3094
at the start of @var{str}, which starts with the letter @var{c}, comprises
3095
a subset of all memory addresses including
3096
all those that consist of just a base register.  This allows the reload
3097
pass to reload an operand, if it does not directly correspond to the operand
3098
type of @var{str}, by copying it into a base register.
3099
 
3100
Any constraint marked as @code{EXTRA_ADDRESS_CONSTRAINT} can only
3101
be used with the @code{address_operand} predicate.  It is treated
3102
analogously to the @samp{p} constraint.
3103
@end defmac
3104
 
3105
@node Stack and Calling
3106
@section Stack Layout and Calling Conventions
3107
@cindex calling conventions
3108
 
3109
@c prevent bad page break with this line
3110
This describes the stack layout and calling conventions.
3111
 
3112
@menu
3113
* Frame Layout::
3114
* Exception Handling::
3115
* Stack Checking::
3116
* Frame Registers::
3117
* Elimination::
3118
* Stack Arguments::
3119
* Register Arguments::
3120
* Scalar Return::
3121
* Aggregate Return::
3122
* Caller Saves::
3123
* Function Entry::
3124
* Profiling::
3125
* Tail Calls::
3126
* Stack Smashing Protection::
3127
@end menu
3128
 
3129
@node Frame Layout
3130
@subsection Basic Stack Layout
3131
@cindex stack frame layout
3132
@cindex frame layout
3133
 
3134
@c prevent bad page break with this line
3135
Here is the basic stack layout.
3136
 
3137
@defmac STACK_GROWS_DOWNWARD
3138
Define this macro if pushing a word onto the stack moves the stack
3139
pointer to a smaller address.
3140
 
3141
When we say, ``define this macro if @dots{}'', it means that the
3142
compiler checks this macro only with @code{#ifdef} so the precise
3143
definition used does not matter.
3144
@end defmac
3145
 
3146
@defmac STACK_PUSH_CODE
3147
This macro defines the operation used when something is pushed
3148
on the stack.  In RTL, a push operation will be
3149
@code{(set (mem (STACK_PUSH_CODE (reg sp))) @dots{})}
3150
 
3151
The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC},
3152
and @code{POST_INC}.  Which of these is correct depends on
3153
the stack direction and on whether the stack pointer points
3154
to the last item on the stack or whether it points to the
3155
space for the next item on the stack.
3156
 
3157
The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is
3158
defined, which is almost always right, and @code{PRE_INC} otherwise,
3159
which is often wrong.
3160
@end defmac
3161
 
3162
@defmac FRAME_GROWS_DOWNWARD
3163
Define this macro to nonzero value if the addresses of local variable slots
3164
are at negative offsets from the frame pointer.
3165
@end defmac
3166
 
3167
@defmac ARGS_GROW_DOWNWARD
3168
Define this macro if successive arguments to a function occupy decreasing
3169
addresses on the stack.
3170
@end defmac
3171
 
3172
@defmac STARTING_FRAME_OFFSET
3173
Offset from the frame pointer to the first local variable slot to be allocated.
3174
 
3175
If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by
3176
subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}.
3177
Otherwise, it is found by adding the length of the first slot to the
3178
value @code{STARTING_FRAME_OFFSET}.
3179
@c i'm not sure if the above is still correct.. had to change it to get
3180
@c rid of an overfull.  --mew 2feb93
3181
@end defmac
3182
 
3183
@defmac STACK_ALIGNMENT_NEEDED
3184
Define to zero to disable final alignment of the stack during reload.
3185
The nonzero default for this macro is suitable for most ports.
3186
 
3187
On ports where @code{STARTING_FRAME_OFFSET} is nonzero or where there
3188
is a register save block following the local block that doesn't require
3189
alignment to @code{STACK_BOUNDARY}, it may be beneficial to disable
3190
stack alignment and do it in the backend.
3191
@end defmac
3192
 
3193
@defmac STACK_POINTER_OFFSET
3194
Offset from the stack pointer register to the first location at which
3195
outgoing arguments are placed.  If not specified, the default value of
3196
zero is used.  This is the proper value for most machines.
3197
 
3198
If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
3199
the first location at which outgoing arguments are placed.
3200
@end defmac
3201
 
3202
@defmac FIRST_PARM_OFFSET (@var{fundecl})
3203
Offset from the argument pointer register to the first argument's
3204
address.  On some machines it may depend on the data type of the
3205
function.
3206
 
3207
If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above
3208
the first argument's address.
3209
@end defmac
3210
 
3211
@defmac STACK_DYNAMIC_OFFSET (@var{fundecl})
3212
Offset from the stack pointer register to an item dynamically allocated
3213
on the stack, e.g., by @code{alloca}.
3214
 
3215
The default value for this macro is @code{STACK_POINTER_OFFSET} plus the
3216
length of the outgoing arguments.  The default is correct for most
3217
machines.  See @file{function.c} for details.
3218
@end defmac
3219
 
3220
@defmac INITIAL_FRAME_ADDRESS_RTX
3221
A C expression whose value is RTL representing the address of the initial
3222
stack frame. This address is passed to @code{RETURN_ADDR_RTX} and
3223
@code{DYNAMIC_CHAIN_ADDRESS}.  If you don't define this macro, a reasonable
3224
default value will be used.  Define this macro in order to make frame pointer
3225
elimination work in the presence of @code{__builtin_frame_address (count)} and
3226
@code{__builtin_return_address (count)} for @code{count} not equal to zero.
3227
@end defmac
3228
 
3229
@defmac DYNAMIC_CHAIN_ADDRESS (@var{frameaddr})
3230
A C expression whose value is RTL representing the address in a stack
3231
frame where the pointer to the caller's frame is stored.  Assume that
3232
@var{frameaddr} is an RTL expression for the address of the stack frame
3233
itself.
3234
 
3235
If you don't define this macro, the default is to return the value
3236
of @var{frameaddr}---that is, the stack frame address is also the
3237
address of the stack word that points to the previous frame.
3238
@end defmac
3239
 
3240
@defmac SETUP_FRAME_ADDRESSES
3241
If defined, a C expression that produces the machine-specific code to
3242
setup the stack so that arbitrary frames can be accessed.  For example,
3243
on the SPARC, we must flush all of the register windows to the stack
3244
before we can access arbitrary stack frames.  You will seldom need to
3245
define this macro.
3246
@end defmac
3247
 
3248
@deftypefn {Target Hook} rtx TARGET_BUILTIN_SETJMP_FRAME_VALUE (void)
3249
This target hook should return an rtx that is used to store
3250
the address of the current frame into the built in @code{setjmp} buffer.
3251
The default value, @code{virtual_stack_vars_rtx}, is correct for most
3252
machines.  One reason you may need to define this target hook is if
3253
@code{hard_frame_pointer_rtx} is the appropriate value on your machine.
3254
@end deftypefn
3255
 
3256
@defmac FRAME_ADDR_RTX (@var{frameaddr})
3257
A C expression whose value is RTL representing the value of the frame
3258
address for the current frame.  @var{frameaddr} is the frame pointer
3259
of the current frame.  This is used for __builtin_frame_address.
3260
You need only define this macro if the frame address is not the same
3261
as the frame pointer.  Most machines do not need to define it.
3262
@end defmac
3263
 
3264
@defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr})
3265
A C expression whose value is RTL representing the value of the return
3266
address for the frame @var{count} steps up from the current frame, after
3267
the prologue.  @var{frameaddr} is the frame pointer of the @var{count}
3268
frame, or the frame pointer of the @var{count} @minus{} 1 frame if
3269
@code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined.
3270
 
3271
The value of the expression must always be the correct address when
3272
@var{count} is zero, but may be @code{NULL_RTX} if there is no way to
3273
determine the return address of other frames.
3274
@end defmac
3275
 
3276
@defmac RETURN_ADDR_IN_PREVIOUS_FRAME
3277
Define this if the return address of a particular stack frame is accessed
3278
from the frame pointer of the previous stack frame.
3279
@end defmac
3280
 
3281
@defmac INCOMING_RETURN_ADDR_RTX
3282
A C expression whose value is RTL representing the location of the
3283
incoming return address at the beginning of any function, before the
3284
prologue.  This RTL is either a @code{REG}, indicating that the return
3285
value is saved in @samp{REG}, or a @code{MEM} representing a location in
3286
the stack.
3287
 
3288
You only need to define this macro if you want to support call frame
3289
debugging information like that provided by DWARF 2.
3290
 
3291
If this RTL is a @code{REG}, you should also define
3292
@code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}.
3293
@end defmac
3294
 
3295
@defmac DWARF_ALT_FRAME_RETURN_COLUMN
3296
A C expression whose value is an integer giving a DWARF 2 column
3297
number that may be used as an alternative return column.  The column
3298
must not correspond to any gcc hard register (that is, it must not
3299
be in the range of @code{DWARF_FRAME_REGNUM}).
3300
 
3301
This macro can be useful if @code{DWARF_FRAME_RETURN_COLUMN} is set to a
3302
general register, but an alternative column needs to be used for signal
3303
frames.  Some targets have also used different frame return columns
3304
over time.
3305
@end defmac
3306
 
3307
@defmac DWARF_ZERO_REG
3308
A C expression whose value is an integer giving a DWARF 2 register
3309
number that is considered to always have the value zero.  This should
3310
only be defined if the target has an architected zero register, and
3311
someone decided it was a good idea to use that register number to
3312
terminate the stack backtrace.  New ports should avoid this.
3313
@end defmac
3314
 
3315
@deftypefn {Target Hook} void TARGET_DWARF_HANDLE_FRAME_UNSPEC (const char *@var{label}, rtx @var{pattern}, int @var{index})
3316
This target hook allows the backend to emit frame-related insns that
3317
contain UNSPECs or UNSPEC_VOLATILEs.  The DWARF 2 call frame debugging
3318
info engine will invoke it on insns of the form
3319
@smallexample
3320
(set (reg) (unspec [@dots{}] UNSPEC_INDEX))
3321
@end smallexample
3322
and
3323
@smallexample
3324
(set (reg) (unspec_volatile [@dots{}] UNSPECV_INDEX)).
3325
@end smallexample
3326
to let the backend emit the call frame instructions.  @var{label} is
3327
the CFI label attached to the insn, @var{pattern} is the pattern of
3328
the insn and @var{index} is @code{UNSPEC_INDEX} or @code{UNSPECV_INDEX}.
3329
@end deftypefn
3330
 
3331
@defmac INCOMING_FRAME_SP_OFFSET
3332
A C expression whose value is an integer giving the offset, in bytes,
3333
from the value of the stack pointer register to the top of the stack
3334
frame at the beginning of any function, before the prologue.  The top of
3335
the frame is defined to be the value of the stack pointer in the
3336
previous frame, just before the call instruction.
3337
 
3338
You only need to define this macro if you want to support call frame
3339
debugging information like that provided by DWARF 2.
3340
@end defmac
3341
 
3342
@defmac ARG_POINTER_CFA_OFFSET (@var{fundecl})
3343
A C expression whose value is an integer giving the offset, in bytes,
3344
from the argument pointer to the canonical frame address (cfa).  The
3345
final value should coincide with that calculated by
3346
@code{INCOMING_FRAME_SP_OFFSET}.  Which is unfortunately not usable
3347
during virtual register instantiation.
3348
 
3349
The default value for this macro is
3350
@code{FIRST_PARM_OFFSET (fundecl) + crtl->args.pretend_args_size},
3351
which is correct for most machines; in general, the arguments are found
3352
immediately before the stack frame.  Note that this is not the case on
3353
some targets that save registers into the caller's frame, such as SPARC
3354
and rs6000, and so such targets need to define this macro.
3355
 
3356
You only need to define this macro if the default is incorrect, and you
3357
want to support call frame debugging information like that provided by
3358
DWARF 2.
3359
@end defmac
3360
 
3361
@defmac FRAME_POINTER_CFA_OFFSET (@var{fundecl})
3362
If defined, a C expression whose value is an integer giving the offset
3363
in bytes from the frame pointer to the canonical frame address (cfa).
3364
The final value should coincide with that calculated by
3365
@code{INCOMING_FRAME_SP_OFFSET}.
3366
 
3367
Normally the CFA is calculated as an offset from the argument pointer,
3368
via @code{ARG_POINTER_CFA_OFFSET}, but if the argument pointer is
3369
variable due to the ABI, this may not be possible.  If this macro is
3370
defined, it implies that the virtual register instantiation should be
3371
based on the frame pointer instead of the argument pointer.  Only one
3372
of @code{FRAME_POINTER_CFA_OFFSET} and @code{ARG_POINTER_CFA_OFFSET}
3373
should be defined.
3374
@end defmac
3375
 
3376
@defmac CFA_FRAME_BASE_OFFSET (@var{fundecl})
3377
If defined, a C expression whose value is an integer giving the offset
3378
in bytes from the canonical frame address (cfa) to the frame base used
3379
in DWARF 2 debug information.  The default is zero.  A different value
3380
may reduce the size of debug information on some ports.
3381
@end defmac
3382
 
3383
@node Exception Handling
3384
@subsection Exception Handling Support
3385
@cindex exception handling
3386
 
3387
@defmac EH_RETURN_DATA_REGNO (@var{N})
3388
A C expression whose value is the @var{N}th register number used for
3389
data by exception handlers, or @code{INVALID_REGNUM} if fewer than
3390
@var{N} registers are usable.
3391
 
3392
The exception handling library routines communicate with the exception
3393
handlers via a set of agreed upon registers.  Ideally these registers
3394
should be call-clobbered; it is possible to use call-saved registers,
3395
but may negatively impact code size.  The target must support at least
3396
2 data registers, but should define 4 if there are enough free registers.
3397
 
3398
You must define this macro if you want to support call frame exception
3399
handling like that provided by DWARF 2.
3400
@end defmac
3401
 
3402
@defmac EH_RETURN_STACKADJ_RTX
3403
A C expression whose value is RTL representing a location in which
3404
to store a stack adjustment to be applied before function return.
3405
This is used to unwind the stack to an exception handler's call frame.
3406
It will be assigned zero on code paths that return normally.
3407
 
3408
Typically this is a call-clobbered hard register that is otherwise
3409
untouched by the epilogue, but could also be a stack slot.
3410
 
3411
Do not define this macro if the stack pointer is saved and restored
3412
by the regular prolog and epilog code in the call frame itself; in
3413
this case, the exception handling library routines will update the
3414
stack location to be restored in place.  Otherwise, you must define
3415
this macro if you want to support call frame exception handling like
3416
that provided by DWARF 2.
3417
@end defmac
3418
 
3419
@defmac EH_RETURN_HANDLER_RTX
3420
A C expression whose value is RTL representing a location in which
3421
to store the address of an exception handler to which we should
3422
return.  It will not be assigned on code paths that return normally.
3423
 
3424
Typically this is the location in the call frame at which the normal
3425
return address is stored.  For targets that return by popping an
3426
address off the stack, this might be a memory address just below
3427
the @emph{target} call frame rather than inside the current call
3428
frame.  If defined, @code{EH_RETURN_STACKADJ_RTX} will have already
3429
been assigned, so it may be used to calculate the location of the
3430
target call frame.
3431
 
3432
Some targets have more complex requirements than storing to an
3433
address calculable during initial code generation.  In that case
3434
the @code{eh_return} instruction pattern should be used instead.
3435
 
3436
If you want to support call frame exception handling, you must
3437
define either this macro or the @code{eh_return} instruction pattern.
3438
@end defmac
3439
 
3440
@defmac RETURN_ADDR_OFFSET
3441
If defined, an integer-valued C expression for which rtl will be generated
3442
to add it to the exception handler address before it is searched in the
3443
exception handling tables, and to subtract it again from the address before
3444
using it to return to the exception handler.
3445
@end defmac
3446
 
3447
@defmac ASM_PREFERRED_EH_DATA_FORMAT (@var{code}, @var{global})
3448
This macro chooses the encoding of pointers embedded in the exception
3449
handling sections.  If at all possible, this should be defined such
3450
that the exception handling section will not require dynamic relocations,
3451
and so may be read-only.
3452
 
3453
@var{code} is 0 for data, 1 for code labels, 2 for function pointers.
3454
@var{global} is true if the symbol may be affected by dynamic relocations.
3455
The macro should return a combination of the @code{DW_EH_PE_*} defines
3456
as found in @file{dwarf2.h}.
3457
 
3458
If this macro is not defined, pointers will not be encoded but
3459
represented directly.
3460
@end defmac
3461
 
3462
@defmac ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done})
3463
This macro allows the target to emit whatever special magic is required
3464
to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}.
3465
Generic code takes care of pc-relative and indirect encodings; this must
3466
be defined if the target uses text-relative or data-relative encodings.
3467
 
3468
This is a C statement that branches to @var{done} if the format was
3469
handled.  @var{encoding} is the format chosen, @var{size} is the number
3470
of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF}
3471
to be emitted.
3472
@end defmac
3473
 
3474
@defmac MD_UNWIND_SUPPORT
3475
A string specifying a file to be #include'd in unwind-dw2.c.  The file
3476
so included typically defines @code{MD_FALLBACK_FRAME_STATE_FOR}.
3477
@end defmac
3478
 
3479
@defmac MD_FALLBACK_FRAME_STATE_FOR (@var{context}, @var{fs})
3480
This macro allows the target to add CPU and operating system specific
3481
code to the call-frame unwinder for use when there is no unwind data
3482
available.  The most common reason to implement this macro is to unwind
3483
through signal frames.
3484
 
3485
This macro is called from @code{uw_frame_state_for} in
3486
@file{unwind-dw2.c}, @file{unwind-dw2-xtensa.c} and
3487
@file{unwind-ia64.c}.  @var{context} is an @code{_Unwind_Context};
3488
@var{fs} is an @code{_Unwind_FrameState}.  Examine @code{context->ra}
3489
for the address of the code being executed and @code{context->cfa} for
3490
the stack pointer value.  If the frame can be decoded, the register
3491
save addresses should be updated in @var{fs} and the macro should
3492
evaluate to @code{_URC_NO_REASON}.  If the frame cannot be decoded,
3493
the macro should evaluate to @code{_URC_END_OF_STACK}.
3494
 
3495
For proper signal handling in Java this macro is accompanied by
3496
@code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers.
3497
@end defmac
3498
 
3499
@defmac MD_HANDLE_UNWABI (@var{context}, @var{fs})
3500
This macro allows the target to add operating system specific code to the
3501
call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive,
3502
usually used for signal or interrupt frames.
3503
 
3504
This macro is called from @code{uw_update_context} in @file{unwind-ia64.c}.
3505
@var{context} is an @code{_Unwind_Context};
3506
@var{fs} is an @code{_Unwind_FrameState}.  Examine @code{fs->unwabi}
3507
for the abi and context in the @code{.unwabi} directive.  If the
3508
@code{.unwabi} directive can be handled, the register save addresses should
3509
be updated in @var{fs}.
3510
@end defmac
3511
 
3512
@defmac TARGET_USES_WEAK_UNWIND_INFO
3513
A C expression that evaluates to true if the target requires unwind
3514
info to be given comdat linkage.  Define it to be @code{1} if comdat
3515
linkage is necessary.  The default is @code{0}.
3516
@end defmac
3517
 
3518
@node Stack Checking
3519
@subsection Specifying How Stack Checking is Done
3520
 
3521
GCC will check that stack references are within the boundaries of the
3522
stack, if the option @option{-fstack-check} is specified, in one of
3523
three ways:
3524
 
3525
@enumerate
3526
@item
3527
If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GCC
3528
will assume that you have arranged for full stack checking to be done
3529
at appropriate places in the configuration files.  GCC will not do
3530
other special processing.
3531
 
3532
@item
3533
If @code{STACK_CHECK_BUILTIN} is zero and the value of the
3534
@code{STACK_CHECK_STATIC_BUILTIN} macro is nonzero, GCC will assume
3535
that you have arranged for static stack checking (checking of the
3536
static stack frame of functions) to be done at appropriate places
3537
in the configuration files.  GCC will only emit code to do dynamic
3538
stack checking (checking on dynamic stack allocations) using the third
3539
approach below.
3540
 
3541
@item
3542
If neither of the above are true, GCC will generate code to periodically
3543
``probe'' the stack pointer using the values of the macros defined below.
3544
@end enumerate
3545
 
3546
If neither STACK_CHECK_BUILTIN nor STACK_CHECK_STATIC_BUILTIN is defined,
3547
GCC will change its allocation strategy for large objects if the option
3548
@option{-fstack-check} is specified: they will always be allocated
3549
dynamically if their size exceeds @code{STACK_CHECK_MAX_VAR_SIZE} bytes.
3550
 
3551
@defmac STACK_CHECK_BUILTIN
3552
A nonzero value if stack checking is done by the configuration files in a
3553
machine-dependent manner.  You should define this macro if stack checking
3554
is required by the ABI of your machine or if you would like to do stack
3555
checking in some more efficient way than the generic approach.  The default
3556
value of this macro is zero.
3557
@end defmac
3558
 
3559
@defmac STACK_CHECK_STATIC_BUILTIN
3560
A nonzero value if static stack checking is done by the configuration files
3561
in a machine-dependent manner.  You should define this macro if you would
3562
like to do static stack checking in some more efficient way than the generic
3563
approach.  The default value of this macro is zero.
3564
@end defmac
3565
 
3566
@defmac STACK_CHECK_PROBE_INTERVAL_EXP
3567
An integer specifying the interval at which GCC must generate stack probe
3568
instructions, defined as 2 raised to this integer.  You will normally
3569
define this macro so that the interval be no larger than the size of
3570
the ``guard pages'' at the end of a stack area.  The default value
3571
of 12 (4096-byte interval) is suitable for most systems.
3572
@end defmac
3573
 
3574
@defmac STACK_CHECK_MOVING_SP
3575
An integer which is nonzero if GCC should move the stack pointer page by page
3576
when doing probes.  This can be necessary on systems where the stack pointer
3577
contains the bottom address of the memory area accessible to the executing
3578
thread at any point in time.  In this situation an alternate signal stack
3579
is required in order to be able to recover from a stack overflow.  The
3580
default value of this macro is zero.
3581
@end defmac
3582
 
3583
@defmac STACK_CHECK_PROTECT
3584
The number of bytes of stack needed to recover from a stack overflow, for
3585
languages where such a recovery is supported.  The default value of 75 words
3586
with the @code{setjmp}/@code{longjmp}-based exception handling mechanism and
3587
8192 bytes with other exception handling mechanisms should be adequate for
3588
most machines.
3589
@end defmac
3590
 
3591
The following macros are relevant only if neither STACK_CHECK_BUILTIN
3592
nor STACK_CHECK_STATIC_BUILTIN is defined; you can omit them altogether
3593
in the opposite case.
3594
 
3595
@defmac STACK_CHECK_MAX_FRAME_SIZE
3596
The maximum size of a stack frame, in bytes.  GCC will generate probe
3597
instructions in non-leaf functions to ensure at least this many bytes of
3598
stack are available.  If a stack frame is larger than this size, stack
3599
checking will not be reliable and GCC will issue a warning.  The
3600
default is chosen so that GCC only generates one instruction on most
3601
systems.  You should normally not change the default value of this macro.
3602
@end defmac
3603
 
3604
@defmac STACK_CHECK_FIXED_FRAME_SIZE
3605
GCC uses this value to generate the above warning message.  It
3606
represents the amount of fixed frame used by a function, not including
3607
space for any callee-saved registers, temporaries and user variables.
3608
You need only specify an upper bound for this amount and will normally
3609
use the default of four words.
3610
@end defmac
3611
 
3612
@defmac STACK_CHECK_MAX_VAR_SIZE
3613
The maximum size, in bytes, of an object that GCC will place in the
3614
fixed area of the stack frame when the user specifies
3615
@option{-fstack-check}.
3616
GCC computed the default from the values of the above macros and you will
3617
normally not need to override that default.
3618
@end defmac
3619
 
3620
@need 2000
3621
@node Frame Registers
3622
@subsection Registers That Address the Stack Frame
3623
 
3624
@c prevent bad page break with this line
3625
This discusses registers that address the stack frame.
3626
 
3627
@defmac STACK_POINTER_REGNUM
3628
The register number of the stack pointer register, which must also be a
3629
fixed register according to @code{FIXED_REGISTERS}.  On most machines,
3630
the hardware determines which register this is.
3631
@end defmac
3632
 
3633
@defmac FRAME_POINTER_REGNUM
3634
The register number of the frame pointer register, which is used to
3635
access automatic variables in the stack frame.  On some machines, the
3636
hardware determines which register this is.  On other machines, you can
3637
choose any register you wish for this purpose.
3638
@end defmac
3639
 
3640
@defmac HARD_FRAME_POINTER_REGNUM
3641
On some machines the offset between the frame pointer and starting
3642
offset of the automatic variables is not known until after register
3643
allocation has been done (for example, because the saved registers are
3644
between these two locations).  On those machines, define
3645
@code{FRAME_POINTER_REGNUM} the number of a special, fixed register to
3646
be used internally until the offset is known, and define
3647
@code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number
3648
used for the frame pointer.
3649
 
3650
You should define this macro only in the very rare circumstances when it
3651
is not possible to calculate the offset between the frame pointer and
3652
the automatic variables until after register allocation has been
3653
completed.  When this macro is defined, you must also indicate in your
3654
definition of @code{ELIMINABLE_REGS} how to eliminate
3655
@code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM}
3656
or @code{STACK_POINTER_REGNUM}.
3657
 
3658
Do not define this macro if it would be the same as
3659
@code{FRAME_POINTER_REGNUM}.
3660
@end defmac
3661
 
3662
@defmac ARG_POINTER_REGNUM
3663
The register number of the arg pointer register, which is used to access
3664
the function's argument list.  On some machines, this is the same as the
3665
frame pointer register.  On some machines, the hardware determines which
3666
register this is.  On other machines, you can choose any register you
3667
wish for this purpose.  If this is not the same register as the frame
3668
pointer register, then you must mark it as a fixed register according to
3669
@code{FIXED_REGISTERS}, or arrange to be able to eliminate it
3670
(@pxref{Elimination}).
3671
@end defmac
3672
 
3673
@defmac RETURN_ADDRESS_POINTER_REGNUM
3674
The register number of the return address pointer register, which is used to
3675
access the current function's return address from the stack.  On some
3676
machines, the return address is not at a fixed offset from the frame
3677
pointer or stack pointer or argument pointer.  This register can be defined
3678
to point to the return address on the stack, and then be converted by
3679
@code{ELIMINABLE_REGS} into either the frame pointer or stack pointer.
3680
 
3681
Do not define this macro unless there is no other way to get the return
3682
address from the stack.
3683
@end defmac
3684
 
3685
@defmac STATIC_CHAIN_REGNUM
3686
@defmacx STATIC_CHAIN_INCOMING_REGNUM
3687
Register numbers used for passing a function's static chain pointer.  If
3688
register windows are used, the register number as seen by the called
3689
function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register
3690
number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}.  If
3691
these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need
3692
not be defined.
3693
 
3694
The static chain register need not be a fixed register.
3695
 
3696
If the static chain is passed in memory, these macros should not be
3697
defined; instead, the @code{TARGET_STATIC_CHAIN} hook should be used.
3698
@end defmac
3699
 
3700
@deftypefn {Target Hook} rtx TARGET_STATIC_CHAIN (const_tree @var{fndecl}, bool @var{incoming_p})
3701
This hook replaces the use of @code{STATIC_CHAIN_REGNUM} et al for
3702
targets that may use different static chain locations for different
3703
nested functions.  This may be required if the target has function
3704
attributes that affect the calling conventions of the function and
3705
those calling conventions use different static chain locations.
3706
 
3707
The default version of this hook uses @code{STATIC_CHAIN_REGNUM} et al.
3708
 
3709
If the static chain is passed in memory, this hook should be used to
3710
provide rtx giving @code{mem} expressions that denote where they are stored.
3711
Often the @code{mem} expression as seen by the caller will be at an offset
3712
from the stack pointer and the @code{mem} expression as seen by the callee
3713
will be at an offset from the frame pointer.
3714
@findex stack_pointer_rtx
3715
@findex frame_pointer_rtx
3716
@findex arg_pointer_rtx
3717
The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and
3718
@code{arg_pointer_rtx} will have been initialized and should be used
3719
to refer to those items.
3720
@end deftypefn
3721
 
3722
@defmac DWARF_FRAME_REGISTERS
3723
This macro specifies the maximum number of hard registers that can be
3724
saved in a call frame.  This is used to size data structures used in
3725
DWARF2 exception handling.
3726
 
3727
Prior to GCC 3.0, this macro was needed in order to establish a stable
3728
exception handling ABI in the face of adding new hard registers for ISA
3729
extensions.  In GCC 3.0 and later, the EH ABI is insulated from changes
3730
in the number of hard registers.  Nevertheless, this macro can still be
3731
used to reduce the runtime memory requirements of the exception handling
3732
routines, which can be substantial if the ISA contains a lot of
3733
registers that are not call-saved.
3734
 
3735
If this macro is not defined, it defaults to
3736
@code{FIRST_PSEUDO_REGISTER}.
3737
@end defmac
3738
 
3739
@defmac PRE_GCC3_DWARF_FRAME_REGISTERS
3740
 
3741
This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided
3742
for backward compatibility in pre GCC 3.0 compiled code.
3743
 
3744
If this macro is not defined, it defaults to
3745
@code{DWARF_FRAME_REGISTERS}.
3746
@end defmac
3747
 
3748
@defmac DWARF_REG_TO_UNWIND_COLUMN (@var{regno})
3749
 
3750
Define this macro if the target's representation for dwarf registers
3751
is different than the internal representation for unwind column.
3752
Given a dwarf register, this macro should return the internal unwind
3753
column number to use instead.
3754
 
3755
See the PowerPC's SPE target for an example.
3756
@end defmac
3757
 
3758
@defmac DWARF_FRAME_REGNUM (@var{regno})
3759
 
3760
Define this macro if the target's representation for dwarf registers
3761
used in .eh_frame or .debug_frame is different from that used in other
3762
debug info sections.  Given a GCC hard register number, this macro
3763
should return the .eh_frame register number.  The default is
3764
@code{DBX_REGISTER_NUMBER (@var{regno})}.
3765
 
3766
@end defmac
3767
 
3768
@defmac DWARF2_FRAME_REG_OUT (@var{regno}, @var{for_eh})
3769
 
3770
Define this macro to map register numbers held in the call frame info
3771
that GCC has collected using @code{DWARF_FRAME_REGNUM} to those that
3772
should be output in .debug_frame (@code{@var{for_eh}} is zero) and
3773
.eh_frame (@code{@var{for_eh}} is nonzero).  The default is to
3774
return @code{@var{regno}}.
3775
 
3776
@end defmac
3777
 
3778
@node Elimination
3779
@subsection Eliminating Frame Pointer and Arg Pointer
3780
 
3781
@c prevent bad page break with this line
3782
This is about eliminating the frame pointer and arg pointer.
3783
 
3784
@deftypefn {Target Hook} bool TARGET_FRAME_POINTER_REQUIRED (void)
3785
This target hook should return @code{true} if a function must have and use
3786
a frame pointer.  This target hook is called in the reload pass.  If its return
3787
value is @code{true} the function will have a frame pointer.
3788
 
3789
This target hook can in principle examine the current function and decide
3790
according to the facts, but on most machines the constant @code{false} or the
3791
constant @code{true} suffices.  Use @code{false} when the machine allows code
3792
to be generated with no frame pointer, and doing so saves some time or space.
3793
Use @code{true} when there is no possible advantage to avoiding a frame
3794
pointer.
3795
 
3796
In certain cases, the compiler does not know how to produce valid code
3797
without a frame pointer.  The compiler recognizes those cases and
3798
automatically gives the function a frame pointer regardless of what
3799
@code{TARGET_FRAME_POINTER_REQUIRED} returns.  You don't need to worry about
3800
them.
3801
 
3802
In a function that does not require a frame pointer, the frame pointer
3803
register can be allocated for ordinary usage, unless you mark it as a
3804
fixed register.  See @code{FIXED_REGISTERS} for more information.
3805
 
3806
Default return value is @code{false}.
3807
@end deftypefn
3808
 
3809
@findex get_frame_size
3810
@defmac INITIAL_FRAME_POINTER_OFFSET (@var{depth-var})
3811
A C statement to store in the variable @var{depth-var} the difference
3812
between the frame pointer and the stack pointer values immediately after
3813
the function prologue.  The value would be computed from information
3814
such as the result of @code{get_frame_size ()} and the tables of
3815
registers @code{regs_ever_live} and @code{call_used_regs}.
3816
 
3817
If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and
3818
need not be defined.  Otherwise, it must be defined even if
3819
@code{TARGET_FRAME_POINTER_REQUIRED} always returns true; in that
3820
case, you may set @var{depth-var} to anything.
3821
@end defmac
3822
 
3823
@defmac ELIMINABLE_REGS
3824
If defined, this macro specifies a table of register pairs used to
3825
eliminate unneeded registers that point into the stack frame.  If it is not
3826
defined, the only elimination attempted by the compiler is to replace
3827
references to the frame pointer with references to the stack pointer.
3828
 
3829
The definition of this macro is a list of structure initializations, each
3830
of which specifies an original and replacement register.
3831
 
3832
On some machines, the position of the argument pointer is not known until
3833
the compilation is completed.  In such a case, a separate hard register
3834
must be used for the argument pointer.  This register can be eliminated by
3835
replacing it with either the frame pointer or the argument pointer,
3836
depending on whether or not the frame pointer has been eliminated.
3837
 
3838
In this case, you might specify:
3839
@smallexample
3840
#define ELIMINABLE_REGS  \
3841
@{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \
3842
 @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \
3843
 @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@}
3844
@end smallexample
3845
 
3846
Note that the elimination of the argument pointer with the stack pointer is
3847
specified first since that is the preferred elimination.
3848
@end defmac
3849
 
3850
@deftypefn {Target Hook} bool TARGET_CAN_ELIMINATE (const int @var{from_reg}, const int @var{to_reg})
3851
This target hook should returns @code{true} if the compiler is allowed to
3852
try to replace register number @var{from_reg} with register number
3853
@var{to_reg}.  This target hook need only be defined if @code{ELIMINABLE_REGS}
3854
is defined, and will usually be @code{true}, since most of the cases
3855
preventing register elimination are things that the compiler already
3856
knows about.
3857
 
3858
Default return value is @code{true}.
3859
@end deftypefn
3860
 
3861
@defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var})
3862
This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}.  It
3863
specifies the initial difference between the specified pair of
3864
registers.  This macro must be defined if @code{ELIMINABLE_REGS} is
3865
defined.
3866
@end defmac
3867
 
3868
@node Stack Arguments
3869
@subsection Passing Function Arguments on the Stack
3870
@cindex arguments on stack
3871
@cindex stack arguments
3872
 
3873
The macros in this section control how arguments are passed
3874
on the stack.  See the following section for other macros that
3875
control passing certain arguments in registers.
3876
 
3877
@deftypefn {Target Hook} bool TARGET_PROMOTE_PROTOTYPES (const_tree @var{fntype})
3878
This target hook returns @code{true} if an argument declared in a
3879
prototype as an integral type smaller than @code{int} should actually be
3880
passed as an @code{int}.  In addition to avoiding errors in certain
3881
cases of mismatch, it also makes for better code on certain machines.
3882
The default is to not promote prototypes.
3883
@end deftypefn
3884
 
3885
@defmac PUSH_ARGS
3886
A C expression.  If nonzero, push insns will be used to pass
3887
outgoing arguments.
3888
If the target machine does not have a push instruction, set it to zero.
3889
That directs GCC to use an alternate strategy: to
3890
allocate the entire argument block and then store the arguments into
3891
it.  When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too.
3892
@end defmac
3893
 
3894
@defmac PUSH_ARGS_REVERSED
3895
A C expression.  If nonzero, function arguments will be evaluated from
3896
last to first, rather than from first to last.  If this macro is not
3897
defined, it defaults to @code{PUSH_ARGS} on targets where the stack
3898
and args grow in opposite directions, and 0 otherwise.
3899
@end defmac
3900
 
3901
@defmac PUSH_ROUNDING (@var{npushed})
3902
A C expression that is the number of bytes actually pushed onto the
3903
stack when an instruction attempts to push @var{npushed} bytes.
3904
 
3905
On some machines, the definition
3906
 
3907
@smallexample
3908
#define PUSH_ROUNDING(BYTES) (BYTES)
3909
@end smallexample
3910
 
3911
@noindent
3912
will suffice.  But on other machines, instructions that appear
3913
to push one byte actually push two bytes in an attempt to maintain
3914
alignment.  Then the definition should be
3915
 
3916
@smallexample
3917
#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1)
3918
@end smallexample
3919
@end defmac
3920
 
3921
@findex current_function_outgoing_args_size
3922
@defmac ACCUMULATE_OUTGOING_ARGS
3923
A C expression.  If nonzero, the maximum amount of space required for outgoing arguments
3924
will be computed and placed into the variable
3925
@code{current_function_outgoing_args_size}.  No space will be pushed
3926
onto the stack for each call; instead, the function prologue should
3927
increase the stack frame size by this amount.
3928
 
3929
Setting both @code{PUSH_ARGS} and @code{ACCUMULATE_OUTGOING_ARGS}
3930
is not proper.
3931
@end defmac
3932
 
3933
@defmac REG_PARM_STACK_SPACE (@var{fndecl})
3934
Define this macro if functions should assume that stack space has been
3935
allocated for arguments even when their values are passed in
3936
registers.
3937
 
3938
The value of this macro is the size, in bytes, of the area reserved for
3939
arguments passed in registers for the function represented by @var{fndecl},
3940
which can be zero if GCC is calling a library function.
3941
The argument @var{fndecl} can be the FUNCTION_DECL, or the type itself
3942
of the function.
3943
 
3944
This space can be allocated by the caller, or be a part of the
3945
machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says
3946
which.
3947
@end defmac
3948
@c above is overfull.  not sure what to do.  --mew 5feb93  did
3949
@c something, not sure if it looks good.  --mew 10feb93
3950
 
3951
@defmac OUTGOING_REG_PARM_STACK_SPACE (@var{fntype})
3952
Define this to a nonzero value if it is the responsibility of the
3953
caller to allocate the area reserved for arguments passed in registers
3954
when calling a function of @var{fntype}.  @var{fntype} may be NULL
3955
if the function called is a library function.
3956
 
3957
If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls
3958
whether the space for these arguments counts in the value of
3959
@code{current_function_outgoing_args_size}.
3960
@end defmac
3961
 
3962
@defmac STACK_PARMS_IN_REG_PARM_AREA
3963
Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the
3964
stack parameters don't skip the area specified by it.
3965
@c i changed this, makes more sens and it should have taken care of the
3966
@c overfull.. not as specific, tho.  --mew 5feb93
3967
 
3968
Normally, when a parameter is not passed in registers, it is placed on the
3969
stack beyond the @code{REG_PARM_STACK_SPACE} area.  Defining this macro
3970
suppresses this behavior and causes the parameter to be passed on the
3971
stack in its natural location.
3972
@end defmac
3973
 
3974
@defmac RETURN_POPS_ARGS (@var{fundecl}, @var{funtype}, @var{stack-size})
3975
A C expression that should indicate the number of bytes of its own
3976
arguments that a function pops on returning, or 0 if the
3977
function pops no arguments and the caller must therefore pop them all
3978
after the function returns.
3979
 
3980
@var{fundecl} is a C variable whose value is a tree node that describes
3981
the function in question.  Normally it is a node of type
3982
@code{FUNCTION_DECL} that describes the declaration of the function.
3983
From this you can obtain the @code{DECL_ATTRIBUTES} of the function.
3984
 
3985
@var{funtype} is a C variable whose value is a tree node that
3986
describes the function in question.  Normally it is a node of type
3987
@code{FUNCTION_TYPE} that describes the data type of the function.
3988
From this it is possible to obtain the data types of the value and
3989
arguments (if known).
3990
 
3991
When a call to a library function is being considered, @var{fundecl}
3992
will contain an identifier node for the library function.  Thus, if
3993
you need to distinguish among various library functions, you can do so
3994
by their names.  Note that ``library function'' in this context means
3995
a function used to perform arithmetic, whose name is known specially
3996
in the compiler and was not mentioned in the C code being compiled.
3997
 
3998
@var{stack-size} is the number of bytes of arguments passed on the
3999
stack.  If a variable number of bytes is passed, it is zero, and
4000
argument popping will always be the responsibility of the calling function.
4001
 
4002
On the VAX, all functions always pop their arguments, so the definition
4003
of this macro is @var{stack-size}.  On the 68000, using the standard
4004
calling convention, no functions pop their arguments, so the value of
4005
the macro is always 0 in this case.  But an alternative calling
4006
convention is available in which functions that take a fixed number of
4007
arguments pop them but other functions (such as @code{printf}) pop
4008
nothing (the caller pops all).  When this convention is in use,
4009
@var{funtype} is examined to determine whether a function takes a fixed
4010
number of arguments.
4011
@end defmac
4012
 
4013
@defmac CALL_POPS_ARGS (@var{cum})
4014
A C expression that should indicate the number of bytes a call sequence
4015
pops off the stack.  It is added to the value of @code{RETURN_POPS_ARGS}
4016
when compiling a function call.
4017
 
4018
@var{cum} is the variable in which all arguments to the called function
4019
have been accumulated.
4020
 
4021
On certain architectures, such as the SH5, a call trampoline is used
4022
that pops certain registers off the stack, depending on the arguments
4023
that have been passed to the function.  Since this is a property of the
4024
call site, not of the called function, @code{RETURN_POPS_ARGS} is not
4025
appropriate.
4026
@end defmac
4027
 
4028
@node Register Arguments
4029
@subsection Passing Arguments in Registers
4030
@cindex arguments in registers
4031
@cindex registers arguments
4032
 
4033
This section describes the macros which let you control how various
4034
types of arguments are passed in registers or how they are arranged in
4035
the stack.
4036
 
4037
@defmac FUNCTION_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
4038
A C expression that controls whether a function argument is passed
4039
in a register, and which register.
4040
 
4041
The arguments are @var{cum}, which summarizes all the previous
4042
arguments; @var{mode}, the machine mode of the argument; @var{type},
4043
the data type of the argument as a tree node or 0 if that is not known
4044
(which happens for C support library functions); and @var{named},
4045
which is 1 for an ordinary argument and 0 for nameless arguments that
4046
correspond to @samp{@dots{}} in the called function's prototype.
4047
@var{type} can be an incomplete type if a syntax error has previously
4048
occurred.
4049
 
4050
The value of the expression is usually either a @code{reg} RTX for the
4051
hard register in which to pass the argument, or zero to pass the
4052
argument on the stack.
4053
 
4054
For machines like the VAX and 68000, where normally all arguments are
4055
pushed, zero suffices as a definition.
4056
 
4057
The value of the expression can also be a @code{parallel} RTX@.  This is
4058
used when an argument is passed in multiple locations.  The mode of the
4059
@code{parallel} should be the mode of the entire argument.  The
4060
@code{parallel} holds any number of @code{expr_list} pairs; each one
4061
describes where part of the argument is passed.  In each
4062
@code{expr_list} the first operand must be a @code{reg} RTX for the hard
4063
register in which to pass this part of the argument, and the mode of the
4064
register RTX indicates how large this part of the argument is.  The
4065
second operand of the @code{expr_list} is a @code{const_int} which gives
4066
the offset in bytes into the entire argument of where this part starts.
4067
As a special exception the first @code{expr_list} in the @code{parallel}
4068
RTX may have a first operand of zero.  This indicates that the entire
4069
argument is also stored on the stack.
4070
 
4071
The last time this macro is called, it is called with @code{MODE ==
4072
VOIDmode}, and its result is passed to the @code{call} or @code{call_value}
4073
pattern as operands 2 and 3 respectively.
4074
 
4075
@cindex @file{stdarg.h} and register arguments
4076
The usual way to make the ISO library @file{stdarg.h} work on a machine
4077
where some arguments are usually passed in registers, is to cause
4078
nameless arguments to be passed on the stack instead.  This is done
4079
by making @code{FUNCTION_ARG} return 0 whenever @var{named} is 0.
4080
 
4081
@cindex @code{TARGET_MUST_PASS_IN_STACK}, and @code{FUNCTION_ARG}
4082
@cindex @code{REG_PARM_STACK_SPACE}, and @code{FUNCTION_ARG}
4083
You may use the hook @code{targetm.calls.must_pass_in_stack}
4084
in the definition of this macro to determine if this argument is of a
4085
type that must be passed in the stack.  If @code{REG_PARM_STACK_SPACE}
4086
is not defined and @code{FUNCTION_ARG} returns nonzero for such an
4087
argument, the compiler will abort.  If @code{REG_PARM_STACK_SPACE} is
4088
defined, the argument will be computed in the stack and then loaded into
4089
a register.
4090
@end defmac
4091
 
4092
@deftypefn {Target Hook} bool TARGET_MUST_PASS_IN_STACK (enum machine_mode @var{mode}, const_tree @var{type})
4093
This target hook should return @code{true} if we should not pass @var{type}
4094
solely in registers.  The file @file{expr.h} defines a
4095
definition that is usually appropriate, refer to @file{expr.h} for additional
4096
documentation.
4097
@end deftypefn
4098
 
4099
@defmac FUNCTION_INCOMING_ARG (@var{cum}, @var{mode}, @var{type}, @var{named})
4100
Define this macro if the target machine has ``register windows'', so
4101
that the register in which a function sees an arguments is not
4102
necessarily the same as the one in which the caller passed the
4103
argument.
4104
 
4105
For such machines, @code{FUNCTION_ARG} computes the register in which
4106
the caller passes the value, and @code{FUNCTION_INCOMING_ARG} should
4107
be defined in a similar fashion to tell the function being called
4108
where the arguments will arrive.
4109
 
4110
If @code{FUNCTION_INCOMING_ARG} is not defined, @code{FUNCTION_ARG}
4111
serves both purposes.
4112
@end defmac
4113
 
4114
@deftypefn {Target Hook} int TARGET_ARG_PARTIAL_BYTES (CUMULATIVE_ARGS *@var{cum}, enum machine_mode @var{mode}, tree @var{type}, bool @var{named})
4115
This target hook returns the number of bytes at the beginning of an
4116
argument that must be put in registers.  The value must be zero for
4117
arguments that are passed entirely in registers or that are entirely
4118
pushed on the stack.
4119
 
4120
On some machines, certain arguments must be passed partially in
4121
registers and partially in memory.  On these machines, typically the
4122
first few words of arguments are passed in registers, and the rest
4123
on the stack.  If a multi-word argument (a @code{double} or a
4124
structure) crosses that boundary, its first few words must be passed
4125
in registers and the rest must be pushed.  This macro tells the
4126
compiler when this occurs, and how many bytes should go in registers.
4127
 
4128
@code{FUNCTION_ARG} for these arguments should return the first
4129
register to be used by the caller for this argument; likewise
4130
@code{FUNCTION_INCOMING_ARG}, for the called function.
4131
@end deftypefn
4132
 
4133
@deftypefn {Target Hook} bool TARGET_PASS_BY_REFERENCE (CUMULATIVE_ARGS *@var{cum}, enum machine_mode @var{mode}, tree @var{type}, bool @var{named})
4134
This target hook should return @code{true} if an argument at the
4135
position indicated by @var{cum} should be passed by reference.  This
4136
predicate is queried after target independent reasons for being
4137
passed by reference, such as @code{TREE_ADDRESSABLE (type)}.
4138
 
4139
If the hook returns true, a copy of that argument is made in memory and a
4140
pointer to the argument is passed instead of the argument itself.
4141
The pointer is passed in whatever way is appropriate for passing a pointer
4142
to that type.
4143
@end deftypefn
4144
 
4145
@deftypefn {Target Hook} bool TARGET_CALLEE_COPIES (CUMULATIVE_ARGS *@var{cum}, enum machine_mode @var{mode}, const_tree @var{type}, bool @var{named})
4146
The function argument described by the parameters to this hook is
4147
known to be passed by reference.  The hook should return true if the
4148
function argument should be copied by the callee instead of copied
4149
by the caller.
4150
 
4151
For any argument for which the hook returns true, if it can be
4152
determined that the argument is not modified, then a copy need
4153
not be generated.
4154
 
4155
The default version of this hook always returns false.
4156
@end deftypefn
4157
 
4158
@defmac CUMULATIVE_ARGS
4159
A C type for declaring a variable that is used as the first argument of
4160
@code{FUNCTION_ARG} and other related values.  For some target machines,
4161
the type @code{int} suffices and can hold the number of bytes of
4162
argument so far.
4163
 
4164
There is no need to record in @code{CUMULATIVE_ARGS} anything about the
4165
arguments that have been passed on the stack.  The compiler has other
4166
variables to keep track of that.  For target machines on which all
4167
arguments are passed on the stack, there is no need to store anything in
4168
@code{CUMULATIVE_ARGS}; however, the data structure must exist and
4169
should not be empty, so use @code{int}.
4170
@end defmac
4171
 
4172
@defmac OVERRIDE_ABI_FORMAT (@var{fndecl})
4173
If defined, this macro is called before generating any code for a
4174
function, but after the @var{cfun} descriptor for the function has been
4175
created.  The back end may use this macro to update @var{cfun} to
4176
reflect an ABI other than that which would normally be used by default.
4177
If the compiler is generating code for a compiler-generated function,
4178
@var{fndecl} may be @code{NULL}.
4179
@end defmac
4180
 
4181
@defmac INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{fndecl}, @var{n_named_args})
4182
A C statement (sans semicolon) for initializing the variable
4183
@var{cum} for the state at the beginning of the argument list.  The
4184
variable has type @code{CUMULATIVE_ARGS}.  The value of @var{fntype}
4185
is the tree node for the data type of the function which will receive
4186
the args, or 0 if the args are to a compiler support library function.
4187
For direct calls that are not libcalls, @var{fndecl} contain the
4188
declaration node of the function.  @var{fndecl} is also set when
4189
@code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function
4190
being compiled.  @var{n_named_args} is set to the number of named
4191
arguments, including a structure return address if it is passed as a
4192
parameter, when making a call.  When processing incoming arguments,
4193
@var{n_named_args} is set to @minus{}1.
4194
 
4195
When processing a call to a compiler support library function,
4196
@var{libname} identifies which one.  It is a @code{symbol_ref} rtx which
4197
contains the name of the function, as a string.  @var{libname} is 0 when
4198
an ordinary C function call is being processed.  Thus, each time this
4199
macro is called, either @var{libname} or @var{fntype} is nonzero, but
4200
never both of them at once.
4201
@end defmac
4202
 
4203
@defmac INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname})
4204
Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls,
4205
it gets a @code{MODE} argument instead of @var{fntype}, that would be
4206
@code{NULL}.  @var{indirect} would always be zero, too.  If this macro
4207
is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname,
4208
0)} is used instead.
4209
@end defmac
4210
 
4211
@defmac INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname})
4212
Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of
4213
finding the arguments for the function being compiled.  If this macro is
4214
undefined, @code{INIT_CUMULATIVE_ARGS} is used instead.
4215
 
4216
The value passed for @var{libname} is always 0, since library routines
4217
with special calling conventions are never compiled with GCC@.  The
4218
argument @var{libname} exists for symmetry with
4219
@code{INIT_CUMULATIVE_ARGS}.
4220
@c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe.
4221
@c --mew 5feb93   i switched the order of the sentences.  --mew 10feb93
4222
@end defmac
4223
 
4224
@defmac FUNCTION_ARG_ADVANCE (@var{cum}, @var{mode}, @var{type}, @var{named})
4225
A C statement (sans semicolon) to update the summarizer variable
4226
@var{cum} to advance past an argument in the argument list.  The
4227
values @var{mode}, @var{type} and @var{named} describe that argument.
4228
Once this is done, the variable @var{cum} is suitable for analyzing
4229
the @emph{following} argument with @code{FUNCTION_ARG}, etc.
4230
 
4231
This macro need not do anything if the argument in question was passed
4232
on the stack.  The compiler knows how to track the amount of stack space
4233
used for arguments without any special help.
4234
@end defmac
4235
 
4236
@defmac FUNCTION_ARG_OFFSET (@var{mode}, @var{type})
4237
If defined, a C expression that is the number of bytes to add to the
4238
offset of the argument passed in memory.  This is needed for the SPU,
4239
which passes @code{char} and @code{short} arguments in the preferred
4240
slot that is in the middle of the quad word instead of starting at the
4241
top.
4242
@end defmac
4243
 
4244
@defmac FUNCTION_ARG_PADDING (@var{mode}, @var{type})
4245
If defined, a C expression which determines whether, and in which direction,
4246
to pad out an argument with extra space.  The value should be of type
4247
@code{enum direction}: either @code{upward} to pad above the argument,
4248
@code{downward} to pad below, or @code{none} to inhibit padding.
4249
 
4250
The @emph{amount} of padding is always just enough to reach the next
4251
multiple of @code{FUNCTION_ARG_BOUNDARY}; this macro does not control
4252
it.
4253
 
4254
This macro has a default definition which is right for most systems.
4255
For little-endian machines, the default is to pad upward.  For
4256
big-endian machines, the default is to pad downward for an argument of
4257
constant size shorter than an @code{int}, and upward otherwise.
4258
@end defmac
4259
 
4260
@defmac PAD_VARARGS_DOWN
4261
If defined, a C expression which determines whether the default
4262
implementation of va_arg will attempt to pad down before reading the
4263
next argument, if that argument is smaller than its aligned space as
4264
controlled by @code{PARM_BOUNDARY}.  If this macro is not defined, all such
4265
arguments are padded down if @code{BYTES_BIG_ENDIAN} is true.
4266
@end defmac
4267
 
4268
@defmac BLOCK_REG_PADDING (@var{mode}, @var{type}, @var{first})
4269
Specify padding for the last element of a block move between registers and
4270
memory.  @var{first} is nonzero if this is the only element.  Defining this
4271
macro allows better control of register function parameters on big-endian
4272
machines, without using @code{PARALLEL} rtl.  In particular,
4273
@code{MUST_PASS_IN_STACK} need not test padding and mode of types in
4274
registers, as there is no longer a "wrong" part of a register;  For example,
4275
a three byte aggregate may be passed in the high part of a register if so
4276
required.
4277
@end defmac
4278
 
4279
@defmac FUNCTION_ARG_BOUNDARY (@var{mode}, @var{type})
4280
If defined, a C expression that gives the alignment boundary, in bits,
4281
of an argument with the specified mode and type.  If it is not defined,
4282
@code{PARM_BOUNDARY} is used for all arguments.
4283
@end defmac
4284
 
4285
@defmac FUNCTION_ARG_REGNO_P (@var{regno})
4286
A C expression that is nonzero if @var{regno} is the number of a hard
4287
register in which function arguments are sometimes passed.  This does
4288
@emph{not} include implicit arguments such as the static chain and
4289
the structure-value address.  On many machines, no registers can be
4290
used for this purpose since all function arguments are pushed on the
4291
stack.
4292
@end defmac
4293
 
4294
@deftypefn {Target Hook} bool TARGET_SPLIT_COMPLEX_ARG (const_tree @var{type})
4295
This hook should return true if parameter of type @var{type} are passed
4296
as two scalar parameters.  By default, GCC will attempt to pack complex
4297
arguments into the target's word size.  Some ABIs require complex arguments
4298
to be split and treated as their individual components.  For example, on
4299
AIX64, complex floats should be passed in a pair of floating point
4300
registers, even though a complex float would fit in one 64-bit floating
4301
point register.
4302
 
4303
The default value of this hook is @code{NULL}, which is treated as always
4304
false.
4305
@end deftypefn
4306
 
4307
@deftypefn {Target Hook} tree TARGET_BUILD_BUILTIN_VA_LIST (void)
4308
This hook returns a type node for @code{va_list} for the target.
4309
The default version of the hook returns @code{void*}.
4310
@end deftypefn
4311
 
4312
@deftypefn {Target Hook} tree TARGET_FN_ABI_VA_LIST (tree @var{fndecl})
4313
This hook returns the va_list type of the calling convention specified by
4314
@var{fndecl}.
4315
The default version of this hook returns @code{va_list_type_node}.
4316
@end deftypefn
4317
 
4318
@deftypefn {Target Hook} tree TARGET_CANONICAL_VA_LIST_TYPE (tree @var{type})
4319
This hook returns the va_list type of the calling convention specified by the
4320
type of @var{type}. If @var{type} is not a valid va_list type, it returns
4321
@code{NULL_TREE}.
4322
@end deftypefn
4323
 
4324
@deftypefn {Target Hook} tree TARGET_GIMPLIFY_VA_ARG_EXPR (tree @var{valist}, tree @var{type}, gimple_seq *@var{pre_p}, gimple_seq *@var{post_p})
4325
This hook performs target-specific gimplification of
4326
@code{VA_ARG_EXPR}.  The first two parameters correspond to the
4327
arguments to @code{va_arg}; the latter two are as in
4328
@code{gimplify.c:gimplify_expr}.
4329
@end deftypefn
4330
 
4331
@deftypefn {Target Hook} bool TARGET_VALID_POINTER_MODE (enum machine_mode @var{mode})
4332
Define this to return nonzero if the port can handle pointers
4333
with machine mode @var{mode}.  The default version of this
4334
hook returns true for both @code{ptr_mode} and @code{Pmode}.
4335
@end deftypefn
4336
 
4337
@deftypefn {Target Hook} bool TARGET_SCALAR_MODE_SUPPORTED_P (enum machine_mode @var{mode})
4338
Define this to return nonzero if the port is prepared to handle
4339
insns involving scalar mode @var{mode}.  For a scalar mode to be
4340
considered supported, all the basic arithmetic and comparisons
4341
must work.
4342
 
4343
The default version of this hook returns true for any mode
4344
required to handle the basic C types (as defined by the port).
4345
Included here are the double-word arithmetic supported by the
4346
code in @file{optabs.c}.
4347
@end deftypefn
4348
 
4349
@deftypefn {Target Hook} bool TARGET_VECTOR_MODE_SUPPORTED_P (enum machine_mode @var{mode})
4350
Define this to return nonzero if the port is prepared to handle
4351
insns involving vector mode @var{mode}.  At the very least, it
4352
must have move patterns for this mode.
4353
@end deftypefn
4354
 
4355
@node Scalar Return
4356
@subsection How Scalar Function Values Are Returned
4357
@cindex return values in registers
4358
@cindex values, returned by functions
4359
@cindex scalars, returned as values
4360
 
4361
This section discusses the macros that control returning scalars as
4362
values---values that can fit in registers.
4363
 
4364
@deftypefn {Target Hook} rtx TARGET_FUNCTION_VALUE (const_tree @var{ret_type}, const_tree @var{fn_decl_or_type}, bool @var{outgoing})
4365
 
4366
Define this to return an RTX representing the place where a function
4367
returns or receives a value of data type @var{ret_type}, a tree node
4368
representing a data type.  @var{fn_decl_or_type} is a tree node
4369
representing @code{FUNCTION_DECL} or @code{FUNCTION_TYPE} of a
4370
function being called.  If @var{outgoing} is false, the hook should
4371
compute the register in which the caller will see the return value.
4372
Otherwise, the hook should return an RTX representing the place where
4373
a function returns a value.
4374
 
4375
On many machines, only @code{TYPE_MODE (@var{ret_type})} is relevant.
4376
(Actually, on most machines, scalar values are returned in the same
4377
place regardless of mode.)  The value of the expression is usually a
4378
@code{reg} RTX for the hard register where the return value is stored.
4379
The value can also be a @code{parallel} RTX, if the return value is in
4380
multiple places.  See @code{FUNCTION_ARG} for an explanation of the
4381
@code{parallel} form.   Note that the callee will populate every
4382
location specified in the @code{parallel}, but if the first element of
4383
the @code{parallel} contains the whole return value, callers will use
4384
that element as the canonical location and ignore the others.  The m68k
4385
port uses this type of @code{parallel} to return pointers in both
4386
@samp{%a0} (the canonical location) and @samp{%d0}.
4387
 
4388
If @code{TARGET_PROMOTE_FUNCTION_RETURN} returns true, you must apply
4389
the same promotion rules specified in @code{PROMOTE_MODE} if
4390
@var{valtype} is a scalar type.
4391
 
4392
If the precise function being called is known, @var{func} is a tree
4393
node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null
4394
pointer.  This makes it possible to use a different value-returning
4395
convention for specific functions when all their calls are
4396
known.
4397
 
4398
Some target machines have ``register windows'' so that the register in
4399
which a function returns its value is not the same as the one in which
4400
the caller sees the value.  For such machines, you should return
4401
different RTX depending on @var{outgoing}.
4402
 
4403
@code{TARGET_FUNCTION_VALUE} is not used for return values with
4404
aggregate data types, because these are returned in another way.  See
4405
@code{TARGET_STRUCT_VALUE_RTX} and related macros, below.
4406
@end deftypefn
4407
 
4408
@defmac FUNCTION_VALUE (@var{valtype}, @var{func})
4409
This macro has been deprecated.  Use @code{TARGET_FUNCTION_VALUE} for
4410
a new target instead.
4411
@end defmac
4412
 
4413
@defmac FUNCTION_OUTGOING_VALUE (@var{valtype}, @var{func})
4414
This macro has been deprecated.  Use @code{TARGET_FUNCTION_VALUE} for
4415
a new target instead.
4416
@end defmac
4417
 
4418
@defmac LIBCALL_VALUE (@var{mode})
4419
A C expression to create an RTX representing the place where a library
4420
function returns a value of mode @var{mode}.
4421
 
4422
Note that ``library function'' in this context means a compiler
4423
support routine, used to perform arithmetic, whose name is known
4424
specially by the compiler and was not mentioned in the C code being
4425
compiled.
4426
@end defmac
4427
 
4428
@deftypefn {Target Hook} rtx TARGET_LIBCALL_VALUE (enum machine_mode
4429
@var{mode}, const_rtx @var{fun})
4430
Define this hook if the back-end needs to know the name of the libcall
4431
function in order to determine where the result should be returned.
4432
 
4433
The mode of the result is given by @var{mode} and the name of the called
4434
library function is given by @var{fun}.  The hook should return an RTX
4435
representing the place where the library function result will be returned.
4436
 
4437
If this hook is not defined, then LIBCALL_VALUE will be used.
4438
@end deftypefn
4439
 
4440
@defmac FUNCTION_VALUE_REGNO_P (@var{regno})
4441
A C expression that is nonzero if @var{regno} is the number of a hard
4442
register in which the values of called function may come back.
4443
 
4444
A register whose use for returning values is limited to serving as the
4445
second of a pair (for a value of type @code{double}, say) need not be
4446
recognized by this macro.  So for most machines, this definition
4447
suffices:
4448
 
4449
@smallexample
4450
#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0)
4451
@end smallexample
4452
 
4453
If the machine has register windows, so that the caller and the called
4454
function use different registers for the return value, this macro
4455
should recognize only the caller's register numbers.
4456
@end defmac
4457
 
4458
@defmac TARGET_ENUM_VA_LIST (@var{idx}, @var{pname}, @var{ptype})
4459
This target macro is used in function @code{c_common_nodes_and_builtins}
4460
to iterate through the target specific builtin types for va_list. The
4461
variable @var{idx} is used as iterator. @var{pname} has to be a pointer
4462
to a @code{const char *} and @var{ptype} a pointer to a @code{tree} typed
4463
variable.
4464
The arguments @var{pname} and @var{ptype} are used to store the result of
4465
this macro and are set to the name of the va_list builtin type and its
4466
internal type.
4467
If the return value of this macro is zero, then there is no more element.
4468
Otherwise the @var{IDX} should be increased for the next call of this
4469
macro to iterate through all types.
4470
@end defmac
4471
 
4472
@defmac APPLY_RESULT_SIZE
4473
Define this macro if @samp{untyped_call} and @samp{untyped_return}
4474
need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for
4475
saving and restoring an arbitrary return value.
4476
@end defmac
4477
 
4478
@deftypefn {Target Hook} bool TARGET_RETURN_IN_MSB (const_tree @var{type})
4479
This hook should return true if values of type @var{type} are returned
4480
at the most significant end of a register (in other words, if they are
4481
padded at the least significant end).  You can assume that @var{type}
4482
is returned in a register; the caller is required to check this.
4483
 
4484
Note that the register provided by @code{TARGET_FUNCTION_VALUE} must
4485
be able to hold the complete return value.  For example, if a 1-, 2-
4486
or 3-byte structure is returned at the most significant end of a
4487
4-byte register, @code{TARGET_FUNCTION_VALUE} should provide an
4488
@code{SImode} rtx.
4489
@end deftypefn
4490
 
4491
@node Aggregate Return
4492
@subsection How Large Values Are Returned
4493
@cindex aggregates as return values
4494
@cindex large return values
4495
@cindex returning aggregate values
4496
@cindex structure value address
4497
 
4498
When a function value's mode is @code{BLKmode} (and in some other
4499
cases), the value is not returned according to
4500
@code{TARGET_FUNCTION_VALUE} (@pxref{Scalar Return}).  Instead, the
4501
caller passes the address of a block of memory in which the value
4502
should be stored.  This address is called the @dfn{structure value
4503
address}.
4504
 
4505
This section describes how to control returning structure values in
4506
memory.
4507
 
4508
@deftypefn {Target Hook} bool TARGET_RETURN_IN_MEMORY (const_tree @var{type}, const_tree @var{fntype})
4509
This target hook should return a nonzero value to say to return the
4510
function value in memory, just as large structures are always returned.
4511
Here @var{type} will be the data type of the value, and @var{fntype}
4512
will be the type of the function doing the returning, or @code{NULL} for
4513
libcalls.
4514
 
4515
Note that values of mode @code{BLKmode} must be explicitly handled
4516
by this function.  Also, the option @option{-fpcc-struct-return}
4517
takes effect regardless of this macro.  On most systems, it is
4518
possible to leave the hook undefined; this causes a default
4519
definition to be used, whose value is the constant 1 for @code{BLKmode}
4520
values, and 0 otherwise.
4521
 
4522
Do not use this hook to indicate that structures and unions should always
4523
be returned in memory.  You should instead use @code{DEFAULT_PCC_STRUCT_RETURN}
4524
to indicate this.
4525
@end deftypefn
4526
 
4527
@defmac DEFAULT_PCC_STRUCT_RETURN
4528
Define this macro to be 1 if all structure and union return values must be
4529
in memory.  Since this results in slower code, this should be defined
4530
only if needed for compatibility with other compilers or with an ABI@.
4531
If you define this macro to be 0, then the conventions used for structure
4532
and union return values are decided by the @code{TARGET_RETURN_IN_MEMORY}
4533
target hook.
4534
 
4535
If not defined, this defaults to the value 1.
4536
@end defmac
4537
 
4538
@deftypefn {Target Hook} rtx TARGET_STRUCT_VALUE_RTX (tree @var{fndecl}, int @var{incoming})
4539
This target hook should return the location of the structure value
4540
address (normally a @code{mem} or @code{reg}), or 0 if the address is
4541
passed as an ``invisible'' first argument.  Note that @var{fndecl} may
4542
be @code{NULL}, for libcalls.  You do not need to define this target
4543
hook if the address is always passed as an ``invisible'' first
4544
argument.
4545
 
4546
On some architectures the place where the structure value address
4547
is found by the called function is not the same place that the
4548
caller put it.  This can be due to register windows, or it could
4549
be because the function prologue moves it to a different place.
4550
@var{incoming} is @code{1} or @code{2} when the location is needed in
4551
the context of the called function, and @code{0} in the context of
4552
the caller.
4553
 
4554
If @var{incoming} is nonzero and the address is to be found on the
4555
stack, return a @code{mem} which refers to the frame pointer. If
4556
@var{incoming} is @code{2}, the result is being used to fetch the
4557
structure value address at the beginning of a function.  If you need
4558
to emit adjusting code, you should do it at this point.
4559
@end deftypefn
4560
 
4561
@defmac PCC_STATIC_STRUCT_RETURN
4562
Define this macro if the usual system convention on the target machine
4563
for returning structures and unions is for the called function to return
4564
the address of a static variable containing the value.
4565
 
4566
Do not define this if the usual system convention is for the caller to
4567
pass an address to the subroutine.
4568
 
4569
This macro has effect in @option{-fpcc-struct-return} mode, but it does
4570
nothing when you use @option{-freg-struct-return} mode.
4571
@end defmac
4572
 
4573
@node Caller Saves
4574
@subsection Caller-Saves Register Allocation
4575
 
4576
If you enable it, GCC can save registers around function calls.  This
4577
makes it possible to use call-clobbered registers to hold variables that
4578
must live across calls.
4579
 
4580
@defmac CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls})
4581
A C expression to determine whether it is worthwhile to consider placing
4582
a pseudo-register in a call-clobbered hard register and saving and
4583
restoring it around each function call.  The expression should be 1 when
4584
this is worth doing, and 0 otherwise.
4585
 
4586
If you don't define this macro, a default is used which is good on most
4587
machines: @code{4 * @var{calls} < @var{refs}}.
4588
@end defmac
4589
 
4590
@defmac HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs})
4591
A C expression specifying which mode is required for saving @var{nregs}
4592
of a pseudo-register in call-clobbered hard register @var{regno}.  If
4593
@var{regno} is unsuitable for caller save, @code{VOIDmode} should be
4594
returned.  For most machines this macro need not be defined since GCC
4595
will select the smallest suitable mode.
4596
@end defmac
4597
 
4598
@node Function Entry
4599
@subsection Function Entry and Exit
4600
@cindex function entry and exit
4601
@cindex prologue
4602
@cindex epilogue
4603
 
4604
This section describes the macros that output function entry
4605
(@dfn{prologue}) and exit (@dfn{epilogue}) code.
4606
 
4607
@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_PROLOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
4608
If defined, a function that outputs the assembler code for entry to a
4609
function.  The prologue is responsible for setting up the stack frame,
4610
initializing the frame pointer register, saving registers that must be
4611
saved, and allocating @var{size} additional bytes of storage for the
4612
local variables.  @var{size} is an integer.  @var{file} is a stdio
4613
stream to which the assembler code should be output.
4614
 
4615
The label for the beginning of the function need not be output by this
4616
macro.  That has already been done when the macro is run.
4617
 
4618
@findex regs_ever_live
4619
To determine which registers to save, the macro can refer to the array
4620
@code{regs_ever_live}: element @var{r} is nonzero if hard register
4621
@var{r} is used anywhere within the function.  This implies the function
4622
prologue should save register @var{r}, provided it is not one of the
4623
call-used registers.  (@code{TARGET_ASM_FUNCTION_EPILOGUE} must likewise use
4624
@code{regs_ever_live}.)
4625
 
4626
On machines that have ``register windows'', the function entry code does
4627
not save on the stack the registers that are in the windows, even if
4628
they are supposed to be preserved by function calls; instead it takes
4629
appropriate steps to ``push'' the register stack, if any non-call-used
4630
registers are used in the function.
4631
 
4632
@findex frame_pointer_needed
4633
On machines where functions may or may not have frame-pointers, the
4634
function entry code must vary accordingly; it must set up the frame
4635
pointer if one is wanted, and not otherwise.  To determine whether a
4636
frame pointer is in wanted, the macro can refer to the variable
4637
@code{frame_pointer_needed}.  The variable's value will be 1 at run
4638
time in a function that needs a frame pointer.  @xref{Elimination}.
4639
 
4640
The function entry code is responsible for allocating any stack space
4641
required for the function.  This stack space consists of the regions
4642
listed below.  In most cases, these regions are allocated in the
4643
order listed, with the last listed region closest to the top of the
4644
stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and
4645
the highest address if it is not defined).  You can use a different order
4646
for a machine if doing so is more convenient or required for
4647
compatibility reasons.  Except in cases where required by standard
4648
or by a debugger, there is no reason why the stack layout used by GCC
4649
need agree with that used by other compilers for a machine.
4650
@end deftypefn
4651
 
4652
@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_END_PROLOGUE (FILE *@var{file})
4653
If defined, a function that outputs assembler code at the end of a
4654
prologue.  This should be used when the function prologue is being
4655
emitted as RTL, and you have some extra assembler that needs to be
4656
emitted.  @xref{prologue instruction pattern}.
4657
@end deftypefn
4658
 
4659
@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_BEGIN_EPILOGUE (FILE *@var{file})
4660
If defined, a function that outputs assembler code at the start of an
4661
epilogue.  This should be used when the function epilogue is being
4662
emitted as RTL, and you have some extra assembler that needs to be
4663
emitted.  @xref{epilogue instruction pattern}.
4664
@end deftypefn
4665
 
4666
@deftypefn {Target Hook} void TARGET_ASM_FUNCTION_EPILOGUE (FILE *@var{file}, HOST_WIDE_INT @var{size})
4667
If defined, a function that outputs the assembler code for exit from a
4668
function.  The epilogue is responsible for restoring the saved
4669
registers and stack pointer to their values when the function was
4670
called, and returning control to the caller.  This macro takes the
4671
same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the
4672
registers to restore are determined from @code{regs_ever_live} and
4673
@code{CALL_USED_REGISTERS} in the same way.
4674
 
4675
On some machines, there is a single instruction that does all the work
4676
of returning from the function.  On these machines, give that
4677
instruction the name @samp{return} and do not define the macro
4678
@code{TARGET_ASM_FUNCTION_EPILOGUE} at all.
4679
 
4680
Do not define a pattern named @samp{return} if you want the
4681
@code{TARGET_ASM_FUNCTION_EPILOGUE} to be used.  If you want the target
4682
switches to control whether return instructions or epilogues are used,
4683
define a @samp{return} pattern with a validity condition that tests the
4684
target switches appropriately.  If the @samp{return} pattern's validity
4685
condition is false, epilogues will be used.
4686
 
4687
On machines where functions may or may not have frame-pointers, the
4688
function exit code must vary accordingly.  Sometimes the code for these
4689
two cases is completely different.  To determine whether a frame pointer
4690
is wanted, the macro can refer to the variable
4691
@code{frame_pointer_needed}.  The variable's value will be 1 when compiling
4692
a function that needs a frame pointer.
4693
 
4694
Normally, @code{TARGET_ASM_FUNCTION_PROLOGUE} and
4695
@code{TARGET_ASM_FUNCTION_EPILOGUE} must treat leaf functions specially.
4696
The C variable @code{current_function_is_leaf} is nonzero for such a
4697
function.  @xref{Leaf Functions}.
4698
 
4699
On some machines, some functions pop their arguments on exit while
4700
others leave that for the caller to do.  For example, the 68020 when
4701
given @option{-mrtd} pops arguments in functions that take a fixed
4702
number of arguments.
4703
 
4704
@findex current_function_pops_args
4705
Your definition of the macro @code{RETURN_POPS_ARGS} decides which
4706
functions pop their own arguments.  @code{TARGET_ASM_FUNCTION_EPILOGUE}
4707
needs to know what was decided.  The number of bytes of the current
4708
function's arguments that this function should pop is available in
4709
@code{crtl->args.pops_args}.  @xref{Scalar Return}.
4710
@end deftypefn
4711
 
4712
@itemize @bullet
4713
@item
4714
@findex current_function_pretend_args_size
4715
A region of @code{current_function_pretend_args_size} bytes of
4716
uninitialized space just underneath the first argument arriving on the
4717
stack.  (This may not be at the very start of the allocated stack region
4718
if the calling sequence has pushed anything else since pushing the stack
4719
arguments.  But usually, on such machines, nothing else has been pushed
4720
yet, because the function prologue itself does all the pushing.)  This
4721
region is used on machines where an argument may be passed partly in
4722
registers and partly in memory, and, in some cases to support the
4723
features in @code{<stdarg.h>}.
4724
 
4725
@item
4726
An area of memory used to save certain registers used by the function.
4727
The size of this area, which may also include space for such things as
4728
the return address and pointers to previous stack frames, is
4729
machine-specific and usually depends on which registers have been used
4730
in the function.  Machines with register windows often do not require
4731
a save area.
4732
 
4733
@item
4734
A region of at least @var{size} bytes, possibly rounded up to an allocation
4735
boundary, to contain the local variables of the function.  On some machines,
4736
this region and the save area may occur in the opposite order, with the
4737
save area closer to the top of the stack.
4738
 
4739
@item
4740
@cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames
4741
Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of
4742
@code{current_function_outgoing_args_size} bytes to be used for outgoing
4743
argument lists of the function.  @xref{Stack Arguments}.
4744
@end itemize
4745
 
4746
@defmac EXIT_IGNORE_STACK
4747
Define this macro as a C expression that is nonzero if the return
4748
instruction or the function epilogue ignores the value of the stack
4749
pointer; in other words, if it is safe to delete an instruction to
4750
adjust the stack pointer before a return from the function.  The
4751
default is 0.
4752
 
4753
Note that this macro's value is relevant only for functions for which
4754
frame pointers are maintained.  It is never safe to delete a final
4755
stack adjustment in a function that has no frame pointer, and the
4756
compiler knows this regardless of @code{EXIT_IGNORE_STACK}.
4757
@end defmac
4758
 
4759
@defmac EPILOGUE_USES (@var{regno})
4760
Define this macro as a C expression that is nonzero for registers that are
4761
used by the epilogue or the @samp{return} pattern.  The stack and frame
4762
pointer registers are already assumed to be used as needed.
4763
@end defmac
4764
 
4765
@defmac EH_USES (@var{regno})
4766
Define this macro as a C expression that is nonzero for registers that are
4767
used by the exception handling mechanism, and so should be considered live
4768
on entry to an exception edge.
4769
@end defmac
4770
 
4771
@defmac DELAY_SLOTS_FOR_EPILOGUE
4772
Define this macro if the function epilogue contains delay slots to which
4773
instructions from the rest of the function can be ``moved''.  The
4774
definition should be a C expression whose value is an integer
4775
representing the number of delay slots there.
4776
@end defmac
4777
 
4778
@defmac ELIGIBLE_FOR_EPILOGUE_DELAY (@var{insn}, @var{n})
4779
A C expression that returns 1 if @var{insn} can be placed in delay
4780
slot number @var{n} of the epilogue.
4781
 
4782
The argument @var{n} is an integer which identifies the delay slot now
4783
being considered (since different slots may have different rules of
4784
eligibility).  It is never negative and is always less than the number
4785
of epilogue delay slots (what @code{DELAY_SLOTS_FOR_EPILOGUE} returns).
4786
If you reject a particular insn for a given delay slot, in principle, it
4787
may be reconsidered for a subsequent delay slot.  Also, other insns may
4788
(at least in principle) be considered for the so far unfilled delay
4789
slot.
4790
 
4791
@findex current_function_epilogue_delay_list
4792
@findex final_scan_insn
4793
The insns accepted to fill the epilogue delay slots are put in an RTL
4794
list made with @code{insn_list} objects, stored in the variable
4795
@code{current_function_epilogue_delay_list}.  The insn for the first
4796
delay slot comes first in the list.  Your definition of the macro
4797
@code{TARGET_ASM_FUNCTION_EPILOGUE} should fill the delay slots by
4798
outputting the insns in this list, usually by calling
4799
@code{final_scan_insn}.
4800
 
4801
You need not define this macro if you did not define
4802
@code{DELAY_SLOTS_FOR_EPILOGUE}.
4803
@end defmac
4804
 
4805
@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})
4806
A function that outputs the assembler code for a thunk
4807
function, used to implement C++ virtual function calls with multiple
4808
inheritance.  The thunk acts as a wrapper around a virtual function,
4809
adjusting the implicit object parameter before handing control off to
4810
the real function.
4811
 
4812
First, emit code to add the integer @var{delta} to the location that
4813
contains the incoming first argument.  Assume that this argument
4814
contains a pointer, and is the one used to pass the @code{this} pointer
4815
in C++.  This is the incoming argument @emph{before} the function prologue,
4816
e.g.@: @samp{%o0} on a sparc.  The addition must preserve the values of
4817
all other incoming arguments.
4818
 
4819
Then, if @var{vcall_offset} is nonzero, an additional adjustment should be
4820
made after adding @code{delta}.  In particular, if @var{p} is the
4821
adjusted pointer, the following adjustment should be made:
4822
 
4823
@smallexample
4824
p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)]
4825
@end smallexample
4826
 
4827
After the additions, emit code to jump to @var{function}, which is a
4828
@code{FUNCTION_DECL}.  This is a direct pure jump, not a call, and does
4829
not touch the return address.  Hence returning from @var{FUNCTION} will
4830
return to whoever called the current @samp{thunk}.
4831
 
4832
The effect must be as if @var{function} had been called directly with
4833
the adjusted first argument.  This macro is responsible for emitting all
4834
of the code for a thunk function; @code{TARGET_ASM_FUNCTION_PROLOGUE}
4835
and @code{TARGET_ASM_FUNCTION_EPILOGUE} are not invoked.
4836
 
4837
The @var{thunk_fndecl} is redundant.  (@var{delta} and @var{function}
4838
have already been extracted from it.)  It might possibly be useful on
4839
some targets, but probably not.
4840
 
4841
If you do not define this macro, the target-independent code in the C++
4842
front end will generate a less efficient heavyweight thunk that calls
4843
@var{function} instead of jumping to it.  The generic approach does
4844
not support varargs.
4845
@end deftypefn
4846
 
4847
@deftypefn {Target Hook} bool TARGET_ASM_CAN_OUTPUT_MI_THUNK (const_tree @var{thunk_fndecl}, HOST_WIDE_INT @var{delta}, HOST_WIDE_INT @var{vcall_offset}, const_tree @var{function})
4848
A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would be able
4849
to output the assembler code for the thunk function specified by the
4850
arguments it is passed, and false otherwise.  In the latter case, the
4851
generic approach will be used by the C++ front end, with the limitations
4852
previously exposed.
4853
@end deftypefn
4854
 
4855
@node Profiling
4856
@subsection Generating Code for Profiling
4857
@cindex profiling, code generation
4858
 
4859
These macros will help you generate code for profiling.
4860
 
4861
@defmac FUNCTION_PROFILER (@var{file}, @var{labelno})
4862
A C statement or compound statement to output to @var{file} some
4863
assembler code to call the profiling subroutine @code{mcount}.
4864
 
4865
@findex mcount
4866
The details of how @code{mcount} expects to be called are determined by
4867
your operating system environment, not by GCC@.  To figure them out,
4868
compile a small program for profiling using the system's installed C
4869
compiler and look at the assembler code that results.
4870
 
4871
Older implementations of @code{mcount} expect the address of a counter
4872
variable to be loaded into some register.  The name of this variable is
4873
@samp{LP} followed by the number @var{labelno}, so you would generate
4874
the name using @samp{LP%d} in a @code{fprintf}.
4875
@end defmac
4876
 
4877
@defmac PROFILE_HOOK
4878
A C statement or compound statement to output to @var{file} some assembly
4879
code to call the profiling subroutine @code{mcount} even the target does
4880
not support profiling.
4881
@end defmac
4882
 
4883
@defmac NO_PROFILE_COUNTERS
4884
Define this macro to be an expression with a nonzero value if the
4885
@code{mcount} subroutine on your system does not need a counter variable
4886
allocated for each function.  This is true for almost all modern
4887
implementations.  If you define this macro, you must not use the
4888
@var{labelno} argument to @code{FUNCTION_PROFILER}.
4889
@end defmac
4890
 
4891
@defmac PROFILE_BEFORE_PROLOGUE
4892
Define this macro if the code for function profiling should come before
4893
the function prologue.  Normally, the profiling code comes after.
4894
@end defmac
4895
 
4896
@node Tail Calls
4897
@subsection Permitting tail calls
4898
@cindex tail calls
4899
 
4900
@deftypefn {Target Hook} bool TARGET_FUNCTION_OK_FOR_SIBCALL (tree @var{decl}, tree @var{exp})
4901
True if it is ok to do sibling call optimization for the specified
4902
call expression @var{exp}.  @var{decl} will be the called function,
4903
or @code{NULL} if this is an indirect call.
4904
 
4905
It is not uncommon for limitations of calling conventions to prevent
4906
tail calls to functions outside the current unit of translation, or
4907
during PIC compilation.  The hook is used to enforce these restrictions,
4908
as the @code{sibcall} md pattern can not fail, or fall over to a
4909
``normal'' call.  The criteria for successful sibling call optimization
4910
may vary greatly between different architectures.
4911
@end deftypefn
4912
 
4913
@deftypefn {Target Hook} void TARGET_EXTRA_LIVE_ON_ENTRY (bitmap @var{regs})
4914
Add any hard registers to @var{regs} that are live on entry to the
4915
function.  This hook only needs to be defined to provide registers that
4916
cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved
4917
registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM,
4918
TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES,
4919
FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM.
4920
@end deftypefn
4921
 
4922
@node Stack Smashing Protection
4923
@subsection Stack smashing protection
4924
@cindex stack smashing protection
4925
 
4926
@deftypefn {Target Hook} tree TARGET_STACK_PROTECT_GUARD (void)
4927
This hook returns a @code{DECL} node for the external variable to use
4928
for the stack protection guard.  This variable is initialized by the
4929
runtime to some random value and is used to initialize the guard value
4930
that is placed at the top of the local stack frame.  The type of this
4931
variable must be @code{ptr_type_node}.
4932
 
4933
The default version of this hook creates a variable called
4934
@samp{__stack_chk_guard}, which is normally defined in @file{libgcc2.c}.
4935
@end deftypefn
4936
 
4937
@deftypefn {Target Hook} tree TARGET_STACK_PROTECT_FAIL (void)
4938
This hook returns a tree expression that alerts the runtime that the
4939
stack protect guard variable has been modified.  This expression should
4940
involve a call to a @code{noreturn} function.
4941
 
4942
The default version of this hook invokes a function called
4943
@samp{__stack_chk_fail}, taking no arguments.  This function is
4944
normally defined in @file{libgcc2.c}.
4945
@end deftypefn
4946
 
4947
@node Varargs
4948
@section Implementing the Varargs Macros
4949
@cindex varargs implementation
4950
 
4951
GCC comes with an implementation of @code{<varargs.h>} and
4952
@code{<stdarg.h>} that work without change on machines that pass arguments
4953
on the stack.  Other machines require their own implementations of
4954
varargs, and the two machine independent header files must have
4955
conditionals to include it.
4956
 
4957
ISO @code{<stdarg.h>} differs from traditional @code{<varargs.h>} mainly in
4958
the calling convention for @code{va_start}.  The traditional
4959
implementation takes just one argument, which is the variable in which
4960
to store the argument pointer.  The ISO implementation of
4961
@code{va_start} takes an additional second argument.  The user is
4962
supposed to write the last named argument of the function here.
4963
 
4964
However, @code{va_start} should not use this argument.  The way to find
4965
the end of the named arguments is with the built-in functions described
4966
below.
4967
 
4968
@defmac __builtin_saveregs ()
4969
Use this built-in function to save the argument registers in memory so
4970
that the varargs mechanism can access them.  Both ISO and traditional
4971
versions of @code{va_start} must use @code{__builtin_saveregs}, unless
4972
you use @code{TARGET_SETUP_INCOMING_VARARGS} (see below) instead.
4973
 
4974
On some machines, @code{__builtin_saveregs} is open-coded under the
4975
control of the target hook @code{TARGET_EXPAND_BUILTIN_SAVEREGS}.  On
4976
other machines, it calls a routine written in assembler language,
4977
found in @file{libgcc2.c}.
4978
 
4979
Code generated for the call to @code{__builtin_saveregs} appears at the
4980
beginning of the function, as opposed to where the call to
4981
@code{__builtin_saveregs} is written, regardless of what the code is.
4982
This is because the registers must be saved before the function starts
4983
to use them for its own purposes.
4984
@c i rewrote the first sentence above to fix an overfull hbox. --mew
4985
@c 10feb93
4986
@end defmac
4987
 
4988
@defmac __builtin_args_info (@var{category})
4989
Use this built-in function to find the first anonymous arguments in
4990
registers.
4991
 
4992
In general, a machine may have several categories of registers used for
4993
arguments, each for a particular category of data types.  (For example,
4994
on some machines, floating-point registers are used for floating-point
4995
arguments while other arguments are passed in the general registers.)
4996
To make non-varargs functions use the proper calling convention, you
4997
have defined the @code{CUMULATIVE_ARGS} data type to record how many
4998
registers in each category have been used so far
4999
 
5000
@code{__builtin_args_info} accesses the same data structure of type
5001
@code{CUMULATIVE_ARGS} after the ordinary argument layout is finished
5002
with it, with @var{category} specifying which word to access.  Thus, the
5003
value indicates the first unused register in a given category.
5004
 
5005
Normally, you would use @code{__builtin_args_info} in the implementation
5006
of @code{va_start}, accessing each category just once and storing the
5007
value in the @code{va_list} object.  This is because @code{va_list} will
5008
have to update the values, and there is no way to alter the
5009
values accessed by @code{__builtin_args_info}.
5010
@end defmac
5011
 
5012
@defmac __builtin_next_arg (@var{lastarg})
5013
This is the equivalent of @code{__builtin_args_info}, for stack
5014
arguments.  It returns the address of the first anonymous stack
5015
argument, as type @code{void *}.  If @code{ARGS_GROW_DOWNWARD}, it
5016
returns the address of the location above the first anonymous stack
5017
argument.  Use it in @code{va_start} to initialize the pointer for
5018
fetching arguments from the stack.  Also use it in @code{va_start} to
5019
verify that the second parameter @var{lastarg} is the last named argument
5020
of the current function.
5021
@end defmac
5022
 
5023
@defmac __builtin_classify_type (@var{object})
5024
Since each machine has its own conventions for which data types are
5025
passed in which kind of register, your implementation of @code{va_arg}
5026
has to embody these conventions.  The easiest way to categorize the
5027
specified data type is to use @code{__builtin_classify_type} together
5028
with @code{sizeof} and @code{__alignof__}.
5029
 
5030
@code{__builtin_classify_type} ignores the value of @var{object},
5031
considering only its data type.  It returns an integer describing what
5032
kind of type that is---integer, floating, pointer, structure, and so on.
5033
 
5034
The file @file{typeclass.h} defines an enumeration that you can use to
5035
interpret the values of @code{__builtin_classify_type}.
5036
@end defmac
5037
 
5038
These machine description macros help implement varargs:
5039
 
5040
@deftypefn {Target Hook} rtx TARGET_EXPAND_BUILTIN_SAVEREGS (void)
5041
If defined, this hook produces the machine-specific code for a call to
5042
@code{__builtin_saveregs}.  This code will be moved to the very
5043
beginning of the function, before any parameter access are made.  The
5044
return value of this function should be an RTX that contains the value
5045
to use as the return of @code{__builtin_saveregs}.
5046
@end deftypefn
5047
 
5048
@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})
5049
This target hook offers an alternative to using
5050
@code{__builtin_saveregs} and defining the hook
5051
@code{TARGET_EXPAND_BUILTIN_SAVEREGS}.  Use it to store the anonymous
5052
register arguments into the stack so that all the arguments appear to
5053
have been passed consecutively on the stack.  Once this is done, you can
5054
use the standard implementation of varargs that works for machines that
5055
pass all their arguments on the stack.
5056
 
5057
The argument @var{args_so_far} points to the @code{CUMULATIVE_ARGS} data
5058
structure, containing the values that are obtained after processing the
5059
named arguments.  The arguments @var{mode} and @var{type} describe the
5060
last named argument---its machine mode and its data type as a tree node.
5061
 
5062
The target hook should do two things: first, push onto the stack all the
5063
argument registers @emph{not} used for the named arguments, and second,
5064
store the size of the data thus pushed into the @code{int}-valued
5065
variable pointed to by @var{pretend_args_size}.  The value that you
5066
store here will serve as additional offset for setting up the stack
5067
frame.
5068
 
5069
Because you must generate code to push the anonymous arguments at
5070
compile time without knowing their data types,
5071
@code{TARGET_SETUP_INCOMING_VARARGS} is only useful on machines that
5072
have just a single category of argument register and use it uniformly
5073
for all data types.
5074
 
5075
If the argument @var{second_time} is nonzero, it means that the
5076
arguments of the function are being analyzed for the second time.  This
5077
happens for an inline function, which is not actually compiled until the
5078
end of the source file.  The hook @code{TARGET_SETUP_INCOMING_VARARGS} should
5079
not generate any instructions in this case.
5080
@end deftypefn
5081
 
5082
@deftypefn {Target Hook} bool TARGET_STRICT_ARGUMENT_NAMING (CUMULATIVE_ARGS *@var{ca})
5083
Define this hook to return @code{true} if the location where a function
5084
argument is passed depends on whether or not it is a named argument.
5085
 
5086
This hook controls how the @var{named} argument to @code{FUNCTION_ARG}
5087
is set for varargs and stdarg functions.  If this hook returns
5088
@code{true}, the @var{named} argument is always true for named
5089
arguments, and false for unnamed arguments.  If it returns @code{false},
5090
but @code{TARGET_PRETEND_OUTGOING_VARARGS_NAMED} returns @code{true},
5091
then all arguments are treated as named.  Otherwise, all named arguments
5092
except the last are treated as named.
5093
 
5094
You need not define this hook if it always returns @code{false}.
5095
@end deftypefn
5096
 
5097
@deftypefn {Target Hook} bool TARGET_PRETEND_OUTGOING_VARARGS_NAMED (CUMULATIVE_ARGS *@var{ca})
5098
If you need to conditionally change ABIs so that one works with
5099
@code{TARGET_SETUP_INCOMING_VARARGS}, but the other works like neither
5100
@code{TARGET_SETUP_INCOMING_VARARGS} nor @code{TARGET_STRICT_ARGUMENT_NAMING} was
5101
defined, then define this hook to return @code{true} if
5102
@code{TARGET_SETUP_INCOMING_VARARGS} is used, @code{false} otherwise.
5103
Otherwise, you should not define this hook.
5104
@end deftypefn
5105
 
5106
@node Trampolines
5107
@section Trampolines for Nested Functions
5108
@cindex trampolines for nested functions
5109
@cindex nested functions, trampolines for
5110
 
5111
A @dfn{trampoline} is a small piece of code that is created at run time
5112
when the address of a nested function is taken.  It normally resides on
5113
the stack, in the stack frame of the containing function.  These macros
5114
tell GCC how to generate code to allocate and initialize a
5115
trampoline.
5116
 
5117
The instructions in the trampoline must do two things: load a constant
5118
address into the static chain register, and jump to the real address of
5119
the nested function.  On CISC machines such as the m68k, this requires
5120
two instructions, a move immediate and a jump.  Then the two addresses
5121
exist in the trampoline as word-long immediate operands.  On RISC
5122
machines, it is often necessary to load each address into a register in
5123
two parts.  Then pieces of each address form separate immediate
5124
operands.
5125
 
5126
The code generated to initialize the trampoline must store the variable
5127
parts---the static chain value and the function address---into the
5128
immediate operands of the instructions.  On a CISC machine, this is
5129
simply a matter of copying each address to a memory reference at the
5130
proper offset from the start of the trampoline.  On a RISC machine, it
5131
may be necessary to take out pieces of the address and store them
5132
separately.
5133
 
5134
@deftypefn {Target Hook} void TARGET_ASM_TRAMPOLINE_TEMPLATE (FILE *@var{f})
5135
This hook is called by @code{assemble_trampoline_template} to output,
5136
on the stream @var{f}, assembler code for a block of data that contains
5137
the constant parts of a trampoline.  This code should not include a
5138
label---the label is taken care of automatically.
5139
 
5140
If you do not define this hook, it means no template is needed
5141
for the target.  Do not define this hook on systems where the block move
5142
code to copy the trampoline into place would be larger than the code
5143
to generate it on the spot.
5144
@end deftypefn
5145
 
5146
@defmac TRAMPOLINE_SECTION
5147
Return the section into which the trampoline template is to be placed
5148
(@pxref{Sections}).  The default value is @code{readonly_data_section}.
5149
@end defmac
5150
 
5151
@defmac TRAMPOLINE_SIZE
5152
A C expression for the size in bytes of the trampoline, as an integer.
5153
@end defmac
5154
 
5155
@defmac TRAMPOLINE_ALIGNMENT
5156
Alignment required for trampolines, in bits.
5157
 
5158
If you don't define this macro, the value of @code{FUNCTION_ALIGNMENT}
5159
is used for aligning trampolines.
5160
@end defmac
5161
 
5162
@deftypefn {Target Hook} void TARGET_TRAMPOLINE_INIT (rtx @var{m_tramp}, tree @var{fndecl}, rtx @var{static_chain})
5163
This hook is called to initialize a trampoline.
5164
@var{m_tramp} is an RTX for the memory block for the trampoline; @var{fndecl}
5165
is the @code{FUNCTION_DECL} for the nested function; @var{static_chain} is an
5166
RTX for the static chain value that should be passed to the function
5167
when it is called.
5168
 
5169
If the target defines @code{TARGET_ASM_TRAMPOLINE_TEMPLATE}, then the
5170
first thing this hook should do is emit a block move into @var{m_tramp}
5171
from the memory block returned by @code{assemble_trampoline_template}.
5172
Note that the block move need only cover the constant parts of the
5173
trampoline.  If the target isolates the variable parts of the trampoline
5174
to the end, not all @code{TRAMPOLINE_SIZE} bytes need be copied.
5175
 
5176
If the target requires any other actions, such as flushing caches or
5177
enabling stack execution, these actions should be performed after
5178
initializing the trampoline proper.
5179
@end deftypefn
5180
 
5181
@deftypefn {Target Hook} rtx TARGET_TRAMPOLINE_ADJUST_ADDRESS (rtx @var{addr})
5182
This hook should perform any machine-specific adjustment in
5183
the address of the trampoline.  Its argument contains the address of the
5184
memory block that was passed to @code{TARGET_TRAMPOLINE_INIT}.  In case
5185
the address to be used for a function call should be different from the
5186
address at which the template was stored, the different address should
5187
be returned; otherwise @var{addr} should be returned unchanged.
5188
If this hook is not defined, @var{addr} will be used for function calls.
5189
@end deftypefn
5190
 
5191
Implementing trampolines is difficult on many machines because they have
5192
separate instruction and data caches.  Writing into a stack location
5193
fails to clear the memory in the instruction cache, so when the program
5194
jumps to that location, it executes the old contents.
5195
 
5196
Here are two possible solutions.  One is to clear the relevant parts of
5197
the instruction cache whenever a trampoline is set up.  The other is to
5198
make all trampolines identical, by having them jump to a standard
5199
subroutine.  The former technique makes trampoline execution faster; the
5200
latter makes initialization faster.
5201
 
5202
To clear the instruction cache when a trampoline is initialized, define
5203
the following macro.
5204
 
5205
@defmac CLEAR_INSN_CACHE (@var{beg}, @var{end})
5206
If defined, expands to a C expression clearing the @emph{instruction
5207
cache} in the specified interval.  The definition of this macro would
5208
typically be a series of @code{asm} statements.  Both @var{beg} and
5209
@var{end} are both pointer expressions.
5210
@end defmac
5211
 
5212
The operating system may also require the stack to be made executable
5213
before calling the trampoline.  To implement this requirement, define
5214
the following macro.
5215
 
5216
@defmac ENABLE_EXECUTE_STACK
5217
Define this macro if certain operations must be performed before executing
5218
code located on the stack.  The macro should expand to a series of C
5219
file-scope constructs (e.g.@: functions) and provide a unique entry point
5220
named @code{__enable_execute_stack}.  The target is responsible for
5221
emitting calls to the entry point in the code, for example from the
5222
@code{TARGET_TRAMPOLINE_INIT} hook.
5223
@end defmac
5224
 
5225
To use a standard subroutine, define the following macro.  In addition,
5226
you must make sure that the instructions in a trampoline fill an entire
5227
cache line with identical instructions, or else ensure that the
5228
beginning of the trampoline code is always aligned at the same point in
5229
its cache line.  Look in @file{m68k.h} as a guide.
5230
 
5231
@defmac TRANSFER_FROM_TRAMPOLINE
5232
Define this macro if trampolines need a special subroutine to do their
5233
work.  The macro should expand to a series of @code{asm} statements
5234
which will be compiled with GCC@.  They go in a library function named
5235
@code{__transfer_from_trampoline}.
5236
 
5237
If you need to avoid executing the ordinary prologue code of a compiled
5238
C function when you jump to the subroutine, you can do so by placing a
5239
special label of your own in the assembler code.  Use one @code{asm}
5240
statement to generate an assembler label, and another to make the label
5241
global.  Then trampolines can use that label to jump directly to your
5242
special assembler code.
5243
@end defmac
5244
 
5245
@node Library Calls
5246
@section Implicit Calls to Library Routines
5247
@cindex library subroutine names
5248
@cindex @file{libgcc.a}
5249
 
5250
@c prevent bad page break with this line
5251
Here is an explanation of implicit calls to library routines.
5252
 
5253
@defmac DECLARE_LIBRARY_RENAMES
5254
This macro, if defined, should expand to a piece of C code that will get
5255
expanded when compiling functions for libgcc.a.  It can be used to
5256
provide alternate names for GCC's internal library functions if there
5257
are ABI-mandated names that the compiler should provide.
5258
@end defmac
5259
 
5260
@findex set_optab_libfunc
5261
@findex init_one_libfunc
5262
@deftypefn {Target Hook} void TARGET_INIT_LIBFUNCS (void)
5263
This hook should declare additional library routines or rename
5264
existing ones, using the functions @code{set_optab_libfunc} and
5265
@code{init_one_libfunc} defined in @file{optabs.c}.
5266
@code{init_optabs} calls this macro after initializing all the normal
5267
library routines.
5268
 
5269
The default is to do nothing.  Most ports don't need to define this hook.
5270
@end deftypefn
5271
 
5272
@defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison})
5273
This macro should return @code{true} if the library routine that
5274
implements the floating point comparison operator @var{comparison} in
5275
mode @var{mode} will return a boolean, and @var{false} if it will
5276
return a tristate.
5277
 
5278
GCC's own floating point libraries return tristates from the
5279
comparison operators, so the default returns false always.  Most ports
5280
don't need to define this macro.
5281
@end defmac
5282
 
5283
@defmac TARGET_LIB_INT_CMP_BIASED
5284
This macro should evaluate to @code{true} if the integer comparison
5285
functions (like @code{__cmpdi2}) return 0 to indicate that the first
5286
operand is smaller than the second, 1 to indicate that they are equal,
5287
and 2 to indicate that the first operand is greater than the second.
5288
If this macro evaluates to @code{false} the comparison functions return
5289
@minus{}1, 0, and 1 instead of 0, 1, and 2.  If the target uses the routines
5290
in @file{libgcc.a}, you do not need to define this macro.
5291
@end defmac
5292
 
5293
@cindex US Software GOFAST, floating point emulation library
5294
@cindex floating point emulation library, US Software GOFAST
5295
@cindex GOFAST, floating point emulation library
5296
@findex gofast_maybe_init_libfuncs
5297
@defmac US_SOFTWARE_GOFAST
5298
Define this macro if your system C library uses the US Software GOFAST
5299
library to provide floating point emulation.
5300
 
5301
In addition to defining this macro, your architecture must set
5302
@code{TARGET_INIT_LIBFUNCS} to @code{gofast_maybe_init_libfuncs}, or
5303
else call that function from its version of that hook.  It is defined
5304
in @file{config/gofast.h}, which must be included by your
5305
architecture's @file{@var{cpu}.c} file.  See @file{sparc/sparc.c} for
5306
an example.
5307
 
5308
If this macro is defined, the
5309
@code{TARGET_FLOAT_LIB_COMPARE_RETURNS_BOOL} target hook must return
5310
false for @code{SFmode} and @code{DFmode} comparisons.
5311
@end defmac
5312
 
5313
@cindex @code{EDOM}, implicit usage
5314
@findex matherr
5315
@defmac TARGET_EDOM
5316
The value of @code{EDOM} on the target machine, as a C integer constant
5317
expression.  If you don't define this macro, GCC does not attempt to
5318
deposit the value of @code{EDOM} into @code{errno} directly.  Look in
5319
@file{/usr/include/errno.h} to find the value of @code{EDOM} on your
5320
system.
5321
 
5322
If you do not define @code{TARGET_EDOM}, then compiled code reports
5323
domain errors by calling the library function and letting it report the
5324
error.  If mathematical functions on your system use @code{matherr} when
5325
there is an error, then you should leave @code{TARGET_EDOM} undefined so
5326
that @code{matherr} is used normally.
5327
@end defmac
5328
 
5329
@cindex @code{errno}, implicit usage
5330
@defmac GEN_ERRNO_RTX
5331
Define this macro as a C expression to create an rtl expression that
5332
refers to the global ``variable'' @code{errno}.  (On certain systems,
5333
@code{errno} may not actually be a variable.)  If you don't define this
5334
macro, a reasonable default is used.
5335
@end defmac
5336
 
5337
@cindex C99 math functions, implicit usage
5338
@defmac TARGET_C99_FUNCTIONS
5339
When this macro is nonzero, GCC will implicitly optimize @code{sin} calls into
5340
@code{sinf} and similarly for other functions defined by C99 standard.  The
5341
default is zero because a number of existing systems lack support for these
5342
functions in their runtime so this macro needs to be redefined to one on
5343
systems that do support the C99 runtime.
5344
@end defmac
5345
 
5346
@cindex sincos math function, implicit usage
5347
@defmac TARGET_HAS_SINCOS
5348
When this macro is nonzero, GCC will implicitly optimize calls to @code{sin}
5349
and @code{cos} with the same argument to a call to @code{sincos}.  The
5350
default is zero.  The target has to provide the following functions:
5351
@smallexample
5352
void sincos(double x, double *sin, double *cos);
5353
void sincosf(float x, float *sin, float *cos);
5354
void sincosl(long double x, long double *sin, long double *cos);
5355
@end smallexample
5356
@end defmac
5357
 
5358
@defmac NEXT_OBJC_RUNTIME
5359
Define this macro to generate code for Objective-C message sending using
5360
the calling convention of the NeXT system.  This calling convention
5361
involves passing the object, the selector and the method arguments all
5362
at once to the method-lookup library function.
5363
 
5364
The default calling convention passes just the object and the selector
5365
to the lookup function, which returns a pointer to the method.
5366
@end defmac
5367
 
5368
@node Addressing Modes
5369
@section Addressing Modes
5370
@cindex addressing modes
5371
 
5372
@c prevent bad page break with this line
5373
This is about addressing modes.
5374
 
5375
@defmac HAVE_PRE_INCREMENT
5376
@defmacx HAVE_PRE_DECREMENT
5377
@defmacx HAVE_POST_INCREMENT
5378
@defmacx HAVE_POST_DECREMENT
5379
A C expression that is nonzero if the machine supports pre-increment,
5380
pre-decrement, post-increment, or post-decrement addressing respectively.
5381
@end defmac
5382
 
5383
@defmac HAVE_PRE_MODIFY_DISP
5384
@defmacx HAVE_POST_MODIFY_DISP
5385
A C expression that is nonzero if the machine supports pre- or
5386
post-address side-effect generation involving constants other than
5387
the size of the memory operand.
5388
@end defmac
5389
 
5390
@defmac HAVE_PRE_MODIFY_REG
5391
@defmacx HAVE_POST_MODIFY_REG
5392
A C expression that is nonzero if the machine supports pre- or
5393
post-address side-effect generation involving a register displacement.
5394
@end defmac
5395
 
5396
@defmac CONSTANT_ADDRESS_P (@var{x})
5397
A C expression that is 1 if the RTX @var{x} is a constant which
5398
is a valid address.  On most machines the default definition of
5399
@code{(CONSTANT_P (@var{x}) && GET_CODE (@var{x}) != CONST_DOUBLE)}
5400
is acceptable, but a few machines are more restrictive as to which
5401
constant addresses are supported.
5402
@end defmac
5403
 
5404
@defmac CONSTANT_P (@var{x})
5405
@code{CONSTANT_P}, which is defined by target-independent code,
5406
accepts integer-values expressions whose values are not explicitly
5407
known, such as @code{symbol_ref}, @code{label_ref}, and @code{high}
5408
expressions and @code{const} arithmetic expressions, in addition to
5409
@code{const_int} and @code{const_double} expressions.
5410
@end defmac
5411
 
5412
@defmac MAX_REGS_PER_ADDRESS
5413
A number, the maximum number of registers that can appear in a valid
5414
memory address.  Note that it is up to you to specify a value equal to
5415
the maximum number that @code{TARGET_LEGITIMATE_ADDRESS_P} would ever
5416
accept.
5417
@end defmac
5418
 
5419
@deftypefn {Target Hook} bool TARGET_LEGITIMATE_ADDRESS_P (enum machine_mode @var{mode}, rtx @var{x}, bool @var{strict})
5420
A function that returns whether @var{x} (an RTX) is a legitimate memory
5421
address on the target machine for a memory operand of mode @var{mode}.
5422
 
5423
Legitimate addresses are defined in two variants: a strict variant and a
5424
non-strict one.  The @var{strict} parameter chooses which variant is
5425
desired by the caller.
5426
 
5427
The strict variant is used in the reload pass.  It must be defined so
5428
that any pseudo-register that has not been allocated a hard register is
5429
considered a memory reference.  This is because in contexts where some
5430
kind of register is required, a pseudo-register with no hard register
5431
must be rejected.  For non-hard registers, the strict variant should look
5432
up the @code{reg_renumber} array; it should then proceed using the hard
5433
register number in the array, or treat the pseudo as a memory reference
5434
if the array holds @code{-1}.
5435
 
5436
The non-strict variant is used in other passes.  It must be defined to
5437
accept all pseudo-registers in every context where some kind of
5438
register is required.
5439
 
5440
Normally, constant addresses which are the sum of a @code{symbol_ref}
5441
and an integer are stored inside a @code{const} RTX to mark them as
5442
constant.  Therefore, there is no need to recognize such sums
5443
specifically as legitimate addresses.  Normally you would simply
5444
recognize any @code{const} as legitimate.
5445
 
5446
Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant
5447
sums that are not marked with  @code{const}.  It assumes that a naked
5448
@code{plus} indicates indexing.  If so, then you @emph{must} reject such
5449
naked constant sums as illegitimate addresses, so that none of them will
5450
be given to @code{PRINT_OPERAND_ADDRESS}.
5451
 
5452
@cindex @code{TARGET_ENCODE_SECTION_INFO} and address validation
5453
On some machines, whether a symbolic address is legitimate depends on
5454
the section that the address refers to.  On these machines, define the
5455
target hook @code{TARGET_ENCODE_SECTION_INFO} to store the information
5456
into the @code{symbol_ref}, and then check for it here.  When you see a
5457
@code{const}, you will have to look inside it to find the
5458
@code{symbol_ref} in order to determine the section.  @xref{Assembler
5459
Format}.
5460
 
5461
@cindex @code{GO_IF_LEGITIMATE_ADDRESS}
5462
Some ports are still using a deprecated legacy substitute for
5463
this hook, the @code{GO_IF_LEGITIMATE_ADDRESS} macro.  This macro
5464
has this syntax:
5465
 
5466
@example
5467
#define GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label})
5468
@end example
5469
 
5470
@noindent
5471
and should @code{goto @var{label}} if the address @var{x} is a valid
5472
address on the target machine for a memory operand of mode @var{mode}.
5473
Whether the strict or non-strict variants are desired is defined by
5474
the @code{REG_OK_STRICT} macro introduced earlier in this section.
5475
Using the hook is usually simpler because it limits the number of
5476
files that are recompiled when changes are made.
5477
@end deftypefn
5478
 
5479
@defmac TARGET_MEM_CONSTRAINT
5480
A single character to be used instead of the default @code{'m'}
5481
character for general memory addresses.  This defines the constraint
5482
letter which matches the memory addresses accepted by
5483
@code{TARGET_LEGITIMATE_ADDRESS_P}.  Define this macro if you want to
5484
support new address formats in your back end without changing the
5485
semantics of the @code{'m'} constraint.  This is necessary in order to
5486
preserve functionality of inline assembly constructs using the
5487
@code{'m'} constraint.
5488
@end defmac
5489
 
5490
@defmac FIND_BASE_TERM (@var{x})
5491
A C expression to determine the base term of address @var{x},
5492
or to provide a simplified version of @var{x} from which @file{alias.c}
5493
can easily find the base term.  This macro is used in only two places:
5494
@code{find_base_value} and @code{find_base_term} in @file{alias.c}.
5495
 
5496
It is always safe for this macro to not be defined.  It exists so
5497
that alias analysis can understand machine-dependent addresses.
5498
 
5499
The typical use of this macro is to handle addresses containing
5500
a label_ref or symbol_ref within an UNSPEC@.
5501
@end defmac
5502
 
5503
@deftypefn {Target Hook} rtx TARGET_LEGITIMIZE_ADDRESS (rtx @var{x}, rtx @var{oldx}, enum machine_mode @var{mode})
5504
This hook is given an invalid memory address @var{x} for an
5505
operand of mode @var{mode} and should try to return a valid memory
5506
address.
5507
 
5508
@findex break_out_memory_refs
5509
@var{x} will always be the result of a call to @code{break_out_memory_refs},
5510
and @var{oldx} will be the operand that was given to that function to produce
5511
@var{x}.
5512
 
5513
The code of the hook should not alter the substructure of
5514
@var{x}.  If it transforms @var{x} into a more legitimate form, it
5515
should return the new @var{x}.
5516
 
5517
It is not necessary for this hook to come up with a legitimate address.
5518
The compiler has standard ways of doing so in all cases.  In fact, it
5519
is safe to omit this hook or make it return @var{x} if it cannot find
5520
a valid way to legitimize the address.  But often a machine-dependent
5521
strategy can generate better code.
5522
@end deftypefn
5523
 
5524
@defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win})
5525
A C compound statement that attempts to replace @var{x}, which is an address
5526
that needs reloading, with a valid memory address for an operand of mode
5527
@var{mode}.  @var{win} will be a C statement label elsewhere in the code.
5528
It is not necessary to define this macro, but it might be useful for
5529
performance reasons.
5530
 
5531
For example, on the i386, it is sometimes possible to use a single
5532
reload register instead of two by reloading a sum of two pseudo
5533
registers into a register.  On the other hand, for number of RISC
5534
processors offsets are limited so that often an intermediate address
5535
needs to be generated in order to address a stack slot.  By defining
5536
@code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses
5537
generated for adjacent some stack slots can be made identical, and thus
5538
be shared.
5539
 
5540
@emph{Note}: This macro should be used with caution.  It is necessary
5541
to know something of how reload works in order to effectively use this,
5542
and it is quite easy to produce macros that build in too much knowledge
5543
of reload internals.
5544
 
5545
@emph{Note}: This macro must be able to reload an address created by a
5546
previous invocation of this macro.  If it fails to handle such addresses
5547
then the compiler may generate incorrect code or abort.
5548
 
5549
@findex push_reload
5550
The macro definition should use @code{push_reload} to indicate parts that
5551
need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually
5552
suitable to be passed unaltered to @code{push_reload}.
5553
 
5554
The code generated by this macro must not alter the substructure of
5555
@var{x}.  If it transforms @var{x} into a more legitimate form, it
5556
should assign @var{x} (which will always be a C variable) a new value.
5557
This also applies to parts that you change indirectly by calling
5558
@code{push_reload}.
5559
 
5560
@findex strict_memory_address_p
5561
The macro definition may use @code{strict_memory_address_p} to test if
5562
the address has become legitimate.
5563
 
5564
@findex copy_rtx
5565
If you want to change only a part of @var{x}, one standard way of doing
5566
this is to use @code{copy_rtx}.  Note, however, that it unshares only a
5567
single level of rtl.  Thus, if the part to be changed is not at the
5568
top level, you'll need to replace first the top level.
5569
It is not necessary for this macro to come up with a legitimate
5570
address;  but often a machine-dependent strategy can generate better code.
5571
@end defmac
5572
 
5573
@defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label})
5574
A C statement or compound statement with a conditional @code{goto
5575
@var{label};} executed if memory address @var{x} (an RTX) can have
5576
different meanings depending on the machine mode of the memory
5577
reference it is used for or if the address is valid for some modes
5578
but not others.
5579
 
5580
Autoincrement and autodecrement addresses typically have mode-dependent
5581
effects because the amount of the increment or decrement is the size
5582
of the operand being addressed.  Some machines have other mode-dependent
5583
addresses.  Many RISC machines have no mode-dependent addresses.
5584
 
5585
You may assume that @var{addr} is a valid address for the machine.
5586
@end defmac
5587
 
5588
@defmac LEGITIMATE_CONSTANT_P (@var{x})
5589
A C expression that is nonzero if @var{x} is a legitimate constant for
5590
an immediate operand on the target machine.  You can assume that
5591
@var{x} satisfies @code{CONSTANT_P}, so you need not check this.  In fact,
5592
@samp{1} is a suitable definition for this macro on machines where
5593
anything @code{CONSTANT_P} is valid.
5594
@end defmac
5595
 
5596
@deftypefn {Target Hook} rtx TARGET_DELEGITIMIZE_ADDRESS (rtx @var{x})
5597
This hook is used to undo the possibly obfuscating effects of the
5598
@code{LEGITIMIZE_ADDRESS} and @code{LEGITIMIZE_RELOAD_ADDRESS} target
5599
macros.  Some backend implementations of these macros wrap symbol
5600
references inside an @code{UNSPEC} rtx to represent PIC or similar
5601
addressing modes.  This target hook allows GCC's optimizers to understand
5602
the semantics of these opaque @code{UNSPEC}s by converting them back
5603
into their original form.
5604
@end deftypefn
5605
 
5606
@deftypefn {Target Hook} bool TARGET_CANNOT_FORCE_CONST_MEM (rtx @var{x})
5607
This hook should return true if @var{x} is of a form that cannot (or
5608
should not) be spilled to the constant pool.  The default version of
5609
this hook returns false.
5610
 
5611
The primary reason to define this hook is to prevent reload from
5612
deciding that a non-legitimate constant would be better reloaded
5613
from the constant pool instead of spilling and reloading a register
5614
holding the constant.  This restriction is often true of addresses
5615
of TLS symbols for various targets.
5616
@end deftypefn
5617
 
5618
@deftypefn {Target Hook} bool TARGET_USE_BLOCKS_FOR_CONSTANT_P (enum machine_mode @var{mode}, const_rtx @var{x})
5619
This hook should return true if pool entries for constant @var{x} can
5620
be placed in an @code{object_block} structure.  @var{mode} is the mode
5621
of @var{x}.
5622
 
5623
The default version returns false for all constants.
5624
@end deftypefn
5625
 
5626
@deftypefn {Target Hook} tree TARGET_BUILTIN_RECIPROCAL (unsigned @var{fn}, bool @var{md_fn}, bool @var{sqrt})
5627
This hook should return the DECL of a function that implements reciprocal of
5628
the builtin function with builtin function code @var{fn}, or
5629
@code{NULL_TREE} if such a function is not available.  @var{md_fn} is true
5630
when @var{fn} is a code of a machine-dependent builtin function.  When
5631
@var{sqrt} is true, additional optimizations that apply only to the reciprocal
5632
of a square root function are performed, and only reciprocals of @code{sqrt}
5633
function are valid.
5634
@end deftypefn
5635
 
5636
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD (void)
5637
This hook should return the DECL of a function @var{f} that given an
5638
address @var{addr} as an argument returns a mask @var{m} that can be
5639
used to extract from two vectors the relevant data that resides in
5640
@var{addr} in case @var{addr} is not properly aligned.
5641
 
5642
The autovectorizer, when vectorizing a load operation from an address
5643
@var{addr} that may be unaligned, will generate two vector loads from
5644
the two aligned addresses around @var{addr}. It then generates a
5645
@code{REALIGN_LOAD} operation to extract the relevant data from the
5646
two loaded vectors. The first two arguments to @code{REALIGN_LOAD},
5647
@var{v1} and @var{v2}, are the two vectors, each of size @var{VS}, and
5648
the third argument, @var{OFF}, defines how the data will be extracted
5649
from these two vectors: if @var{OFF} is 0, then the returned vector is
5650
@var{v2}; otherwise, the returned vector is composed from the last
5651
@var{VS}-@var{OFF} elements of @var{v1} concatenated to the first
5652
@var{OFF} elements of @var{v2}.
5653
 
5654
If this hook is defined, the autovectorizer will generate a call
5655
to @var{f} (using the DECL tree that this hook returns) and will
5656
use the return value of @var{f} as the argument @var{OFF} to
5657
@code{REALIGN_LOAD}. Therefore, the mask @var{m} returned by @var{f}
5658
should comply with the semantics expected by @code{REALIGN_LOAD}
5659
described above.
5660
If this hook is not defined, then @var{addr} will be used as
5661
the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low
5662
log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered.
5663
@end deftypefn
5664
 
5665
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN (tree @var{x})
5666
This hook should return the DECL of a function @var{f} that implements
5667
widening multiplication of the even elements of two input vectors of type @var{x}.
5668
 
5669
If this hook is defined, the autovectorizer will use it along with the
5670
@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD} target hook when vectorizing
5671
widening multiplication in cases that the order of the results does not have to be
5672
preserved (e.g.@: used only by a reduction computation). Otherwise, the
5673
@code{widen_mult_hi/lo} idioms will be used.
5674
@end deftypefn
5675
 
5676
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD (tree @var{x})
5677
This hook should return the DECL of a function @var{f} that implements
5678
widening multiplication of the odd elements of two input vectors of type @var{x}.
5679
 
5680
If this hook is defined, the autovectorizer will use it along with the
5681
@code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN} target hook when vectorizing
5682
widening multiplication in cases that the order of the results does not have to be
5683
preserved (e.g.@: used only by a reduction computation). Otherwise, the
5684
@code{widen_mult_hi/lo} idioms will be used.
5685
@end deftypefn
5686
 
5687
@deftypefn {Target Hook} int TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST (bool @var{runtime_test})
5688
Returns the cost to be added to the overhead involved with executing
5689
the vectorized version of a loop.
5690
@end deftypefn
5691
 
5692
@deftypefn {Target Hook} bool TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE (const_tree @var{type}, bool @var{is_packed})
5693
Return true if vector alignment is reachable (by peeling N iterations) for the given type.
5694
@end deftypefn
5695
 
5696
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_VEC_PERM (tree @var{type}, tree *@var{mask_element_type})
5697
Target builtin that implements vector permute.
5698
@end deftypefn
5699
 
5700
@deftypefn {Target Hook} bool TARGET_VECTORIZE_BUILTIN_VEC_PERM_OK (tree @var{vec_type}, tree @var{mask})
5701
Return true if a vector created for @code{builtin_vec_perm} is valid.
5702
@end deftypefn
5703
 
5704
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_CONVERSION (unsigned @var{code}, tree @var{type})
5705
This hook should return the DECL of a function that implements conversion of the
5706
input vector of type @var{type}.
5707
If @var{type} is an integral type, the result of the conversion is a vector of
5708
floating-point type of the same size.
5709
If @var{type} is a floating-point type, the result of the conversion is a vector
5710
of integral type of the same size.
5711
The value of @var{code} is one of the enumerators in @code{enum tree_code} and
5712
specifies how the conversion is to be applied
5713
(truncation, rounding, etc.).
5714
 
5715
If this hook is defined, the autovectorizer will use the
5716
@code{TARGET_VECTORIZE_BUILTIN_CONVERSION} target hook when vectorizing
5717
conversion. Otherwise, it will return @code{NULL_TREE}.
5718
@end deftypefn
5719
 
5720
@deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION (tree @var{fndecl}, tree @var{vec_type_out}, tree @var{vec_type_in})
5721
This hook should return the decl of a function that implements the
5722
vectorized variant of the builtin function with builtin function code
5723
@var{code} or @code{NULL_TREE} if such a function is not available.
5724
The value of @var{fndecl} is the builtin function declaration.  The
5725
return type of the vectorized function shall be of vector type
5726
@var{vec_type_out} and the argument types should be @var{vec_type_in}.
5727
@end deftypefn
5728
 
5729
@deftypefn {Target Hook} bool TARGET_SUPPORT_VECTOR_MISALIGNMENT (enum machine_mode @var{mode}, const_tree @var{type}, int @var{misalignment}, bool @var{is_packed})
5730
This hook should return true if the target supports misaligned vector
5731
store/load of a specific factor denoted in the @var{misalignment}
5732
parameter.  The vector store/load should be of machine mode @var{mode} and
5733
the elements in the vectors should be of type @var{type}.  @var{is_packed}
5734
parameter is true if the memory access is defined in a packed struct.
5735
@end deftypefn
5736
 
5737
@node Anchored Addresses
5738
@section Anchored Addresses
5739
@cindex anchored addresses
5740
@cindex @option{-fsection-anchors}
5741
 
5742
GCC usually addresses every static object as a separate entity.
5743
For example, if we have:
5744
 
5745
@smallexample
5746
static int a, b, c;
5747
int foo (void) @{ return a + b + c; @}
5748
@end smallexample
5749
 
5750
the code for @code{foo} will usually calculate three separate symbolic
5751
addresses: those of @code{a}, @code{b} and @code{c}.  On some targets,
5752
it would be better to calculate just one symbolic address and access
5753
the three variables relative to it.  The equivalent pseudocode would
5754
be something like:
5755
 
5756
@smallexample
5757
int foo (void)
5758
@{
5759
  register int *xr = &x;
5760
  return xr[&a - &x] + xr[&b - &x] + xr[&c - &x];
5761
@}
5762
@end smallexample
5763
 
5764
(which isn't valid C).  We refer to shared addresses like @code{x} as
5765
``section anchors''.  Their use is controlled by @option{-fsection-anchors}.
5766
 
5767
The hooks below describe the target properties that GCC needs to know
5768
in order to make effective use of section anchors.  It won't use
5769
section anchors at all unless either @code{TARGET_MIN_ANCHOR_OFFSET}
5770
or @code{TARGET_MAX_ANCHOR_OFFSET} is set to a nonzero value.
5771
 
5772
@deftypevr {Target Hook} HOST_WIDE_INT TARGET_MIN_ANCHOR_OFFSET
5773
The minimum offset that should be applied to a section anchor.
5774
On most targets, it should be the smallest offset that can be
5775
applied to a base register while still giving a legitimate address
5776
for every mode.  The default value is 0.
5777
@end deftypevr
5778
 
5779
@deftypevr {Target Hook} HOST_WIDE_INT TARGET_MAX_ANCHOR_OFFSET
5780
Like @code{TARGET_MIN_ANCHOR_OFFSET}, but the maximum (inclusive)
5781
offset that should be applied to section anchors.  The default
5782
value is 0.
5783
@end deftypevr
5784
 
5785
@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_ANCHOR (rtx @var{x})
5786
Write the assembly code to define section anchor @var{x}, which is a
5787
@code{SYMBOL_REF} for which @samp{SYMBOL_REF_ANCHOR_P (@var{x})} is true.
5788
The hook is called with the assembly output position set to the beginning
5789
of @code{SYMBOL_REF_BLOCK (@var{x})}.
5790
 
5791
If @code{ASM_OUTPUT_DEF} is available, the hook's default definition uses
5792
it to define the symbol as @samp{. + SYMBOL_REF_BLOCK_OFFSET (@var{x})}.
5793
If @code{ASM_OUTPUT_DEF} is not available, the hook's default definition
5794
is @code{NULL}, which disables the use of section anchors altogether.
5795
@end deftypefn
5796
 
5797
@deftypefn {Target Hook} bool TARGET_USE_ANCHORS_FOR_SYMBOL_P (const_rtx @var{x})
5798
Return true if GCC should attempt to use anchors to access @code{SYMBOL_REF}
5799
@var{x}.  You can assume @samp{SYMBOL_REF_HAS_BLOCK_INFO_P (@var{x})} and
5800
@samp{!SYMBOL_REF_ANCHOR_P (@var{x})}.
5801
 
5802
The default version is correct for most targets, but you might need to
5803
intercept this hook to handle things like target-specific attributes
5804
or target-specific sections.
5805
@end deftypefn
5806
 
5807
@node Condition Code
5808
@section Condition Code Status
5809
@cindex condition code status
5810
 
5811
The macros in this section can be split in two families, according to the
5812
two ways of representing condition codes in GCC.
5813
 
5814
The first representation is the so called @code{(cc0)} representation
5815
(@pxref{Jump Patterns}), where all instructions can have an implicit
5816
clobber of the condition codes.  The second is the condition code
5817
register representation, which provides better schedulability for
5818
architectures that do have a condition code register, but on which
5819
most instructions do not affect it.  The latter category includes
5820
most RISC machines.
5821
 
5822
The implicit clobbering poses a strong restriction on the placement of
5823
the definition and use of the condition code, which need to be in adjacent
5824
insns for machines using @code{(cc0)}.  This can prevent important
5825
optimizations on some machines.  For example, on the IBM RS/6000, there
5826
is a delay for taken branches unless the condition code register is set
5827
three instructions earlier than the conditional branch.  The instruction
5828
scheduler cannot perform this optimization if it is not permitted to
5829
separate the definition and use of the condition code register.
5830
 
5831
For this reason, it is possible and suggested to use a register to
5832
represent the condition code for new ports.  If there is a specific
5833
condition code register in the machine, use a hard register.  If the
5834
condition code or comparison result can be placed in any general register,
5835
or if there are multiple condition registers, use a pseudo register.
5836
Registers used to store the condition code value will usually have a mode
5837
that is in class @code{MODE_CC}.
5838
 
5839
Alternatively, you can use @code{BImode} if the comparison operator is
5840
specified already in the compare instruction.  In this case, you are not
5841
interested in most macros in this section.
5842
 
5843
@menu
5844
* CC0 Condition Codes::      Old style representation of condition codes.
5845
* MODE_CC Condition Codes::  Modern representation of condition codes.
5846
* Cond. Exec. Macros::       Macros to control conditional execution.
5847
@end menu
5848
 
5849
@node CC0 Condition Codes
5850
@subsection Representation of condition codes using @code{(cc0)}
5851
@findex cc0
5852
 
5853
@findex cc_status
5854
The file @file{conditions.h} defines a variable @code{cc_status} to
5855
describe how the condition code was computed (in case the interpretation of
5856
the condition code depends on the instruction that it was set by).  This
5857
variable contains the RTL expressions on which the condition code is
5858
currently based, and several standard flags.
5859
 
5860
Sometimes additional machine-specific flags must be defined in the machine
5861
description header file.  It can also add additional machine-specific
5862
information by defining @code{CC_STATUS_MDEP}.
5863
 
5864
@defmac CC_STATUS_MDEP
5865
C code for a data type which is used for declaring the @code{mdep}
5866
component of @code{cc_status}.  It defaults to @code{int}.
5867
 
5868
This macro is not used on machines that do not use @code{cc0}.
5869
@end defmac
5870
 
5871
@defmac CC_STATUS_MDEP_INIT
5872
A C expression to initialize the @code{mdep} field to ``empty''.
5873
The default definition does nothing, since most machines don't use
5874
the field anyway.  If you want to use the field, you should probably
5875
define this macro to initialize it.
5876
 
5877
This macro is not used on machines that do not use @code{cc0}.
5878
@end defmac
5879
 
5880
@defmac NOTICE_UPDATE_CC (@var{exp}, @var{insn})
5881
A C compound statement to set the components of @code{cc_status}
5882
appropriately for an insn @var{insn} whose body is @var{exp}.  It is
5883
this macro's responsibility to recognize insns that set the condition
5884
code as a byproduct of other activity as well as those that explicitly
5885
set @code{(cc0)}.
5886
 
5887
This macro is not used on machines that do not use @code{cc0}.
5888
 
5889
If there are insns that do not set the condition code but do alter
5890
other machine registers, this macro must check to see whether they
5891
invalidate the expressions that the condition code is recorded as
5892
reflecting.  For example, on the 68000, insns that store in address
5893
registers do not set the condition code, which means that usually
5894
@code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such
5895
insns.  But suppose that the previous insn set the condition code
5896
based on location @samp{a4@@(102)} and the current insn stores a new
5897
value in @samp{a4}.  Although the condition code is not changed by
5898
this, it will no longer be true that it reflects the contents of
5899
@samp{a4@@(102)}.  Therefore, @code{NOTICE_UPDATE_CC} must alter
5900
@code{cc_status} in this case to say that nothing is known about the
5901
condition code value.
5902
 
5903
The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal
5904
with the results of peephole optimization: insns whose patterns are
5905
@code{parallel} RTXs containing various @code{reg}, @code{mem} or
5906
constants which are just the operands.  The RTL structure of these
5907
insns is not sufficient to indicate what the insns actually do.  What
5908
@code{NOTICE_UPDATE_CC} should do when it sees one is just to run
5909
@code{CC_STATUS_INIT}.
5910
 
5911
A possible definition of @code{NOTICE_UPDATE_CC} is to call a function
5912
that looks at an attribute (@pxref{Insn Attributes}) named, for example,
5913
@samp{cc}.  This avoids having detailed information about patterns in
5914
two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}.
5915
@end defmac
5916
 
5917
@node MODE_CC Condition Codes
5918
@subsection Representation of condition codes using registers
5919
@findex CCmode
5920
@findex MODE_CC
5921
 
5922
@defmac SELECT_CC_MODE (@var{op}, @var{x}, @var{y})
5923
On many machines, the condition code may be produced by other instructions
5924
than compares, for example the branch can use directly the condition
5925
code set by a subtract instruction.  However, on some machines
5926
when the condition code is set this way some bits (such as the overflow
5927
bit) are not set in the same way as a test instruction, so that a different
5928
branch instruction must be used for some conditional branches.  When
5929
this happens, use the machine mode of the condition code register to
5930
record different formats of the condition code register.  Modes can
5931
also be used to record which compare instruction (e.g. a signed or an
5932
unsigned comparison) produced the condition codes.
5933
 
5934
If other modes than @code{CCmode} are required, add them to
5935
@file{@var{machine}-modes.def} and define @code{SELECT_CC_MODE} to choose
5936
a mode given an operand of a compare.  This is needed because the modes
5937
have to be chosen not only during RTL generation but also, for example,
5938
by instruction combination.  The result of @code{SELECT_CC_MODE} should
5939
be consistent with the mode used in the patterns; for example to support
5940
the case of the add on the SPARC discussed above, we have the pattern
5941
 
5942
@smallexample
5943
(define_insn ""
5944
  [(set (reg:CC_NOOV 0)
5945
        (compare:CC_NOOV
5946
          (plus:SI (match_operand:SI 0 "register_operand" "%r")
5947
                   (match_operand:SI 1 "arith_operand" "rI"))
5948
          (const_int 0)))]
5949
  ""
5950
  "@dots{}")
5951
@end smallexample
5952
 
5953
@noindent
5954
together with a @code{SELECT_CC_MODE} that returns @code{CC_NOOVmode}
5955
for comparisons whose argument is a @code{plus}:
5956
 
5957
@smallexample
5958
#define SELECT_CC_MODE(OP,X,Y) \
5959
  (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT          \
5960
   ? ((OP == EQ || OP == NE) ? CCFPmode : CCFPEmode)    \
5961
   : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS    \
5962
       || GET_CODE (X) == NEG) \
5963
      ? CC_NOOVmode : CCmode))
5964
@end smallexample
5965
 
5966
Another reason to use modes is to retain information on which operands
5967
were used by the comparison; see @code{REVERSIBLE_CC_MODE} later in
5968
this section.
5969
 
5970
You should define this macro if and only if you define extra CC modes
5971
in @file{@var{machine}-modes.def}.
5972
@end defmac
5973
 
5974
@defmac CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1})
5975
On some machines not all possible comparisons are defined, but you can
5976
convert an invalid comparison into a valid one.  For example, the Alpha
5977
does not have a @code{GT} comparison, but you can use an @code{LT}
5978
comparison instead and swap the order of the operands.
5979
 
5980
On such machines, define this macro to be a C statement to do any
5981
required conversions.  @var{code} is the initial comparison code
5982
and @var{op0} and @var{op1} are the left and right operands of the
5983
comparison, respectively.  You should modify @var{code}, @var{op0}, and
5984
@var{op1} as required.
5985
 
5986
GCC will not assume that the comparison resulting from this macro is
5987
valid but will see if the resulting insn matches a pattern in the
5988
@file{md} file.
5989
 
5990
You need not define this macro if it would never change the comparison
5991
code or operands.
5992
@end defmac
5993
 
5994
@defmac REVERSIBLE_CC_MODE (@var{mode})
5995
A C expression whose value is one if it is always safe to reverse a
5996
comparison whose mode is @var{mode}.  If @code{SELECT_CC_MODE}
5997
can ever return @var{mode} for a floating-point inequality comparison,
5998
then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero.
5999
 
6000
You need not define this macro if it would always returns zero or if the
6001
floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}.
6002
For example, here is the definition used on the SPARC, where floating-point
6003
inequality comparisons are always given @code{CCFPEmode}:
6004
 
6005
@smallexample
6006
#define REVERSIBLE_CC_MODE(MODE)  ((MODE) != CCFPEmode)
6007
@end smallexample
6008
@end defmac
6009
 
6010
@defmac REVERSE_CONDITION (@var{code}, @var{mode})
6011
A C expression whose value is reversed condition code of the @var{code} for
6012
comparison done in CC_MODE @var{mode}.  The macro is used only in case
6013
@code{REVERSIBLE_CC_MODE (@var{mode})} is nonzero.  Define this macro in case
6014
machine has some non-standard way how to reverse certain conditionals.  For
6015
instance in case all floating point conditions are non-trapping, compiler may
6016
freely convert unordered compares to ordered one.  Then definition may look
6017
like:
6018
 
6019
@smallexample
6020
#define REVERSE_CONDITION(CODE, MODE) \
6021
   ((MODE) != CCFPmode ? reverse_condition (CODE) \
6022
    : reverse_condition_maybe_unordered (CODE))
6023
@end smallexample
6024
@end defmac
6025
 
6026
@deftypefn {Target Hook} bool TARGET_FIXED_CONDITION_CODE_REGS (unsigned int *@var{p1}, unsigned int *@var{p2})
6027
On targets which do not use @code{(cc0)}, and which use a hard
6028
register rather than a pseudo-register to hold condition codes, the
6029
regular CSE passes are often not able to identify cases in which the
6030
hard register is set to a common value.  Use this hook to enable a
6031
small pass which optimizes such cases.  This hook should return true
6032
to enable this pass, and it should set the integers to which its
6033
arguments point to the hard register numbers used for condition codes.
6034
When there is only one such register, as is true on most systems, the
6035
integer pointed to by @var{p2} should be set to
6036
@code{INVALID_REGNUM}.
6037
 
6038
The default version of this hook returns false.
6039
@end deftypefn
6040
 
6041
@deftypefn {Target Hook} {enum machine_mode} TARGET_CC_MODES_COMPATIBLE (enum machine_mode @var{m1}, enum machine_mode @var{m2})
6042
On targets which use multiple condition code modes in class
6043
@code{MODE_CC}, it is sometimes the case that a comparison can be
6044
validly done in more than one mode.  On such a system, define this
6045
target hook to take two mode arguments and to return a mode in which
6046
both comparisons may be validly done.  If there is no such mode,
6047
return @code{VOIDmode}.
6048
 
6049
The default version of this hook checks whether the modes are the
6050
same.  If they are, it returns that mode.  If they are different, it
6051
returns @code{VOIDmode}.
6052
@end deftypefn
6053
 
6054
@node Cond. Exec. Macros
6055
@subsection Macros to control conditional execution
6056
@findex conditional execution
6057
@findex predication
6058
 
6059
There is one macro that may need to be defined for targets
6060
supporting conditional execution, independent of how they
6061
represent conditional branches.
6062
 
6063
@defmac REVERSE_CONDEXEC_PREDICATES_P (@var{op1}, @var{op2})
6064
A C expression that returns true if the conditional execution predicate
6065
@var{op1}, a comparison operation, is the inverse of @var{op2} and vice
6066
versa.  Define this to return 0 if the target has conditional execution
6067
predicates that cannot be reversed safely.  There is no need to validate
6068
that the arguments of op1 and op2 are the same, this is done separately.
6069
If no expansion is specified, this macro is defined as follows:
6070
 
6071
@smallexample
6072
#define REVERSE_CONDEXEC_PREDICATES_P (x, y) \
6073
   (GET_CODE ((x)) == reversed_comparison_code ((y), NULL))
6074
@end smallexample
6075
@end defmac
6076
 
6077
@node Costs
6078
@section Describing Relative Costs of Operations
6079
@cindex costs of instructions
6080
@cindex relative costs
6081
@cindex speed of instructions
6082
 
6083
These macros let you describe the relative speed of various operations
6084
on the target machine.
6085
 
6086
@defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to})
6087
A C expression for the cost of moving data of mode @var{mode} from a
6088
register in class @var{from} to one in class @var{to}.  The classes are
6089
expressed using the enumeration values such as @code{GENERAL_REGS}.  A
6090
value of 2 is the default; other values are interpreted relative to
6091
that.
6092
 
6093
It is not required that the cost always equal 2 when @var{from} is the
6094
same as @var{to}; on some machines it is expensive to move between
6095
registers if they are not general registers.
6096
 
6097
If reload sees an insn consisting of a single @code{set} between two
6098
hard registers, and if @code{REGISTER_MOVE_COST} applied to their
6099
classes returns a value of 2, reload does not check to ensure that the
6100
constraints of the insn are met.  Setting a cost of other than 2 will
6101
allow reload to verify that the constraints are met.  You should do this
6102
if the @samp{mov@var{m}} pattern's constraints do not allow such copying.
6103
@end defmac
6104
 
6105
@defmac MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in})
6106
A C expression for the cost of moving data of mode @var{mode} between a
6107
register of class @var{class} and memory; @var{in} is zero if the value
6108
is to be written to memory, nonzero if it is to be read in.  This cost
6109
is relative to those in @code{REGISTER_MOVE_COST}.  If moving between
6110
registers and memory is more expensive than between two registers, you
6111
should define this macro to express the relative cost.
6112
 
6113
If you do not define this macro, GCC uses a default cost of 4 plus
6114
the cost of copying via a secondary reload register, if one is
6115
needed.  If your machine requires a secondary reload register to copy
6116
between memory and a register of @var{class} but the reload mechanism is
6117
more complex than copying via an intermediate, define this macro to
6118
reflect the actual cost of the move.
6119
 
6120
GCC defines the function @code{memory_move_secondary_cost} if
6121
secondary reloads are needed.  It computes the costs due to copying via
6122
a secondary register.  If your machine copies from memory using a
6123
secondary register in the conventional way but the default base value of
6124
4 is not correct for your machine, define this macro to add some other
6125
value to the result of that function.  The arguments to that function
6126
are the same as to this macro.
6127
@end defmac
6128
 
6129
@defmac BRANCH_COST (@var{speed_p}, @var{predictable_p})
6130
A C expression for the cost of a branch instruction.  A value of 1 is the
6131
default; other values are interpreted relative to that. Parameter @var{speed_p}
6132
is true when the branch in question should be optimized for speed.  When
6133
it is false, @code{BRANCH_COST} should be returning value optimal for code size
6134
rather then performance considerations.  @var{predictable_p} is true for well
6135
predictable branches. On many architectures the @code{BRANCH_COST} can be
6136
reduced then.
6137
@end defmac
6138
 
6139
Here are additional macros which do not specify precise relative costs,
6140
but only that certain actions are more expensive than GCC would
6141
ordinarily expect.
6142
 
6143
@defmac SLOW_BYTE_ACCESS
6144
Define this macro as a C expression which is nonzero if accessing less
6145
than a word of memory (i.e.@: a @code{char} or a @code{short}) is no
6146
faster than accessing a word of memory, i.e., if such access
6147
require more than one instruction or if there is no difference in cost
6148
between byte and (aligned) word loads.
6149
 
6150
When this macro is not defined, the compiler will access a field by
6151
finding the smallest containing object; when it is defined, a fullword
6152
load will be used if alignment permits.  Unless bytes accesses are
6153
faster than word accesses, using word accesses is preferable since it
6154
may eliminate subsequent memory access if subsequent accesses occur to
6155
other fields in the same word of the structure, but to different bytes.
6156
@end defmac
6157
 
6158
@defmac SLOW_UNALIGNED_ACCESS (@var{mode}, @var{alignment})
6159
Define this macro to be the value 1 if memory accesses described by the
6160
@var{mode} and @var{alignment} parameters have a cost many times greater
6161
than aligned accesses, for example if they are emulated in a trap
6162
handler.
6163
 
6164
When this macro is nonzero, the compiler will act as if
6165
@code{STRICT_ALIGNMENT} were nonzero when generating code for block
6166
moves.  This can cause significantly more instructions to be produced.
6167
Therefore, do not set this macro nonzero if unaligned accesses only add a
6168
cycle or two to the time for a memory access.
6169
 
6170
If the value of this macro is always zero, it need not be defined.  If
6171
this macro is defined, it should produce a nonzero value when
6172
@code{STRICT_ALIGNMENT} is nonzero.
6173
@end defmac
6174
 
6175
@defmac MOVE_RATIO (@var{speed})
6176
The threshold of number of scalar memory-to-memory move insns, @emph{below}
6177
which a sequence of insns should be generated instead of a
6178
string move insn or a library call.  Increasing the value will always
6179
make code faster, but eventually incurs high cost in increased code size.
6180
 
6181
Note that on machines where the corresponding move insn is a
6182
@code{define_expand} that emits a sequence of insns, this macro counts
6183
the number of such sequences.
6184
 
6185
The parameter @var{speed} is true if the code is currently being
6186
optimized for speed rather than size.
6187
 
6188
If you don't define this, a reasonable default is used.
6189
@end defmac
6190
 
6191
@defmac MOVE_BY_PIECES_P (@var{size}, @var{alignment})
6192
A C expression used to determine whether @code{move_by_pieces} will be used to
6193
copy a chunk of memory, or whether some other block move mechanism
6194
will be used.  Defaults to 1 if @code{move_by_pieces_ninsns} returns less
6195
than @code{MOVE_RATIO}.
6196
@end defmac
6197
 
6198
@defmac MOVE_MAX_PIECES
6199
A C expression used by @code{move_by_pieces} to determine the largest unit
6200
a load or store used to copy memory is.  Defaults to @code{MOVE_MAX}.
6201
@end defmac
6202
 
6203
@defmac CLEAR_RATIO (@var{speed})
6204
The threshold of number of scalar move insns, @emph{below} which a sequence
6205
of insns should be generated to clear memory instead of a string clear insn
6206
or a library call.  Increasing the value will always make code faster, but
6207
eventually incurs high cost in increased code size.
6208
 
6209
The parameter @var{speed} is true if the code is currently being
6210
optimized for speed rather than size.
6211
 
6212
If you don't define this, a reasonable default is used.
6213
@end defmac
6214
 
6215
@defmac CLEAR_BY_PIECES_P (@var{size}, @var{alignment})
6216
A C expression used to determine whether @code{clear_by_pieces} will be used
6217
to clear a chunk of memory, or whether some other block clear mechanism
6218
will be used.  Defaults to 1 if @code{move_by_pieces_ninsns} returns less
6219
than @code{CLEAR_RATIO}.
6220
@end defmac
6221
 
6222
@defmac SET_RATIO (@var{speed})
6223
The threshold of number of scalar move insns, @emph{below} which a sequence
6224
of insns should be generated to set memory to a constant value, instead of
6225
a block set insn or a library call.
6226
Increasing the value will always make code faster, but
6227
eventually incurs high cost in increased code size.
6228
 
6229
The parameter @var{speed} is true if the code is currently being
6230
optimized for speed rather than size.
6231
 
6232
If you don't define this, it defaults to the value of @code{MOVE_RATIO}.
6233
@end defmac
6234
 
6235
@defmac SET_BY_PIECES_P (@var{size}, @var{alignment})
6236
A C expression used to determine whether @code{store_by_pieces} will be
6237
used to set a chunk of memory to a constant value, or whether some
6238
other mechanism will be used.  Used by @code{__builtin_memset} when
6239
storing values other than constant zero.
6240
Defaults to 1 if @code{move_by_pieces_ninsns} returns less
6241
than @code{SET_RATIO}.
6242
@end defmac
6243
 
6244
@defmac STORE_BY_PIECES_P (@var{size}, @var{alignment})
6245
A C expression used to determine whether @code{store_by_pieces} will be
6246
used to set a chunk of memory to a constant string value, or whether some
6247
other mechanism will be used.  Used by @code{__builtin_strcpy} when
6248
called with a constant source string.
6249
Defaults to 1 if @code{move_by_pieces_ninsns} returns less
6250
than @code{MOVE_RATIO}.
6251
@end defmac
6252
 
6253
@defmac USE_LOAD_POST_INCREMENT (@var{mode})
6254
A C expression used to determine whether a load postincrement is a good
6255
thing to use for a given mode.  Defaults to the value of
6256
@code{HAVE_POST_INCREMENT}.
6257
@end defmac
6258
 
6259
@defmac USE_LOAD_POST_DECREMENT (@var{mode})
6260
A C expression used to determine whether a load postdecrement is a good
6261
thing to use for a given mode.  Defaults to the value of
6262
@code{HAVE_POST_DECREMENT}.
6263
@end defmac
6264
 
6265
@defmac USE_LOAD_PRE_INCREMENT (@var{mode})
6266
A C expression used to determine whether a load preincrement is a good
6267
thing to use for a given mode.  Defaults to the value of
6268
@code{HAVE_PRE_INCREMENT}.
6269
@end defmac
6270
 
6271
@defmac USE_LOAD_PRE_DECREMENT (@var{mode})
6272
A C expression used to determine whether a load predecrement is a good
6273
thing to use for a given mode.  Defaults to the value of
6274
@code{HAVE_PRE_DECREMENT}.
6275
@end defmac
6276
 
6277
@defmac USE_STORE_POST_INCREMENT (@var{mode})
6278
A C expression used to determine whether a store postincrement is a good
6279
thing to use for a given mode.  Defaults to the value of
6280
@code{HAVE_POST_INCREMENT}.
6281
@end defmac
6282
 
6283
@defmac USE_STORE_POST_DECREMENT (@var{mode})
6284
A C expression used to determine whether a store postdecrement is a good
6285
thing to use for a given mode.  Defaults to the value of
6286
@code{HAVE_POST_DECREMENT}.
6287
@end defmac
6288
 
6289
@defmac USE_STORE_PRE_INCREMENT (@var{mode})
6290
This macro is used to determine whether a store preincrement is a good
6291
thing to use for a given mode.  Defaults to the value of
6292
@code{HAVE_PRE_INCREMENT}.
6293
@end defmac
6294
 
6295
@defmac USE_STORE_PRE_DECREMENT (@var{mode})
6296
This macro is used to determine whether a store predecrement is a good
6297
thing to use for a given mode.  Defaults to the value of
6298
@code{HAVE_PRE_DECREMENT}.
6299
@end defmac
6300
 
6301
@defmac NO_FUNCTION_CSE
6302
Define this macro if it is as good or better to call a constant
6303
function address than to call an address kept in a register.
6304
@end defmac
6305
 
6306
@defmac RANGE_TEST_NON_SHORT_CIRCUIT
6307
Define this macro if a non-short-circuit operation produced by
6308
@samp{fold_range_test ()} is optimal.  This macro defaults to true if
6309
@code{BRANCH_COST} is greater than or equal to the value 2.
6310
@end defmac
6311
 
6312
@deftypefn {Target Hook} bool TARGET_RTX_COSTS (rtx @var{x}, int @var{code}, int @var{outer_code}, int *@var{total}, bool @var{speed})
6313
This target hook describes the relative costs of RTL expressions.
6314
 
6315
The cost may depend on the precise form of the expression, which is
6316
available for examination in @var{x}, and the rtx code of the expression
6317
in which it is contained, found in @var{outer_code}.  @var{code} is the
6318
expression code---redundant, since it can be obtained with
6319
@code{GET_CODE (@var{x})}.
6320
 
6321
In implementing this hook, you can use the construct
6322
@code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast
6323
instructions.
6324
 
6325
On entry to the hook, @code{*@var{total}} contains a default estimate
6326
for the cost of the expression.  The hook should modify this value as
6327
necessary.  Traditionally, the default costs are @code{COSTS_N_INSNS (5)}
6328
for multiplications, @code{COSTS_N_INSNS (7)} for division and modulus
6329
operations, and @code{COSTS_N_INSNS (1)} for all other operations.
6330
 
6331
When optimizing for code size, i.e.@: when @code{speed} is
6332
false, this target hook should be used to estimate the relative
6333
size cost of an expression, again relative to @code{COSTS_N_INSNS}.
6334
 
6335
The hook returns true when all subexpressions of @var{x} have been
6336
processed, and false when @code{rtx_cost} should recurse.
6337
@end deftypefn
6338
 
6339
@deftypefn {Target Hook} int TARGET_ADDRESS_COST (rtx @var{address}, bool @var{speed})
6340
This hook computes the cost of an addressing mode that contains
6341
@var{address}.  If not defined, the cost is computed from
6342
the @var{address} expression and the @code{TARGET_RTX_COST} hook.
6343
 
6344
For most CISC machines, the default cost is a good approximation of the
6345
true cost of the addressing mode.  However, on RISC machines, all
6346
instructions normally have the same length and execution time.  Hence
6347
all addresses will have equal costs.
6348
 
6349
In cases where more than one form of an address is known, the form with
6350
the lowest cost will be used.  If multiple forms have the same, lowest,
6351
cost, the one that is the most complex will be used.
6352
 
6353
For example, suppose an address that is equal to the sum of a register
6354
and a constant is used twice in the same basic block.  When this macro
6355
is not defined, the address will be computed in a register and memory
6356
references will be indirect through that register.  On machines where
6357
the cost of the addressing mode containing the sum is no higher than
6358
that of a simple indirect reference, this will produce an additional
6359
instruction and possibly require an additional register.  Proper
6360
specification of this macro eliminates this overhead for such machines.
6361
 
6362
This hook is never called with an invalid address.
6363
 
6364
On machines where an address involving more than one register is as
6365
cheap as an address computation involving only one register, defining
6366
@code{TARGET_ADDRESS_COST} to reflect this can cause two registers to
6367
be live over a region of code where only one would have been if
6368
@code{TARGET_ADDRESS_COST} were not defined in that manner.  This effect
6369
should be considered in the definition of this macro.  Equivalent costs
6370
should probably only be given to addresses with different numbers of
6371
registers on machines with lots of registers.
6372
@end deftypefn
6373
 
6374
@node Scheduling
6375
@section Adjusting the Instruction Scheduler
6376
 
6377
The instruction scheduler may need a fair amount of machine-specific
6378
adjustment in order to produce good code.  GCC provides several target
6379
hooks for this purpose.  It is usually enough to define just a few of
6380
them: try the first ones in this list first.
6381
 
6382
@deftypefn {Target Hook} int TARGET_SCHED_ISSUE_RATE (void)
6383
This hook returns the maximum number of instructions that can ever
6384
issue at the same time on the target machine.  The default is one.
6385
Although the insn scheduler can define itself the possibility of issue
6386
an insn on the same cycle, the value can serve as an additional
6387
constraint to issue insns on the same simulated processor cycle (see
6388
hooks @samp{TARGET_SCHED_REORDER} and @samp{TARGET_SCHED_REORDER2}).
6389
This value must be constant over the entire compilation.  If you need
6390
it to vary depending on what the instructions are, you must use
6391
@samp{TARGET_SCHED_VARIABLE_ISSUE}.
6392
@end deftypefn
6393
 
6394
@deftypefn {Target Hook} int TARGET_SCHED_VARIABLE_ISSUE (FILE *@var{file}, int @var{verbose}, rtx @var{insn}, int @var{more})
6395
This hook is executed by the scheduler after it has scheduled an insn
6396
from the ready list.  It should return the number of insns which can
6397
still be issued in the current cycle.  The default is
6398
@samp{@w{@var{more} - 1}} for insns other than @code{CLOBBER} and
6399
@code{USE}, which normally are not counted against the issue rate.
6400
You should define this hook if some insns take more machine resources
6401
than others, so that fewer insns can follow them in the same cycle.
6402
@var{file} is either a null pointer, or a stdio stream to write any
6403
debug output to.  @var{verbose} is the verbose level provided by
6404
@option{-fsched-verbose-@var{n}}.  @var{insn} is the instruction that
6405
was scheduled.
6406
@end deftypefn
6407
 
6408
@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_COST (rtx @var{insn}, rtx @var{link}, rtx @var{dep_insn}, int @var{cost})
6409
This function corrects the value of @var{cost} based on the
6410
relationship between @var{insn} and @var{dep_insn} through the
6411
dependence @var{link}.  It should return the new value.  The default
6412
is to make no adjustment to @var{cost}.  This can be used for example
6413
to specify to the scheduler using the traditional pipeline description
6414
that an output- or anti-dependence does not incur the same cost as a
6415
data-dependence.  If the scheduler using the automaton based pipeline
6416
description, the cost of anti-dependence is zero and the cost of
6417
output-dependence is maximum of one and the difference of latency
6418
times of the first and the second insns.  If these values are not
6419
acceptable, you could use the hook to modify them too.  See also
6420
@pxref{Processor pipeline description}.
6421
@end deftypefn
6422
 
6423
@deftypefn {Target Hook} int TARGET_SCHED_ADJUST_PRIORITY (rtx @var{insn}, int @var{priority})
6424
This hook adjusts the integer scheduling priority @var{priority} of
6425
@var{insn}.  It should return the new priority.  Increase the priority to
6426
execute @var{insn} earlier, reduce the priority to execute @var{insn}
6427
later.  Do not define this hook if you do not need to adjust the
6428
scheduling priorities of insns.
6429
@end deftypefn
6430
 
6431
@deftypefn {Target Hook} int TARGET_SCHED_REORDER (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_readyp}, int @var{clock})
6432
This hook is executed by the scheduler after it has scheduled the ready
6433
list, to allow the machine description to reorder it (for example to
6434
combine two small instructions together on @samp{VLIW} machines).
6435
@var{file} is either a null pointer, or a stdio stream to write any
6436
debug output to.  @var{verbose} is the verbose level provided by
6437
@option{-fsched-verbose-@var{n}}.  @var{ready} is a pointer to the ready
6438
list of instructions that are ready to be scheduled.  @var{n_readyp} is
6439
a pointer to the number of elements in the ready list.  The scheduler
6440
reads the ready list in reverse order, starting with
6441
@var{ready}[@var{*n_readyp} @minus{} 1] and going to @var{ready}[0].  @var{clock}
6442
is the timer tick of the scheduler.  You may modify the ready list and
6443
the number of ready insns.  The return value is the number of insns that
6444
can issue this cycle; normally this is just @code{issue_rate}.  See also
6445
@samp{TARGET_SCHED_REORDER2}.
6446
@end deftypefn
6447
 
6448
@deftypefn {Target Hook} int TARGET_SCHED_REORDER2 (FILE *@var{file}, int @var{verbose}, rtx *@var{ready}, int *@var{n_readyp}, int @var{clock})
6449
Like @samp{TARGET_SCHED_REORDER}, but called at a different time.  That
6450
function is called whenever the scheduler starts a new cycle.  This one
6451
is called once per iteration over a cycle, immediately after
6452
@samp{TARGET_SCHED_VARIABLE_ISSUE}; it can reorder the ready list and
6453
return the number of insns to be scheduled in the same cycle.  Defining
6454
this hook can be useful if there are frequent situations where
6455
scheduling one insn causes other insns to become ready in the same
6456
cycle.  These other insns can then be taken into account properly.
6457
@end deftypefn
6458
 
6459
@deftypefn {Target Hook} void TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK (rtx @var{head}, rtx @var{tail})
6460
This hook is called after evaluation forward dependencies of insns in
6461
chain given by two parameter values (@var{head} and @var{tail}
6462
correspondingly) but before insns scheduling of the insn chain.  For
6463
example, it can be used for better insn classification if it requires
6464
analysis of dependencies.  This hook can use backward and forward
6465
dependencies of the insn scheduler because they are already
6466
calculated.
6467
@end deftypefn
6468
 
6469
@deftypefn {Target Hook} void TARGET_SCHED_INIT (FILE *@var{file}, int @var{verbose}, int @var{max_ready})
6470
This hook is executed by the scheduler at the beginning of each block of
6471
instructions that are to be scheduled.  @var{file} is either a null
6472
pointer, or a stdio stream to write any debug output to.  @var{verbose}
6473
is the verbose level provided by @option{-fsched-verbose-@var{n}}.
6474
@var{max_ready} is the maximum number of insns in the current scheduling
6475
region that can be live at the same time.  This can be used to allocate
6476
scratch space if it is needed, e.g.@: by @samp{TARGET_SCHED_REORDER}.
6477
@end deftypefn
6478
 
6479
@deftypefn {Target Hook} void TARGET_SCHED_FINISH (FILE *@var{file}, int @var{verbose})
6480
This hook is executed by the scheduler at the end of each block of
6481
instructions that are to be scheduled.  It can be used to perform
6482
cleanup of any actions done by the other scheduling hooks.  @var{file}
6483
is either a null pointer, or a stdio stream to write any debug output
6484
to.  @var{verbose} is the verbose level provided by
6485
@option{-fsched-verbose-@var{n}}.
6486
@end deftypefn
6487
 
6488
@deftypefn {Target Hook} void TARGET_SCHED_INIT_GLOBAL (FILE *@var{file}, int @var{verbose}, int @var{old_max_uid})
6489
This hook is executed by the scheduler after function level initializations.
6490
@var{file} is either a null pointer, or a stdio stream to write any debug output to.
6491
@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
6492
@var{old_max_uid} is the maximum insn uid when scheduling begins.
6493
@end deftypefn
6494
 
6495
@deftypefn {Target Hook} void TARGET_SCHED_FINISH_GLOBAL (FILE *@var{file}, int @var{verbose})
6496
This is the cleanup hook corresponding to @code{TARGET_SCHED_INIT_GLOBAL}.
6497
@var{file} is either a null pointer, or a stdio stream to write any debug output to.
6498
@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}.
6499
@end deftypefn
6500
 
6501
@deftypefn {Target Hook} rtx TARGET_SCHED_DFA_PRE_CYCLE_INSN (void)
6502
The hook returns an RTL insn.  The automaton state used in the
6503
pipeline hazard recognizer is changed as if the insn were scheduled
6504
when the new simulated processor cycle starts.  Usage of the hook may
6505
simplify the automaton pipeline description for some @acronym{VLIW}
6506
processors.  If the hook is defined, it is used only for the automaton
6507
based pipeline description.  The default is not to change the state
6508
when the new simulated processor cycle starts.
6509
@end deftypefn
6510
 
6511
@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN (void)
6512
The hook can be used to initialize data used by the previous hook.
6513
@end deftypefn
6514
 
6515
@deftypefn {Target Hook} rtx TARGET_SCHED_DFA_POST_CYCLE_INSN (void)
6516
The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
6517
to changed the state as if the insn were scheduled when the new
6518
simulated processor cycle finishes.
6519
@end deftypefn
6520
 
6521
@deftypefn {Target Hook} void TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN (void)
6522
The hook is analogous to @samp{TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN} but
6523
used to initialize data used by the previous hook.
6524
@end deftypefn
6525
 
6526
@deftypefn {Target Hook} void TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE (void)
6527
The hook to notify target that the current simulated cycle is about to finish.
6528
The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used
6529
to change the state in more complicated situations - e.g., when advancing
6530
state on a single insn is not enough.
6531
@end deftypefn
6532
 
6533
@deftypefn {Target Hook} void TARGET_SCHED_DFA_POST_ADVANCE_CYCLE (void)
6534
The hook to notify target that new simulated cycle has just started.
6535
The hook is analogous to @samp{TARGET_SCHED_DFA_POST_CYCLE_INSN} but used
6536
to change the state in more complicated situations - e.g., when advancing
6537
state on a single insn is not enough.
6538
@end deftypefn
6539
 
6540
@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD (void)
6541
This hook controls better choosing an insn from the ready insn queue
6542
for the @acronym{DFA}-based insn scheduler.  Usually the scheduler
6543
chooses the first insn from the queue.  If the hook returns a positive
6544
value, an additional scheduler code tries all permutations of
6545
@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()}
6546
subsequent ready insns to choose an insn whose issue will result in
6547
maximal number of issued insns on the same cycle.  For the
6548
@acronym{VLIW} processor, the code could actually solve the problem of
6549
packing simple insns into the @acronym{VLIW} insn.  Of course, if the
6550
rules of @acronym{VLIW} packing are described in the automaton.
6551
 
6552
This code also could be used for superscalar @acronym{RISC}
6553
processors.  Let us consider a superscalar @acronym{RISC} processor
6554
with 3 pipelines.  Some insns can be executed in pipelines @var{A} or
6555
@var{B}, some insns can be executed only in pipelines @var{B} or
6556
@var{C}, and one insn can be executed in pipeline @var{B}.  The
6557
processor may issue the 1st insn into @var{A} and the 2nd one into
6558
@var{B}.  In this case, the 3rd insn will wait for freeing @var{B}
6559
until the next cycle.  If the scheduler issues the 3rd insn the first,
6560
the processor could issue all 3 insns per cycle.
6561
 
6562
Actually this code demonstrates advantages of the automaton based
6563
pipeline hazard recognizer.  We try quickly and easy many insn
6564
schedules to choose the best one.
6565
 
6566
The default is no multipass scheduling.
6567
@end deftypefn
6568
 
6569
@deftypefn {Target Hook} int TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD (rtx @var{insn})
6570
 
6571
This hook controls what insns from the ready insn queue will be
6572
considered for the multipass insn scheduling.  If the hook returns
6573
zero for @var{insn}, the insn will be not chosen to
6574
be issued.
6575
 
6576
The default is that any ready insns can be chosen to be issued.
6577
@end deftypefn
6578
 
6579
@deftypefn {Target Hook} int TARGET_SCHED_DFA_NEW_CYCLE (FILE *@var{dump}, int @var{verbose}, rtx @var{insn}, int @var{last_clock}, int @var{clock}, int *@var{sort_p})
6580
 
6581
This hook is called by the insn scheduler before issuing @var{insn}
6582
on cycle @var{clock}.  If the hook returns nonzero,
6583
@var{insn} is not issued on this processor cycle.  Instead,
6584
the processor cycle is advanced.  If *@var{sort_p}
6585
is zero, the insn ready queue is not sorted on the new cycle
6586
start as usually.  @var{dump} and @var{verbose} specify the file and
6587
verbosity level to use for debugging output.
6588
@var{last_clock} and @var{clock} are, respectively, the
6589
processor cycle on which the previous insn has been issued,
6590
and the current processor cycle.
6591
@end deftypefn
6592
 
6593
@deftypefn {Target Hook} bool TARGET_SCHED_IS_COSTLY_DEPENDENCE (struct _dep *@var{_dep}, int @var{cost}, int @var{distance})
6594
This hook is used to define which dependences are considered costly by
6595
the target, so costly that it is not advisable to schedule the insns that
6596
are involved in the dependence too close to one another.  The parameters
6597
to this hook are as follows:  The first parameter @var{_dep} is the dependence
6598
being evaluated.  The second parameter @var{cost} is the cost of the
6599
dependence as estimated by the scheduler, and the third
6600
parameter @var{distance} is the distance in cycles between the two insns.
6601
The hook returns @code{true} if considering the distance between the two
6602
insns the dependence between them is considered costly by the target,
6603
and @code{false} otherwise.
6604
 
6605
Defining this hook can be useful in multiple-issue out-of-order machines,
6606
where (a) it's practically hopeless to predict the actual data/resource
6607
delays, however: (b) there's a better chance to predict the actual grouping
6608
that will be formed, and (c) correctly emulating the grouping can be very
6609
important.  In such targets one may want to allow issuing dependent insns
6610
closer to one another---i.e., closer than the dependence distance;  however,
6611
not in cases of ``costly dependences'', which this hooks allows to define.
6612
@end deftypefn
6613
 
6614
@deftypefn {Target Hook} void TARGET_SCHED_H_I_D_EXTENDED (void)
6615
This hook is called by the insn scheduler after emitting a new instruction to
6616
the instruction stream.  The hook notifies a target backend to extend its
6617
per instruction data structures.
6618
@end deftypefn
6619
 
6620
@deftypefn {Target Hook} {void *} TARGET_SCHED_ALLOC_SCHED_CONTEXT (void)
6621
Return a pointer to a store large enough to hold target scheduling context.
6622
@end deftypefn
6623
 
6624
@deftypefn {Target Hook} void TARGET_SCHED_INIT_SCHED_CONTEXT (void *@var{tc}, bool @var{clean_p})
6625
Initialize store pointed to by @var{tc} to hold target scheduling context.
6626
It @var{clean_p} is true then initialize @var{tc} as if scheduler is at the
6627
beginning of the block.  Otherwise, copy the current context into @var{tc}.
6628
@end deftypefn
6629
 
6630
@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_CONTEXT (void *@var{tc})
6631
Copy target scheduling context pointed to by @var{tc} to the current context.
6632
@end deftypefn
6633
 
6634
@deftypefn {Target Hook} void TARGET_SCHED_CLEAR_SCHED_CONTEXT (void *@var{tc})
6635
Deallocate internal data in target scheduling context pointed to by @var{tc}.
6636
@end deftypefn
6637
 
6638
@deftypefn {Target Hook} void TARGET_SCHED_FREE_SCHED_CONTEXT (void *@var{tc})
6639
Deallocate a store for target scheduling context pointed to by @var{tc}.
6640
@end deftypefn
6641
 
6642
@deftypefn {Target Hook} int TARGET_SCHED_SPECULATE_INSN (rtx @var{insn}, int @var{request}, rtx *@var{new_pat})
6643
This hook is called by the insn scheduler when @var{insn} has only
6644
speculative dependencies and therefore can be scheduled speculatively.
6645
The hook is used to check if the pattern of @var{insn} has a speculative
6646
version and, in case of successful check, to generate that speculative
6647
pattern.  The hook should return 1, if the instruction has a speculative form,
6648
or @minus{}1, if it doesn't.  @var{request} describes the type of requested
6649
speculation.  If the return value equals 1 then @var{new_pat} is assigned
6650
the generated speculative pattern.
6651
@end deftypefn
6652
 
6653
@deftypefn {Target Hook} bool TARGET_SCHED_NEEDS_BLOCK_P (int @var{dep_status})
6654
This hook is called by the insn scheduler during generation of recovery code
6655
for @var{insn}.  It should return @code{true}, if the corresponding check
6656
instruction should branch to recovery code, or @code{false} otherwise.
6657
@end deftypefn
6658
 
6659
@deftypefn {Target Hook} rtx TARGET_SCHED_GEN_SPEC_CHECK (rtx @var{insn}, rtx @var{label}, int @var{mutate_p})
6660
This hook is called by the insn scheduler to generate a pattern for recovery
6661
check instruction.  If @var{mutate_p} is zero, then @var{insn} is a
6662
speculative instruction for which the check should be generated.
6663
@var{label} is either a label of a basic block, where recovery code should
6664
be emitted, or a null pointer, when requested check doesn't branch to
6665
recovery code (a simple check).  If @var{mutate_p} is nonzero, then
6666
a pattern for a branchy check corresponding to a simple check denoted by
6667
@var{insn} should be generated.  In this case @var{label} can't be null.
6668
@end deftypefn
6669
 
6670
@deftypefn {Target Hook} bool TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC (const_rtx @var{insn})
6671
This hook is used as a workaround for
6672
@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being
6673
called on the first instruction of the ready list.  The hook is used to
6674
discard speculative instructions that stand first in the ready list from
6675
being scheduled on the current cycle.  If the hook returns @code{false},
6676
@var{insn} will not be chosen to be issued.
6677
For non-speculative instructions,
6678
the hook should always return @code{true}.  For example, in the ia64 backend
6679
the hook is used to cancel data speculative insns when the ALAT table
6680
is nearly full.
6681
@end deftypefn
6682
 
6683
@deftypefn {Target Hook} void TARGET_SCHED_SET_SCHED_FLAGS (struct spec_info_def *@var{spec_info})
6684
This hook is used by the insn scheduler to find out what features should be
6685
enabled/used.
6686
The structure *@var{spec_info} should be filled in by the target.
6687
The structure describes speculation types that can be used in the scheduler.
6688
@end deftypefn
6689
 
6690
@deftypefn {Target Hook} int TARGET_SCHED_SMS_RES_MII (struct ddg *@var{g})
6691
This hook is called by the swing modulo scheduler to calculate a
6692
resource-based lower bound which is based on the resources available in
6693
the machine and the resources required by each instruction.  The target
6694
backend can use @var{g} to calculate such bound.  A very simple lower
6695
bound will be used in case this hook is not implemented: the total number
6696
of instructions divided by the issue rate.
6697
@end deftypefn
6698
 
6699
@node Sections
6700
@section Dividing the Output into Sections (Texts, Data, @dots{})
6701
@c the above section title is WAY too long.  maybe cut the part between
6702
@c the (...)?  --mew 10feb93
6703
 
6704
An object file is divided into sections containing different types of
6705
data.  In the most common case, there are three sections: the @dfn{text
6706
section}, which holds instructions and read-only data; the @dfn{data
6707
section}, which holds initialized writable data; and the @dfn{bss
6708
section}, which holds uninitialized data.  Some systems have other kinds
6709
of sections.
6710
 
6711
@file{varasm.c} provides several well-known sections, such as
6712
@code{text_section}, @code{data_section} and @code{bss_section}.
6713
The normal way of controlling a @code{@var{foo}_section} variable
6714
is to define the associated @code{@var{FOO}_SECTION_ASM_OP} macro,
6715
as described below.  The macros are only read once, when @file{varasm.c}
6716
initializes itself, so their values must be run-time constants.
6717
They may however depend on command-line flags.
6718
 
6719
@emph{Note:} Some run-time files, such @file{crtstuff.c}, also make
6720
use of the @code{@var{FOO}_SECTION_ASM_OP} macros, and expect them
6721
to be string literals.
6722
 
6723
Some assemblers require a different string to be written every time a
6724
section is selected.  If your assembler falls into this category, you
6725
should define the @code{TARGET_ASM_INIT_SECTIONS} hook and use
6726
@code{get_unnamed_section} to set up the sections.
6727
 
6728
You must always create a @code{text_section}, either by defining
6729
@code{TEXT_SECTION_ASM_OP} or by initializing @code{text_section}
6730
in @code{TARGET_ASM_INIT_SECTIONS}.  The same is true of
6731
@code{data_section} and @code{DATA_SECTION_ASM_OP}.  If you do not
6732
create a distinct @code{readonly_data_section}, the default is to
6733
reuse @code{text_section}.
6734
 
6735
All the other @file{varasm.c} sections are optional, and are null
6736
if the target does not provide them.
6737
 
6738
@defmac TEXT_SECTION_ASM_OP
6739
A C expression whose value is a string, including spacing, containing the
6740
assembler operation that should precede instructions and read-only data.
6741
Normally @code{"\t.text"} is right.
6742
@end defmac
6743
 
6744
@defmac HOT_TEXT_SECTION_NAME
6745
If defined, a C string constant for the name of the section containing most
6746
frequently executed functions of the program.  If not defined, GCC will provide
6747
a default definition if the target supports named sections.
6748
@end defmac
6749
 
6750
@defmac UNLIKELY_EXECUTED_TEXT_SECTION_NAME
6751
If defined, a C string constant for the name of the section containing unlikely
6752
executed functions in the program.
6753
@end defmac
6754
 
6755
@defmac DATA_SECTION_ASM_OP
6756
A C expression whose value is a string, including spacing, containing the
6757
assembler operation to identify the following data as writable initialized
6758
data.  Normally @code{"\t.data"} is right.
6759
@end defmac
6760
 
6761
@defmac SDATA_SECTION_ASM_OP
6762
If defined, a C expression whose value is a string, including spacing,
6763
containing the assembler operation to identify the following data as
6764
initialized, writable small data.
6765
@end defmac
6766
 
6767
@defmac READONLY_DATA_SECTION_ASM_OP
6768
A C expression whose value is a string, including spacing, containing the
6769
assembler operation to identify the following data as read-only initialized
6770
data.
6771
@end defmac
6772
 
6773
@defmac BSS_SECTION_ASM_OP
6774
If defined, a C expression whose value is a string, including spacing,
6775
containing the assembler operation to identify the following data as
6776
uninitialized global data.  If not defined, and neither
6777
@code{ASM_OUTPUT_BSS} nor @code{ASM_OUTPUT_ALIGNED_BSS} are defined,
6778
uninitialized global data will be output in the data section if
6779
@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be
6780
used.
6781
@end defmac
6782
 
6783
@defmac SBSS_SECTION_ASM_OP
6784
If defined, a C expression whose value is a string, including spacing,
6785
containing the assembler operation to identify the following data as
6786
uninitialized, writable small data.
6787
@end defmac
6788
 
6789
@defmac TLS_COMMON_ASM_OP
6790
If defined, a C expression whose value is a string containing the
6791
assembler operation to identify the following data as thread-local
6792
common data.  The default is @code{".tls_common"}.
6793
@end defmac
6794
 
6795
@defmac TLS_SECTION_ASM_FLAG
6796
If defined, a C expression whose value is a character constant
6797
containing the flag used to mark a section as a TLS section.  The
6798
default is @code{'T'}.
6799
@end defmac
6800
 
6801
@defmac INIT_SECTION_ASM_OP
6802
If defined, a C expression whose value is a string, including spacing,
6803
containing the assembler operation to identify the following data as
6804
initialization code.  If not defined, GCC will assume such a section does
6805
not exist.  This section has no corresponding @code{init_section}
6806
variable; it is used entirely in runtime code.
6807
@end defmac
6808
 
6809
@defmac FINI_SECTION_ASM_OP
6810
If defined, a C expression whose value is a string, including spacing,
6811
containing the assembler operation to identify the following data as
6812
finalization code.  If not defined, GCC will assume such a section does
6813
not exist.  This section has no corresponding @code{fini_section}
6814
variable; it is used entirely in runtime code.
6815
@end defmac
6816
 
6817
@defmac INIT_ARRAY_SECTION_ASM_OP
6818
If defined, a C expression whose value is a string, including spacing,
6819
containing the assembler operation to identify the following data as
6820
part of the @code{.init_array} (or equivalent) section.  If not
6821
defined, GCC will assume such a section does not exist.  Do not define
6822
both this macro and @code{INIT_SECTION_ASM_OP}.
6823
@end defmac
6824
 
6825
@defmac FINI_ARRAY_SECTION_ASM_OP
6826
If defined, a C expression whose value is a string, including spacing,
6827
containing the assembler operation to identify the following data as
6828
part of the @code{.fini_array} (or equivalent) section.  If not
6829
defined, GCC will assume such a section does not exist.  Do not define
6830
both this macro and @code{FINI_SECTION_ASM_OP}.
6831
@end defmac
6832
 
6833
@defmac CRT_CALL_STATIC_FUNCTION (@var{section_op}, @var{function})
6834
If defined, an ASM statement that switches to a different section
6835
via @var{section_op}, calls @var{function}, and switches back to
6836
the text section.  This is used in @file{crtstuff.c} if
6837
@code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls
6838
to initialization and finalization functions from the init and fini
6839
sections.  By default, this macro uses a simple function call.  Some
6840
ports need hand-crafted assembly code to avoid dependencies on
6841
registers initialized in the function prologue or to ensure that
6842
constant pools don't end up too far way in the text section.
6843
@end defmac
6844
 
6845
@defmac TARGET_LIBGCC_SDATA_SECTION
6846
If defined, a string which names the section into which small
6847
variables defined in crtstuff and libgcc should go.  This is useful
6848
when the target has options for optimizing access to small data, and
6849
you want the crtstuff and libgcc routines to be conservative in what
6850
they expect of your application yet liberal in what your application
6851
expects.  For example, for targets with a @code{.sdata} section (like
6852
MIPS), you could compile crtstuff with @code{-G 0} so that it doesn't
6853
require small data support from your application, but use this macro
6854
to put small data into @code{.sdata} so that your application can
6855
access these variables whether it uses small data or not.
6856
@end defmac
6857
 
6858
@defmac FORCE_CODE_SECTION_ALIGN
6859
If defined, an ASM statement that aligns a code section to some
6860
arbitrary boundary.  This is used to force all fragments of the
6861
@code{.init} and @code{.fini} sections to have to same alignment
6862
and thus prevent the linker from having to add any padding.
6863
@end defmac
6864
 
6865
@defmac JUMP_TABLES_IN_TEXT_SECTION
6866
Define this macro to be an expression with a nonzero value if jump
6867
tables (for @code{tablejump} insns) should be output in the text
6868
section, along with the assembler instructions.  Otherwise, the
6869
readonly data section is used.
6870
 
6871
This macro is irrelevant if there is no separate readonly data section.
6872
@end defmac
6873
 
6874
@deftypefn {Target Hook} void TARGET_ASM_INIT_SECTIONS (void)
6875
Define this hook if you need to do something special to set up the
6876
@file{varasm.c} sections, or if your target has some special sections
6877
of its own that you need to create.
6878
 
6879
GCC calls this hook after processing the command line, but before writing
6880
any assembly code, and before calling any of the section-returning hooks
6881
described below.
6882
@end deftypefn
6883
 
6884
@deftypefn {Target Hook} int TARGET_ASM_RELOC_RW_MASK (void)
6885
Return a mask describing how relocations should be treated when
6886
selecting sections.  Bit 1 should be set if global relocations
6887
should be placed in a read-write section; bit 0 should be set if
6888
local relocations should be placed in a read-write section.
6889
 
6890
The default version of this function returns 3 when @option{-fpic}
6891
is in effect, and 0 otherwise.  The hook is typically redefined
6892
when the target cannot support (some kinds of) dynamic relocations
6893
in read-only sections even in executables.
6894
@end deftypefn
6895
 
6896
@deftypefn {Target Hook} {section *} TARGET_ASM_SELECT_SECTION (tree @var{exp}, int @var{reloc}, unsigned HOST_WIDE_INT @var{align})
6897
Return the section into which @var{exp} should be placed.  You can
6898
assume that @var{exp} is either a @code{VAR_DECL} node or a constant of
6899
some sort.  @var{reloc} indicates whether the initial value of @var{exp}
6900
requires link-time relocations.  Bit 0 is set when variable contains
6901
local relocations only, while bit 1 is set for global relocations.
6902
@var{align} is the constant alignment in bits.
6903
 
6904
The default version of this function takes care of putting read-only
6905
variables in @code{readonly_data_section}.
6906
 
6907
See also @var{USE_SELECT_SECTION_FOR_FUNCTIONS}.
6908
@end deftypefn
6909
 
6910
@defmac USE_SELECT_SECTION_FOR_FUNCTIONS
6911
Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called
6912
for @code{FUNCTION_DECL}s as well as for variables and constants.
6913
 
6914
In the case of a @code{FUNCTION_DECL}, @var{reloc} will be zero if the
6915
function has been determined to be likely to be called, and nonzero if
6916
it is unlikely to be called.
6917
@end defmac
6918
 
6919
@deftypefn {Target Hook} void TARGET_ASM_UNIQUE_SECTION (tree @var{decl}, int @var{reloc})
6920
Build up a unique section name, expressed as a @code{STRING_CST} node,
6921
and assign it to @samp{DECL_SECTION_NAME (@var{decl})}.
6922
As with @code{TARGET_ASM_SELECT_SECTION}, @var{reloc} indicates whether
6923
the initial value of @var{exp} requires link-time relocations.
6924
 
6925
The default version of this function appends the symbol name to the
6926
ELF section name that would normally be used for the symbol.  For
6927
example, the function @code{foo} would be placed in @code{.text.foo}.
6928
Whatever the actual target object format, this is often good enough.
6929
@end deftypefn
6930
 
6931
@deftypefn {Target Hook} {section *} TARGET_ASM_FUNCTION_RODATA_SECTION (tree @var{decl})
6932
Return the readonly data section associated with
6933
@samp{DECL_SECTION_NAME (@var{decl})}.
6934
The default version of this function selects @code{.gnu.linkonce.r.name} if
6935
the function's section is @code{.gnu.linkonce.t.name}, @code{.rodata.name}
6936
if function is in @code{.text.name}, and the normal readonly-data section
6937
otherwise.
6938
@end deftypefn
6939
 
6940
@deftypefn {Target Hook} {section *} TARGET_ASM_SELECT_RTX_SECTION (enum machine_mode @var{mode}, rtx @var{x}, unsigned HOST_WIDE_INT @var{align})
6941
Return the section into which a constant @var{x}, of mode @var{mode},
6942
should be placed.  You can assume that @var{x} is some kind of
6943
constant in RTL@.  The argument @var{mode} is redundant except in the
6944
case of a @code{const_int} rtx.  @var{align} is the constant alignment
6945
in bits.
6946
 
6947
The default version of this function takes care of putting symbolic
6948
constants in @code{flag_pic} mode in @code{data_section} and everything
6949
else in @code{readonly_data_section}.
6950
@end deftypefn
6951
 
6952
@deftypefn {Target Hook} tree TARGET_MANGLE_DECL_ASSEMBLER_NAME (tree @var{decl}, tree @var{id})
6953
Define this hook if you need to postprocess the assembler name generated
6954
by target-independent code.  The @var{id} provided to this hook will be
6955
the computed name (e.g., the macro @code{DECL_NAME} of the @var{decl} in C,
6956
or the mangled name of the @var{decl} in C++).  The return value of the
6957
hook is an @code{IDENTIFIER_NODE} for the appropriate mangled name on
6958
your target system.  The default implementation of this hook just
6959
returns the @var{id} provided.
6960
@end deftypefn
6961
 
6962
@deftypefn {Target Hook} void TARGET_ENCODE_SECTION_INFO (tree @var{decl}, rtx @var{rtl}, int @var{new_decl_p})
6963
Define this hook if references to a symbol or a constant must be
6964
treated differently depending on something about the variable or
6965
function named by the symbol (such as what section it is in).
6966
 
6967
The hook is executed immediately after rtl has been created for
6968
@var{decl}, which may be a variable or function declaration or
6969
an entry in the constant pool.  In either case, @var{rtl} is the
6970
rtl in question.  Do @emph{not} use @code{DECL_RTL (@var{decl})}
6971
in this hook; that field may not have been initialized yet.
6972
 
6973
In the case of a constant, it is safe to assume that the rtl is
6974
a @code{mem} whose address is a @code{symbol_ref}.  Most decls
6975
will also have this form, but that is not guaranteed.  Global
6976
register variables, for instance, will have a @code{reg} for their
6977
rtl.  (Normally the right thing to do with such unusual rtl is
6978
leave it alone.)
6979
 
6980
The @var{new_decl_p} argument will be true if this is the first time
6981
that @code{TARGET_ENCODE_SECTION_INFO} has been invoked on this decl.  It will
6982
be false for subsequent invocations, which will happen for duplicate
6983
declarations.  Whether or not anything must be done for the duplicate
6984
declaration depends on whether the hook examines @code{DECL_ATTRIBUTES}.
6985
@var{new_decl_p} is always true when the hook is called for a constant.
6986
 
6987
@cindex @code{SYMBOL_REF_FLAG}, in @code{TARGET_ENCODE_SECTION_INFO}
6988
The usual thing for this hook to do is to record flags in the
6989
@code{symbol_ref}, using @code{SYMBOL_REF_FLAG} or @code{SYMBOL_REF_FLAGS}.
6990
Historically, the name string was modified if it was necessary to
6991
encode more than one bit of information, but this practice is now
6992
discouraged; use @code{SYMBOL_REF_FLAGS}.
6993
 
6994
The default definition of this hook, @code{default_encode_section_info}
6995
in @file{varasm.c}, sets a number of commonly-useful bits in
6996
@code{SYMBOL_REF_FLAGS}.  Check whether the default does what you need
6997
before overriding it.
6998
@end deftypefn
6999
 
7000
@deftypefn {Target Hook} {const char *} TARGET_STRIP_NAME_ENCODING (const char *@var{name})
7001
Decode @var{name} and return the real name part, sans
7002
the characters that @code{TARGET_ENCODE_SECTION_INFO}
7003
may have added.
7004
@end deftypefn
7005
 
7006
@deftypefn {Target Hook} bool TARGET_IN_SMALL_DATA_P (const_tree @var{exp})
7007
Returns true if @var{exp} should be placed into a ``small data'' section.
7008
The default version of this hook always returns false.
7009
@end deftypefn
7010
 
7011
@deftypevr {Target Hook} bool TARGET_HAVE_SRODATA_SECTION
7012
Contains the value true if the target places read-only
7013
``small data'' into a separate section.  The default value is false.
7014
@end deftypevr
7015
 
7016
@deftypefn {Target Hook} bool TARGET_BINDS_LOCAL_P (const_tree @var{exp})
7017
Returns true if @var{exp} names an object for which name resolution
7018
rules must resolve to the current ``module'' (dynamic shared library
7019
or executable image).
7020
 
7021
The default version of this hook implements the name resolution rules
7022
for ELF, which has a looser model of global name binding than other
7023
currently supported object file formats.
7024
@end deftypefn
7025
 
7026
@deftypevr {Target Hook} bool TARGET_HAVE_TLS
7027
Contains the value true if the target supports thread-local storage.
7028
The default value is false.
7029
@end deftypevr
7030
 
7031
 
7032
@node PIC
7033
@section Position Independent Code
7034
@cindex position independent code
7035
@cindex PIC
7036
 
7037
This section describes macros that help implement generation of position
7038
independent code.  Simply defining these macros is not enough to
7039
generate valid PIC; you must also add support to the hook
7040
@code{TARGET_LEGITIMATE_ADDRESS_P} and to the macro
7041
@code{PRINT_OPERAND_ADDRESS}, as well as @code{LEGITIMIZE_ADDRESS}.  You
7042
must modify the definition of @samp{movsi} to do something appropriate
7043
when the source operand contains a symbolic address.  You may also
7044
need to alter the handling of switch statements so that they use
7045
relative addresses.
7046
@c i rearranged the order of the macros above to try to force one of
7047
@c them to the next line, to eliminate an overfull hbox. --mew 10feb93
7048
 
7049
@defmac PIC_OFFSET_TABLE_REGNUM
7050
The register number of the register used to address a table of static
7051
data addresses in memory.  In some cases this register is defined by a
7052
processor's ``application binary interface'' (ABI)@.  When this macro
7053
is defined, RTL is generated for this register once, as with the stack
7054
pointer and frame pointer registers.  If this macro is not defined, it
7055
is up to the machine-dependent files to allocate such a register (if
7056
necessary).  Note that this register must be fixed when in use (e.g.@:
7057
when @code{flag_pic} is true).
7058
@end defmac
7059
 
7060
@defmac PIC_OFFSET_TABLE_REG_CALL_CLOBBERED
7061
Define this macro if the register defined by
7062
@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls.  Do not define
7063
this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined.
7064
@end defmac
7065
 
7066
@defmac LEGITIMATE_PIC_OPERAND_P (@var{x})
7067
A C expression that is nonzero if @var{x} is a legitimate immediate
7068
operand on the target machine when generating position independent code.
7069
You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not
7070
check this.  You can also assume @var{flag_pic} is true, so you need not
7071
check it either.  You need not define this macro if all constants
7072
(including @code{SYMBOL_REF}) can be immediate operands when generating
7073
position independent code.
7074
@end defmac
7075
 
7076
@node Assembler Format
7077
@section Defining the Output Assembler Language
7078
 
7079
This section describes macros whose principal purpose is to describe how
7080
to write instructions in assembler language---rather than what the
7081
instructions do.
7082
 
7083
@menu
7084
* File Framework::       Structural information for the assembler file.
7085
* Data Output::          Output of constants (numbers, strings, addresses).
7086
* Uninitialized Data::   Output of uninitialized variables.
7087
* Label Output::         Output and generation of labels.
7088
* Initialization::       General principles of initialization
7089
                         and termination routines.
7090
* Macros for Initialization::
7091
                         Specific macros that control the handling of
7092
                         initialization and termination routines.
7093
* Instruction Output::   Output of actual instructions.
7094
* Dispatch Tables::      Output of jump tables.
7095
* Exception Region Output:: Output of exception region code.
7096
* Alignment Output::     Pseudo ops for alignment and skipping data.
7097
@end menu
7098
 
7099
@node File Framework
7100
@subsection The Overall Framework of an Assembler File
7101
@cindex assembler format
7102
@cindex output of assembler code
7103
 
7104
@c prevent bad page break with this line
7105
This describes the overall framework of an assembly file.
7106
 
7107
@findex default_file_start
7108
@deftypefn {Target Hook} void TARGET_ASM_FILE_START (void)
7109
Output to @code{asm_out_file} any text which the assembler expects to
7110
find at the beginning of a file.  The default behavior is controlled
7111
by two flags, documented below.  Unless your target's assembler is
7112
quite unusual, if you override the default, you should call
7113
@code{default_file_start} at some point in your target hook.  This
7114
lets other target files rely on these variables.
7115
@end deftypefn
7116
 
7117
@deftypevr {Target Hook} bool TARGET_ASM_FILE_START_APP_OFF
7118
If this flag is true, the text of the macro @code{ASM_APP_OFF} will be
7119
printed as the very first line in the assembly file, unless
7120
@option{-fverbose-asm} is in effect.  (If that macro has been defined
7121
to the empty string, this variable has no effect.)  With the normal
7122
definition of @code{ASM_APP_OFF}, the effect is to notify the GNU
7123
assembler that it need not bother stripping comments or extra
7124
whitespace from its input.  This allows it to work a bit faster.
7125
 
7126
The default is false.  You should not set it to true unless you have
7127
verified that your port does not generate any extra whitespace or
7128
comments that will cause GAS to issue errors in NO_APP mode.
7129
@end deftypevr
7130
 
7131
@deftypevr {Target Hook} bool TARGET_ASM_FILE_START_FILE_DIRECTIVE
7132
If this flag is true, @code{output_file_directive} will be called
7133
for the primary source file, immediately after printing
7134
@code{ASM_APP_OFF} (if that is enabled).  Most ELF assemblers expect
7135
this to be done.  The default is false.
7136
@end deftypevr
7137
 
7138
@deftypefn {Target Hook} void TARGET_ASM_FILE_END (void)
7139
Output to @code{asm_out_file} any text which the assembler expects
7140
to find at the end of a file.  The default is to output nothing.
7141
@end deftypefn
7142
 
7143
@deftypefun void file_end_indicate_exec_stack ()
7144
Some systems use a common convention, the @samp{.note.GNU-stack}
7145
special section, to indicate whether or not an object file relies on
7146
the stack being executable.  If your system uses this convention, you
7147
should define @code{TARGET_ASM_FILE_END} to this function.  If you
7148
need to do other things in that hook, have your hook function call
7149
this function.
7150
@end deftypefun
7151
 
7152
@deftypefn {Target Hook} void TARGET_ASM_LTO_START (void)
7153
Output to @code{asm_out_file} any text which the assembler expects
7154
to find at the start of an LTO section.  The default is to output
7155
nothing.
7156
@end deftypefn
7157
 
7158
@deftypefn {Target Hook} void TARGET_ASM_LTO_END (void)
7159
Output to @code{asm_out_file} any text which the assembler expects
7160
to find at the end of an LTO section.  The default is to output
7161
nothing.
7162
@end deftypefn
7163
 
7164
@deftypefn {Target Hook} void TARGET_ASM_CODE_END (void)
7165
Output to @code{asm_out_file} any text which is needed before emitting
7166
unwind info and debug info at the end of a file.  Some targets emit
7167
here PIC setup thunks that cannot be emitted at the end of file,
7168
because they couldn't have unwind info then.  The default is to output
7169
nothing.
7170
@end deftypefn
7171
 
7172
@defmac ASM_COMMENT_START
7173
A C string constant describing how to begin a comment in the target
7174
assembler language.  The compiler assumes that the comment will end at
7175
the end of the line.
7176
@end defmac
7177
 
7178
@defmac ASM_APP_ON
7179
A C string constant for text to be output before each @code{asm}
7180
statement or group of consecutive ones.  Normally this is
7181
@code{"#APP"}, which is a comment that has no effect on most
7182
assemblers but tells the GNU assembler that it must check the lines
7183
that follow for all valid assembler constructs.
7184
@end defmac
7185
 
7186
@defmac ASM_APP_OFF
7187
A C string constant for text to be output after each @code{asm}
7188
statement or group of consecutive ones.  Normally this is
7189
@code{"#NO_APP"}, which tells the GNU assembler to resume making the
7190
time-saving assumptions that are valid for ordinary compiler output.
7191
@end defmac
7192
 
7193
@defmac ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name})
7194
A C statement to output COFF information or DWARF debugging information
7195
which indicates that filename @var{name} is the current source file to
7196
the stdio stream @var{stream}.
7197
 
7198
This macro need not be defined if the standard form of output
7199
for the file format in use is appropriate.
7200
@end defmac
7201
 
7202
@defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string})
7203
A C statement to output the string @var{string} to the stdio stream
7204
@var{stream}.  If you do not call the function @code{output_quoted_string}
7205
in your config files, GCC will only call it to output filenames to
7206
the assembler source.  So you can use it to canonicalize the format
7207
of the filename using this macro.
7208
@end defmac
7209
 
7210
@defmac ASM_OUTPUT_IDENT (@var{stream}, @var{string})
7211
A C statement to output something to the assembler file to handle a
7212
@samp{#ident} directive containing the text @var{string}.  If this
7213
macro is not defined, nothing is output for a @samp{#ident} directive.
7214
@end defmac
7215
 
7216
@deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name}, unsigned int @var{flags}, tree @var{decl})
7217
Output assembly directives to switch to section @var{name}.  The section
7218
should have attributes as specified by @var{flags}, which is a bit mask
7219
of the @code{SECTION_*} flags defined in @file{output.h}.  If @var{decl}
7220
is non-NULL, it is the @code{VAR_DECL} or @code{FUNCTION_DECL} with which
7221
this section is associated.
7222
@end deftypefn
7223
 
7224
@deftypevr {Target Hook} bool TARGET_HAVE_NAMED_SECTIONS
7225
This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}.
7226
@end deftypevr
7227
 
7228
@anchor{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}
7229
@deftypevr {Target Hook} bool TARGET_HAVE_SWITCHABLE_BSS_SECTIONS
7230
This flag is true if we can create zeroed data by switching to a BSS
7231
section and then using @code{ASM_OUTPUT_SKIP} to allocate the space.
7232
This is true on most ELF targets.
7233
@end deftypevr
7234
 
7235
@deftypefn {Target Hook} {unsigned int} TARGET_SECTION_TYPE_FLAGS (tree @var{decl}, const char *@var{name}, int @var{reloc})
7236
Choose a set of section attributes for use by @code{TARGET_ASM_NAMED_SECTION}
7237
based on a variable or function decl, a section name, and whether or not the
7238
declaration's initializer may contain runtime relocations.  @var{decl} may be
7239
null, in which case read-write data should be assumed.
7240
 
7241
The default version of this function handles choosing code vs data,
7242
read-only vs read-write data, and @code{flag_pic}.  You should only
7243
need to override this if your target has special flags that might be
7244
set via @code{__attribute__}.
7245
@end deftypefn
7246
 
7247
@deftypefn {Target Hook} int TARGET_ASM_RECORD_GCC_SWITCHES (print_switch_type @var{type}, const char *@var{text})
7248
Provides the target with the ability to record the gcc command line
7249
switches that have been passed to the compiler, and options that are
7250
enabled.  The @var{type} argument specifies what is being recorded.
7251
It can take the following values:
7252
 
7253
@table @gcctabopt
7254
@item SWITCH_TYPE_PASSED
7255
@var{text} is a command line switch that has been set by the user.
7256
 
7257
@item SWITCH_TYPE_ENABLED
7258
@var{text} is an option which has been enabled.  This might be as a
7259
direct result of a command line switch, or because it is enabled by
7260
default or because it has been enabled as a side effect of a different
7261
command line switch.  For example, the @option{-O2} switch enables
7262
various different individual optimization passes.
7263
 
7264
@item SWITCH_TYPE_DESCRIPTIVE
7265
@var{text} is either NULL or some descriptive text which should be
7266
ignored.  If @var{text} is NULL then it is being used to warn the
7267
target hook that either recording is starting or ending.  The first
7268
time @var{type} is SWITCH_TYPE_DESCRIPTIVE and @var{text} is NULL, the
7269
warning is for start up and the second time the warning is for
7270
wind down.  This feature is to allow the target hook to make any
7271
necessary preparations before it starts to record switches and to
7272
perform any necessary tidying up after it has finished recording
7273
switches.
7274
 
7275
@item SWITCH_TYPE_LINE_START
7276
This option can be ignored by this target hook.
7277
 
7278
@item  SWITCH_TYPE_LINE_END
7279
This option can be ignored by this target hook.
7280
@end table
7281
 
7282
The hook's return value must be zero.  Other return values may be
7283
supported in the future.
7284
 
7285
By default this hook is set to NULL, but an example implementation is
7286
provided for ELF based targets.  Called @var{elf_record_gcc_switches},
7287
it records the switches as ASCII text inside a new, string mergeable
7288
section in the assembler output file.  The name of the new section is
7289
provided by the @code{TARGET_ASM_RECORD_GCC_SWITCHES_SECTION} target
7290
hook.
7291
@end deftypefn
7292
 
7293
@deftypevr {Target Hook} {const char *} TARGET_ASM_RECORD_GCC_SWITCHES_SECTION
7294
This is the name of the section that will be created by the example
7295
ELF implementation of the @code{TARGET_ASM_RECORD_GCC_SWITCHES} target
7296
hook.
7297
@end deftypevr
7298
 
7299
@need 2000
7300
@node Data Output
7301
@subsection Output of Data
7302
 
7303
 
7304
@deftypevr {Target Hook} {const char *} TARGET_ASM_BYTE_OP
7305
@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_HI_OP
7306
@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_SI_OP
7307
@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_DI_OP
7308
@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_TI_OP
7309
@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_HI_OP
7310
@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_SI_OP
7311
@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_DI_OP
7312
@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_TI_OP
7313
These hooks specify assembly directives for creating certain kinds
7314
of integer object.  The @code{TARGET_ASM_BYTE_OP} directive creates a
7315
byte-sized object, the @code{TARGET_ASM_ALIGNED_HI_OP} one creates an
7316
aligned two-byte object, and so on.  Any of the hooks may be
7317
@code{NULL}, indicating that no suitable directive is available.
7318
 
7319
The compiler will print these strings at the start of a new line,
7320
followed immediately by the object's initial value.  In most cases,
7321
the string should contain a tab, a pseudo-op, and then another tab.
7322
@end deftypevr
7323
 
7324
@deftypefn {Target Hook} bool TARGET_ASM_INTEGER (rtx @var{x}, unsigned int @var{size}, int @var{aligned_p})
7325
The @code{assemble_integer} function uses this hook to output an
7326
integer object.  @var{x} is the object's value, @var{size} is its size
7327
in bytes and @var{aligned_p} indicates whether it is aligned.  The
7328
function should return @code{true} if it was able to output the
7329
object.  If it returns false, @code{assemble_integer} will try to
7330
split the object into smaller parts.
7331
 
7332
The default implementation of this hook will use the
7333
@code{TARGET_ASM_BYTE_OP} family of strings, returning @code{false}
7334
when the relevant string is @code{NULL}.
7335
@end deftypefn
7336
 
7337
@defmac OUTPUT_ADDR_CONST_EXTRA (@var{stream}, @var{x}, @var{fail})
7338
A C statement to recognize @var{rtx} patterns that
7339
@code{output_addr_const} can't deal with, and output assembly code to
7340
@var{stream} corresponding to the pattern @var{x}.  This may be used to
7341
allow machine-dependent @code{UNSPEC}s to appear within constants.
7342
 
7343
If @code{OUTPUT_ADDR_CONST_EXTRA} fails to recognize a pattern, it must
7344
@code{goto fail}, so that a standard error message is printed.  If it
7345
prints an error message itself, by calling, for example,
7346
@code{output_operand_lossage}, it may just complete normally.
7347
@end defmac
7348
 
7349
@defmac ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len})
7350
A C statement to output to the stdio stream @var{stream} an assembler
7351
instruction to assemble a string constant containing the @var{len}
7352
bytes at @var{ptr}.  @var{ptr} will be a C expression of type
7353
@code{char *} and @var{len} a C expression of type @code{int}.
7354
 
7355
If the assembler has a @code{.ascii} pseudo-op as found in the
7356
Berkeley Unix assembler, do not define the macro
7357
@code{ASM_OUTPUT_ASCII}.
7358
@end defmac
7359
 
7360
@defmac ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n})
7361
A C statement to output word @var{n} of a function descriptor for
7362
@var{decl}.  This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS}
7363
is defined, and is otherwise unused.
7364
@end defmac
7365
 
7366
@defmac CONSTANT_POOL_BEFORE_FUNCTION
7367
You may define this macro as a C expression.  You should define the
7368
expression to have a nonzero value if GCC should output the constant
7369
pool for a function before the code for the function, or a zero value if
7370
GCC should output the constant pool after the function.  If you do
7371
not define this macro, the usual case, GCC will output the constant
7372
pool before the function.
7373
@end defmac
7374
 
7375
@defmac ASM_OUTPUT_POOL_PROLOGUE (@var{file}, @var{funname}, @var{fundecl}, @var{size})
7376
A C statement to output assembler commands to define the start of the
7377
constant pool for a function.  @var{funname} is a string giving
7378
the name of the function.  Should the return type of the function
7379
be required, it can be obtained via @var{fundecl}.  @var{size}
7380
is the size, in bytes, of the constant pool that will be written
7381
immediately after this call.
7382
 
7383
If no constant-pool prefix is required, the usual case, this macro need
7384
not be defined.
7385
@end defmac
7386
 
7387
@defmac ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto})
7388
A C statement (with or without semicolon) to output a constant in the
7389
constant pool, if it needs special treatment.  (This macro need not do
7390
anything for RTL expressions that can be output normally.)
7391
 
7392
The argument @var{file} is the standard I/O stream to output the
7393
assembler code on.  @var{x} is the RTL expression for the constant to
7394
output, and @var{mode} is the machine mode (in case @var{x} is a
7395
@samp{const_int}).  @var{align} is the required alignment for the value
7396
@var{x}; you should output an assembler directive to force this much
7397
alignment.
7398
 
7399
The argument @var{labelno} is a number to use in an internal label for
7400
the address of this pool entry.  The definition of this macro is
7401
responsible for outputting the label definition at the proper place.
7402
Here is how to do this:
7403
 
7404
@smallexample
7405
@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno});
7406
@end smallexample
7407
 
7408
When you output a pool entry specially, you should end with a
7409
@code{goto} to the label @var{jumpto}.  This will prevent the same pool
7410
entry from being output a second time in the usual manner.
7411
 
7412
You need not define this macro if it would do nothing.
7413
@end defmac
7414
 
7415
@defmac ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size})
7416
A C statement to output assembler commands to at the end of the constant
7417
pool for a function.  @var{funname} is a string giving the name of the
7418
function.  Should the return type of the function be required, you can
7419
obtain it via @var{fundecl}.  @var{size} is the size, in bytes, of the
7420
constant pool that GCC wrote immediately before this call.
7421
 
7422
If no constant-pool epilogue is required, the usual case, you need not
7423
define this macro.
7424
@end defmac
7425
 
7426
@defmac IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C}, @var{STR})
7427
Define this macro as a C expression which is nonzero if @var{C} is
7428
used as a logical line separator by the assembler.  @var{STR} points
7429
to the position in the string where @var{C} was found; this can be used if
7430
a line separator uses multiple characters.
7431
 
7432
If you do not define this macro, the default is that only
7433
the character @samp{;} is treated as a logical line separator.
7434
@end defmac
7435
 
7436
@deftypevr {Target Hook} {const char *} TARGET_ASM_OPEN_PAREN
7437
@deftypevrx {Target Hook} {const char *} TARGET_ASM_CLOSE_PAREN
7438
These target hooks are C string constants, describing the syntax in the
7439
assembler for grouping arithmetic expressions.  If not overridden, they
7440
default to normal parentheses, which is correct for most assemblers.
7441
@end deftypevr
7442
 
7443
These macros are provided by @file{real.h} for writing the definitions
7444
of @code{ASM_OUTPUT_DOUBLE} and the like:
7445
 
7446
@defmac REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l})
7447
@defmacx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l})
7448
@defmacx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l})
7449
@defmacx REAL_VALUE_TO_TARGET_DECIMAL32 (@var{x}, @var{l})
7450
@defmacx REAL_VALUE_TO_TARGET_DECIMAL64 (@var{x}, @var{l})
7451
@defmacx REAL_VALUE_TO_TARGET_DECIMAL128 (@var{x}, @var{l})
7452
These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the
7453
target's floating point representation, and store its bit pattern in
7454
the variable @var{l}.  For @code{REAL_VALUE_TO_TARGET_SINGLE} and
7455
@code{REAL_VALUE_TO_TARGET_DECIMAL32}, this variable should be a
7456
simple @code{long int}.  For the others, it should be an array of
7457
@code{long int}.  The number of elements in this array is determined
7458
by the size of the desired target floating point data type: 32 bits of
7459
it go in each @code{long int} array element.  Each array element holds
7460
32 bits of the result, even if @code{long int} is wider than 32 bits
7461
on the host machine.
7462
 
7463
The array element values are designed so that you can print them out
7464
using @code{fprintf} in the order they should appear in the target
7465
machine's memory.
7466
@end defmac
7467
 
7468
@node Uninitialized Data
7469
@subsection Output of Uninitialized Variables
7470
 
7471
Each of the macros in this section is used to do the whole job of
7472
outputting a single uninitialized variable.
7473
 
7474
@defmac ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded})
7475
A C statement (sans semicolon) to output to the stdio stream
7476
@var{stream} the assembler definition of a common-label named
7477
@var{name} whose size is @var{size} bytes.  The variable @var{rounded}
7478
is the size rounded up to whatever alignment the caller wants.  It is
7479
possible that @var{size} may be zero, for instance if a struct with no
7480
other member than a zero-length array is defined.  In this case, the
7481
backend must output a symbol definition that allocates at least one
7482
byte, both so that the address of the resulting object does not compare
7483
equal to any other, and because some object formats cannot even express
7484
the concept of a zero-sized common symbol, as that is how they represent
7485
an ordinary undefined external.
7486
 
7487
Use the expression @code{assemble_name (@var{stream}, @var{name})} to
7488
output the name itself; before and after that, output the additional
7489
assembler syntax for defining the name, and a newline.
7490
 
7491
This macro controls how the assembler definitions of uninitialized
7492
common global variables are output.
7493
@end defmac
7494
 
7495
@defmac ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment})
7496
Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a
7497
separate, explicit argument.  If you define this macro, it is used in
7498
place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in
7499
handling the required alignment of the variable.  The alignment is specified
7500
as the number of bits.
7501
@end defmac
7502
 
7503
@defmac ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
7504
Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the
7505
variable to be output, if there is one, or @code{NULL_TREE} if there
7506
is no corresponding variable.  If you define this macro, GCC will use it
7507
in place of both @code{ASM_OUTPUT_COMMON} and
7508
@code{ASM_OUTPUT_ALIGNED_COMMON}.  Define this macro when you need to see
7509
the variable's decl in order to chose what to output.
7510
@end defmac
7511
 
7512
@defmac ASM_OUTPUT_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{rounded})
7513
A C statement (sans semicolon) to output to the stdio stream
7514
@var{stream} the assembler definition of uninitialized global @var{decl} named
7515
@var{name} whose size is @var{size} bytes.  The variable @var{rounded}
7516
is the size rounded up to whatever alignment the caller wants.
7517
 
7518
Try to use function @code{asm_output_bss} defined in @file{varasm.c} when
7519
defining this macro.  If unable, use the expression
7520
@code{assemble_name (@var{stream}, @var{name})} to output the name itself;
7521
before and after that, output the additional assembler syntax for defining
7522
the name, and a newline.
7523
 
7524
There are two ways of handling global BSS@.  One is to define either
7525
this macro or its aligned counterpart, @code{ASM_OUTPUT_ALIGNED_BSS}.
7526
The other is to have @code{TARGET_ASM_SELECT_SECTION} return a
7527
switchable BSS section (@pxref{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}).
7528
You do not need to do both.
7529
 
7530
Some languages do not have @code{common} data, and require a
7531
non-common form of global BSS in order to handle uninitialized globals
7532
efficiently.  C++ is one example of this.  However, if the target does
7533
not support global BSS, the front end may choose to make globals
7534
common in order to save space in the object file.
7535
@end defmac
7536
 
7537
@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
7538
Like @code{ASM_OUTPUT_BSS} except takes the required alignment as a
7539
separate, explicit argument.  If you define this macro, it is used in
7540
place of @code{ASM_OUTPUT_BSS}, and gives you more flexibility in
7541
handling the required alignment of the variable.  The alignment is specified
7542
as the number of bits.
7543
 
7544
Try to use function @code{asm_output_aligned_bss} defined in file
7545
@file{varasm.c} when defining this macro.
7546
@end defmac
7547
 
7548
@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded})
7549
A C statement (sans semicolon) to output to the stdio stream
7550
@var{stream} the assembler definition of a local-common-label named
7551
@var{name} whose size is @var{size} bytes.  The variable @var{rounded}
7552
is the size rounded up to whatever alignment the caller wants.
7553
 
7554
Use the expression @code{assemble_name (@var{stream}, @var{name})} to
7555
output the name itself; before and after that, output the additional
7556
assembler syntax for defining the name, and a newline.
7557
 
7558
This macro controls how the assembler definitions of uninitialized
7559
static variables are output.
7560
@end defmac
7561
 
7562
@defmac ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment})
7563
Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a
7564
separate, explicit argument.  If you define this macro, it is used in
7565
place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in
7566
handling the required alignment of the variable.  The alignment is specified
7567
as the number of bits.
7568
@end defmac
7569
 
7570
@defmac ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment})
7571
Like @code{ASM_OUTPUT_ALIGNED_DECL} except that @var{decl} of the
7572
variable to be output, if there is one, or @code{NULL_TREE} if there
7573
is no corresponding variable.  If you define this macro, GCC will use it
7574
in place of both @code{ASM_OUTPUT_DECL} and
7575
@code{ASM_OUTPUT_ALIGNED_DECL}.  Define this macro when you need to see
7576
the variable's decl in order to chose what to output.
7577
@end defmac
7578
 
7579
@node Label Output
7580
@subsection Output and Generation of Labels
7581
 
7582
@c prevent bad page break with this line
7583
This is about outputting labels.
7584
 
7585
@findex assemble_name
7586
@defmac ASM_OUTPUT_LABEL (@var{stream}, @var{name})
7587
A C statement (sans semicolon) to output to the stdio stream
7588
@var{stream} the assembler definition of a label named @var{name}.
7589
Use the expression @code{assemble_name (@var{stream}, @var{name})} to
7590
output the name itself; before and after that, output the additional
7591
assembler syntax for defining the name, and a newline.  A default
7592
definition of this macro is provided which is correct for most systems.
7593
@end defmac
7594
 
7595
@findex assemble_name_raw
7596
@defmac ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{name})
7597
Identical to @code{ASM_OUTPUT_LABEL}, except that @var{name} is known
7598
to refer to a compiler-generated label.  The default definition uses
7599
@code{assemble_name_raw}, which is like @code{assemble_name} except
7600
that it is more efficient.
7601
@end defmac
7602
 
7603
@defmac SIZE_ASM_OP
7604
A C string containing the appropriate assembler directive to specify the
7605
size of a symbol, without any arguments.  On systems that use ELF, the
7606
default (in @file{config/elfos.h}) is @samp{"\t.size\t"}; on other
7607
systems, the default is not to define this macro.
7608
 
7609
Define this macro only if it is correct to use the default definitions
7610
of @code{ASM_OUTPUT_SIZE_DIRECTIVE} and @code{ASM_OUTPUT_MEASURED_SIZE}
7611
for your system.  If you need your own custom definitions of those
7612
macros, or if you do not need explicit symbol sizes at all, do not
7613
define this macro.
7614
@end defmac
7615
 
7616
@defmac ASM_OUTPUT_SIZE_DIRECTIVE (@var{stream}, @var{name}, @var{size})
7617
A C statement (sans semicolon) to output to the stdio stream
7618
@var{stream} a directive telling the assembler that the size of the
7619
symbol @var{name} is @var{size}.  @var{size} is a @code{HOST_WIDE_INT}.
7620
If you define @code{SIZE_ASM_OP}, a default definition of this macro is
7621
provided.
7622
@end defmac
7623
 
7624
@defmac ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name})
7625
A C statement (sans semicolon) to output to the stdio stream
7626
@var{stream} a directive telling the assembler to calculate the size of
7627
the symbol @var{name} by subtracting its address from the current
7628
address.
7629
 
7630
If you define @code{SIZE_ASM_OP}, a default definition of this macro is
7631
provided.  The default assumes that the assembler recognizes a special
7632
@samp{.} symbol as referring to the current address, and can calculate
7633
the difference between this and another symbol.  If your assembler does
7634
not recognize @samp{.} or cannot do calculations with it, you will need
7635
to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique.
7636
@end defmac
7637
 
7638
@defmac TYPE_ASM_OP
7639
A C string containing the appropriate assembler directive to specify the
7640
type of a symbol, without any arguments.  On systems that use ELF, the
7641
default (in @file{config/elfos.h}) is @samp{"\t.type\t"}; on other
7642
systems, the default is not to define this macro.
7643
 
7644
Define this macro only if it is correct to use the default definition of
7645
@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system.  If you need your own
7646
custom definition of this macro, or if you do not need explicit symbol
7647
types at all, do not define this macro.
7648
@end defmac
7649
 
7650
@defmac TYPE_OPERAND_FMT
7651
A C string which specifies (using @code{printf} syntax) the format of
7652
the second operand to @code{TYPE_ASM_OP}.  On systems that use ELF, the
7653
default (in @file{config/elfos.h}) is @samp{"@@%s"}; on other systems,
7654
the default is not to define this macro.
7655
 
7656
Define this macro only if it is correct to use the default definition of
7657
@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system.  If you need your own
7658
custom definition of this macro, or if you do not need explicit symbol
7659
types at all, do not define this macro.
7660
@end defmac
7661
 
7662
@defmac ASM_OUTPUT_TYPE_DIRECTIVE (@var{stream}, @var{type})
7663
A C statement (sans semicolon) to output to the stdio stream
7664
@var{stream} a directive telling the assembler that the type of the
7665
symbol @var{name} is @var{type}.  @var{type} is a C string; currently,
7666
that string is always either @samp{"function"} or @samp{"object"}, but
7667
you should not count on this.
7668
 
7669
If you define @code{TYPE_ASM_OP} and @code{TYPE_OPERAND_FMT}, a default
7670
definition of this macro is provided.
7671
@end defmac
7672
 
7673
@defmac ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl})
7674
A C statement (sans semicolon) to output to the stdio stream
7675
@var{stream} any text necessary for declaring the name @var{name} of a
7676
function which is being defined.  This macro is responsible for
7677
outputting the label definition (perhaps using
7678
@code{ASM_OUTPUT_LABEL}).  The argument @var{decl} is the
7679
@code{FUNCTION_DECL} tree node representing the function.
7680
 
7681
If this macro is not defined, then the function name is defined in the
7682
usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
7683
 
7684
You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
7685
of this macro.
7686
@end defmac
7687
 
7688
@defmac ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl})
7689
A C statement (sans semicolon) to output to the stdio stream
7690
@var{stream} any text necessary for declaring the size of a function
7691
which is being defined.  The argument @var{name} is the name of the
7692
function.  The argument @var{decl} is the @code{FUNCTION_DECL} tree node
7693
representing the function.
7694
 
7695
If this macro is not defined, then the function size is not defined.
7696
 
7697
You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition
7698
of this macro.
7699
@end defmac
7700
 
7701
@defmac ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl})
7702
A C statement (sans semicolon) to output to the stdio stream
7703
@var{stream} any text necessary for declaring the name @var{name} of an
7704
initialized variable which is being defined.  This macro must output the
7705
label definition (perhaps using @code{ASM_OUTPUT_LABEL}).  The argument
7706
@var{decl} is the @code{VAR_DECL} tree node representing the variable.
7707
 
7708
If this macro is not defined, then the variable name is defined in the
7709
usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
7710
 
7711
You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} and/or
7712
@code{ASM_OUTPUT_SIZE_DIRECTIVE} in the definition of this macro.
7713
@end defmac
7714
 
7715
@defmac ASM_DECLARE_CONSTANT_NAME (@var{stream}, @var{name}, @var{exp}, @var{size})
7716
A C statement (sans semicolon) to output to the stdio stream
7717
@var{stream} any text necessary for declaring the name @var{name} of a
7718
constant which is being defined.  This macro is responsible for
7719
outputting the label definition (perhaps using
7720
@code{ASM_OUTPUT_LABEL}).  The argument @var{exp} is the
7721
value of the constant, and @var{size} is the size of the constant
7722
in bytes.  @var{name} will be an internal label.
7723
 
7724
If this macro is not defined, then the @var{name} is defined in the
7725
usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}).
7726
 
7727
You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition
7728
of this macro.
7729
@end defmac
7730
 
7731
@defmac ASM_DECLARE_REGISTER_GLOBAL (@var{stream}, @var{decl}, @var{regno}, @var{name})
7732
A C statement (sans semicolon) to output to the stdio stream
7733
@var{stream} any text necessary for claiming a register @var{regno}
7734
for a global variable @var{decl} with name @var{name}.
7735
 
7736
If you don't define this macro, that is equivalent to defining it to do
7737
nothing.
7738
@end defmac
7739
 
7740
@defmac ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend})
7741
A C statement (sans semicolon) to finish up declaring a variable name
7742
once the compiler has processed its initializer fully and thus has had a
7743
chance to determine the size of an array when controlled by an
7744
initializer.  This is used on systems where it's necessary to declare
7745
something about the size of the object.
7746
 
7747
If you don't define this macro, that is equivalent to defining it to do
7748
nothing.
7749
 
7750
You may wish to use @code{ASM_OUTPUT_SIZE_DIRECTIVE} and/or
7751
@code{ASM_OUTPUT_MEASURED_SIZE} in the definition of this macro.
7752
@end defmac
7753
 
7754
@deftypefn {Target Hook} void TARGET_ASM_GLOBALIZE_LABEL (FILE *@var{stream}, const char *@var{name})
7755
This target hook is a function to output to the stdio stream
7756
@var{stream} some commands that will make the label @var{name} global;
7757
that is, available for reference from other files.
7758
 
7759
The default implementation relies on a proper definition of
7760
@code{GLOBAL_ASM_OP}.
7761
@end deftypefn
7762
 
7763
@deftypefn {Target Hook} void TARGET_ASM_GLOBALIZE_DECL_NAME (FILE *@var{stream}, tree @var{decl})
7764
This target hook is a function to output to the stdio stream
7765
@var{stream} some commands that will make the name associated with @var{decl}
7766
global; that is, available for reference from other files.
7767
 
7768
The default implementation uses the TARGET_ASM_GLOBALIZE_LABEL target hook.
7769
@end deftypefn
7770
 
7771
@defmac ASM_WEAKEN_LABEL (@var{stream}, @var{name})
7772
A C statement (sans semicolon) to output to the stdio stream
7773
@var{stream} some commands that will make the label @var{name} weak;
7774
that is, available for reference from other files but only used if
7775
no other definition is available.  Use the expression
7776
@code{assemble_name (@var{stream}, @var{name})} to output the name
7777
itself; before and after that, output the additional assembler syntax
7778
for making that name weak, and a newline.
7779
 
7780
If you don't define this macro or @code{ASM_WEAKEN_DECL}, GCC will not
7781
support weak symbols and you should not define the @code{SUPPORTS_WEAK}
7782
macro.
7783
@end defmac
7784
 
7785
@defmac ASM_WEAKEN_DECL (@var{stream}, @var{decl}, @var{name}, @var{value})
7786
Combines (and replaces) the function of @code{ASM_WEAKEN_LABEL} and
7787
@code{ASM_OUTPUT_WEAK_ALIAS}, allowing access to the associated function
7788
or variable decl.  If @var{value} is not @code{NULL}, this C statement
7789
should output to the stdio stream @var{stream} assembler code which
7790
defines (equates) the weak symbol @var{name} to have the value
7791
@var{value}.  If @var{value} is @code{NULL}, it should output commands
7792
to make @var{name} weak.
7793
@end defmac
7794
 
7795
@defmac ASM_OUTPUT_WEAKREF (@var{stream}, @var{decl}, @var{name}, @var{value})
7796
Outputs a directive that enables @var{name} to be used to refer to
7797
symbol @var{value} with weak-symbol semantics.  @code{decl} is the
7798
declaration of @code{name}.
7799
@end defmac
7800
 
7801
@defmac SUPPORTS_WEAK
7802
A C expression which evaluates to true if the target supports weak symbols.
7803
 
7804
If you don't define this macro, @file{defaults.h} provides a default
7805
definition.  If either @code{ASM_WEAKEN_LABEL} or @code{ASM_WEAKEN_DECL}
7806
is defined, the default definition is @samp{1}; otherwise, it is
7807
@samp{0}.  Define this macro if you want to control weak symbol support
7808
with a compiler flag such as @option{-melf}.
7809
@end defmac
7810
 
7811
@defmac MAKE_DECL_ONE_ONLY (@var{decl})
7812
A C statement (sans semicolon) to mark @var{decl} to be emitted as a
7813
public symbol such that extra copies in multiple translation units will
7814
be discarded by the linker.  Define this macro if your object file
7815
format provides support for this concept, such as the @samp{COMDAT}
7816
section flags in the Microsoft Windows PE/COFF format, and this support
7817
requires changes to @var{decl}, such as putting it in a separate section.
7818
@end defmac
7819
 
7820
@defmac SUPPORTS_ONE_ONLY
7821
A C expression which evaluates to true if the target supports one-only
7822
semantics.
7823
 
7824
If you don't define this macro, @file{varasm.c} provides a default
7825
definition.  If @code{MAKE_DECL_ONE_ONLY} is defined, the default
7826
definition is @samp{1}; otherwise, it is @samp{0}.  Define this macro if
7827
you want to control one-only symbol support with a compiler flag, or if
7828
setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to
7829
be emitted as one-only.
7830
@end defmac
7831
 
7832
@deftypefn {Target Hook} void TARGET_ASM_ASSEMBLE_VISIBILITY (tree @var{decl}, int @var{visibility})
7833
This target hook is a function to output to @var{asm_out_file} some
7834
commands that will make the symbol(s) associated with @var{decl} have
7835
hidden, protected or internal visibility as specified by @var{visibility}.
7836
@end deftypefn
7837
 
7838
@defmac TARGET_WEAK_NOT_IN_ARCHIVE_TOC
7839
A C expression that evaluates to true if the target's linker expects
7840
that weak symbols do not appear in a static archive's table of contents.
7841
The default is @code{0}.
7842
 
7843
Leaving weak symbols out of an archive's table of contents means that,
7844
if a symbol will only have a definition in one translation unit and
7845
will have undefined references from other translation units, that
7846
symbol should not be weak.  Defining this macro to be nonzero will
7847
thus have the effect that certain symbols that would normally be weak
7848
(explicit template instantiations, and vtables for polymorphic classes
7849
with noninline key methods) will instead be nonweak.
7850
 
7851
The C++ ABI requires this macro to be zero.  Define this macro for
7852
targets where full C++ ABI compliance is impossible and where linker
7853
restrictions require weak symbols to be left out of a static archive's
7854
table of contents.
7855
@end defmac
7856
 
7857
@defmac ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name})
7858
A C statement (sans semicolon) to output to the stdio stream
7859
@var{stream} any text necessary for declaring the name of an external
7860
symbol named @var{name} which is referenced in this compilation but
7861
not defined.  The value of @var{decl} is the tree node for the
7862
declaration.
7863
 
7864
This macro need not be defined if it does not need to output anything.
7865
The GNU assembler and most Unix assemblers don't require anything.
7866
@end defmac
7867
 
7868
@deftypefn {Target Hook} void TARGET_ASM_EXTERNAL_LIBCALL (rtx @var{symref})
7869
This target hook is a function to output to @var{asm_out_file} an assembler
7870
pseudo-op to declare a library function name external.  The name of the
7871
library function is given by @var{symref}, which is a @code{symbol_ref}.
7872
@end deftypefn
7873
 
7874
@deftypefn {Target Hook} void TARGET_ASM_MARK_DECL_PRESERVED (const char *@var{symbol})
7875
This target hook is a function to output to @var{asm_out_file} an assembler
7876
directive to annotate @var{symbol} as used.  The Darwin target uses the
7877
.no_dead_code_strip directive.
7878
@end deftypefn
7879
 
7880
@defmac ASM_OUTPUT_LABELREF (@var{stream}, @var{name})
7881
A C statement (sans semicolon) to output to the stdio stream
7882
@var{stream} a reference in assembler syntax to a label named
7883
@var{name}.  This should add @samp{_} to the front of the name, if that
7884
is customary on your operating system, as it is in most Berkeley Unix
7885
systems.  This macro is used in @code{assemble_name}.
7886
@end defmac
7887
 
7888
@defmac ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym})
7889
A C statement (sans semicolon) to output a reference to
7890
@code{SYMBOL_REF} @var{sym}.  If not defined, @code{assemble_name}
7891
will be used to output the name of the symbol.  This macro may be used
7892
to modify the way a symbol is referenced depending on information
7893
encoded by @code{TARGET_ENCODE_SECTION_INFO}.
7894
@end defmac
7895
 
7896
@defmac ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf})
7897
A C statement (sans semicolon) to output a reference to @var{buf}, the
7898
result of @code{ASM_GENERATE_INTERNAL_LABEL}.  If not defined,
7899
@code{assemble_name} will be used to output the name of the symbol.
7900
This macro is not used by @code{output_asm_label}, or the @code{%l}
7901
specifier that calls it; the intention is that this macro should be set
7902
when it is necessary to output a label differently when its address is
7903
being taken.
7904
@end defmac
7905
 
7906
@deftypefn {Target Hook} void TARGET_ASM_INTERNAL_LABEL (FILE *@var{stream}, const char *@var{prefix}, unsigned long @var{labelno})
7907
A function to output to the stdio stream @var{stream} a label whose
7908
name is made from the string @var{prefix} and the number @var{labelno}.
7909
 
7910
It is absolutely essential that these labels be distinct from the labels
7911
used for user-level functions and variables.  Otherwise, certain programs
7912
will have name conflicts with internal labels.
7913
 
7914
It is desirable to exclude internal labels from the symbol table of the
7915
object file.  Most assemblers have a naming convention for labels that
7916
should be excluded; on many systems, the letter @samp{L} at the
7917
beginning of a label has this effect.  You should find out what
7918
convention your system uses, and follow it.
7919
 
7920
The default version of this function utilizes @code{ASM_GENERATE_INTERNAL_LABEL}.
7921
@end deftypefn
7922
 
7923
@defmac ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num})
7924
A C statement to output to the stdio stream @var{stream} a debug info
7925
label whose name is made from the string @var{prefix} and the number
7926
@var{num}.  This is useful for VLIW targets, where debug info labels
7927
may need to be treated differently than branch target labels.  On some
7928
systems, branch target labels must be at the beginning of instruction
7929
bundles, but debug info labels can occur in the middle of instruction
7930
bundles.
7931
 
7932
If this macro is not defined, then @code{(*targetm.asm_out.internal_label)} will be
7933
used.
7934
@end defmac
7935
 
7936
@defmac ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num})
7937
A C statement to store into the string @var{string} a label whose name
7938
is made from the string @var{prefix} and the number @var{num}.
7939
 
7940
This string, when output subsequently by @code{assemble_name}, should
7941
produce the output that @code{(*targetm.asm_out.internal_label)} would produce
7942
with the same @var{prefix} and @var{num}.
7943
 
7944
If the string begins with @samp{*}, then @code{assemble_name} will
7945
output the rest of the string unchanged.  It is often convenient for
7946
@code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way.  If the
7947
string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets
7948
to output the string, and may change it.  (Of course,
7949
@code{ASM_OUTPUT_LABELREF} is also part of your machine description, so
7950
you should know what it does on your machine.)
7951
@end defmac
7952
 
7953
@defmac ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number})
7954
A C expression to assign to @var{outvar} (which is a variable of type
7955
@code{char *}) a newly allocated string made from the string
7956
@var{name} and the number @var{number}, with some suitable punctuation
7957
added.  Use @code{alloca} to get space for the string.
7958
 
7959
The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to
7960
produce an assembler label for an internal static variable whose name is
7961
@var{name}.  Therefore, the string must be such as to result in valid
7962
assembler code.  The argument @var{number} is different each time this
7963
macro is executed; it prevents conflicts between similarly-named
7964
internal static variables in different scopes.
7965
 
7966
Ideally this string should not be a valid C identifier, to prevent any
7967
conflict with the user's own symbols.  Most assemblers allow periods
7968
or percent signs in assembler symbols; putting at least one of these
7969
between the name and the number will suffice.
7970
 
7971
If this macro is not defined, a default definition will be provided
7972
which is correct for most systems.
7973
@end defmac
7974
 
7975
@defmac ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value})
7976
A C statement to output to the stdio stream @var{stream} assembler code
7977
which defines (equates) the symbol @var{name} to have the value @var{value}.
7978
 
7979
@findex SET_ASM_OP
7980
If @code{SET_ASM_OP} is defined, a default definition is provided which is
7981
correct for most systems.
7982
@end defmac
7983
 
7984
@defmac ASM_OUTPUT_DEF_FROM_DECLS (@var{stream}, @var{decl_of_name}, @var{decl_of_value})
7985
A C statement to output to the stdio stream @var{stream} assembler code
7986
which defines (equates) the symbol whose tree node is @var{decl_of_name}
7987
to have the value of the tree node @var{decl_of_value}.  This macro will
7988
be used in preference to @samp{ASM_OUTPUT_DEF} if it is defined and if
7989
the tree nodes are available.
7990
 
7991
@findex SET_ASM_OP
7992
If @code{SET_ASM_OP} is defined, a default definition is provided which is
7993
correct for most systems.
7994
@end defmac
7995
 
7996
@defmac TARGET_DEFERRED_OUTPUT_DEFS (@var{decl_of_name}, @var{decl_of_value})
7997
A C statement that evaluates to true if the assembler code which defines
7998
(equates) the symbol whose tree node is @var{decl_of_name} to have the value
7999
of the tree node @var{decl_of_value} should be emitted near the end of the
8000
current compilation unit.  The default is to not defer output of defines.
8001
This macro affects defines output by @samp{ASM_OUTPUT_DEF} and
8002
@samp{ASM_OUTPUT_DEF_FROM_DECLS}.
8003
@end defmac
8004
 
8005
@defmac ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value})
8006
A C statement to output to the stdio stream @var{stream} assembler code
8007
which defines (equates) the weak symbol @var{name} to have the value
8008
@var{value}.  If @var{value} is @code{NULL}, it defines @var{name} as
8009
an undefined weak symbol.
8010
 
8011
Define this macro if the target only supports weak aliases; define
8012
@code{ASM_OUTPUT_DEF} instead if possible.
8013
@end defmac
8014
 
8015
@defmac OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name})
8016
Define this macro to override the default assembler names used for
8017
Objective-C methods.
8018
 
8019
The default name is a unique method number followed by the name of the
8020
class (e.g.@: @samp{_1_Foo}).  For methods in categories, the name of
8021
the category is also included in the assembler name (e.g.@:
8022
@samp{_1_Foo_Bar}).
8023
 
8024
These names are safe on most systems, but make debugging difficult since
8025
the method's selector is not present in the name.  Therefore, particular
8026
systems define other ways of computing names.
8027
 
8028
@var{buf} is an expression of type @code{char *} which gives you a
8029
buffer in which to store the name; its length is as long as
8030
@var{class_name}, @var{cat_name} and @var{sel_name} put together, plus
8031
50 characters extra.
8032
 
8033
The argument @var{is_inst} specifies whether the method is an instance
8034
method or a class method; @var{class_name} is the name of the class;
8035
@var{cat_name} is the name of the category (or @code{NULL} if the method is not
8036
in a category); and @var{sel_name} is the name of the selector.
8037
 
8038
On systems where the assembler can handle quoted names, you can use this
8039
macro to provide more human-readable names.
8040
@end defmac
8041
 
8042
@defmac ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name})
8043
A C statement (sans semicolon) to output to the stdio stream
8044
@var{stream} commands to declare that the label @var{name} is an
8045
Objective-C class reference.  This is only needed for targets whose
8046
linkers have special support for NeXT-style runtimes.
8047
@end defmac
8048
 
8049
@defmac ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name})
8050
A C statement (sans semicolon) to output to the stdio stream
8051
@var{stream} commands to declare that the label @var{name} is an
8052
unresolved Objective-C class reference.  This is only needed for targets
8053
whose linkers have special support for NeXT-style runtimes.
8054
@end defmac
8055
 
8056
@node Initialization
8057
@subsection How Initialization Functions Are Handled
8058
@cindex initialization routines
8059
@cindex termination routines
8060
@cindex constructors, output of
8061
@cindex destructors, output of
8062
 
8063
The compiled code for certain languages includes @dfn{constructors}
8064
(also called @dfn{initialization routines})---functions to initialize
8065
data in the program when the program is started.  These functions need
8066
to be called before the program is ``started''---that is to say, before
8067
@code{main} is called.
8068
 
8069
Compiling some languages generates @dfn{destructors} (also called
8070
@dfn{termination routines}) that should be called when the program
8071
terminates.
8072
 
8073
To make the initialization and termination functions work, the compiler
8074
must output something in the assembler code to cause those functions to
8075
be called at the appropriate time.  When you port the compiler to a new
8076
system, you need to specify how to do this.
8077
 
8078
There are two major ways that GCC currently supports the execution of
8079
initialization and termination functions.  Each way has two variants.
8080
Much of the structure is common to all four variations.
8081
 
8082
@findex __CTOR_LIST__
8083
@findex __DTOR_LIST__
8084
The linker must build two lists of these functions---a list of
8085
initialization functions, called @code{__CTOR_LIST__}, and a list of
8086
termination functions, called @code{__DTOR_LIST__}.
8087
 
8088
Each list always begins with an ignored function pointer (which may hold
8089
0, @minus{}1, or a count of the function pointers after it, depending on
8090
the environment).  This is followed by a series of zero or more function
8091
pointers to constructors (or destructors), followed by a function
8092
pointer containing zero.
8093
 
8094
Depending on the operating system and its executable file format, either
8095
@file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup
8096
time and exit time.  Constructors are called in reverse order of the
8097
list; destructors in forward order.
8098
 
8099
The best way to handle static constructors works only for object file
8100
formats which provide arbitrarily-named sections.  A section is set
8101
aside for a list of constructors, and another for a list of destructors.
8102
Traditionally these are called @samp{.ctors} and @samp{.dtors}.  Each
8103
object file that defines an initialization function also puts a word in
8104
the constructor section to point to that function.  The linker
8105
accumulates all these words into one contiguous @samp{.ctors} section.
8106
Termination functions are handled similarly.
8107
 
8108
This method will be chosen as the default by @file{target-def.h} if
8109
@code{TARGET_ASM_NAMED_SECTION} is defined.  A target that does not
8110
support arbitrary sections, but does support special designated
8111
constructor and destructor sections may define @code{CTORS_SECTION_ASM_OP}
8112
and @code{DTORS_SECTION_ASM_OP} to achieve the same effect.
8113
 
8114
When arbitrary sections are available, there are two variants, depending
8115
upon how the code in @file{crtstuff.c} is called.  On systems that
8116
support a @dfn{.init} section which is executed at program startup,
8117
parts of @file{crtstuff.c} are compiled into that section.  The
8118
program is linked by the @command{gcc} driver like this:
8119
 
8120
@smallexample
8121
ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o
8122
@end smallexample
8123
 
8124
The prologue of a function (@code{__init}) appears in the @code{.init}
8125
section of @file{crti.o}; the epilogue appears in @file{crtn.o}.  Likewise
8126
for the function @code{__fini} in the @dfn{.fini} section.  Normally these
8127
files are provided by the operating system or by the GNU C library, but
8128
are provided by GCC for a few targets.
8129
 
8130
The objects @file{crtbegin.o} and @file{crtend.o} are (for most targets)
8131
compiled from @file{crtstuff.c}.  They contain, among other things, code
8132
fragments within the @code{.init} and @code{.fini} sections that branch
8133
to routines in the @code{.text} section.  The linker will pull all parts
8134
of a section together, which results in a complete @code{__init} function
8135
that invokes the routines we need at startup.
8136
 
8137
To use this variant, you must define the @code{INIT_SECTION_ASM_OP}
8138
macro properly.
8139
 
8140
If no init section is available, when GCC compiles any function called
8141
@code{main} (or more accurately, any function designated as a program
8142
entry point by the language front end calling @code{expand_main_function}),
8143
it inserts a procedure call to @code{__main} as the first executable code
8144
after the function prologue.  The @code{__main} function is defined
8145
in @file{libgcc2.c} and runs the global constructors.
8146
 
8147
In file formats that don't support arbitrary sections, there are again
8148
two variants.  In the simplest variant, the GNU linker (GNU @code{ld})
8149
and an `a.out' format must be used.  In this case,
8150
@code{TARGET_ASM_CONSTRUCTOR} is defined to produce a @code{.stabs}
8151
entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__},
8152
and with the address of the void function containing the initialization
8153
code as its value.  The GNU linker recognizes this as a request to add
8154
the value to a @dfn{set}; the values are accumulated, and are eventually
8155
placed in the executable as a vector in the format described above, with
8156
a leading (ignored) count and a trailing zero element.
8157
@code{TARGET_ASM_DESTRUCTOR} is handled similarly.  Since no init
8158
section is available, the absence of @code{INIT_SECTION_ASM_OP} causes
8159
the compilation of @code{main} to call @code{__main} as above, starting
8160
the initialization process.
8161
 
8162
The last variant uses neither arbitrary sections nor the GNU linker.
8163
This is preferable when you want to do dynamic linking and when using
8164
file formats which the GNU linker does not support, such as `ECOFF'@.  In
8165
this case, @code{TARGET_HAVE_CTORS_DTORS} is false, initialization and
8166
termination functions are recognized simply by their names.  This requires
8167
an extra program in the linkage step, called @command{collect2}.  This program
8168
pretends to be the linker, for use with GCC; it does its job by running
8169
the ordinary linker, but also arranges to include the vectors of
8170
initialization and termination functions.  These functions are called
8171
via @code{__main} as described above.  In order to use this method,
8172
@code{use_collect2} must be defined in the target in @file{config.gcc}.
8173
 
8174
@ifinfo
8175
The following section describes the specific macros that control and
8176
customize the handling of initialization and termination functions.
8177
@end ifinfo
8178
 
8179
@node Macros for Initialization
8180
@subsection Macros Controlling Initialization Routines
8181
 
8182
Here are the macros that control how the compiler handles initialization
8183
and termination functions:
8184
 
8185
@defmac INIT_SECTION_ASM_OP
8186
If defined, a C string constant, including spacing, for the assembler
8187
operation to identify the following data as initialization code.  If not
8188
defined, GCC will assume such a section does not exist.  When you are
8189
using special sections for initialization and termination functions, this
8190
macro also controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to
8191
run the initialization functions.
8192
@end defmac
8193
 
8194
@defmac HAS_INIT_SECTION
8195
If defined, @code{main} will not call @code{__main} as described above.
8196
This macro should be defined for systems that control start-up code
8197
on a symbol-by-symbol basis, such as OSF/1, and should not
8198
be defined explicitly for systems that support @code{INIT_SECTION_ASM_OP}.
8199
@end defmac
8200
 
8201
@defmac LD_INIT_SWITCH
8202
If defined, a C string constant for a switch that tells the linker that
8203
the following symbol is an initialization routine.
8204
@end defmac
8205
 
8206
@defmac LD_FINI_SWITCH
8207
If defined, a C string constant for a switch that tells the linker that
8208
the following symbol is a finalization routine.
8209
@end defmac
8210
 
8211
@defmac COLLECT_SHARED_INIT_FUNC (@var{stream}, @var{func})
8212
If defined, a C statement that will write a function that can be
8213
automatically called when a shared library is loaded.  The function
8214
should call @var{func}, which takes no arguments.  If not defined, and
8215
the object format requires an explicit initialization function, then a
8216
function called @code{_GLOBAL__DI} will be generated.
8217
 
8218
This function and the following one are used by collect2 when linking a
8219
shared library that needs constructors or destructors, or has DWARF2
8220
exception tables embedded in the code.
8221
@end defmac
8222
 
8223
@defmac COLLECT_SHARED_FINI_FUNC (@var{stream}, @var{func})
8224
If defined, a C statement that will write a function that can be
8225
automatically called when a shared library is unloaded.  The function
8226
should call @var{func}, which takes no arguments.  If not defined, and
8227
the object format requires an explicit finalization function, then a
8228
function called @code{_GLOBAL__DD} will be generated.
8229
@end defmac
8230
 
8231
@defmac INVOKE__main
8232
If defined, @code{main} will call @code{__main} despite the presence of
8233
@code{INIT_SECTION_ASM_OP}.  This macro should be defined for systems
8234
where the init section is not actually run automatically, but is still
8235
useful for collecting the lists of constructors and destructors.
8236
@end defmac
8237
 
8238
@defmac SUPPORTS_INIT_PRIORITY
8239
If nonzero, the C++ @code{init_priority} attribute is supported and the
8240
compiler should emit instructions to control the order of initialization
8241
of objects.  If zero, the compiler will issue an error message upon
8242
encountering an @code{init_priority} attribute.
8243
@end defmac
8244
 
8245
@deftypevr {Target Hook} bool TARGET_HAVE_CTORS_DTORS
8246
This value is true if the target supports some ``native'' method of
8247
collecting constructors and destructors to be run at startup and exit.
8248
It is false if we must use @command{collect2}.
8249
@end deftypevr
8250
 
8251
@deftypefn {Target Hook} void TARGET_ASM_CONSTRUCTOR (rtx @var{symbol}, int @var{priority})
8252
If defined, a function that outputs assembler code to arrange to call
8253
the function referenced by @var{symbol} at initialization time.
8254
 
8255
Assume that @var{symbol} is a @code{SYMBOL_REF} for a function taking
8256
no arguments and with no return value.  If the target supports initialization
8257
priorities, @var{priority} is a value between 0 and @code{MAX_INIT_PRIORITY};
8258
otherwise it must be @code{DEFAULT_INIT_PRIORITY}.
8259
 
8260
If this macro is not defined by the target, a suitable default will
8261
be chosen if (1) the target supports arbitrary section names, (2) the
8262
target defines @code{CTORS_SECTION_ASM_OP}, or (3) @code{USE_COLLECT2}
8263
is not defined.
8264
@end deftypefn
8265
 
8266
@deftypefn {Target Hook} void TARGET_ASM_DESTRUCTOR (rtx @var{symbol}, int @var{priority})
8267
This is like @code{TARGET_ASM_CONSTRUCTOR} but used for termination
8268
functions rather than initialization functions.
8269
@end deftypefn
8270
 
8271
If @code{TARGET_HAVE_CTORS_DTORS} is true, the initialization routine
8272
generated for the generated object file will have static linkage.
8273
 
8274
If your system uses @command{collect2} as the means of processing
8275
constructors, then that program normally uses @command{nm} to scan
8276
an object file for constructor functions to be called.
8277
 
8278
On certain kinds of systems, you can define this macro to make
8279
@command{collect2} work faster (and, in some cases, make it work at all):
8280
 
8281
@defmac OBJECT_FORMAT_COFF
8282
Define this macro if the system uses COFF (Common Object File Format)
8283
object files, so that @command{collect2} can assume this format and scan
8284
object files directly for dynamic constructor/destructor functions.
8285
 
8286
This macro is effective only in a native compiler; @command{collect2} as
8287
part of a cross compiler always uses @command{nm} for the target machine.
8288
@end defmac
8289
 
8290
@defmac REAL_NM_FILE_NAME
8291
Define this macro as a C string constant containing the file name to use
8292
to execute @command{nm}.  The default is to search the path normally for
8293
@command{nm}.
8294
 
8295
If your system supports shared libraries and has a program to list the
8296
dynamic dependencies of a given library or executable, you can define
8297
these macros to enable support for running initialization and
8298
termination functions in shared libraries:
8299
@end defmac
8300
 
8301
@defmac LDD_SUFFIX
8302
Define this macro to a C string constant containing the name of the program
8303
which lists dynamic dependencies, like @command{"ldd"} under SunOS 4.
8304
@end defmac
8305
 
8306
@defmac PARSE_LDD_OUTPUT (@var{ptr})
8307
Define this macro to be C code that extracts filenames from the output
8308
of the program denoted by @code{LDD_SUFFIX}.  @var{ptr} is a variable
8309
of type @code{char *} that points to the beginning of a line of output
8310
from @code{LDD_SUFFIX}.  If the line lists a dynamic dependency, the
8311
code must advance @var{ptr} to the beginning of the filename on that
8312
line.  Otherwise, it must set @var{ptr} to @code{NULL}.
8313
@end defmac
8314
 
8315
@defmac SHLIB_SUFFIX
8316
Define this macro to a C string constant containing the default shared
8317
library extension of the target (e.g., @samp{".so"}).  @command{collect2}
8318
strips version information after this suffix when generating global
8319
constructor and destructor names.  This define is only needed on targets
8320
that use @command{collect2} to process constructors and destructors.
8321
@end defmac
8322
 
8323
@node Instruction Output
8324
@subsection Output of Assembler Instructions
8325
 
8326
@c prevent bad page break with this line
8327
This describes assembler instruction output.
8328
 
8329
@defmac REGISTER_NAMES
8330
A C initializer containing the assembler's names for the machine
8331
registers, each one as a C string constant.  This is what translates
8332
register numbers in the compiler into assembler language.
8333
@end defmac
8334
 
8335
@defmac ADDITIONAL_REGISTER_NAMES
8336
If defined, a C initializer for an array of structures containing a name
8337
and a register number.  This macro defines additional names for hard
8338
registers, thus allowing the @code{asm} option in declarations to refer
8339
to registers using alternate names.
8340
@end defmac
8341
 
8342
@defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr})
8343
Define this macro if you are using an unusual assembler that
8344
requires different names for the machine instructions.
8345
 
8346
The definition is a C statement or statements which output an
8347
assembler instruction opcode to the stdio stream @var{stream}.  The
8348
macro-operand @var{ptr} is a variable of type @code{char *} which
8349
points to the opcode name in its ``internal'' form---the form that is
8350
written in the machine description.  The definition should output the
8351
opcode name to @var{stream}, performing any translation you desire, and
8352
increment the variable @var{ptr} to point at the end of the opcode
8353
so that it will not be output twice.
8354
 
8355
In fact, your macro definition may process less than the entire opcode
8356
name, or more than the opcode name; but if you want to process text
8357
that includes @samp{%}-sequences to substitute operands, you must take
8358
care of the substitution yourself.  Just be sure to increment
8359
@var{ptr} over whatever text should not be output normally.
8360
 
8361
@findex recog_data.operand
8362
If you need to look at the operand values, they can be found as the
8363
elements of @code{recog_data.operand}.
8364
 
8365
If the macro definition does nothing, the instruction is output
8366
in the usual way.
8367
@end defmac
8368
 
8369
@defmac FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands})
8370
If defined, a C statement to be executed just prior to the output of
8371
assembler code for @var{insn}, to modify the extracted operands so
8372
they will be output differently.
8373
 
8374
Here the argument @var{opvec} is the vector containing the operands
8375
extracted from @var{insn}, and @var{noperands} is the number of
8376
elements of the vector which contain meaningful data for this insn.
8377
The contents of this vector are what will be used to convert the insn
8378
template into assembler code, so you can change the assembler output
8379
by changing the contents of the vector.
8380
 
8381
This macro is useful when various assembler syntaxes share a single
8382
file of instruction patterns; by defining this macro differently, you
8383
can cause a large class of instructions to be output differently (such
8384
as with rearranged operands).  Naturally, variations in assembler
8385
syntax affecting individual insn patterns ought to be handled by
8386
writing conditional output routines in those patterns.
8387
 
8388
If this macro is not defined, it is equivalent to a null statement.
8389
@end defmac
8390
 
8391
@deftypefn {Target Hook} void TARGET_ASM_FINAL_POSTSCAN_INSN (FILE *@var{file}, rtx @var{insn}, rtx *@var{opvec}, int @var{noperands})
8392
If defined, this target hook is a function which is executed just after the
8393
output of assembler code for @var{insn}, to change the mode of the assembler
8394
if necessary.
8395
 
8396
Here the argument @var{opvec} is the vector containing the operands
8397
extracted from @var{insn}, and @var{noperands} is the number of
8398
elements of the vector which contain meaningful data for this insn.
8399
The contents of this vector are what was used to convert the insn
8400
template into assembler code, so you can change the assembler mode
8401
by checking the contents of the vector.
8402
@end deftypefn
8403
 
8404
@defmac PRINT_OPERAND (@var{stream}, @var{x}, @var{code})
8405
A C compound statement to output to stdio stream @var{stream} the
8406
assembler syntax for an instruction operand @var{x}.  @var{x} is an
8407
RTL expression.
8408
 
8409
@var{code} is a value that can be used to specify one of several ways
8410
of printing the operand.  It is used when identical operands must be
8411
printed differently depending on the context.  @var{code} comes from
8412
the @samp{%} specification that was used to request printing of the
8413
operand.  If the specification was just @samp{%@var{digit}} then
8414
@var{code} is 0; if the specification was @samp{%@var{ltr}
8415
@var{digit}} then @var{code} is the ASCII code for @var{ltr}.
8416
 
8417
@findex reg_names
8418
If @var{x} is a register, this macro should print the register's name.
8419
The names can be found in an array @code{reg_names} whose type is
8420
@code{char *[]}.  @code{reg_names} is initialized from
8421
@code{REGISTER_NAMES}.
8422
 
8423
When the machine description has a specification @samp{%@var{punct}}
8424
(a @samp{%} followed by a punctuation character), this macro is called
8425
with a null pointer for @var{x} and the punctuation character for
8426
@var{code}.
8427
@end defmac
8428
 
8429
@defmac PRINT_OPERAND_PUNCT_VALID_P (@var{code})
8430
A C expression which evaluates to true if @var{code} is a valid
8431
punctuation character for use in the @code{PRINT_OPERAND} macro.  If
8432
@code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no
8433
punctuation characters (except for the standard one, @samp{%}) are used
8434
in this way.
8435
@end defmac
8436
 
8437
@defmac PRINT_OPERAND_ADDRESS (@var{stream}, @var{x})
8438
A C compound statement to output to stdio stream @var{stream} the
8439
assembler syntax for an instruction operand that is a memory reference
8440
whose address is @var{x}.  @var{x} is an RTL expression.
8441
 
8442
@cindex @code{TARGET_ENCODE_SECTION_INFO} usage
8443
On some machines, the syntax for a symbolic address depends on the
8444
section that the address refers to.  On these machines, define the hook
8445
@code{TARGET_ENCODE_SECTION_INFO} to store the information into the
8446
@code{symbol_ref}, and then check for it here.  @xref{Assembler
8447
Format}.
8448
@end defmac
8449
 
8450
@findex dbr_sequence_length
8451
@defmac DBR_OUTPUT_SEQEND (@var{file})
8452
A C statement, to be executed after all slot-filler instructions have
8453
been output.  If necessary, call @code{dbr_sequence_length} to
8454
determine the number of slots filled in a sequence (zero if not
8455
currently outputting a sequence), to decide how many no-ops to output,
8456
or whatever.
8457
 
8458
Don't define this macro if it has nothing to do, but it is helpful in
8459
reading assembly output if the extent of the delay sequence is made
8460
explicit (e.g.@: with white space).
8461
@end defmac
8462
 
8463
@findex final_sequence
8464
Note that output routines for instructions with delay slots must be
8465
prepared to deal with not being output as part of a sequence
8466
(i.e.@: when the scheduling pass is not run, or when no slot fillers could be
8467
found.)  The variable @code{final_sequence} is null when not
8468
processing a sequence, otherwise it contains the @code{sequence} rtx
8469
being output.
8470
 
8471
@findex asm_fprintf
8472
@defmac REGISTER_PREFIX
8473
@defmacx LOCAL_LABEL_PREFIX
8474
@defmacx USER_LABEL_PREFIX
8475
@defmacx IMMEDIATE_PREFIX
8476
If defined, C string expressions to be used for the @samp{%R}, @samp{%L},
8477
@samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see
8478
@file{final.c}).  These are useful when a single @file{md} file must
8479
support multiple assembler formats.  In that case, the various @file{tm.h}
8480
files can define these macros differently.
8481
@end defmac
8482
 
8483
@defmac ASM_FPRINTF_EXTENSIONS (@var{file}, @var{argptr}, @var{format})
8484
If defined this macro should expand to a series of @code{case}
8485
statements which will be parsed inside the @code{switch} statement of
8486
the @code{asm_fprintf} function.  This allows targets to define extra
8487
printf formats which may useful when generating their assembler
8488
statements.  Note that uppercase letters are reserved for future
8489
generic extensions to asm_fprintf, and so are not available to target
8490
specific code.  The output file is given by the parameter @var{file}.
8491
The varargs input pointer is @var{argptr} and the rest of the format
8492
string, starting the character after the one that is being switched
8493
upon, is pointed to by @var{format}.
8494
@end defmac
8495
 
8496
@defmac ASSEMBLER_DIALECT
8497
If your target supports multiple dialects of assembler language (such as
8498
different opcodes), define this macro as a C expression that gives the
8499
numeric index of the assembler language dialect to use, with zero as the
8500
first variant.
8501
 
8502
If this macro is defined, you may use constructs of the form
8503
@smallexample
8504
@samp{@{option0|option1|option2@dots{}@}}
8505
@end smallexample
8506
@noindent
8507
in the output templates of patterns (@pxref{Output Template}) or in the
8508
first argument of @code{asm_fprintf}.  This construct outputs
8509
@samp{option0}, @samp{option1}, @samp{option2}, etc., if the value of
8510
@code{ASSEMBLER_DIALECT} is zero, one, two, etc.  Any special characters
8511
within these strings retain their usual meaning.  If there are fewer
8512
alternatives within the braces than the value of
8513
@code{ASSEMBLER_DIALECT}, the construct outputs nothing.
8514
 
8515
If you do not define this macro, the characters @samp{@{}, @samp{|} and
8516
@samp{@}} do not have any special meaning when used in templates or
8517
operands to @code{asm_fprintf}.
8518
 
8519
Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX},
8520
@code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express
8521
the variations in assembler language syntax with that mechanism.  Define
8522
@code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax
8523
if the syntax variant are larger and involve such things as different
8524
opcodes or operand order.
8525
@end defmac
8526
 
8527
@defmac ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno})
8528
A C expression to output to @var{stream} some assembler code
8529
which will push hard register number @var{regno} onto the stack.
8530
The code need not be optimal, since this macro is used only when
8531
profiling.
8532
@end defmac
8533
 
8534
@defmac ASM_OUTPUT_REG_POP (@var{stream}, @var{regno})
8535
A C expression to output to @var{stream} some assembler code
8536
which will pop hard register number @var{regno} off of the stack.
8537
The code need not be optimal, since this macro is used only when
8538
profiling.
8539
@end defmac
8540
 
8541
@node Dispatch Tables
8542
@subsection Output of Dispatch Tables
8543
 
8544
@c prevent bad page break with this line
8545
This concerns dispatch tables.
8546
 
8547
@cindex dispatch table
8548
@defmac ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{body}, @var{value}, @var{rel})
8549
A C statement to output to the stdio stream @var{stream} an assembler
8550
pseudo-instruction to generate a difference between two labels.
8551
@var{value} and @var{rel} are the numbers of two internal labels.  The
8552
definitions of these labels are output using
8553
@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same
8554
way here.  For example,
8555
 
8556
@smallexample
8557
fprintf (@var{stream}, "\t.word L%d-L%d\n",
8558
         @var{value}, @var{rel})
8559
@end smallexample
8560
 
8561
You must provide this macro on machines where the addresses in a
8562
dispatch table are relative to the table's own address.  If defined, GCC
8563
will also use this macro on all machines when producing PIC@.
8564
@var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the
8565
mode and flags can be read.
8566
@end defmac
8567
 
8568
@defmac ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value})
8569
This macro should be provided on machines where the addresses
8570
in a dispatch table are absolute.
8571
 
8572
The definition should be a C statement to output to the stdio stream
8573
@var{stream} an assembler pseudo-instruction to generate a reference to
8574
a label.  @var{value} is the number of an internal label whose
8575
definition is output using @code{(*targetm.asm_out.internal_label)}.
8576
For example,
8577
 
8578
@smallexample
8579
fprintf (@var{stream}, "\t.word L%d\n", @var{value})
8580
@end smallexample
8581
@end defmac
8582
 
8583
@defmac ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table})
8584
Define this if the label before a jump-table needs to be output
8585
specially.  The first three arguments are the same as for
8586
@code{(*targetm.asm_out.internal_label)}; the fourth argument is the
8587
jump-table which follows (a @code{jump_insn} containing an
8588
@code{addr_vec} or @code{addr_diff_vec}).
8589
 
8590
This feature is used on system V to output a @code{swbeg} statement
8591
for the table.
8592
 
8593
If this macro is not defined, these labels are output with
8594
@code{(*targetm.asm_out.internal_label)}.
8595
@end defmac
8596
 
8597
@defmac ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table})
8598
Define this if something special must be output at the end of a
8599
jump-table.  The definition should be a C statement to be executed
8600
after the assembler code for the table is written.  It should write
8601
the appropriate code to stdio stream @var{stream}.  The argument
8602
@var{table} is the jump-table insn, and @var{num} is the label-number
8603
of the preceding label.
8604
 
8605
If this macro is not defined, nothing special is output at the end of
8606
the jump-table.
8607
@end defmac
8608
 
8609
@deftypefn {Target Hook} void TARGET_ASM_EMIT_UNWIND_LABEL (FILE *@var{stream}, tree @var{decl}, int @var{for_eh}, int @var{empty})
8610
This target hook emits a label at the beginning of each FDE@.  It
8611
should be defined on targets where FDEs need special labels, and it
8612
should write the appropriate label, for the FDE associated with the
8613
function declaration @var{decl}, to the stdio stream @var{stream}.
8614
The third argument, @var{for_eh}, is a boolean: true if this is for an
8615
exception table.  The fourth argument, @var{empty}, is a boolean:
8616
true if this is a placeholder label for an omitted FDE@.
8617
 
8618
The default is that FDEs are not given nonlocal labels.
8619
@end deftypefn
8620
 
8621
@deftypefn {Target Hook} void TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL (FILE *@var{stream})
8622
This target hook emits a label at the beginning of the exception table.
8623
It should be defined on targets where it is desirable for the table
8624
to be broken up according to function.
8625
 
8626
The default is that no label is emitted.
8627
@end deftypefn
8628
 
8629
@deftypefn {Target Hook} void TARGET_UNWIND_EMIT (FILE *@var{stream}, rtx @var{insn})
8630
This target hook emits assembly directives required to unwind the
8631
given instruction.  This is only used when TARGET_UNWIND_INFO is set.
8632
@end deftypefn
8633
 
8634
@node Exception Region Output
8635
@subsection Assembler Commands for Exception Regions
8636
 
8637
@c prevent bad page break with this line
8638
 
8639
This describes commands marking the start and the end of an exception
8640
region.
8641
 
8642
@defmac EH_FRAME_SECTION_NAME
8643
If defined, a C string constant for the name of the section containing
8644
exception handling frame unwind information.  If not defined, GCC will
8645
provide a default definition if the target supports named sections.
8646
@file{crtstuff.c} uses this macro to switch to the appropriate section.
8647
 
8648
You should define this symbol if your target supports DWARF 2 frame
8649
unwind information and the default definition does not work.
8650
@end defmac
8651
 
8652
@defmac EH_FRAME_IN_DATA_SECTION
8653
If defined, DWARF 2 frame unwind information will be placed in the
8654
data section even though the target supports named sections.  This
8655
might be necessary, for instance, if the system linker does garbage
8656
collection and sections cannot be marked as not to be collected.
8657
 
8658
Do not define this macro unless @code{TARGET_ASM_NAMED_SECTION} is
8659
also defined.
8660
@end defmac
8661
 
8662
@defmac EH_TABLES_CAN_BE_READ_ONLY
8663
Define this macro to 1 if your target is such that no frame unwind
8664
information encoding used with non-PIC code will ever require a
8665
runtime relocation, but the linker may not support merging read-only
8666
and read-write sections into a single read-write section.
8667
@end defmac
8668
 
8669
@defmac MASK_RETURN_ADDR
8670
An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so
8671
that it does not contain any extraneous set bits in it.
8672
@end defmac
8673
 
8674
@defmac DWARF2_UNWIND_INFO
8675
Define this macro to 0 if your target supports DWARF 2 frame unwind
8676
information, but it does not yet work with exception handling.
8677
Otherwise, if your target supports this information (if it defines
8678
@samp{INCOMING_RETURN_ADDR_RTX} and either @samp{UNALIGNED_INT_ASM_OP}
8679
or @samp{OBJECT_FORMAT_ELF}), GCC will provide a default definition of 1.
8680
 
8681
If @code{TARGET_UNWIND_INFO} is defined, the target specific unwinder
8682
will be used in all cases.  Defining this macro will enable the generation
8683
of DWARF 2 frame debugging information.
8684
 
8685
If @code{TARGET_UNWIND_INFO} is not defined, and this macro is defined to 1,
8686
the DWARF 2 unwinder will be the default exception handling mechanism;
8687
otherwise, the @code{setjmp}/@code{longjmp}-based scheme will be used by
8688
default.
8689
@end defmac
8690
 
8691
@defmac TARGET_UNWIND_INFO
8692
Define this macro if your target has ABI specified unwind tables.  Usually
8693
these will be output by @code{TARGET_UNWIND_EMIT}.
8694
@end defmac
8695
 
8696
@deftypevr {Target Hook} bool TARGET_UNWIND_TABLES_DEFAULT
8697
This variable should be set to @code{true} if the target ABI requires unwinding
8698
tables even when exceptions are not used.
8699
@end deftypevr
8700
 
8701
@defmac MUST_USE_SJLJ_EXCEPTIONS
8702
This macro need only be defined if @code{DWARF2_UNWIND_INFO} is
8703
runtime-variable.  In that case, @file{except.h} cannot correctly
8704
determine the corresponding definition of @code{MUST_USE_SJLJ_EXCEPTIONS},
8705
so the target must provide it directly.
8706
@end defmac
8707
 
8708
@defmac DONT_USE_BUILTIN_SETJMP
8709
Define this macro to 1 if the @code{setjmp}/@code{longjmp}-based scheme
8710
should use the @code{setjmp}/@code{longjmp} functions from the C library
8711
instead of the @code{__builtin_setjmp}/@code{__builtin_longjmp} machinery.
8712
@end defmac
8713
 
8714
@defmac DWARF_CIE_DATA_ALIGNMENT
8715
This macro need only be defined if the target might save registers in the
8716
function prologue at an offset to the stack pointer that is not aligned to
8717
@code{UNITS_PER_WORD}.  The definition should be the negative minimum
8718
alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive
8719
minimum alignment otherwise.  @xref{SDB and DWARF}.  Only applicable if
8720
the target supports DWARF 2 frame unwind information.
8721
@end defmac
8722
 
8723
@deftypevr {Target Hook} bool TARGET_TERMINATE_DW2_EH_FRAME_INFO
8724
Contains the value true if the target should add a zero word onto the
8725
end of a Dwarf-2 frame info section when used for exception handling.
8726
Default value is false if @code{EH_FRAME_SECTION_NAME} is defined, and
8727
true otherwise.
8728
@end deftypevr
8729
 
8730
@deftypefn {Target Hook} rtx TARGET_DWARF_REGISTER_SPAN (rtx @var{reg})
8731
Given a register, this hook should return a parallel of registers to
8732
represent where to find the register pieces.  Define this hook if the
8733
register and its mode are represented in Dwarf in non-contiguous
8734
locations, or if the register should be represented in more than one
8735
register in Dwarf.  Otherwise, this hook should return @code{NULL_RTX}.
8736
If not defined, the default is to return @code{NULL_RTX}.
8737
@end deftypefn
8738
 
8739
@deftypefn {Target Hook} void TARGET_INIT_DWARF_REG_SIZES_EXTRA (tree @var{address})
8740
If some registers are represented in Dwarf-2 unwind information in
8741
multiple pieces, define this hook to fill in information about the
8742
sizes of those pieces in the table used by the unwinder at runtime.
8743
It will be called by @code{expand_builtin_init_dwarf_reg_sizes} after
8744
filling in a single size corresponding to each hard register;
8745
@var{address} is the address of the table.
8746
@end deftypefn
8747
 
8748
@deftypefn {Target Hook} bool TARGET_ASM_TTYPE (rtx @var{sym})
8749
This hook is used to output a reference from a frame unwinding table to
8750
the type_info object identified by @var{sym}.  It should return @code{true}
8751
if the reference was output.  Returning @code{false} will cause the
8752
reference to be output using the normal Dwarf2 routines.
8753
@end deftypefn
8754
 
8755
@deftypevr {Target Hook} bool TARGET_ARM_EABI_UNWINDER
8756
This flag should be set to @code{true} on targets that use an ARM EABI
8757
based unwinding library, and @code{false} on other targets.  This effects
8758
the format of unwinding tables, and how the unwinder in entered after
8759
running a cleanup.  The default is @code{false}.
8760
@end deftypevr
8761
 
8762
@node Alignment Output
8763
@subsection Assembler Commands for Alignment
8764
 
8765
@c prevent bad page break with this line
8766
This describes commands for alignment.
8767
 
8768
@defmac JUMP_ALIGN (@var{label})
8769
The alignment (log base 2) to put in front of @var{label}, which is
8770
a common destination of jumps and has no fallthru incoming edge.
8771
 
8772
This macro need not be defined if you don't want any special alignment
8773
to be done at such a time.  Most machine descriptions do not currently
8774
define the macro.
8775
 
8776
Unless it's necessary to inspect the @var{label} parameter, it is better
8777
to set the variable @var{align_jumps} in the target's
8778
@code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honor the user's
8779
selection in @var{align_jumps} in a @code{JUMP_ALIGN} implementation.
8780
@end defmac
8781
 
8782
@defmac LABEL_ALIGN_AFTER_BARRIER (@var{label})
8783
The alignment (log base 2) to put in front of @var{label}, which follows
8784
a @code{BARRIER}.
8785
 
8786
This macro need not be defined if you don't want any special alignment
8787
to be done at such a time.  Most machine descriptions do not currently
8788
define the macro.
8789
@end defmac
8790
 
8791
@defmac LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP
8792
The maximum number of bytes to skip when applying
8793
@code{LABEL_ALIGN_AFTER_BARRIER}.  This works only if
8794
@code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
8795
@end defmac
8796
 
8797
@defmac LOOP_ALIGN (@var{label})
8798
The alignment (log base 2) to put in front of @var{label}, which follows
8799
a @code{NOTE_INSN_LOOP_BEG} note.
8800
 
8801
This macro need not be defined if you don't want any special alignment
8802
to be done at such a time.  Most machine descriptions do not currently
8803
define the macro.
8804
 
8805
Unless it's necessary to inspect the @var{label} parameter, it is better
8806
to set the variable @code{align_loops} in the target's
8807
@code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honor the user's
8808
selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation.
8809
@end defmac
8810
 
8811
@defmac LOOP_ALIGN_MAX_SKIP
8812
The maximum number of bytes to skip when applying @code{LOOP_ALIGN}.
8813
This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
8814
@end defmac
8815
 
8816
@defmac LABEL_ALIGN (@var{label})
8817
The alignment (log base 2) to put in front of @var{label}.
8818
If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment,
8819
the maximum of the specified values is used.
8820
 
8821
Unless it's necessary to inspect the @var{label} parameter, it is better
8822
to set the variable @code{align_labels} in the target's
8823
@code{OVERRIDE_OPTIONS}.  Otherwise, you should try to honor the user's
8824
selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation.
8825
@end defmac
8826
 
8827
@defmac LABEL_ALIGN_MAX_SKIP
8828
The maximum number of bytes to skip when applying @code{LABEL_ALIGN}.
8829
This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined.
8830
@end defmac
8831
 
8832
@defmac ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes})
8833
A C statement to output to the stdio stream @var{stream} an assembler
8834
instruction to advance the location counter by @var{nbytes} bytes.
8835
Those bytes should be zero when loaded.  @var{nbytes} will be a C
8836
expression of type @code{unsigned HOST_WIDE_INT}.
8837
@end defmac
8838
 
8839
@defmac ASM_NO_SKIP_IN_TEXT
8840
Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the
8841
text section because it fails to put zeros in the bytes that are skipped.
8842
This is true on many Unix systems, where the pseudo--op to skip bytes
8843
produces no-op instructions rather than zeros when used in the text
8844
section.
8845
@end defmac
8846
 
8847
@defmac ASM_OUTPUT_ALIGN (@var{stream}, @var{power})
8848
A C statement to output to the stdio stream @var{stream} an assembler
8849
command to advance the location counter to a multiple of 2 to the
8850
@var{power} bytes.  @var{power} will be a C expression of type @code{int}.
8851
@end defmac
8852
 
8853
@defmac ASM_OUTPUT_ALIGN_WITH_NOP (@var{stream}, @var{power})
8854
Like @code{ASM_OUTPUT_ALIGN}, except that the ``nop'' instruction is used
8855
for padding, if necessary.
8856
@end defmac
8857
 
8858
@defmac ASM_OUTPUT_MAX_SKIP_ALIGN (@var{stream}, @var{power}, @var{max_skip})
8859
A C statement to output to the stdio stream @var{stream} an assembler
8860
command to advance the location counter to a multiple of 2 to the
8861
@var{power} bytes, but only if @var{max_skip} or fewer bytes are needed to
8862
satisfy the alignment request.  @var{power} and @var{max_skip} will be
8863
a C expression of type @code{int}.
8864
@end defmac
8865
 
8866
@need 3000
8867
@node Debugging Info
8868
@section Controlling Debugging Information Format
8869
 
8870
@c prevent bad page break with this line
8871
This describes how to specify debugging information.
8872
 
8873
@menu
8874
* All Debuggers::      Macros that affect all debugging formats uniformly.
8875
* DBX Options::        Macros enabling specific options in DBX format.
8876
* DBX Hooks::          Hook macros for varying DBX format.
8877
* File Names and DBX:: Macros controlling output of file names in DBX format.
8878
* SDB and DWARF::      Macros for SDB (COFF) and DWARF formats.
8879
* VMS Debug::          Macros for VMS debug format.
8880
@end menu
8881
 
8882
@node All Debuggers
8883
@subsection Macros Affecting All Debugging Formats
8884
 
8885
@c prevent bad page break with this line
8886
These macros affect all debugging formats.
8887
 
8888
@defmac DBX_REGISTER_NUMBER (@var{regno})
8889
A C expression that returns the DBX register number for the compiler
8890
register number @var{regno}.  In the default macro provided, the value
8891
of this expression will be @var{regno} itself.  But sometimes there are
8892
some registers that the compiler knows about and DBX does not, or vice
8893
versa.  In such cases, some register may need to have one number in the
8894
compiler and another for DBX@.
8895
 
8896
If two registers have consecutive numbers inside GCC, and they can be
8897
used as a pair to hold a multiword value, then they @emph{must} have
8898
consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}.
8899
Otherwise, debuggers will be unable to access such a pair, because they
8900
expect register pairs to be consecutive in their own numbering scheme.
8901
 
8902
If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that
8903
does not preserve register pairs, then what you must do instead is
8904
redefine the actual register numbering scheme.
8905
@end defmac
8906
 
8907
@defmac DEBUGGER_AUTO_OFFSET (@var{x})
8908
A C expression that returns the integer offset value for an automatic
8909
variable having address @var{x} (an RTL expression).  The default
8910
computation assumes that @var{x} is based on the frame-pointer and
8911
gives the offset from the frame-pointer.  This is required for targets
8912
that produce debugging output for DBX or COFF-style debugging output
8913
for SDB and allow the frame-pointer to be eliminated when the
8914
@option{-g} options is used.
8915
@end defmac
8916
 
8917
@defmac DEBUGGER_ARG_OFFSET (@var{offset}, @var{x})
8918
A C expression that returns the integer offset value for an argument
8919
having address @var{x} (an RTL expression).  The nominal offset is
8920
@var{offset}.
8921
@end defmac
8922
 
8923
@defmac PREFERRED_DEBUGGING_TYPE
8924
A C expression that returns the type of debugging output GCC should
8925
produce when the user specifies just @option{-g}.  Define
8926
this if you have arranged for GCC to support more than one format of
8927
debugging output.  Currently, the allowable values are @code{DBX_DEBUG},
8928
@code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG},
8929
@code{XCOFF_DEBUG}, @code{VMS_DEBUG}, and @code{VMS_AND_DWARF2_DEBUG}.
8930
 
8931
When the user specifies @option{-ggdb}, GCC normally also uses the
8932
value of this macro to select the debugging output format, but with two
8933
exceptions.  If @code{DWARF2_DEBUGGING_INFO} is defined, GCC uses the
8934
value @code{DWARF2_DEBUG}.  Otherwise, if @code{DBX_DEBUGGING_INFO} is
8935
defined, GCC uses @code{DBX_DEBUG}.
8936
 
8937
The value of this macro only affects the default debugging output; the
8938
user can always get a specific type of output by using @option{-gstabs},
8939
@option{-gcoff}, @option{-gdwarf-2}, @option{-gxcoff}, or @option{-gvms}.
8940
@end defmac
8941
 
8942
@node DBX Options
8943
@subsection Specific Options for DBX Output
8944
 
8945
@c prevent bad page break with this line
8946
These are specific options for DBX output.
8947
 
8948
@defmac DBX_DEBUGGING_INFO
8949
Define this macro if GCC should produce debugging output for DBX
8950
in response to the @option{-g} option.
8951
@end defmac
8952
 
8953
@defmac XCOFF_DEBUGGING_INFO
8954
Define this macro if GCC should produce XCOFF format debugging output
8955
in response to the @option{-g} option.  This is a variant of DBX format.
8956
@end defmac
8957
 
8958
@defmac DEFAULT_GDB_EXTENSIONS
8959
Define this macro to control whether GCC should by default generate
8960
GDB's extended version of DBX debugging information (assuming DBX-format
8961
debugging information is enabled at all).  If you don't define the
8962
macro, the default is 1: always generate the extended information
8963
if there is any occasion to.
8964
@end defmac
8965
 
8966
@defmac DEBUG_SYMS_TEXT
8967
Define this macro if all @code{.stabs} commands should be output while
8968
in the text section.
8969
@end defmac
8970
 
8971
@defmac ASM_STABS_OP
8972
A C string constant, including spacing, naming the assembler pseudo op to
8973
use instead of @code{"\t.stabs\t"} to define an ordinary debugging symbol.
8974
If you don't define this macro, @code{"\t.stabs\t"} is used.  This macro
8975
applies only to DBX debugging information format.
8976
@end defmac
8977
 
8978
@defmac ASM_STABD_OP
8979
A C string constant, including spacing, naming the assembler pseudo op to
8980
use instead of @code{"\t.stabd\t"} to define a debugging symbol whose
8981
value is the current location.  If you don't define this macro,
8982
@code{"\t.stabd\t"} is used.  This macro applies only to DBX debugging
8983
information format.
8984
@end defmac
8985
 
8986
@defmac ASM_STABN_OP
8987
A C string constant, including spacing, naming the assembler pseudo op to
8988
use instead of @code{"\t.stabn\t"} to define a debugging symbol with no
8989
name.  If you don't define this macro, @code{"\t.stabn\t"} is used.  This
8990
macro applies only to DBX debugging information format.
8991
@end defmac
8992
 
8993
@defmac DBX_NO_XREFS
8994
Define this macro if DBX on your system does not support the construct
8995
@samp{xs@var{tagname}}.  On some systems, this construct is used to
8996
describe a forward reference to a structure named @var{tagname}.
8997
On other systems, this construct is not supported at all.
8998
@end defmac
8999
 
9000
@defmac DBX_CONTIN_LENGTH
9001
A symbol name in DBX-format debugging information is normally
9002
continued (split into two separate @code{.stabs} directives) when it
9003
exceeds a certain length (by default, 80 characters).  On some
9004
operating systems, DBX requires this splitting; on others, splitting
9005
must not be done.  You can inhibit splitting by defining this macro
9006
with the value zero.  You can override the default splitting-length by
9007
defining this macro as an expression for the length you desire.
9008
@end defmac
9009
 
9010
@defmac DBX_CONTIN_CHAR
9011
Normally continuation is indicated by adding a @samp{\} character to
9012
the end of a @code{.stabs} string when a continuation follows.  To use
9013
a different character instead, define this macro as a character
9014
constant for the character you want to use.  Do not define this macro
9015
if backslash is correct for your system.
9016
@end defmac
9017
 
9018
@defmac DBX_STATIC_STAB_DATA_SECTION
9019
Define this macro if it is necessary to go to the data section before
9020
outputting the @samp{.stabs} pseudo-op for a non-global static
9021
variable.
9022
@end defmac
9023
 
9024
@defmac DBX_TYPE_DECL_STABS_CODE
9025
The value to use in the ``code'' field of the @code{.stabs} directive
9026
for a typedef.  The default is @code{N_LSYM}.
9027
@end defmac
9028
 
9029
@defmac DBX_STATIC_CONST_VAR_CODE
9030
The value to use in the ``code'' field of the @code{.stabs} directive
9031
for a static variable located in the text section.  DBX format does not
9032
provide any ``right'' way to do this.  The default is @code{N_FUN}.
9033
@end defmac
9034
 
9035
@defmac DBX_REGPARM_STABS_CODE
9036
The value to use in the ``code'' field of the @code{.stabs} directive
9037
for a parameter passed in registers.  DBX format does not provide any
9038
``right'' way to do this.  The default is @code{N_RSYM}.
9039
@end defmac
9040
 
9041
@defmac DBX_REGPARM_STABS_LETTER
9042
The letter to use in DBX symbol data to identify a symbol as a parameter
9043
passed in registers.  DBX format does not customarily provide any way to
9044
do this.  The default is @code{'P'}.
9045
@end defmac
9046
 
9047
@defmac DBX_FUNCTION_FIRST
9048
Define this macro if the DBX information for a function and its
9049
arguments should precede the assembler code for the function.  Normally,
9050
in DBX format, the debugging information entirely follows the assembler
9051
code.
9052
@end defmac
9053
 
9054
@defmac DBX_BLOCKS_FUNCTION_RELATIVE
9055
Define this macro, with value 1, if the value of a symbol describing
9056
the scope of a block (@code{N_LBRAC} or @code{N_RBRAC}) should be
9057
relative to the start of the enclosing function.  Normally, GCC uses
9058
an absolute address.
9059
@end defmac
9060
 
9061
@defmac DBX_LINES_FUNCTION_RELATIVE
9062
Define this macro, with value 1, if the value of a symbol indicating
9063
the current line number (@code{N_SLINE}) should be relative to the
9064
start of the enclosing function.  Normally, GCC uses an absolute address.
9065
@end defmac
9066
 
9067
@defmac DBX_USE_BINCL
9068
Define this macro if GCC should generate @code{N_BINCL} and
9069
@code{N_EINCL} stabs for included header files, as on Sun systems.  This
9070
macro also directs GCC to output a type number as a pair of a file
9071
number and a type number within the file.  Normally, GCC does not
9072
generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single
9073
number for a type number.
9074
@end defmac
9075
 
9076
@node DBX Hooks
9077
@subsection Open-Ended Hooks for DBX Format
9078
 
9079
@c prevent bad page break with this line
9080
These are hooks for DBX format.
9081
 
9082
@defmac DBX_OUTPUT_LBRAC (@var{stream}, @var{name})
9083
Define this macro to say how to output to @var{stream} the debugging
9084
information for the start of a scope level for variable names.  The
9085
argument @var{name} is the name of an assembler symbol (for use with
9086
@code{assemble_name}) whose value is the address where the scope begins.
9087
@end defmac
9088
 
9089
@defmac DBX_OUTPUT_RBRAC (@var{stream}, @var{name})
9090
Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level.
9091
@end defmac
9092
 
9093
@defmac DBX_OUTPUT_NFUN (@var{stream}, @var{lscope_label}, @var{decl})
9094
Define this macro if the target machine requires special handling to
9095
output an @code{N_FUN} entry for the function @var{decl}.
9096
@end defmac
9097
 
9098
@defmac DBX_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter})
9099
A C statement to output DBX debugging information before code for line
9100
number @var{line} of the current source file to the stdio stream
9101
@var{stream}.  @var{counter} is the number of time the macro was
9102
invoked, including the current invocation; it is intended to generate
9103
unique labels in the assembly output.
9104
 
9105
This macro should not be defined if the default output is correct, or
9106
if it can be made correct by defining @code{DBX_LINES_FUNCTION_RELATIVE}.
9107
@end defmac
9108
 
9109
@defmac NO_DBX_FUNCTION_END
9110
Some stabs encapsulation formats (in particular ECOFF), cannot handle the
9111
@code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extension construct.
9112
On those machines, define this macro to turn this feature off without
9113
disturbing the rest of the gdb extensions.
9114
@end defmac
9115
 
9116
@defmac NO_DBX_BNSYM_ENSYM
9117
Some assemblers cannot handle the @code{.stabd BNSYM/ENSYM,0,0} gdb dbx
9118
extension construct.  On those machines, define this macro to turn this
9119
feature off without disturbing the rest of the gdb extensions.
9120
@end defmac
9121
 
9122
@node File Names and DBX
9123
@subsection File Names in DBX Format
9124
 
9125
@c prevent bad page break with this line
9126
This describes file names in DBX format.
9127
 
9128
@defmac DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name})
9129
A C statement to output DBX debugging information to the stdio stream
9130
@var{stream}, which indicates that file @var{name} is the main source
9131
file---the file specified as the input file for compilation.
9132
This macro is called only once, at the beginning of compilation.
9133
 
9134
This macro need not be defined if the standard form of output
9135
for DBX debugging information is appropriate.
9136
 
9137
It may be necessary to refer to a label equal to the beginning of the
9138
text section.  You can use @samp{assemble_name (stream, ltext_label_name)}
9139
to do so.  If you do this, you must also set the variable
9140
@var{used_ltext_label_name} to @code{true}.
9141
@end defmac
9142
 
9143
@defmac NO_DBX_MAIN_SOURCE_DIRECTORY
9144
Define this macro, with value 1, if GCC should not emit an indication
9145
of the current directory for compilation and current source language at
9146
the beginning of the file.
9147
@end defmac
9148
 
9149
@defmac NO_DBX_GCC_MARKER
9150
Define this macro, with value 1, if GCC should not emit an indication
9151
that this object file was compiled by GCC@.  The default is to emit
9152
an @code{N_OPT} stab at the beginning of every source file, with
9153
@samp{gcc2_compiled.} for the string and value 0.
9154
@end defmac
9155
 
9156
@defmac DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name})
9157
A C statement to output DBX debugging information at the end of
9158
compilation of the main source file @var{name}.  Output should be
9159
written to the stdio stream @var{stream}.
9160
 
9161
If you don't define this macro, nothing special is output at the end
9162
of compilation, which is correct for most machines.
9163
@end defmac
9164
 
9165
@defmac DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END
9166
Define this macro @emph{instead of} defining
9167
@code{DBX_OUTPUT_MAIN_SOURCE_FILE_END}, if what needs to be output at
9168
the end of compilation is an @code{N_SO} stab with an empty string,
9169
whose value is the highest absolute text address in the file.
9170
@end defmac
9171
 
9172
@need 2000
9173
@node SDB and DWARF
9174
@subsection Macros for SDB and DWARF Output
9175
 
9176
@c prevent bad page break with this line
9177
Here are macros for SDB and DWARF output.
9178
 
9179
@defmac SDB_DEBUGGING_INFO
9180
Define this macro if GCC should produce COFF-style debugging output
9181
for SDB in response to the @option{-g} option.
9182
@end defmac
9183
 
9184
@defmac DWARF2_DEBUGGING_INFO
9185
Define this macro if GCC should produce dwarf version 2 format
9186
debugging output in response to the @option{-g} option.
9187
 
9188
@deftypefn {Target Hook} int TARGET_DWARF_CALLING_CONVENTION (const_tree @var{function})
9189
Define this to enable the dwarf attribute @code{DW_AT_calling_convention} to
9190
be emitted for each function.  Instead of an integer return the enum
9191
value for the @code{DW_CC_} tag.
9192
@end deftypefn
9193
 
9194
To support optional call frame debugging information, you must also
9195
define @code{INCOMING_RETURN_ADDR_RTX} and either set
9196
@code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the
9197
prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save}
9198
as appropriate from @code{TARGET_ASM_FUNCTION_PROLOGUE} if you don't.
9199
@end defmac
9200
 
9201
@defmac DWARF2_FRAME_INFO
9202
Define this macro to a nonzero value if GCC should always output
9203
Dwarf 2 frame information.  If @code{DWARF2_UNWIND_INFO}
9204
(@pxref{Exception Region Output} is nonzero, GCC will output this
9205
information not matter how you define @code{DWARF2_FRAME_INFO}.
9206
@end defmac
9207
 
9208
@defmac DWARF2_ASM_LINE_DEBUG_INFO
9209
Define this macro to be a nonzero value if the assembler can generate Dwarf 2
9210
line debug info sections.  This will result in much more compact line number
9211
tables, and hence is desirable if it works.
9212
@end defmac
9213
 
9214
@defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2})
9215
A C statement to issue assembly directives that create a difference
9216
@var{lab1} minus @var{lab2}, using an integer of the given @var{size}.
9217
@end defmac
9218
 
9219
@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label}, @var{section})
9220
A C statement to issue assembly directives that create a
9221
section-relative reference to the given @var{label}, using an integer of the
9222
given @var{size}.  The label is known to be defined in the given @var{section}.
9223
@end defmac
9224
 
9225
@defmac ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label})
9226
A C statement to issue assembly directives that create a self-relative
9227
reference to the given @var{label}, using an integer of the given @var{size}.
9228
@end defmac
9229
 
9230
@defmac ASM_OUTPUT_DWARF_TABLE_REF (@var{label})
9231
A C statement to issue assembly directives that create a reference to
9232
the DWARF table identifier @var{label} from the current section.  This
9233
is used on some systems to avoid garbage collecting a DWARF table which
9234
is referenced by a function.
9235
@end defmac
9236
 
9237
@deftypefn {Target Hook} void TARGET_ASM_OUTPUT_DWARF_DTPREL (FILE *@var{file}, int @var{size}, rtx @var{x})
9238
If defined, this target hook is a function which outputs a DTP-relative
9239
reference to the given TLS symbol of the specified size.
9240
@end deftypefn
9241
 
9242
@defmac PUT_SDB_@dots{}
9243
Define these macros to override the assembler syntax for the special
9244
SDB assembler directives.  See @file{sdbout.c} for a list of these
9245
macros and their arguments.  If the standard syntax is used, you need
9246
not define them yourself.
9247
@end defmac
9248
 
9249
@defmac SDB_DELIM
9250
Some assemblers do not support a semicolon as a delimiter, even between
9251
SDB assembler directives.  In that case, define this macro to be the
9252
delimiter to use (usually @samp{\n}).  It is not necessary to define
9253
a new set of @code{PUT_SDB_@var{op}} macros if this is the only change
9254
required.
9255
@end defmac
9256
 
9257
@defmac SDB_ALLOW_UNKNOWN_REFERENCES
9258
Define this macro to allow references to unknown structure,
9259
union, or enumeration tags to be emitted.  Standard COFF does not
9260
allow handling of unknown references, MIPS ECOFF has support for
9261
it.
9262
@end defmac
9263
 
9264
@defmac SDB_ALLOW_FORWARD_REFERENCES
9265
Define this macro to allow references to structure, union, or
9266
enumeration tags that have not yet been seen to be handled.  Some
9267
assemblers choke if forward tags are used, while some require it.
9268
@end defmac
9269
 
9270
@defmac SDB_OUTPUT_SOURCE_LINE (@var{stream}, @var{line})
9271
A C statement to output SDB debugging information before code for line
9272
number @var{line} of the current source file to the stdio stream
9273
@var{stream}.  The default is to emit an @code{.ln} directive.
9274
@end defmac
9275
 
9276
@need 2000
9277
@node VMS Debug
9278
@subsection Macros for VMS Debug Format
9279
 
9280
@c prevent bad page break with this line
9281
Here are macros for VMS debug format.
9282
 
9283
@defmac VMS_DEBUGGING_INFO
9284
Define this macro if GCC should produce debugging output for VMS
9285
in response to the @option{-g} option.  The default behavior for VMS
9286
is to generate minimal debug info for a traceback in the absence of
9287
@option{-g} unless explicitly overridden with @option{-g0}.  This
9288
behavior is controlled by @code{OPTIMIZATION_OPTIONS} and
9289
@code{OVERRIDE_OPTIONS}.
9290
@end defmac
9291
 
9292
@node Floating Point
9293
@section Cross Compilation and Floating Point
9294
@cindex cross compilation and floating point
9295
@cindex floating point and cross compilation
9296
 
9297
While all modern machines use twos-complement representation for integers,
9298
there are a variety of representations for floating point numbers.  This
9299
means that in a cross-compiler the representation of floating point numbers
9300
in the compiled program may be different from that used in the machine
9301
doing the compilation.
9302
 
9303
Because different representation systems may offer different amounts of
9304
range and precision, all floating point constants must be represented in
9305
the target machine's format.  Therefore, the cross compiler cannot
9306
safely use the host machine's floating point arithmetic; it must emulate
9307
the target's arithmetic.  To ensure consistency, GCC always uses
9308
emulation to work with floating point values, even when the host and
9309
target floating point formats are identical.
9310
 
9311
The following macros are provided by @file{real.h} for the compiler to
9312
use.  All parts of the compiler which generate or optimize
9313
floating-point calculations must use these macros.  They may evaluate
9314
their operands more than once, so operands must not have side effects.
9315
 
9316
@defmac REAL_VALUE_TYPE
9317
The C data type to be used to hold a floating point value in the target
9318
machine's format.  Typically this is a @code{struct} containing an
9319
array of @code{HOST_WIDE_INT}, but all code should treat it as an opaque
9320
quantity.
9321
@end defmac
9322
 
9323
@deftypefn Macro int REAL_VALUES_EQUAL (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
9324
Compares for equality the two values, @var{x} and @var{y}.  If the target
9325
floating point format supports negative zeroes and/or NaNs,
9326
@samp{REAL_VALUES_EQUAL (-0.0, 0.0)} is true, and
9327
@samp{REAL_VALUES_EQUAL (NaN, NaN)} is false.
9328
@end deftypefn
9329
 
9330
@deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y})
9331
Tests whether @var{x} is less than @var{y}.
9332
@end deftypefn
9333
 
9334
@deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x})
9335
Truncates @var{x} to a signed integer, rounding toward zero.
9336
@end deftypefn
9337
 
9338
@deftypefn Macro {unsigned HOST_WIDE_INT} REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE @var{x})
9339
Truncates @var{x} to an unsigned integer, rounding toward zero.  If
9340
@var{x} is negative, returns zero.
9341
@end deftypefn
9342
 
9343
@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *@var{string}, enum machine_mode @var{mode})
9344
Converts @var{string} into a floating point number in the target machine's
9345
representation for mode @var{mode}.  This routine can handle both
9346
decimal and hexadecimal floating point constants, using the syntax
9347
defined by the C language for both.
9348
@end deftypefn
9349
 
9350
@deftypefn Macro int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE @var{x})
9351
Returns 1 if @var{x} is negative (including negative zero), 0 otherwise.
9352
@end deftypefn
9353
 
9354
@deftypefn Macro int REAL_VALUE_ISINF (REAL_VALUE_TYPE @var{x})
9355
Determines whether @var{x} represents infinity (positive or negative).
9356
@end deftypefn
9357
 
9358
@deftypefn Macro int REAL_VALUE_ISNAN (REAL_VALUE_TYPE @var{x})
9359
Determines whether @var{x} represents a ``NaN'' (not-a-number).
9360
@end deftypefn
9361
 
9362
@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})
9363
Calculates an arithmetic operation on the two floating point values
9364
@var{x} and @var{y}, storing the result in @var{output} (which must be a
9365
variable).
9366
 
9367
The operation to be performed is specified by @var{code}.  Only the
9368
following codes are supported: @code{PLUS_EXPR}, @code{MINUS_EXPR},
9369
@code{MULT_EXPR}, @code{RDIV_EXPR}, @code{MAX_EXPR}, @code{MIN_EXPR}.
9370
 
9371
If @code{REAL_ARITHMETIC} is asked to evaluate division by zero and the
9372
target's floating point format cannot represent infinity, it will call
9373
@code{abort}.  Callers should check for this situation first, using
9374
@code{MODE_HAS_INFINITIES}.  @xref{Storage Layout}.
9375
@end deftypefn
9376
 
9377
@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x})
9378
Returns the negative of the floating point value @var{x}.
9379
@end deftypefn
9380
 
9381
@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x})
9382
Returns the absolute value of @var{x}.
9383
@end deftypefn
9384
 
9385
@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE @var{mode}, enum machine_mode @var{x})
9386
Truncates the floating point value @var{x} to fit in @var{mode}.  The
9387
return value is still a full-size @code{REAL_VALUE_TYPE}, but it has an
9388
appropriate bit pattern to be output as a floating constant whose
9389
precision accords with mode @var{mode}.
9390
@end deftypefn
9391
 
9392
@deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT @var{high}, REAL_VALUE_TYPE @var{x})
9393
Converts a floating point value @var{x} into a double-precision integer
9394
which is then stored into @var{low} and @var{high}.  If the value is not
9395
integral, it is truncated.
9396
@end deftypefn
9397
 
9398
@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})
9399
Converts a double-precision integer found in @var{low} and @var{high},
9400
into a floating point value which is then stored into @var{x}.  The
9401
value is truncated to fit in mode @var{mode}.
9402
@end deftypefn
9403
 
9404
@node Mode Switching
9405
@section Mode Switching Instructions
9406
@cindex mode switching
9407
The following macros control mode switching optimizations:
9408
 
9409
@defmac OPTIMIZE_MODE_SWITCHING (@var{entity})
9410
Define this macro if the port needs extra instructions inserted for mode
9411
switching in an optimizing compilation.
9412
 
9413
For an example, the SH4 can perform both single and double precision
9414
floating point operations, but to perform a single precision operation,
9415
the FPSCR PR bit has to be cleared, while for a double precision
9416
operation, this bit has to be set.  Changing the PR bit requires a general
9417
purpose register as a scratch register, hence these FPSCR sets have to
9418
be inserted before reload, i.e.@: you can't put this into instruction emitting
9419
or @code{TARGET_MACHINE_DEPENDENT_REORG}.
9420
 
9421
You can have multiple entities that are mode-switched, and select at run time
9422
which entities actually need it.  @code{OPTIMIZE_MODE_SWITCHING} should
9423
return nonzero for any @var{entity} that needs mode-switching.
9424
If you define this macro, you also have to define
9425
@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{MODE_NEEDED},
9426
@code{MODE_PRIORITY_TO_MODE} and @code{EMIT_MODE_SET}.
9427
@code{MODE_AFTER}, @code{MODE_ENTRY}, and @code{MODE_EXIT}
9428
are optional.
9429
@end defmac
9430
 
9431
@defmac NUM_MODES_FOR_MODE_SWITCHING
9432
If you define @code{OPTIMIZE_MODE_SWITCHING}, you have to define this as
9433
initializer for an array of integers.  Each initializer element
9434
N refers to an entity that needs mode switching, and specifies the number
9435
of different modes that might need to be set for this entity.
9436
The position of the initializer in the initializer---starting counting at
9437
zero---determines the integer that is used to refer to the mode-switched
9438
entity in question.
9439
In macros that take mode arguments / yield a mode result, modes are
9440
represented as numbers 0 @dots{} N @minus{} 1.  N is used to specify that no mode
9441
switch is needed / supplied.
9442
@end defmac
9443
 
9444
@defmac MODE_NEEDED (@var{entity}, @var{insn})
9445
@var{entity} is an integer specifying a mode-switched entity.  If
9446
@code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to
9447
return an integer value not larger than the corresponding element in
9448
@code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must
9449
be switched into prior to the execution of @var{insn}.
9450
@end defmac
9451
 
9452
@defmac MODE_AFTER (@var{mode}, @var{insn})
9453
If this macro is defined, it is evaluated for every @var{insn} during
9454
mode switching.  It determines the mode that an insn results in (if
9455
different from the incoming mode).
9456
@end defmac
9457
 
9458
@defmac MODE_ENTRY (@var{entity})
9459
If this macro is defined, it is evaluated for every @var{entity} that needs
9460
mode switching.  It should evaluate to an integer, which is a mode that
9461
@var{entity} is assumed to be switched to at function entry.  If @code{MODE_ENTRY}
9462
is defined then @code{MODE_EXIT} must be defined.
9463
@end defmac
9464
 
9465
@defmac MODE_EXIT (@var{entity})
9466
If this macro is defined, it is evaluated for every @var{entity} that needs
9467
mode switching.  It should evaluate to an integer, which is a mode that
9468
@var{entity} is assumed to be switched to at function exit.  If @code{MODE_EXIT}
9469
is defined then @code{MODE_ENTRY} must be defined.
9470
@end defmac
9471
 
9472
@defmac MODE_PRIORITY_TO_MODE (@var{entity}, @var{n})
9473
This macro specifies the order in which modes for @var{entity} are processed.
9474
 
9475
lowest.  The value of the macro should be an integer designating a mode
9476
for @var{entity}.  For any fixed @var{entity}, @code{mode_priority_to_mode}
9477
(@var{entity}, @var{n}) shall be a bijection in 0 @dots{}
9478
@code{num_modes_for_mode_switching[@var{entity}] - 1}.
9479
@end defmac
9480
 
9481
@defmac EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live})
9482
Generate one or more insns to set @var{entity} to @var{mode}.
9483
@var{hard_reg_live} is the set of hard registers live at the point where
9484
the insn(s) are to be inserted.
9485
@end defmac
9486
 
9487
@node Target Attributes
9488
@section Defining target-specific uses of @code{__attribute__}
9489
@cindex target attributes
9490
@cindex machine attributes
9491
@cindex attributes, target-specific
9492
 
9493
Target-specific attributes may be defined for functions, data and types.
9494
These are described using the following target hooks; they also need to
9495
be documented in @file{extend.texi}.
9496
 
9497
@deftypevr {Target Hook} {const struct attribute_spec *} TARGET_ATTRIBUTE_TABLE
9498
If defined, this target hook points to an array of @samp{struct
9499
attribute_spec} (defined in @file{tree.h}) specifying the machine
9500
specific attributes for this target and some of the restrictions on the
9501
entities to which these attributes are applied and the arguments they
9502
take.
9503
@end deftypevr
9504
 
9505
@deftypefn {Target Hook} int TARGET_COMP_TYPE_ATTRIBUTES (const_tree @var{type1}, const_tree @var{type2})
9506
If defined, this target hook is a function which returns zero if the attributes on
9507
@var{type1} and @var{type2} are incompatible, one if they are compatible,
9508
and two if they are nearly compatible (which causes a warning to be
9509
generated).  If this is not defined, machine-specific attributes are
9510
supposed always to be compatible.
9511
@end deftypefn
9512
 
9513
@deftypefn {Target Hook} void TARGET_SET_DEFAULT_TYPE_ATTRIBUTES (tree @var{type})
9514
If defined, this target hook is a function which assigns default attributes to
9515
the newly defined @var{type}.
9516
@end deftypefn
9517
 
9518
@deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2})
9519
Define this target hook if the merging of type attributes needs special
9520
handling.  If defined, the result is a list of the combined
9521
@code{TYPE_ATTRIBUTES} of @var{type1} and @var{type2}.  It is assumed
9522
that @code{comptypes} has already been called and returned 1.  This
9523
function may call @code{merge_attributes} to handle machine-independent
9524
merging.
9525
@end deftypefn
9526
 
9527
@deftypefn {Target Hook} tree TARGET_MERGE_DECL_ATTRIBUTES (tree @var{olddecl}, tree @var{newdecl})
9528
Define this target hook if the merging of decl attributes needs special
9529
handling.  If defined, the result is a list of the combined
9530
@code{DECL_ATTRIBUTES} of @var{olddecl} and @var{newdecl}.
9531
@var{newdecl} is a duplicate declaration of @var{olddecl}.  Examples of
9532
when this is needed are when one attribute overrides another, or when an
9533
attribute is nullified by a subsequent definition.  This function may
9534
call @code{merge_attributes} to handle machine-independent merging.
9535
 
9536
@findex TARGET_DLLIMPORT_DECL_ATTRIBUTES
9537
If the only target-specific handling you require is @samp{dllimport}
9538
for Microsoft Windows targets, you should define the macro
9539
@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES} to @code{1}.  The compiler
9540
will then define a function called
9541
@code{merge_dllimport_decl_attributes} which can then be defined as
9542
the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}.  You can also
9543
add @code{handle_dll_attribute} in the attribute table for your port
9544
to perform initial processing of the @samp{dllimport} and
9545
@samp{dllexport} attributes.  This is done in @file{i386/cygwin.h} and
9546
@file{i386/i386.c}, for example.
9547
@end deftypefn
9548
 
9549
@deftypefn {Target Hook} bool TARGET_VALID_DLLIMPORT_ATTRIBUTE_P (const_tree @var{decl})
9550
@var{decl} is a variable or function with @code{__attribute__((dllimport))}
9551
specified. Use this hook if the target needs to add extra validation
9552
checks to @code{handle_dll_attribute}.
9553
@end deftypefn
9554
 
9555
@defmac TARGET_DECLSPEC
9556
Define this macro to a nonzero value if you want to treat
9557
@code{__declspec(X)} as equivalent to @code{__attribute((X))}.  By
9558
default, this behavior is enabled only for targets that define
9559
@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}.  The current implementation
9560
of @code{__declspec} is via a built-in macro, but you should not rely
9561
on this implementation detail.
9562
@end defmac
9563
 
9564
@deftypefn {Target Hook} void TARGET_INSERT_ATTRIBUTES (tree @var{node}, tree *@var{attr_ptr})
9565
Define this target hook if you want to be able to add attributes to a decl
9566
when it is being created.  This is normally useful for back ends which
9567
wish to implement a pragma by using the attributes which correspond to
9568
the pragma's effect.  The @var{node} argument is the decl which is being
9569
created.  The @var{attr_ptr} argument is a pointer to the attribute list
9570
for this decl.  The list itself should not be modified, since it may be
9571
shared with other decls, but attributes may be chained on the head of
9572
the list and @code{*@var{attr_ptr}} modified to point to the new
9573
attributes, or a copy of the list may be made if further changes are
9574
needed.
9575
@end deftypefn
9576
 
9577
@deftypefn {Target Hook} bool TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P (const_tree @var{fndecl})
9578
@cindex inlining
9579
This target hook returns @code{true} if it is ok to inline @var{fndecl}
9580
into the current function, despite its having target-specific
9581
attributes, @code{false} otherwise.  By default, if a function has a
9582
target specific attribute attached to it, it will not be inlined.
9583
@end deftypefn
9584
 
9585
@deftypefn {Target Hook} bool TARGET_OPTION_VALID_ATTRIBUTE_P (tree @var{fndecl}, tree @var{name}, tree @var{args}, int @var{flags})
9586
This hook is called to parse the @code{attribute(option("..."))}, and
9587
it allows the function to set different target machine compile time
9588
options for the current function that might be different than the
9589
options specified on the command line.  The hook should return
9590
@code{true} if the options are valid.
9591
 
9592
The hook should set the @var{DECL_FUNCTION_SPECIFIC_TARGET} field in
9593
the function declaration to hold a pointer to a target specific
9594
@var{struct cl_target_option} structure.
9595
@end deftypefn
9596
 
9597
@deftypefn {Target Hook} void TARGET_OPTION_SAVE (struct cl_target_option *@var{ptr})
9598
This hook is called to save any additional target specific information
9599
in the @var{struct cl_target_option} structure for function specific
9600
options.
9601
@xref{Option file format}.
9602
@end deftypefn
9603
 
9604
@deftypefn {Target Hook} void TARGET_OPTION_RESTORE (struct cl_target_option *@var{ptr})
9605
This hook is called to restore any additional target specific
9606
information in the @var{struct cl_target_option} structure for
9607
function specific options.
9608
@end deftypefn
9609
 
9610
@deftypefn {Target Hook} void TARGET_OPTION_PRINT (FILE *@var{file}, int @var{indent}, struct cl_target_option *@var{ptr})
9611
This hook is called to print any additional target specific
9612
information in the @var{struct cl_target_option} structure for
9613
function specific options.
9614
@end deftypefn
9615
 
9616
@deftypefn {Target Hook} bool TARGET_OPTION_PRAGMA_PARSE (target @var{args})
9617
This target hook parses the options for @code{#pragma GCC option} to
9618
set the machine specific options for functions that occur later in the
9619
input stream.  The options should be the same as handled by the
9620
@code{TARGET_VALID_OPTION_ATTRIBUTE_P} hook.
9621
@end deftypefn
9622
 
9623
@deftypefn {Target Hook} bool TARGET_CAN_INLINE_P (tree @var{caller}, tree @var{callee})
9624
This target hook returns @code{false} if the @var{caller} function
9625
cannot inline @var{callee}, based on target specific information.  By
9626
default, inlining is not allowed if the callee function has function
9627
specific target options and the caller does not use the same options.
9628
@end deftypefn
9629
 
9630
@node Emulated TLS
9631
@section Emulating TLS
9632
@cindex Emulated TLS
9633
 
9634
For targets whose psABI does not provide Thread Local Storage via
9635
specific relocations and instruction sequences, an emulation layer is
9636
used.  A set of target hooks allows this emulation layer to be
9637
configured for the requirements of a particular target.  For instance
9638
the psABI may in fact specify TLS support in terms of an emulation
9639
layer.
9640
 
9641
The emulation layer works by creating a control object for every TLS
9642
object.  To access the TLS object, a lookup function is provided
9643
which, when given the address of the control object, will return the
9644
address of the current thread's instance of the TLS object.
9645
 
9646
@deftypevr {Target Hook} {const char *} TARGET_EMUTLS_GET_ADDRESS
9647
Contains the name of the helper function that uses a TLS control
9648
object to locate a TLS instance.  The default causes libgcc's
9649
emulated TLS helper function to be used.
9650
@end deftypevr
9651
 
9652
@deftypevr {Target Hook} {const char *} TARGET_EMUTLS_REGISTER_COMMON
9653
Contains the name of the helper function that should be used at
9654
program startup to register TLS objects that are implicitly
9655
initialized to zero.  If this is @code{NULL}, all TLS objects will
9656
have explicit initializers.  The default causes libgcc's emulated TLS
9657
registration function to be used.
9658
@end deftypevr
9659
 
9660
@deftypevr {Target Hook} {const char *} TARGET_EMUTLS_VAR_SECTION
9661
Contains the name of the section in which TLS control variables should
9662
be placed.  The default of @code{NULL} allows these to be placed in
9663
any section.
9664
@end deftypevr
9665
 
9666
@deftypevr {Target Hook} {const char *} TARGET_EMUTLS_TMPL_SECTION
9667
Contains the name of the section in which TLS initializers should be
9668
placed.  The default of @code{NULL} allows these to be placed in any
9669
section.
9670
@end deftypevr
9671
 
9672
@deftypevr {Target Hook} {const char *} TARGET_EMUTLS_VAR_PREFIX
9673
Contains the prefix to be prepended to TLS control variable names.
9674
The default of @code{NULL} uses a target-specific prefix.
9675
@end deftypevr
9676
 
9677
@deftypevr {Target Hook} {const char *} TARGET_EMUTLS_TMPL_PREFIX
9678
Contains the prefix to be prepended to TLS initializer objects.  The
9679
default of @code{NULL} uses a target-specific prefix.
9680
@end deftypevr
9681
 
9682
@deftypefn {Target Hook} tree TARGET_EMUTLS_VAR_FIELDS (tree @var{type}, tree *@var{name})
9683
Specifies a function that generates the FIELD_DECLs for a TLS control
9684
object type.  @var{type} is the RECORD_TYPE the fields are for and
9685
@var{name} should be filled with the structure tag, if the default of
9686
@code{__emutls_object} is unsuitable.  The default creates a type suitable
9687
for libgcc's emulated TLS function.
9688
@end deftypefn
9689
 
9690
@deftypefn {Target Hook} tree TARGET_EMUTLS_VAR_INIT (tree @var{var}, tree @var{decl}, tree @var{tmpl_addr})
9691
Specifies a function that generates the CONSTRUCTOR to initialize a
9692
TLS control object.  @var{var} is the TLS control object, @var{decl}
9693
is the TLS object and @var{tmpl_addr} is the address of the
9694
initializer.  The default initializes libgcc's emulated TLS control object.
9695
@end deftypefn
9696
 
9697
@deftypevr {Target Hook} bool TARGET_EMUTLS_VAR_ALIGN_FIXED
9698
Specifies whether the alignment of TLS control variable objects is
9699
fixed and should not be increased as some backends may do to optimize
9700
single objects.  The default is false.
9701
@end deftypevr
9702
 
9703
@deftypevr {Target Hook} bool TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS
9704
Specifies whether a DWARF @code{DW_OP_form_tls_address} location descriptor
9705
may be used to describe emulated TLS control objects.
9706
@end deftypevr
9707
 
9708
@node MIPS Coprocessors
9709
@section Defining coprocessor specifics for MIPS targets.
9710
@cindex MIPS coprocessor-definition macros
9711
 
9712
The MIPS specification allows MIPS implementations to have as many as 4
9713
coprocessors, each with as many as 32 private registers.  GCC supports
9714
accessing these registers and transferring values between the registers
9715
and memory using asm-ized variables.  For example:
9716
 
9717
@smallexample
9718
  register unsigned int cp0count asm ("c0r1");
9719
  unsigned int d;
9720
 
9721
  d = cp0count + 3;
9722
@end smallexample
9723
 
9724
(``c0r1'' is the default name of register 1 in coprocessor 0; alternate
9725
names may be added as described below, or the default names may be
9726
overridden entirely in @code{SUBTARGET_CONDITIONAL_REGISTER_USAGE}.)
9727
 
9728
Coprocessor registers are assumed to be epilogue-used; sets to them will
9729
be preserved even if it does not appear that the register is used again
9730
later in the function.
9731
 
9732
Another note: according to the MIPS spec, coprocessor 1 (if present) is
9733
the FPU@.  One accesses COP1 registers through standard mips
9734
floating-point support; they are not included in this mechanism.
9735
 
9736
There is one macro used in defining the MIPS coprocessor interface which
9737
you may want to override in subtargets; it is described below.
9738
 
9739
@defmac ALL_COP_ADDITIONAL_REGISTER_NAMES
9740
A comma-separated list (with leading comma) of pairs describing the
9741
alternate names of coprocessor registers.  The format of each entry should be
9742
@smallexample
9743
@{ @var{alternatename}, @var{register_number}@}
9744
@end smallexample
9745
Default: empty.
9746
@end defmac
9747
 
9748
@node PCH Target
9749
@section Parameters for Precompiled Header Validity Checking
9750
@cindex parameters, precompiled headers
9751
 
9752
@deftypefn {Target Hook} {void *} TARGET_GET_PCH_VALIDITY (size_t *@var{sz})
9753
This hook returns a pointer to the data needed by
9754
@code{TARGET_PCH_VALID_P} and sets
9755
@samp{*@var{sz}} to the size of the data in bytes.
9756
@end deftypefn
9757
 
9758
@deftypefn {Target Hook} {const char *} TARGET_PCH_VALID_P (const void *@var{data}, size_t @var{sz})
9759
This hook checks whether the options used to create a PCH file are
9760
compatible with the current settings.  It returns @code{NULL}
9761
if so and a suitable error message if not.  Error messages will
9762
be presented to the user and must be localized using @samp{_(@var{msg})}.
9763
 
9764
@var{data} is the data that was returned by @code{TARGET_GET_PCH_VALIDITY}
9765
when the PCH file was created and @var{sz} is the size of that data in bytes.
9766
It's safe to assume that the data was created by the same version of the
9767
compiler, so no format checking is needed.
9768
 
9769
The default definition of @code{default_pch_valid_p} should be
9770
suitable for most targets.
9771
@end deftypefn
9772
 
9773
@deftypefn {Target Hook} {const char *} TARGET_CHECK_PCH_TARGET_FLAGS (int @var{pch_flags})
9774
If this hook is nonnull, the default implementation of
9775
@code{TARGET_PCH_VALID_P} will use it to check for compatible values
9776
of @code{target_flags}.  @var{pch_flags} specifies the value that
9777
@code{target_flags} had when the PCH file was created.  The return
9778
value is the same as for @code{TARGET_PCH_VALID_P}.
9779
@end deftypefn
9780
 
9781
@node C++ ABI
9782
@section C++ ABI parameters
9783
@cindex parameters, c++ abi
9784
 
9785
@deftypefn {Target Hook} tree TARGET_CXX_GUARD_TYPE (void)
9786
Define this hook to override the integer type used for guard variables.
9787
These are used to implement one-time construction of static objects.  The
9788
default is long_long_integer_type_node.
9789
@end deftypefn
9790
 
9791
@deftypefn {Target Hook} bool TARGET_CXX_GUARD_MASK_BIT (void)
9792
This hook determines how guard variables are used.  It should return
9793
@code{false} (the default) if the first byte should be used.  A return value of
9794
@code{true} indicates that only the least significant bit should be used.
9795
@end deftypefn
9796
 
9797
@deftypefn {Target Hook} tree TARGET_CXX_GET_COOKIE_SIZE (tree @var{type})
9798
This hook returns the size of the cookie to use when allocating an array
9799
whose elements have the indicated @var{type}.  Assumes that it is already
9800
known that a cookie is needed.  The default is
9801
@code{max(sizeof (size_t), alignof(type))}, as defined in section 2.7 of the
9802
IA64/Generic C++ ABI@.
9803
@end deftypefn
9804
 
9805
@deftypefn {Target Hook} bool TARGET_CXX_COOKIE_HAS_SIZE (void)
9806
This hook should return @code{true} if the element size should be stored in
9807
array cookies.  The default is to return @code{false}.
9808
@end deftypefn
9809
 
9810
@deftypefn {Target Hook} int TARGET_CXX_IMPORT_EXPORT_CLASS (tree  @var{type}, int @var{import_export})
9811
If defined by a backend this hook allows the decision made to export
9812
class @var{type} to be overruled.  Upon entry @var{import_export}
9813
will contain 1 if the class is going to be exported, @minus{}1 if it is going
9814
to be imported and 0 otherwise.  This function should return the
9815
modified value and perform any other actions necessary to support the
9816
backend's targeted operating system.
9817
@end deftypefn
9818
 
9819
@deftypefn {Target Hook} bool TARGET_CXX_CDTOR_RETURNS_THIS (void)
9820
This hook should return @code{true} if constructors and destructors return
9821
the address of the object created/destroyed.  The default is to return
9822
@code{false}.
9823
@end deftypefn
9824
 
9825
@deftypefn {Target Hook} bool TARGET_CXX_KEY_METHOD_MAY_BE_INLINE (void)
9826
This hook returns true if the key method for a class (i.e., the method
9827
which, if defined in the current translation unit, causes the virtual
9828
table to be emitted) may be an inline function.  Under the standard
9829
Itanium C++ ABI the key method may be an inline function so long as
9830
the function is not declared inline in the class definition.  Under
9831
some variants of the ABI, an inline function can never be the key
9832
method.  The default is to return @code{true}.
9833
@end deftypefn
9834
 
9835
@deftypefn {Target Hook} void TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY (tree @var{decl})
9836
@var{decl} is a virtual table, virtual table table, typeinfo object,
9837
or other similar implicit class data object that will be emitted with
9838
external linkage in this translation unit.  No ELF visibility has been
9839
explicitly specified.  If the target needs to specify a visibility
9840
other than that of the containing class, use this hook to set
9841
@code{DECL_VISIBILITY} and @code{DECL_VISIBILITY_SPECIFIED}.
9842
@end deftypefn
9843
 
9844
@deftypefn {Target Hook} bool TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT (void)
9845
This hook returns true (the default) if virtual tables and other
9846
similar implicit class data objects are always COMDAT if they have
9847
external linkage.  If this hook returns false, then class data for
9848
classes whose virtual table will be emitted in only one translation
9849
unit will not be COMDAT.
9850
@end deftypefn
9851
 
9852
@deftypefn {Target Hook} bool TARGET_CXX_LIBRARY_RTTI_COMDAT (void)
9853
This hook returns true (the default) if the RTTI information for
9854
the basic types which is defined in the C++ runtime should always
9855
be COMDAT, false if it should not be COMDAT.
9856
@end deftypefn
9857
 
9858
@deftypefn {Target Hook} bool TARGET_CXX_USE_AEABI_ATEXIT (void)
9859
This hook returns true if @code{__aeabi_atexit} (as defined by the ARM EABI)
9860
should be used to register static destructors when @option{-fuse-cxa-atexit}
9861
is in effect.  The default is to return false to use @code{__cxa_atexit}.
9862
@end deftypefn
9863
 
9864
@deftypefn {Target Hook} bool TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT (void)
9865
This hook returns true if the target @code{atexit} function can be used
9866
in the same manner as @code{__cxa_atexit} to register C++ static
9867
destructors. This requires that @code{atexit}-registered functions in
9868
shared libraries are run in the correct order when the libraries are
9869
unloaded. The default is to return false.
9870
@end deftypefn
9871
 
9872
@deftypefn {Target Hook} void TARGET_CXX_ADJUST_CLASS_AT_DEFINITION (tree @var{type})
9873
@var{type} is a C++ class (i.e., RECORD_TYPE or UNION_TYPE) that has just been
9874
defined.  Use this hook to make adjustments to the class (eg, tweak
9875
visibility or perform any other required target modifications).
9876
@end deftypefn
9877
 
9878
@node Named Address Spaces
9879
@section Adding support for named address spaces
9880
@cindex named address spaces
9881
 
9882
The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275
9883
standards committee, @cite{Programming Languages - C - Extensions to
9884
support embedded processors}, specifies a syntax for embedded
9885
processors to specify alternate address spaces.  You can configure a
9886
GCC port to support section 5.1 of the draft report to add support for
9887
address spaces other than the default address space.  These address
9888
spaces are new keywords that are similar to the @code{volatile} and
9889
@code{const} type attributes.
9890
 
9891
Pointers to named address spaces can have a different size than
9892
pointers to the generic address space.
9893
 
9894
For example, the SPU port uses the @code{__ea} address space to refer
9895
to memory in the host processor, rather than memory local to the SPU
9896
processor.  Access to memory in the @code{__ea} address space involves
9897
issuing DMA operations to move data between the host processor and the
9898
local processor memory address space.  Pointers in the @code{__ea}
9899
address space are either 32 bits or 64 bits based on the
9900
@option{-mea32} or @option{-mea64} switches (native SPU pointers are
9901
always 32 bits).
9902
 
9903
Internally, address spaces are represented as a small integer in the
9904
range 0 to 15 with address space 0 being reserved for the generic
9905
address space.
9906
 
9907
@defmac TARGET_ADDR_SPACE_KEYWORDS
9908
A list of @code{ADDR_SPACE_KEYWORD} macros to define each named
9909
address keyword.  The @code{ADDR_SPACE_KEYWORD} macro takes two
9910
arguments, the keyword string and the number of the named address
9911
space.  For example, the SPU port uses the following to declare
9912
@code{__ea} as the keyword for named address space #1:
9913
@smallexample
9914
#define ADDR_SPACE_EA 1
9915
#define TARGET_ADDR_SPACE_KEYWORDS ADDR_SPACE_KEYWORD ("__ea", ADDR_SPACE_EA)
9916
@end smallexample
9917
@end defmac
9918
 
9919
@deftypefn {Target Hook} {enum machine_mode} TARGET_ADDR_SPACE_POINTER_MODE (addr_space_t @var{address_space})
9920
Define this to return the machine mode to use for pointers to
9921
@var{address_space} if the target supports named address spaces.
9922
The default version of this hook returns @code{ptr_mode} for the
9923
generic address space only.
9924
@end deftypefn
9925
 
9926
@deftypefn {Target Hook} {enum machine_mode} TARGET_ADDR_SPACE_ADDRESS_MODE (addr_space_t @var{address_space})
9927
Define this to return the machine mode to use for addresses in
9928
@var{address_space} if the target supports named address spaces.
9929
The default version of this hook returns @code{Pmode} for the
9930
generic address space only.
9931
@end deftypefn
9932
 
9933
@deftypefn {Target Hook} bool TARGET_ADDR_SPACE_VALID_POINTER_MODE (enum machine_mode @var{mode}, addr_space_t @var{as})
9934
Define this to return nonzero if the port can handle pointers
9935
with machine mode @var{mode} to address space @var{as}.  This target
9936
hook is the same as the @code{TARGET_VALID_POINTER_MODE} target hook,
9937
except that it includes explicit named address space support.  The default
9938
version of this hook returns true for the modes returned by either the
9939
@code{TARGET_ADDR_SPACE_POINTER_MODE} or @code{TARGET_ADDR_SPACE_ADDRESS_MODE}
9940
target hooks for the given address space.
9941
@end deftypefn
9942
 
9943
@deftypefn {Target Hook} bool TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P (enum machine_mode @var{mode}, rtx @var{exp}, bool @var{strict}, addr_space_t @var{as})
9944
Define this to return true if @var{exp} is a valid address for mode
9945
@var{mode} in the named address space @var{as}.  The @var{strict}
9946
parameter says whether strict addressing is in effect after reload has
9947
finished.  This target hook is the same as the
9948
@code{TARGET_LEGITIMATE_ADDRESS_P} target hook, except that it includes
9949
explicit named address space support.
9950
@end deftypefn
9951
 
9952
@deftypefn {Target Hook} rtx TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS (rtx @var{x}, rtx @var{oldx}, enum machine_mode @var{mode}, addr_space_t @var{as})
9953
Define this to modify an invalid address @var{x} to be a valid address
9954
with mode @var{mode} in the named address space @var{as}.  This target
9955
hook is the same as the @code{TARGET_LEGITIMIZE_ADDRESS} target hook,
9956
except that it includes explicit named address space support.
9957
@end deftypefn
9958
 
9959
@deftypefn {Target Hook} bool TARGET_ADDR_SPACE_SUBSET_P (addr_space_t @var{superset}, addr_space_t @var{subset})
9960
Define this to return whether the @var{subset} named address space is
9961
contained within the @var{superset} named address space.  Pointers to
9962
a named address space that is a subset of another named address space
9963
will be converted automatically without a cast if used together in
9964
arithmetic operations.  Pointers to a superset address space can be
9965
converted to pointers to a subset address space via explicit casts.
9966
@end deftypefn
9967
 
9968
@deftypefn {Target Hook} rtx TARGET_ADDR_SPACE_CONVERT (rtx @var{op}, tree @var{from_type}, tree @var{to_type})
9969
Define this to convert the pointer expression represented by the RTL
9970
@var{op} with type @var{from_type} that points to a named address
9971
space to a new pointer expression with type @var{to_type} that points
9972
to a different named address space.  When this hook it called, it is
9973
guaranteed that one of the two address spaces is a subset of the other,
9974
as determined by the @code{TARGET_ADDR_SPACE_SUBSET_P} target hook.
9975
@end deftypefn
9976
 
9977
@node Misc
9978
@section Miscellaneous Parameters
9979
@cindex parameters, miscellaneous
9980
 
9981
@c prevent bad page break with this line
9982
Here are several miscellaneous parameters.
9983
 
9984
@defmac HAS_LONG_COND_BRANCH
9985
Define this boolean macro to indicate whether or not your architecture
9986
has conditional branches that can span all of memory.  It is used in
9987
conjunction with an optimization that partitions hot and cold basic
9988
blocks into separate sections of the executable.  If this macro is
9989
set to false, gcc will convert any conditional branches that attempt
9990
to cross between sections into unconditional branches or indirect jumps.
9991
@end defmac
9992
 
9993
@defmac HAS_LONG_UNCOND_BRANCH
9994
Define this boolean macro to indicate whether or not your architecture
9995
has unconditional branches that can span all of memory.  It is used in
9996
conjunction with an optimization that partitions hot and cold basic
9997
blocks into separate sections of the executable.  If this macro is
9998
set to false, gcc will convert any unconditional branches that attempt
9999
to cross between sections into indirect jumps.
10000
@end defmac
10001
 
10002
@defmac CASE_VECTOR_MODE
10003
An alias for a machine mode name.  This is the machine mode that
10004
elements of a jump-table should have.
10005
@end defmac
10006
 
10007
@defmac CASE_VECTOR_SHORTEN_MODE (@var{min_offset}, @var{max_offset}, @var{body})
10008
Optional: return the preferred mode for an @code{addr_diff_vec}
10009
when the minimum and maximum offset are known.  If you define this,
10010
it enables extra code in branch shortening to deal with @code{addr_diff_vec}.
10011
To make this work, you also have to define @code{INSN_ALIGN} and
10012
make the alignment for @code{addr_diff_vec} explicit.
10013
The @var{body} argument is provided so that the offset_unsigned and scale
10014
flags can be updated.
10015
@end defmac
10016
 
10017
@defmac CASE_VECTOR_PC_RELATIVE
10018
Define this macro to be a C expression to indicate when jump-tables
10019
should contain relative addresses.  You need not define this macro if
10020
jump-tables never contain relative addresses, or jump-tables should
10021
contain relative addresses only when @option{-fPIC} or @option{-fPIC}
10022
is in effect.
10023
@end defmac
10024
 
10025
@deftypefn {Target Hook} {unsigned int} TARGET_CASE_VALUES_THRESHOLD (void)
10026
This function return the smallest number of different values for which it
10027
is best to use a jump-table instead of a tree of conditional branches.
10028
The default is four for machines with a @code{casesi} instruction and
10029
five otherwise.  This is best for most machines.
10030
@end deftypefn
10031
 
10032
@defmac CASE_USE_BIT_TESTS
10033
Define this macro to be a C expression to indicate whether C switch
10034
statements may be implemented by a sequence of bit tests.  This is
10035
advantageous on processors that can efficiently implement left shift
10036
of 1 by the number of bits held in a register, but inappropriate on
10037
targets that would require a loop.  By default, this macro returns
10038
@code{true} if the target defines an @code{ashlsi3} pattern, and
10039
@code{false} otherwise.
10040
@end defmac
10041
 
10042
@defmac WORD_REGISTER_OPERATIONS
10043
Define this macro if operations between registers with integral mode
10044
smaller than a word are always performed on the entire register.
10045
Most RISC machines have this property and most CISC machines do not.
10046
@end defmac
10047
 
10048
@defmac LOAD_EXTEND_OP (@var{mem_mode})
10049
Define this macro to be a C expression indicating when insns that read
10050
memory in @var{mem_mode}, an integral mode narrower than a word, set the
10051
bits outside of @var{mem_mode} to be either the sign-extension or the
10052
zero-extension of the data read.  Return @code{SIGN_EXTEND} for values
10053
of @var{mem_mode} for which the
10054
insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and
10055
@code{UNKNOWN} for other modes.
10056
 
10057
This macro is not called with @var{mem_mode} non-integral or with a width
10058
greater than or equal to @code{BITS_PER_WORD}, so you may return any
10059
value in this case.  Do not define this macro if it would always return
10060
@code{UNKNOWN}.  On machines where this macro is defined, you will normally
10061
define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}.
10062
 
10063
You may return a non-@code{UNKNOWN} value even if for some hard registers
10064
the sign extension is not performed, if for the @code{REGNO_REG_CLASS}
10065
of these hard registers @code{CANNOT_CHANGE_MODE_CLASS} returns nonzero
10066
when the @var{from} mode is @var{mem_mode} and the @var{to} mode is any
10067
integral mode larger than this but not larger than @code{word_mode}.
10068
 
10069
You must return @code{UNKNOWN} if for some hard registers that allow this
10070
mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to
10071
@code{word_mode}, but that they can change to another integral mode that
10072
is larger then @var{mem_mode} but still smaller than @code{word_mode}.
10073
@end defmac
10074
 
10075
@defmac SHORT_IMMEDIATES_SIGN_EXTEND
10076
Define this macro if loading short immediate values into registers sign
10077
extends.
10078
@end defmac
10079
 
10080
@defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC
10081
Define this macro if the same instructions that convert a floating
10082
point number to a signed fixed point number also convert validly to an
10083
unsigned one.
10084
@end defmac
10085
 
10086
@deftypefn {Target Hook} {unsigned int} TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum machine_mode @var{mode})
10087
When @option{-ffast-math} is in effect, GCC tries to optimize
10088
divisions by the same divisor, by turning them into multiplications by
10089
the reciprocal.  This target hook specifies the minimum number of divisions
10090
that should be there for GCC to perform the optimization for a variable
10091
of mode @var{mode}.  The default implementation returns 3 if the machine
10092
has an instruction for the division, and 2 if it does not.
10093
@end deftypefn
10094
 
10095
@defmac MOVE_MAX
10096
The maximum number of bytes that a single instruction can move quickly
10097
between memory and registers or between two memory locations.
10098
@end defmac
10099
 
10100
@defmac MAX_MOVE_MAX
10101
The maximum number of bytes that a single instruction can move quickly
10102
between memory and registers or between two memory locations.  If this
10103
is undefined, the default is @code{MOVE_MAX}.  Otherwise, it is the
10104
constant value that is the largest value that @code{MOVE_MAX} can have
10105
at run-time.
10106
@end defmac
10107
 
10108
@defmac SHIFT_COUNT_TRUNCATED
10109
A C expression that is nonzero if on this machine the number of bits
10110
actually used for the count of a shift operation is equal to the number
10111
of bits needed to represent the size of the object being shifted.  When
10112
this macro is nonzero, the compiler will assume that it is safe to omit
10113
a sign-extend, zero-extend, and certain bitwise `and' instructions that
10114
truncates the count of a shift operation.  On machines that have
10115
instructions that act on bit-fields at variable positions, which may
10116
include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED}
10117
also enables deletion of truncations of the values that serve as
10118
arguments to bit-field instructions.
10119
 
10120
If both types of instructions truncate the count (for shifts) and
10121
position (for bit-field operations), or if no variable-position bit-field
10122
instructions exist, you should define this macro.
10123
 
10124
However, on some machines, such as the 80386 and the 680x0, truncation
10125
only applies to shift operations and not the (real or pretended)
10126
bit-field operations.  Define @code{SHIFT_COUNT_TRUNCATED} to be zero on
10127
such machines.  Instead, add patterns to the @file{md} file that include
10128
the implied truncation of the shift instructions.
10129
 
10130
You need not define this macro if it would always have the value of zero.
10131
@end defmac
10132
 
10133
@anchor{TARGET_SHIFT_TRUNCATION_MASK}
10134
@deftypefn {Target Hook} {unsigned HOST_WIDE_INT} TARGET_SHIFT_TRUNCATION_MASK (enum machine_mode @var{mode})
10135
This function describes how the standard shift patterns for @var{mode}
10136
deal with shifts by negative amounts or by more than the width of the mode.
10137
@xref{shift patterns}.
10138
 
10139
On many machines, the shift patterns will apply a mask @var{m} to the
10140
shift count, meaning that a fixed-width shift of @var{x} by @var{y} is
10141
equivalent to an arbitrary-width shift of @var{x} by @var{y & m}.  If
10142
this is true for mode @var{mode}, the function should return @var{m},
10143
otherwise it should return 0.  A return value of 0 indicates that no
10144
particular behavior is guaranteed.
10145
 
10146
Note that, unlike @code{SHIFT_COUNT_TRUNCATED}, this function does
10147
@emph{not} apply to general shift rtxes; it applies only to instructions
10148
that are generated by the named shift patterns.
10149
 
10150
The default implementation of this function returns
10151
@code{GET_MODE_BITSIZE (@var{mode}) - 1} if @code{SHIFT_COUNT_TRUNCATED}
10152
and 0 otherwise.  This definition is always safe, but if
10153
@code{SHIFT_COUNT_TRUNCATED} is false, and some shift patterns
10154
nevertheless truncate the shift count, you may get better code
10155
by overriding it.
10156
@end deftypefn
10157
 
10158
@defmac TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec})
10159
A C expression which is nonzero if on this machine it is safe to
10160
``convert'' an integer of @var{inprec} bits to one of @var{outprec}
10161
bits (where @var{outprec} is smaller than @var{inprec}) by merely
10162
operating on it as if it had only @var{outprec} bits.
10163
 
10164
On many machines, this expression can be 1.
10165
 
10166
@c rearranged this, removed the phrase "it is reported that".  this was
10167
@c to fix an overfull hbox.  --mew 10feb93
10168
When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for
10169
modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result.
10170
If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in
10171
such cases may improve things.
10172
@end defmac
10173
 
10174
@deftypefn {Target Hook} int TARGET_MODE_REP_EXTENDED (enum machine_mode @var{mode}, enum machine_mode @var{rep_mode})
10175
The representation of an integral mode can be such that the values
10176
are always extended to a wider integral mode.  Return
10177
@code{SIGN_EXTEND} if values of @var{mode} are represented in
10178
sign-extended form to @var{rep_mode}.  Return @code{UNKNOWN}
10179
otherwise.  (Currently, none of the targets use zero-extended
10180
representation this way so unlike @code{LOAD_EXTEND_OP},
10181
@code{TARGET_MODE_REP_EXTENDED} is expected to return either
10182
@code{SIGN_EXTEND} or @code{UNKNOWN}.  Also no target extends
10183
@var{mode} to @var{rep_mode} so that @var{rep_mode} is not the next
10184
widest integral mode and currently we take advantage of this fact.)
10185
 
10186
Similarly to @code{LOAD_EXTEND_OP} you may return a non-@code{UNKNOWN}
10187
value even if the extension is not performed on certain hard registers
10188
as long as for the @code{REGNO_REG_CLASS} of these hard registers
10189
@code{CANNOT_CHANGE_MODE_CLASS} returns nonzero.
10190
 
10191
Note that @code{TARGET_MODE_REP_EXTENDED} and @code{LOAD_EXTEND_OP}
10192
describe two related properties.  If you define
10193
@code{TARGET_MODE_REP_EXTENDED (mode, word_mode)} you probably also want
10194
to define @code{LOAD_EXTEND_OP (mode)} to return the same type of
10195
extension.
10196
 
10197
In order to enforce the representation of @code{mode},
10198
@code{TRULY_NOOP_TRUNCATION} should return false when truncating to
10199
@code{mode}.
10200
@end deftypefn
10201
 
10202
@defmac STORE_FLAG_VALUE
10203
A C expression describing the value returned by a comparison operator
10204
with an integral mode and stored by a store-flag instruction
10205
(@samp{s@var{cond}}) when the condition is true.  This description must
10206
apply to @emph{all} the @samp{s@var{cond}} patterns and all the
10207
comparison operators whose results have a @code{MODE_INT} mode.
10208
 
10209
A value of 1 or @minus{}1 means that the instruction implementing the
10210
comparison operator returns exactly 1 or @minus{}1 when the comparison is true
10211
and 0 when the comparison is false.  Otherwise, the value indicates
10212
which bits of the result are guaranteed to be 1 when the comparison is
10213
true.  This value is interpreted in the mode of the comparison
10214
operation, which is given by the mode of the first operand in the
10215
@samp{s@var{cond}} pattern.  Either the low bit or the sign bit of
10216
@code{STORE_FLAG_VALUE} be on.  Presently, only those bits are used by
10217
the compiler.
10218
 
10219
If @code{STORE_FLAG_VALUE} is neither 1 or @minus{}1, the compiler will
10220
generate code that depends only on the specified bits.  It can also
10221
replace comparison operators with equivalent operations if they cause
10222
the required bits to be set, even if the remaining bits are undefined.
10223
For example, on a machine whose comparison operators return an
10224
@code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as
10225
@samp{0x80000000}, saying that just the sign bit is relevant, the
10226
expression
10227
 
10228
@smallexample
10229
(ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0))
10230
@end smallexample
10231
 
10232
@noindent
10233
can be converted to
10234
 
10235
@smallexample
10236
(ashift:SI @var{x} (const_int @var{n}))
10237
@end smallexample
10238
 
10239
@noindent
10240
where @var{n} is the appropriate shift count to move the bit being
10241
tested into the sign bit.
10242
 
10243
There is no way to describe a machine that always sets the low-order bit
10244
for a true value, but does not guarantee the value of any other bits,
10245
but we do not know of any machine that has such an instruction.  If you
10246
are trying to port GCC to such a machine, include an instruction to
10247
perform a logical-and of the result with 1 in the pattern for the
10248
comparison operators and let us know at @email{gcc@@gcc.gnu.org}.
10249
 
10250
Often, a machine will have multiple instructions that obtain a value
10251
from a comparison (or the condition codes).  Here are rules to guide the
10252
choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions
10253
to be used:
10254
 
10255
@itemize @bullet
10256
@item
10257
Use the shortest sequence that yields a valid definition for
10258
@code{STORE_FLAG_VALUE}.  It is more efficient for the compiler to
10259
``normalize'' the value (convert it to, e.g., 1 or 0) than for the
10260
comparison operators to do so because there may be opportunities to
10261
combine the normalization with other operations.
10262
 
10263
@item
10264
For equal-length sequences, use a value of 1 or @minus{}1, with @minus{}1 being
10265
slightly preferred on machines with expensive jumps and 1 preferred on
10266
other machines.
10267
 
10268
@item
10269
As a second choice, choose a value of @samp{0x80000001} if instructions
10270
exist that set both the sign and low-order bits but do not define the
10271
others.
10272
 
10273
@item
10274
Otherwise, use a value of @samp{0x80000000}.
10275
@end itemize
10276
 
10277
Many machines can produce both the value chosen for
10278
@code{STORE_FLAG_VALUE} and its negation in the same number of
10279
instructions.  On those machines, you should also define a pattern for
10280
those cases, e.g., one matching
10281
 
10282
@smallexample
10283
(set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C})))
10284
@end smallexample
10285
 
10286
Some machines can also perform @code{and} or @code{plus} operations on
10287
condition code values with less instructions than the corresponding
10288
@samp{s@var{cond}} insn followed by @code{and} or @code{plus}.  On those
10289
machines, define the appropriate patterns.  Use the names @code{incscc}
10290
and @code{decscc}, respectively, for the patterns which perform
10291
@code{plus} or @code{minus} operations on condition code values.  See
10292
@file{rs6000.md} for some examples.  The GNU Superoptizer can be used to
10293
find such instruction sequences on other machines.
10294
 
10295
If this macro is not defined, the default value, 1, is used.  You need
10296
not define @code{STORE_FLAG_VALUE} if the machine has no store-flag
10297
instructions, or if the value generated by these instructions is 1.
10298
@end defmac
10299
 
10300
@defmac FLOAT_STORE_FLAG_VALUE (@var{mode})
10301
A C expression that gives a nonzero @code{REAL_VALUE_TYPE} value that is
10302
returned when comparison operators with floating-point results are true.
10303
Define this macro on machines that have comparison operations that return
10304
floating-point values.  If there are no such operations, do not define
10305
this macro.
10306
@end defmac
10307
 
10308
@defmac VECTOR_STORE_FLAG_VALUE (@var{mode})
10309
A C expression that gives a rtx representing the nonzero true element
10310
for vector comparisons.  The returned rtx should be valid for the inner
10311
mode of @var{mode} which is guaranteed to be a vector mode.  Define
10312
this macro on machines that have vector comparison operations that
10313
return a vector result.  If there are no such operations, do not define
10314
this macro.  Typically, this macro is defined as @code{const1_rtx} or
10315
@code{constm1_rtx}.  This macro may return @code{NULL_RTX} to prevent
10316
the compiler optimizing such vector comparison operations for the
10317
given mode.
10318
@end defmac
10319
 
10320
@defmac CLZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value})
10321
@defmacx CTZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value})
10322
A C expression that indicates whether the architecture defines a value
10323
for @code{clz} or @code{ctz} with a zero operand.
10324
A result of @code{0} indicates the value is undefined.
10325
If the value is defined for only the RTL expression, the macro should
10326
evaluate to @code{1}; if the value applies also to the corresponding optab
10327
entry (which is normally the case if it expands directly into
10328
the corresponding RTL), then the macro should evaluate to @code{2}.
10329
In the cases where the value is defined, @var{value} should be set to
10330
this value.
10331
 
10332
If this macro is not defined, the value of @code{clz} or
10333
@code{ctz} at zero is assumed to be undefined.
10334
 
10335
This macro must be defined if the target's expansion for @code{ffs}
10336
relies on a particular value to get correct results.  Otherwise it
10337
is not necessary, though it may be used to optimize some corner cases, and
10338
to provide a default expansion for the @code{ffs} optab.
10339
 
10340
Note that regardless of this macro the ``definedness'' of @code{clz}
10341
and @code{ctz} at zero do @emph{not} extend to the builtin functions
10342
visible to the user.  Thus one may be free to adjust the value at will
10343
to match the target expansion of these operations without fear of
10344
breaking the API@.
10345
@end defmac
10346
 
10347
@defmac Pmode
10348
An alias for the machine mode for pointers.  On most machines, define
10349
this to be the integer mode corresponding to the width of a hardware
10350
pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines.
10351
On some machines you must define this to be one of the partial integer
10352
modes, such as @code{PSImode}.
10353
 
10354
The width of @code{Pmode} must be at least as large as the value of
10355
@code{POINTER_SIZE}.  If it is not equal, you must define the macro
10356
@code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended
10357
to @code{Pmode}.
10358
@end defmac
10359
 
10360
@defmac FUNCTION_MODE
10361
An alias for the machine mode used for memory references to functions
10362
being called, in @code{call} RTL expressions.  On most CISC machines,
10363
where an instruction can begin at any byte address, this should be
10364
@code{QImode}.  On most RISC machines, where all instructions have fixed
10365
size and alignment, this should be a mode with the same size and alignment
10366
as the machine instruction words - typically @code{SImode} or @code{HImode}.
10367
@end defmac
10368
 
10369
@defmac STDC_0_IN_SYSTEM_HEADERS
10370
In normal operation, the preprocessor expands @code{__STDC__} to the
10371
constant 1, to signify that GCC conforms to ISO Standard C@.  On some
10372
hosts, like Solaris, the system compiler uses a different convention,
10373
where @code{__STDC__} is normally 0, but is 1 if the user specifies
10374
strict conformance to the C Standard.
10375
 
10376
Defining @code{STDC_0_IN_SYSTEM_HEADERS} makes GNU CPP follows the host
10377
convention when processing system header files, but when processing user
10378
files @code{__STDC__} will always expand to 1.
10379
@end defmac
10380
 
10381
@defmac NO_IMPLICIT_EXTERN_C
10382
Define this macro if the system header files support C++ as well as C@.
10383
This macro inhibits the usual method of using system header files in
10384
C++, which is to pretend that the file's contents are enclosed in
10385
@samp{extern "C" @{@dots{}@}}.
10386
@end defmac
10387
 
10388
@findex #pragma
10389
@findex pragma
10390
@defmac REGISTER_TARGET_PRAGMAS ()
10391
Define this macro if you want to implement any target-specific pragmas.
10392
If defined, it is a C expression which makes a series of calls to
10393
@code{c_register_pragma} or @code{c_register_pragma_with_expansion}
10394
for each pragma.  The macro may also do any
10395
setup required for the pragmas.
10396
 
10397
The primary reason to define this macro is to provide compatibility with
10398
other compilers for the same target.  In general, we discourage
10399
definition of target-specific pragmas for GCC@.
10400
 
10401
If the pragma can be implemented by attributes then you should consider
10402
defining the target hook @samp{TARGET_INSERT_ATTRIBUTES} as well.
10403
 
10404
Preprocessor macros that appear on pragma lines are not expanded.  All
10405
@samp{#pragma} directives that do not match any registered pragma are
10406
silently ignored, unless the user specifies @option{-Wunknown-pragmas}.
10407
@end defmac
10408
 
10409
@deftypefun void c_register_pragma (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *))
10410
@deftypefunx void c_register_pragma_with_expansion (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *))
10411
 
10412
Each call to @code{c_register_pragma} or
10413
@code{c_register_pragma_with_expansion} establishes one pragma.  The
10414
@var{callback} routine will be called when the preprocessor encounters a
10415
pragma of the form
10416
 
10417
@smallexample
10418
#pragma [@var{space}] @var{name} @dots{}
10419
@end smallexample
10420
 
10421
@var{space} is the case-sensitive namespace of the pragma, or
10422
@code{NULL} to put the pragma in the global namespace.  The callback
10423
routine receives @var{pfile} as its first argument, which can be passed
10424
on to cpplib's functions if necessary.  You can lex tokens after the
10425
@var{name} by calling @code{pragma_lex}.  Tokens that are not read by the
10426
callback will be silently ignored.  The end of the line is indicated by
10427
a token of type @code{CPP_EOF}.  Macro expansion occurs on the
10428
arguments of pragmas registered with
10429
@code{c_register_pragma_with_expansion} but not on the arguments of
10430
pragmas registered with @code{c_register_pragma}.
10431
 
10432
Note that the use of @code{pragma_lex} is specific to the C and C++
10433
compilers.  It will not work in the Java or Fortran compilers, or any
10434
other language compilers for that matter.  Thus if @code{pragma_lex} is going
10435
to be called from target-specific code, it must only be done so when
10436
building the C and C++ compilers.  This can be done by defining the
10437
variables @code{c_target_objs} and @code{cxx_target_objs} in the
10438
target entry in the @file{config.gcc} file.  These variables should name
10439
the target-specific, language-specific object file which contains the
10440
code that uses @code{pragma_lex}.  Note it will also be necessary to add a
10441
rule to the makefile fragment pointed to by @code{tmake_file} that shows
10442
how to build this object file.
10443
@end deftypefun
10444
 
10445
@findex #pragma
10446
@findex pragma
10447
@defmac HANDLE_SYSV_PRAGMA
10448
Define this macro (to a value of 1) if you want the System V style
10449
pragmas @samp{#pragma pack(<n>)} and @samp{#pragma weak <name>
10450
[=<value>]} to be supported by gcc.
10451
 
10452
The pack pragma specifies the maximum alignment (in bytes) of fields
10453
within a structure, in much the same way as the @samp{__aligned__} and
10454
@samp{__packed__} @code{__attribute__}s do.  A pack value of zero resets
10455
the behavior to the default.
10456
 
10457
A subtlety for Microsoft Visual C/C++ style bit-field packing
10458
(e.g.@: -mms-bitfields) for targets that support it:
10459
When a bit-field is inserted into a packed record, the whole size
10460
of the underlying type is used by one or more same-size adjacent
10461
bit-fields (that is, if its long:3, 32 bits is used in the record,
10462
and any additional adjacent long bit-fields are packed into the same
10463
chunk of 32 bits.  However, if the size changes, a new field of that
10464
size is allocated).
10465
 
10466
If both MS bit-fields and @samp{__attribute__((packed))} are used,
10467
the latter will take precedence.  If @samp{__attribute__((packed))} is
10468
used on a single field when MS bit-fields are in use, it will take
10469
precedence for that field, but the alignment of the rest of the structure
10470
may affect its placement.
10471
 
10472
The weak pragma only works if @code{SUPPORTS_WEAK} and
10473
@code{ASM_WEAKEN_LABEL} are defined.  If enabled it allows the creation
10474
of specifically named weak labels, optionally with a value.
10475
@end defmac
10476
 
10477
@findex #pragma
10478
@findex pragma
10479
@defmac HANDLE_PRAGMA_PACK_PUSH_POP
10480
Define this macro (to a value of 1) if you want to support the Win32
10481
style pragmas @samp{#pragma pack(push[,@var{n}])} and @samp{#pragma
10482
pack(pop)}.  The @samp{pack(push,[@var{n}])} pragma specifies the maximum
10483
alignment (in bytes) of fields within a structure, in much the same way as
10484
the @samp{__aligned__} and @samp{__packed__} @code{__attribute__}s do.  A
10485
pack value of zero resets the behavior to the default.  Successive
10486
invocations of this pragma cause the previous values to be stacked, so
10487
that invocations of @samp{#pragma pack(pop)} will return to the previous
10488
value.
10489
@end defmac
10490
 
10491
@defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION
10492
Define this macro, as well as
10493
@code{HANDLE_SYSV_PRAGMA}, if macros should be expanded in the
10494
arguments of @samp{#pragma pack}.
10495
@end defmac
10496
 
10497
@deftypevr {Target Hook} bool TARGET_HANDLE_PRAGMA_EXTERN_PREFIX
10498
True if @code{#pragma extern_prefix} is to be supported.
10499
@end deftypevr
10500
 
10501
@defmac TARGET_DEFAULT_PACK_STRUCT
10502
If your target requires a structure packing default other than 0 (meaning
10503
the machine default), define this macro to the necessary value (in bytes).
10504
This must be a value that would also be valid to use with
10505
@samp{#pragma pack()} (that is, a small power of two).
10506
@end defmac
10507
 
10508
@defmac DOLLARS_IN_IDENTIFIERS
10509
Define this macro to control use of the character @samp{$} in
10510
identifier names for the C family of languages.  0 means @samp{$} is
10511
not allowed by default; 1 means it is allowed.  1 is the default;
10512
there is no need to define this macro in that case.
10513
@end defmac
10514
 
10515
@defmac NO_DOLLAR_IN_LABEL
10516
Define this macro if the assembler does not accept the character
10517
@samp{$} in label names.  By default constructors and destructors in
10518
G++ have @samp{$} in the identifiers.  If this macro is defined,
10519
@samp{.} is used instead.
10520
@end defmac
10521
 
10522
@defmac NO_DOT_IN_LABEL
10523
Define this macro if the assembler does not accept the character
10524
@samp{.} in label names.  By default constructors and destructors in G++
10525
have names that use @samp{.}.  If this macro is defined, these names
10526
are rewritten to avoid @samp{.}.
10527
@end defmac
10528
 
10529
@defmac INSN_SETS_ARE_DELAYED (@var{insn})
10530
Define this macro as a C expression that is nonzero if it is safe for the
10531
delay slot scheduler to place instructions in the delay slot of @var{insn},
10532
even if they appear to use a resource set or clobbered in @var{insn}.
10533
@var{insn} is always a @code{jump_insn} or an @code{insn}; GCC knows that
10534
every @code{call_insn} has this behavior.  On machines where some @code{insn}
10535
or @code{jump_insn} is really a function call and hence has this behavior,
10536
you should define this macro.
10537
 
10538
You need not define this macro if it would always return zero.
10539
@end defmac
10540
 
10541
@defmac INSN_REFERENCES_ARE_DELAYED (@var{insn})
10542
Define this macro as a C expression that is nonzero if it is safe for the
10543
delay slot scheduler to place instructions in the delay slot of @var{insn},
10544
even if they appear to set or clobber a resource referenced in @var{insn}.
10545
@var{insn} is always a @code{jump_insn} or an @code{insn}.  On machines where
10546
some @code{insn} or @code{jump_insn} is really a function call and its operands
10547
are registers whose use is actually in the subroutine it calls, you should
10548
define this macro.  Doing so allows the delay slot scheduler to move
10549
instructions which copy arguments into the argument registers into the delay
10550
slot of @var{insn}.
10551
 
10552
You need not define this macro if it would always return zero.
10553
@end defmac
10554
 
10555
@defmac MULTIPLE_SYMBOL_SPACES
10556
Define this macro as a C expression that is nonzero if, in some cases,
10557
global symbols from one translation unit may not be bound to undefined
10558
symbols in another translation unit without user intervention.  For
10559
instance, under Microsoft Windows symbols must be explicitly imported
10560
from shared libraries (DLLs).
10561
 
10562
You need not define this macro if it would always evaluate to zero.
10563
@end defmac
10564
 
10565
@deftypefn {Target Hook} tree TARGET_MD_ASM_CLOBBERS (tree @var{outputs}, tree @var{inputs}, tree @var{clobbers})
10566
This target hook should add to @var{clobbers} @code{STRING_CST} trees for
10567
any hard regs the port wishes to automatically clobber for an asm.
10568
It should return the result of the last @code{tree_cons} used to add a
10569
clobber.  The @var{outputs}, @var{inputs} and @var{clobber} lists are the
10570
corresponding parameters to the asm and may be inspected to avoid
10571
clobbering a register that is an input or output of the asm.  You can use
10572
@code{tree_overlaps_hard_reg_set}, declared in @file{tree.h}, to test
10573
for overlap with regards to asm-declared registers.
10574
@end deftypefn
10575
 
10576
@defmac MATH_LIBRARY
10577
Define this macro as a C string constant for the linker argument to link
10578
in the system math library, or @samp{""} if the target does not have a
10579
separate math library.
10580
 
10581
You need only define this macro if the default of @samp{"-lm"} is wrong.
10582
@end defmac
10583
 
10584
@defmac LIBRARY_PATH_ENV
10585
Define this macro as a C string constant for the environment variable that
10586
specifies where the linker should look for libraries.
10587
 
10588
You need only define this macro if the default of @samp{"LIBRARY_PATH"}
10589
is wrong.
10590
@end defmac
10591
 
10592
@defmac TARGET_POSIX_IO
10593
Define this macro if the target supports the following POSIX@ file
10594
functions, access, mkdir and  file locking with fcntl / F_SETLKW@.
10595
Defining @code{TARGET_POSIX_IO} will enable the test coverage code
10596
to use file locking when exiting a program, which avoids race conditions
10597
if the program has forked. It will also create directories at run-time
10598
for cross-profiling.
10599
@end defmac
10600
 
10601
@defmac MAX_CONDITIONAL_EXECUTE
10602
 
10603
A C expression for the maximum number of instructions to execute via
10604
conditional execution instructions instead of a branch.  A value of
10605
@code{BRANCH_COST}+1 is the default if the machine does not use cc0, and
10606
1 if it does use cc0.
10607
@end defmac
10608
 
10609
@defmac IFCVT_MODIFY_TESTS (@var{ce_info}, @var{true_expr}, @var{false_expr})
10610
Used if the target needs to perform machine-dependent modifications on the
10611
conditionals used for turning basic blocks into conditionally executed code.
10612
@var{ce_info} points to a data structure, @code{struct ce_if_block}, which
10613
contains information about the currently processed blocks.  @var{true_expr}
10614
and @var{false_expr} are the tests that are used for converting the
10615
then-block and the else-block, respectively.  Set either @var{true_expr} or
10616
@var{false_expr} to a null pointer if the tests cannot be converted.
10617
@end defmac
10618
 
10619
@defmac IFCVT_MODIFY_MULTIPLE_TESTS (@var{ce_info}, @var{bb}, @var{true_expr}, @var{false_expr})
10620
Like @code{IFCVT_MODIFY_TESTS}, but used when converting more complicated
10621
if-statements into conditions combined by @code{and} and @code{or} operations.
10622
@var{bb} contains the basic block that contains the test that is currently
10623
being processed and about to be turned into a condition.
10624
@end defmac
10625
 
10626
@defmac IFCVT_MODIFY_INSN (@var{ce_info}, @var{pattern}, @var{insn})
10627
A C expression to modify the @var{PATTERN} of an @var{INSN} that is to
10628
be converted to conditional execution format.  @var{ce_info} points to
10629
a data structure, @code{struct ce_if_block}, which contains information
10630
about the currently processed blocks.
10631
@end defmac
10632
 
10633
@defmac IFCVT_MODIFY_FINAL (@var{ce_info})
10634
A C expression to perform any final machine dependent modifications in
10635
converting code to conditional execution.  The involved basic blocks
10636
can be found in the @code{struct ce_if_block} structure that is pointed
10637
to by @var{ce_info}.
10638
@end defmac
10639
 
10640
@defmac IFCVT_MODIFY_CANCEL (@var{ce_info})
10641
A C expression to cancel any machine dependent modifications in
10642
converting code to conditional execution.  The involved basic blocks
10643
can be found in the @code{struct ce_if_block} structure that is pointed
10644
to by @var{ce_info}.
10645
@end defmac
10646
 
10647
@defmac IFCVT_INIT_EXTRA_FIELDS (@var{ce_info})
10648
A C expression to initialize any extra fields in a @code{struct ce_if_block}
10649
structure, which are defined by the @code{IFCVT_EXTRA_FIELDS} macro.
10650
@end defmac
10651
 
10652
@defmac IFCVT_EXTRA_FIELDS
10653
If defined, it should expand to a set of field declarations that will be
10654
added to the @code{struct ce_if_block} structure.  These should be initialized
10655
by the @code{IFCVT_INIT_EXTRA_FIELDS} macro.
10656
@end defmac
10657
 
10658
@deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_REORG (void)
10659
If non-null, this hook performs a target-specific pass over the
10660
instruction stream.  The compiler will run it at all optimization levels,
10661
just before the point at which it normally does delayed-branch scheduling.
10662
 
10663
The exact purpose of the hook varies from target to target.  Some use
10664
it to do transformations that are necessary for correctness, such as
10665
laying out in-function constant pools or avoiding hardware hazards.
10666
Others use it as an opportunity to do some machine-dependent optimizations.
10667
 
10668
You need not implement the hook if it has nothing to do.  The default
10669
definition is null.
10670
@end deftypefn
10671
 
10672
@deftypefn {Target Hook} void TARGET_INIT_BUILTINS (void)
10673
Define this hook if you have any machine-specific built-in functions
10674
that need to be defined.  It should be a function that performs the
10675
necessary setup.
10676
 
10677
Machine specific built-in functions can be useful to expand special machine
10678
instructions that would otherwise not normally be generated because
10679
they have no equivalent in the source language (for example, SIMD vector
10680
instructions or prefetch instructions).
10681
 
10682
To create a built-in function, call the function
10683
@code{lang_hooks.builtin_function}
10684
which is defined by the language front end.  You can use any type nodes set
10685
up by @code{build_common_tree_nodes} and @code{build_common_tree_nodes_2};
10686
only language front ends that use those two functions will call
10687
@samp{TARGET_INIT_BUILTINS}.
10688
@end deftypefn
10689
 
10690
@deftypefn {Target Hook} tree TARGET_BUILTIN_DECL (unsigned @var{code}, bool @var{initialize_p})
10691
Define this hook if you have any machine-specific built-in functions
10692
that need to be defined.  It should be a function that returns the
10693
builtin function declaration for the builtin function code @var{code}.
10694
If there is no such builtin and it cannot be initialized at this time
10695
if @var{initialize_p} is true the function should return @code{NULL_TREE}.
10696
If @var{code} is out of range the function should return
10697
@code{error_mark_node}.
10698
@end deftypefn
10699
 
10700
@deftypefn {Target Hook} rtx TARGET_EXPAND_BUILTIN (tree @var{exp}, rtx @var{target}, rtx @var{subtarget}, enum machine_mode @var{mode}, int @var{ignore})
10701
 
10702
Expand a call to a machine specific built-in function that was set up by
10703
@samp{TARGET_INIT_BUILTINS}.  @var{exp} is the expression for the
10704
function call; the result should go to @var{target} if that is
10705
convenient, and have mode @var{mode} if that is convenient.
10706
@var{subtarget} may be used as the target for computing one of
10707
@var{exp}'s operands.  @var{ignore} is nonzero if the value is to be
10708
ignored.  This function should return the result of the call to the
10709
built-in function.
10710
@end deftypefn
10711
 
10712
@deftypefn {Target Hook} tree TARGET_RESOLVE_OVERLOADED_BUILTIN (unsigned int @var{loc}, tree @var{fndecl}, void *@var{arglist})
10713
 
10714
Select a replacement for a machine specific built-in function that
10715
was set up by @samp{TARGET_INIT_BUILTINS}.  This is done
10716
@emph{before} regular type checking, and so allows the target to
10717
implement a crude form of function overloading.  @var{fndecl} is the
10718
declaration of the built-in function.  @var{arglist} is the list of
10719
arguments passed to the built-in function.  The result is a
10720
complete expression that implements the operation, usually
10721
another @code{CALL_EXPR}.
10722
@var{arglist} really has type @samp{VEC(tree,gc)*}
10723
@end deftypefn
10724
 
10725
@deftypefn {Target Hook} tree TARGET_FOLD_BUILTIN (tree @var{fndecl}, tree @var{arglist}, bool @var{ignore})
10726
 
10727
Fold a call to a machine specific built-in function that was set up by
10728
@samp{TARGET_INIT_BUILTINS}.  @var{fndecl} is the declaration of the
10729
built-in function.  @var{arglist} is the list of arguments passed to
10730
the built-in function.  The result is another tree containing a
10731
simplified expression for the call's result.  If @var{ignore} is true
10732
the value will be ignored.
10733
@end deftypefn
10734
 
10735
@deftypefn {Target Hook} {const char *} TARGET_INVALID_WITHIN_DOLOOP (const_rtx @var{insn})
10736
 
10737
Take an instruction in @var{insn} and return NULL if it is valid within a
10738
low-overhead loop, otherwise return a string explaining why doloop
10739
could not be applied.
10740
 
10741
Many targets use special registers for low-overhead looping. For any
10742
instruction that clobbers these this function should return a string indicating
10743
the reason why the doloop could not be applied.
10744
By default, the RTL loop optimizer does not use a present doloop pattern for
10745
loops containing function calls or branch on table instructions.
10746
@end deftypefn
10747
 
10748
@defmac MD_CAN_REDIRECT_BRANCH (@var{branch1}, @var{branch2})
10749
 
10750
Take a branch insn in @var{branch1} and another in @var{branch2}.
10751
Return true if redirecting @var{branch1} to the destination of
10752
@var{branch2} is possible.
10753
 
10754
On some targets, branches may have a limited range.  Optimizing the
10755
filling of delay slots can result in branches being redirected, and this
10756
may in turn cause a branch offset to overflow.
10757
@end defmac
10758
 
10759
@deftypefn {Target Hook} bool TARGET_COMMUTATIVE_P (const_rtx @var{x}, int @var{outer_code})
10760
This target hook returns @code{true} if @var{x} is considered to be commutative.
10761
Usually, this is just COMMUTATIVE_P (@var{x}), but the HP PA doesn't consider
10762
PLUS to be commutative inside a MEM@.  @var{outer_code} is the rtx code
10763
of the enclosing rtl, if known, otherwise it is UNKNOWN.
10764
@end deftypefn
10765
 
10766
@deftypefn {Target Hook} rtx TARGET_ALLOCATE_INITIAL_VALUE (rtx @var{hard_reg})
10767
 
10768
When the initial value of a hard register has been copied in a pseudo
10769
register, it is often not necessary to actually allocate another register
10770
to this pseudo register, because the original hard register or a stack slot
10771
it has been saved into can be used.  @code{TARGET_ALLOCATE_INITIAL_VALUE}
10772
is called at the start of register allocation once for each hard register
10773
that had its initial value copied by using
10774
@code{get_func_hard_reg_initial_val} or @code{get_hard_reg_initial_val}.
10775
Possible values are @code{NULL_RTX}, if you don't want
10776
to do any special allocation, a @code{REG} rtx---that would typically be
10777
the hard register itself, if it is known not to be clobbered---or a
10778
@code{MEM}.
10779
If you are returning a @code{MEM}, this is only a hint for the allocator;
10780
it might decide to use another register anyways.
10781
You may use @code{current_function_leaf_function} in the hook, functions
10782
that use @code{REG_N_SETS}, to determine if the hard
10783
register in question will not be clobbered.
10784
The default value of this hook is @code{NULL}, which disables any special
10785
allocation.
10786
@end deftypefn
10787
 
10788
@deftypefn {Target Hook} int TARGET_UNSPEC_MAY_TRAP_P (const_rtx @var{x}, unsigned @var{flags})
10789
This target hook returns nonzero if @var{x}, an @code{unspec} or
10790
@code{unspec_volatile} operation, might cause a trap.  Targets can use
10791
this hook to enhance precision of analysis for @code{unspec} and
10792
@code{unspec_volatile} operations.  You may call @code{may_trap_p_1}
10793
to analyze inner elements of @var{x} in which case @var{flags} should be
10794
passed along.
10795
@end deftypefn
10796
 
10797
@deftypefn {Target Hook} void TARGET_SET_CURRENT_FUNCTION (tree @var{decl})
10798
The compiler invokes this hook whenever it changes its current function
10799
context (@code{cfun}).  You can define this function if
10800
the back end needs to perform any initialization or reset actions on a
10801
per-function basis.  For example, it may be used to implement function
10802
attributes that affect register usage or code generation patterns.
10803
The argument @var{decl} is the declaration for the new function context,
10804
and may be null to indicate that the compiler has left a function context
10805
and is returning to processing at the top level.
10806
The default hook function does nothing.
10807
 
10808
GCC sets @code{cfun} to a dummy function context during initialization of
10809
some parts of the back end.  The hook function is not invoked in this
10810
situation; you need not worry about the hook being invoked recursively,
10811
or when the back end is in a partially-initialized state.
10812
@code{cfun} might be @code{NULL} to indicate processing at top level,
10813
outside of any function scope.
10814
@end deftypefn
10815
 
10816
@defmac TARGET_OBJECT_SUFFIX
10817
Define this macro to be a C string representing the suffix for object
10818
files on your target machine.  If you do not define this macro, GCC will
10819
use @samp{.o} as the suffix for object files.
10820
@end defmac
10821
 
10822
@defmac TARGET_EXECUTABLE_SUFFIX
10823
Define this macro to be a C string representing the suffix to be
10824
automatically added to executable files on your target machine.  If you
10825
do not define this macro, GCC will use the null string as the suffix for
10826
executable files.
10827
@end defmac
10828
 
10829
@defmac COLLECT_EXPORT_LIST
10830
If defined, @code{collect2} will scan the individual object files
10831
specified on its command line and create an export list for the linker.
10832
Define this macro for systems like AIX, where the linker discards
10833
object files that are not referenced from @code{main} and uses export
10834
lists.
10835
@end defmac
10836
 
10837
@defmac MODIFY_JNI_METHOD_CALL (@var{mdecl})
10838
Define this macro to a C expression representing a variant of the
10839
method call @var{mdecl}, if Java Native Interface (JNI) methods
10840
must be invoked differently from other methods on your target.
10841
For example, on 32-bit Microsoft Windows, JNI methods must be invoked using
10842
the @code{stdcall} calling convention and this macro is then
10843
defined as this expression:
10844
 
10845
@smallexample
10846
build_type_attribute_variant (@var{mdecl},
10847
                              build_tree_list
10848
                              (get_identifier ("stdcall"),
10849
                               NULL))
10850
@end smallexample
10851
@end defmac
10852
 
10853
@deftypefn {Target Hook} bool TARGET_CANNOT_MODIFY_JUMPS_P (void)
10854
This target hook returns @code{true} past the point in which new jump
10855
instructions could be created.  On machines that require a register for
10856
every jump such as the SHmedia ISA of SH5, this point would typically be
10857
reload, so this target hook should be defined to a function such as:
10858
 
10859
@smallexample
10860
static bool
10861
cannot_modify_jumps_past_reload_p ()
10862
@{
10863
  return (reload_completed || reload_in_progress);
10864
@}
10865
@end smallexample
10866
@end deftypefn
10867
 
10868
@deftypefn {Target Hook} {enum reg_class} TARGET_BRANCH_TARGET_REGISTER_CLASS (void)
10869
This target hook returns a register class for which branch target register
10870
optimizations should be applied.  All registers in this class should be
10871
usable interchangeably.  After reload, registers in this class will be
10872
re-allocated and loads will be hoisted out of loops and be subjected
10873
to inter-block scheduling.
10874
@end deftypefn
10875
 
10876
@deftypefn {Target Hook} bool TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED (bool @var{after_prologue_epilogue_gen})
10877
Branch target register optimization will by default exclude callee-saved
10878
registers
10879
that are not already live during the current function; if this target hook
10880
returns true, they will be included.  The target code must than make sure
10881
that all target registers in the class returned by
10882
@samp{TARGET_BRANCH_TARGET_REGISTER_CLASS} that might need saving are
10883
saved.  @var{after_prologue_epilogue_gen} indicates if prologues and
10884
epilogues have already been generated.  Note, even if you only return
10885
true when @var{after_prologue_epilogue_gen} is false, you still are likely
10886
to have to make special provisions in @code{INITIAL_ELIMINATION_OFFSET}
10887
to reserve space for caller-saved target registers.
10888
@end deftypefn
10889
 
10890
@deftypefn {Target Hook} bool TARGET_HAVE_CONDITIONAL_EXECUTION (void)
10891
This target hook returns true if the target supports conditional execution.
10892
This target hook is required only when the target has several different
10893
modes and they have different conditional execution capability, such as ARM.
10894
@end deftypefn
10895
 
10896
@defmac POWI_MAX_MULTS
10897
If defined, this macro is interpreted as a signed integer C expression
10898
that specifies the maximum number of floating point multiplications
10899
that should be emitted when expanding exponentiation by an integer
10900
constant inline.  When this value is defined, exponentiation requiring
10901
more than this number of multiplications is implemented by calling the
10902
system library's @code{pow}, @code{powf} or @code{powl} routines.
10903
The default value places no upper bound on the multiplication count.
10904
@end defmac
10905
 
10906
@deftypefn Macro void TARGET_EXTRA_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc})
10907
This target hook should register any extra include files for the
10908
target.  The parameter @var{stdinc} indicates if normal include files
10909
are present.  The parameter @var{sysroot} is the system root directory.
10910
The parameter @var{iprefix} is the prefix for the gcc directory.
10911
@end deftypefn
10912
 
10913
@deftypefn Macro void TARGET_EXTRA_PRE_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc})
10914
This target hook should register any extra include files for the
10915
target before any standard headers.  The parameter @var{stdinc}
10916
indicates if normal include files are present.  The parameter
10917
@var{sysroot} is the system root directory.  The parameter
10918
@var{iprefix} is the prefix for the gcc directory.
10919
@end deftypefn
10920
 
10921
@deftypefn Macro void TARGET_OPTF (char *@var{path})
10922
This target hook should register special include paths for the target.
10923
The parameter @var{path} is the include to register.  On Darwin
10924
systems, this is used for Framework includes, which have semantics
10925
that are different from @option{-I}.
10926
@end deftypefn
10927
 
10928
@defmac bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl})
10929
This target macro returns @code{true} if it is safe to use a local alias
10930
for a virtual function @var{fndecl} when constructing thunks,
10931
@code{false} otherwise.  By default, the macro returns @code{true} for all
10932
functions, if a target supports aliases (i.e.@: defines
10933
@code{ASM_OUTPUT_DEF}), @code{false} otherwise,
10934
@end defmac
10935
 
10936
@defmac TARGET_FORMAT_TYPES
10937
If defined, this macro is the name of a global variable containing
10938
target-specific format checking information for the @option{-Wformat}
10939
option.  The default is to have no target-specific format checks.
10940
@end defmac
10941
 
10942
@defmac TARGET_N_FORMAT_TYPES
10943
If defined, this macro is the number of entries in
10944
@code{TARGET_FORMAT_TYPES}.
10945
@end defmac
10946
 
10947
@defmac TARGET_OVERRIDES_FORMAT_ATTRIBUTES
10948
If defined, this macro is the name of a global variable containing
10949
target-specific format overrides for the @option{-Wformat} option. The
10950
default is to have no target-specific format overrides. If defined,
10951
@code{TARGET_FORMAT_TYPES} must be defined, too.
10952
@end defmac
10953
 
10954
@defmac TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT
10955
If defined, this macro specifies the number of entries in
10956
@code{TARGET_OVERRIDES_FORMAT_ATTRIBUTES}.
10957
@end defmac
10958
 
10959
@defmac TARGET_OVERRIDES_FORMAT_INIT
10960
If defined, this macro specifies the optional initialization
10961
routine for target specific customizations of the system printf
10962
and scanf formatter settings.
10963
@end defmac
10964
 
10965
@deftypevr {Target Hook} bool TARGET_RELAXED_ORDERING
10966
If set to @code{true}, means that the target's memory model does not
10967
guarantee that loads which do not depend on one another will access
10968
main memory in the order of the instruction stream; if ordering is
10969
important, an explicit memory barrier must be used.  This is true of
10970
many recent processors which implement a policy of ``relaxed,''
10971
``weak,'' or ``release'' memory consistency, such as Alpha, PowerPC,
10972
and ia64.  The default is @code{false}.
10973
@end deftypevr
10974
 
10975
@deftypefn {Target Hook} {const char *} TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN (const_tree @var{typelist}, const_tree @var{funcdecl}, const_tree @var{val})
10976
If defined, this macro returns the diagnostic message when it is
10977
illegal to pass argument @var{val} to function @var{funcdecl}
10978
with prototype @var{typelist}.
10979
@end deftypefn
10980
 
10981
@deftypefn {Target Hook} {const char *} TARGET_INVALID_CONVERSION (const_tree @var{fromtype}, const_tree @var{totype})
10982
If defined, this macro returns the diagnostic message when it is
10983
invalid to convert from @var{fromtype} to @var{totype}, or @code{NULL}
10984
if validity should be determined by the front end.
10985
@end deftypefn
10986
 
10987
@deftypefn {Target Hook} {const char *} TARGET_INVALID_UNARY_OP (int @var{op}, const_tree @var{type})
10988
If defined, this macro returns the diagnostic message when it is
10989
invalid to apply operation @var{op} (where unary plus is denoted by
10990
@code{CONVERT_EXPR}) to an operand of type @var{type}, or @code{NULL}
10991
if validity should be determined by the front end.
10992
@end deftypefn
10993
 
10994
@deftypefn {Target Hook} {const char *} TARGET_INVALID_BINARY_OP (int @var{op}, const_tree @var{type1}, const_tree @var{type2})
10995
If defined, this macro returns the diagnostic message when it is
10996
invalid to apply operation @var{op} to operands of types @var{type1}
10997
and @var{type2}, or @code{NULL} if validity should be determined by
10998
the front end.
10999
@end deftypefn
11000
 
11001
@deftypefn {Target Hook} {const char *} TARGET_INVALID_PARAMETER_TYPE (const_tree @var{type})
11002
If defined, this macro returns the diagnostic message when it is
11003
invalid for functions to include parameters of type @var{type},
11004
or @code{NULL} if validity should be determined by
11005
the front end.  This is currently used only by the C and C++ front ends.
11006
@end deftypefn
11007
 
11008
@deftypefn {Target Hook} {const char *} TARGET_INVALID_RETURN_TYPE (const_tree @var{type})
11009
If defined, this macro returns the diagnostic message when it is
11010
invalid for functions to have return type @var{type},
11011
or @code{NULL} if validity should be determined by
11012
the front end.  This is currently used only by the C and C++ front ends.
11013
@end deftypefn
11014
 
11015
@deftypefn {Target Hook} tree TARGET_PROMOTED_TYPE (const_tree @var{type})
11016
If defined, this target hook returns the type to which values of
11017
@var{type} should be promoted when they appear in expressions,
11018
analogous to the integer promotions, or @code{NULL_TREE} to use the
11019
front end's normal promotion rules.  This hook is useful when there are
11020
target-specific types with special promotion rules.
11021
This is currently used only by the C and C++ front ends.
11022
@end deftypefn
11023
 
11024
@deftypefn {Target Hook} tree TARGET_CONVERT_TO_TYPE (tree @var{type}, tree @var{expr})
11025
If defined, this hook returns the result of converting @var{expr} to
11026
@var{type}.  It should return the converted expression,
11027
or @code{NULL_TREE} to apply the front end's normal conversion rules.
11028
This hook is useful when there are target-specific types with special
11029
conversion rules.
11030
This is currently used only by the C and C++ front ends.
11031
@end deftypefn
11032
 
11033
@defmac TARGET_USE_JCR_SECTION
11034
This macro determines whether to use the JCR section to register Java
11035
classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both
11036
SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0.
11037
@end defmac
11038
 
11039
@defmac OBJC_JBLEN
11040
This macro determines the size of the objective C jump buffer for the
11041
NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value.
11042
@end defmac
11043
 
11044
@defmac LIBGCC2_UNWIND_ATTRIBUTE
11045
Define this macro if any target-specific attributes need to be attached
11046
to the functions in @file{libgcc} that provide low-level support for
11047
call stack unwinding.  It is used in declarations in @file{unwind-generic.h}
11048
and the associated definitions of those functions.
11049
@end defmac
11050
 
11051
@deftypefn {Target Hook} void TARGET_UPDATE_STACK_BOUNDARY (void)
11052
Define this macro to update the current function stack boundary if
11053
necessary.
11054
@end deftypefn
11055
 
11056
@deftypefn {Target Hook} rtx TARGET_GET_DRAP_RTX (void)
11057
This hook should return an rtx for Dynamic Realign Argument Pointer (DRAP) if a
11058
different argument pointer register is needed to access the function's
11059
argument list due to stack realignment.  Return @code{NULL} if no DRAP
11060
is needed.
11061
@end deftypefn
11062
 
11063
@deftypefn {Target Hook} bool TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS (void)
11064
When optimization is disabled, this hook indicates whether or not
11065
arguments should be allocated to stack slots.  Normally, GCC allocates
11066
stacks slots for arguments when not optimizing in order to make
11067
debugging easier.  However, when a function is declared with
11068
@code{__attribute__((naked))}, there is no stack frame, and the compiler
11069
cannot safely move arguments from the registers in which they are passed
11070
to the stack.  Therefore, this hook should return true in general, but
11071
false for naked functions.  The default implementation always returns true.
11072
@end deftypefn
11073
 
11074
@deftypevr {Target Hook} {unsigned HOST_WIDE_INT} TARGET_CONST_ANCHOR
11075
On some architectures it can take multiple instructions to synthesize
11076
a constant.  If there is another constant already in a register that
11077
is close enough in value then it is preferable that the new constant
11078
is computed from this register using immediate addition or
11079
subtraction.  We accomplish this through CSE.  Besides the value of
11080
the constant we also add a lower and an upper constant anchor to the
11081
available expressions.  These are then queried when encountering new
11082
constants.  The anchors are computed by rounding the constant up and
11083
down to a multiple of the value of @code{TARGET_CONST_ANCHOR}.
11084
@code{TARGET_CONST_ANCHOR} should be the maximum positive value
11085
accepted by immediate-add plus one.  We currently assume that the
11086
value of @code{TARGET_CONST_ANCHOR} is a power of 2.  For example, on
11087
MIPS, where add-immediate takes a 16-bit signed value,
11088
@code{TARGET_CONST_ANCHOR} is set to @samp{0x8000}.  The default value
11089
is zero, which disables this optimization.  @end deftypevr

powered by: WebSVN 2.1.0

© copyright 1999-2024 OpenCores.org, equivalent to Oliscience, all rights reserved. OpenCores®, registered trademark.