1@c Copyright (C) 1988-2013 Free Software Foundation, Inc. 2@c This is part of the GCC manual. 3@c For copying conditions, see the file gcc.texi. 4 5@node Target Macros 6@chapter Target Description Macros and Functions 7@cindex machine description macros 8@cindex target description macros 9@cindex macros, target description 10@cindex @file{tm.h} macros 11 12In addition to the file @file{@var{machine}.md}, a machine description 13includes a C header file conventionally given the name 14@file{@var{machine}.h} and a C source file named @file{@var{machine}.c}. 15The header file defines numerous macros that convey the information 16about the target machine that does not fit into the scheme of the 17@file{.md} file. The file @file{tm.h} should be a link to 18@file{@var{machine}.h}. The header file @file{config.h} includes 19@file{tm.h} and most compiler source files include @file{config.h}. The 20source file defines a variable @code{targetm}, which is a structure 21containing pointers to functions and data relating to the target 22machine. @file{@var{machine}.c} should also contain their definitions, 23if they are not defined elsewhere in GCC, and other functions called 24through the macros defined in the @file{.h} file. 25 26@menu 27* Target Structure:: The @code{targetm} variable. 28* Driver:: Controlling how the driver runs the compilation passes. 29* Run-time Target:: Defining @samp{-m} options like @option{-m68000} and @option{-m68020}. 30* Per-Function Data:: Defining data structures for per-function information. 31* Storage Layout:: Defining sizes and alignments of data. 32* Type Layout:: Defining sizes and properties of basic user data types. 33* Registers:: Naming and describing the hardware registers. 34* Register Classes:: Defining the classes of hardware registers. 35* Old Constraints:: The old way to define machine-specific constraints. 36* Stack and Calling:: Defining which way the stack grows and by how much. 37* Varargs:: Defining the varargs macros. 38* Trampolines:: Code set up at run time to enter a nested function. 39* Library Calls:: Controlling how library routines are implicitly called. 40* Addressing Modes:: Defining addressing modes valid for memory operands. 41* Anchored Addresses:: Defining how @option{-fsection-anchors} should work. 42* Condition Code:: Defining how insns update the condition code. 43* Costs:: Defining relative costs of different operations. 44* Scheduling:: Adjusting the behavior of the instruction scheduler. 45* Sections:: Dividing storage into text, data, and other sections. 46* PIC:: Macros for position independent code. 47* Assembler Format:: Defining how to write insns and pseudo-ops to output. 48* Debugging Info:: Defining the format of debugging output. 49* Floating Point:: Handling floating point for cross-compilers. 50* Mode Switching:: Insertion of mode-switching instructions. 51* Target Attributes:: Defining target-specific uses of @code{__attribute__}. 52* Emulated TLS:: Emulated TLS support. 53* MIPS Coprocessors:: MIPS coprocessor support and how to customize it. 54* PCH Target:: Validity checking for precompiled headers. 55* C++ ABI:: Controlling C++ ABI changes. 56* Named Address Spaces:: Adding support for named address spaces 57* Misc:: Everything else. 58@end menu 59 60@node Target Structure 61@section The Global @code{targetm} Variable 62@cindex target hooks 63@cindex target functions 64 65@deftypevar {struct gcc_target} targetm 66The target @file{.c} file must define the global @code{targetm} variable 67which contains pointers to functions and data relating to the target 68machine. The variable is declared in @file{target.h}; 69@file{target-def.h} defines the macro @code{TARGET_INITIALIZER} which is 70used to initialize the variable, and macros for the default initializers 71for elements of the structure. The @file{.c} file should override those 72macros for which the default definition is inappropriate. For example: 73@smallexample 74#include "target.h" 75#include "target-def.h" 76 77/* @r{Initialize the GCC target structure.} */ 78 79#undef TARGET_COMP_TYPE_ATTRIBUTES 80#define TARGET_COMP_TYPE_ATTRIBUTES @var{machine}_comp_type_attributes 81 82struct gcc_target targetm = TARGET_INITIALIZER; 83@end smallexample 84@end deftypevar 85 86Where a macro should be defined in the @file{.c} file in this manner to 87form part of the @code{targetm} structure, it is documented below as a 88``Target Hook'' with a prototype. Many macros will change in future 89from being defined in the @file{.h} file to being part of the 90@code{targetm} structure. 91 92Similarly, there is a @code{targetcm} variable for hooks that are 93specific to front ends for C-family languages, documented as ``C 94Target Hook''. This is declared in @file{c-family/c-target.h}, the 95initializer @code{TARGETCM_INITIALIZER} in 96@file{c-family/c-target-def.h}. If targets initialize @code{targetcm} 97themselves, they should set @code{target_has_targetcm=yes} in 98@file{config.gcc}; otherwise a default definition is used. 99 100Similarly, there is a @code{targetm_common} variable for hooks that 101are shared between the compiler driver and the compilers proper, 102documented as ``Common Target Hook''. This is declared in 103@file{common/common-target.h}, the initializer 104@code{TARGETM_COMMON_INITIALIZER} in 105@file{common/common-target-def.h}. If targets initialize 106@code{targetm_common} themselves, they should set 107@code{target_has_targetm_common=yes} in @file{config.gcc}; otherwise a 108default definition is used. 109 110@node Driver 111@section Controlling the Compilation Driver, @file{gcc} 112@cindex driver 113@cindex controlling the compilation driver 114 115@c prevent bad page break with this line 116You can control the compilation driver. 117 118@defmac DRIVER_SELF_SPECS 119A list of specs for the driver itself. It should be a suitable 120initializer for an array of strings, with no surrounding braces. 121 122The driver applies these specs to its own command line between loading 123default @file{specs} files (but not command-line specified ones) and 124choosing the multilib directory or running any subcommands. It 125applies them in the order given, so each spec can depend on the 126options added by earlier ones. It is also possible to remove options 127using @samp{%<@var{option}} in the usual way. 128 129This macro can be useful when a port has several interdependent target 130options. It provides a way of standardizing the command line so 131that the other specs are easier to write. 132 133Do not define this macro if it does not need to do anything. 134@end defmac 135 136@defmac OPTION_DEFAULT_SPECS 137A list of specs used to support configure-time default options (i.e.@: 138@option{--with} options) in the driver. It should be a suitable initializer 139for an array of structures, each containing two strings, without the 140outermost pair of surrounding braces. 141 142The first item in the pair is the name of the default. This must match 143the code in @file{config.gcc} for the target. The second item is a spec 144to apply if a default with this name was specified. The string 145@samp{%(VALUE)} in the spec will be replaced by the value of the default 146everywhere it occurs. 147 148The driver will apply these specs to its own command line between loading 149default @file{specs} files and processing @code{DRIVER_SELF_SPECS}, using 150the same mechanism as @code{DRIVER_SELF_SPECS}. 151 152Do not define this macro if it does not need to do anything. 153@end defmac 154 155@defmac CPP_SPEC 156A C string constant that tells the GCC driver program options to 157pass to CPP@. It can also specify how to translate options you 158give to GCC into options for GCC to pass to the CPP@. 159 160Do not define this macro if it does not need to do anything. 161@end defmac 162 163@defmac CPLUSPLUS_CPP_SPEC 164This macro is just like @code{CPP_SPEC}, but is used for C++, rather 165than C@. If you do not define this macro, then the value of 166@code{CPP_SPEC} (if any) will be used instead. 167@end defmac 168 169@defmac CC1_SPEC 170A C string constant that tells the GCC driver program options to 171pass to @code{cc1}, @code{cc1plus}, @code{f771}, and the other language 172front ends. 173It can also specify how to translate options you give to GCC into options 174for GCC to pass to front ends. 175 176Do not define this macro if it does not need to do anything. 177@end defmac 178 179@defmac CC1PLUS_SPEC 180A C string constant that tells the GCC driver program options to 181pass to @code{cc1plus}. It can also specify how to translate options you 182give to GCC into options for GCC to pass to the @code{cc1plus}. 183 184Do not define this macro if it does not need to do anything. 185Note that everything defined in CC1_SPEC is already passed to 186@code{cc1plus} so there is no need to duplicate the contents of 187CC1_SPEC in CC1PLUS_SPEC@. 188@end defmac 189 190@defmac ASM_SPEC 191A C string constant that tells the GCC driver program options to 192pass to the assembler. It can also specify how to translate options 193you give to GCC into options for GCC to pass to the assembler. 194See the file @file{sun3.h} for an example of this. 195 196Do not define this macro if it does not need to do anything. 197@end defmac 198 199@defmac ASM_FINAL_SPEC 200A C string constant that tells the GCC driver program how to 201run any programs which cleanup after the normal assembler. 202Normally, this is not needed. See the file @file{mips.h} for 203an example of this. 204 205Do not define this macro if it does not need to do anything. 206@end defmac 207 208@defmac AS_NEEDS_DASH_FOR_PIPED_INPUT 209Define this macro, with no value, if the driver should give the assembler 210an argument consisting of a single dash, @option{-}, to instruct it to 211read from its standard input (which will be a pipe connected to the 212output of the compiler proper). This argument is given after any 213@option{-o} option specifying the name of the output file. 214 215If you do not define this macro, the assembler is assumed to read its 216standard input if given no non-option arguments. If your assembler 217cannot read standard input at all, use a @samp{%@{pipe:%e@}} construct; 218see @file{mips.h} for instance. 219@end defmac 220 221@defmac LINK_SPEC 222A C string constant that tells the GCC driver program options to 223pass to the linker. It can also specify how to translate options you 224give to GCC into options for GCC to pass to the linker. 225 226Do not define this macro if it does not need to do anything. 227@end defmac 228 229@defmac LIB_SPEC 230Another C string constant used much like @code{LINK_SPEC}. The difference 231between the two is that @code{LIB_SPEC} is used at the end of the 232command given to the linker. 233 234If this macro is not defined, a default is provided that 235loads the standard C library from the usual place. See @file{gcc.c}. 236@end defmac 237 238@defmac LIBGCC_SPEC 239Another C string constant that tells the GCC driver program 240how and when to place a reference to @file{libgcc.a} into the 241linker command line. This constant is placed both before and after 242the value of @code{LIB_SPEC}. 243 244If this macro is not defined, the GCC driver provides a default that 245passes the string @option{-lgcc} to the linker. 246@end defmac 247 248@defmac REAL_LIBGCC_SPEC 249By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the 250@code{LIBGCC_SPEC} is not directly used by the driver program but is 251instead modified to refer to different versions of @file{libgcc.a} 252depending on the values of the command line flags @option{-static}, 253@option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}. On 254targets where these modifications are inappropriate, define 255@code{REAL_LIBGCC_SPEC} instead. @code{REAL_LIBGCC_SPEC} tells the 256driver how to place a reference to @file{libgcc} on the link command 257line, but, unlike @code{LIBGCC_SPEC}, it is used unmodified. 258@end defmac 259 260@defmac USE_LD_AS_NEEDED 261A macro that controls the modifications to @code{LIBGCC_SPEC} 262mentioned in @code{REAL_LIBGCC_SPEC}. If nonzero, a spec will be 263generated that uses --as-needed and the shared libgcc in place of the 264static exception handler library, when linking without any of 265@code{-static}, @code{-static-libgcc}, or @code{-shared-libgcc}. 266@end defmac 267 268@defmac LINK_EH_SPEC 269If defined, this C string constant is added to @code{LINK_SPEC}. 270When @code{USE_LD_AS_NEEDED} is zero or undefined, it also affects 271the modifications to @code{LIBGCC_SPEC} mentioned in 272@code{REAL_LIBGCC_SPEC}. 273@end defmac 274 275@defmac STARTFILE_SPEC 276Another C string constant used much like @code{LINK_SPEC}. The 277difference between the two is that @code{STARTFILE_SPEC} is used at 278the very beginning of the command given to the linker. 279 280If this macro is not defined, a default is provided that loads the 281standard C startup file from the usual place. See @file{gcc.c}. 282@end defmac 283 284@defmac ENDFILE_SPEC 285Another C string constant used much like @code{LINK_SPEC}. The 286difference between the two is that @code{ENDFILE_SPEC} is used at 287the very end of the command given to the linker. 288 289Do not define this macro if it does not need to do anything. 290@end defmac 291 292@defmac THREAD_MODEL_SPEC 293GCC @code{-v} will print the thread model GCC was configured to use. 294However, this doesn't work on platforms that are multilibbed on thread 295models, such as AIX 4.3. On such platforms, define 296@code{THREAD_MODEL_SPEC} such that it evaluates to a string without 297blanks that names one of the recognized thread models. @code{%*}, the 298default value of this macro, will expand to the value of 299@code{thread_file} set in @file{config.gcc}. 300@end defmac 301 302@defmac SYSROOT_SUFFIX_SPEC 303Define this macro to add a suffix to the target sysroot when GCC is 304configured with a sysroot. This will cause GCC to search for usr/lib, 305et al, within sysroot+suffix. 306@end defmac 307 308@defmac SYSROOT_HEADERS_SUFFIX_SPEC 309Define this macro to add a headers_suffix to the target sysroot when 310GCC is configured with a sysroot. This will cause GCC to pass the 311updated sysroot+headers_suffix to CPP, causing it to search for 312usr/include, et al, within sysroot+headers_suffix. 313@end defmac 314 315@defmac EXTRA_SPECS 316Define this macro to provide additional specifications to put in the 317@file{specs} file that can be used in various specifications like 318@code{CC1_SPEC}. 319 320The definition should be an initializer for an array of structures, 321containing a string constant, that defines the specification name, and a 322string constant that provides the specification. 323 324Do not define this macro if it does not need to do anything. 325 326@code{EXTRA_SPECS} is useful when an architecture contains several 327related targets, which have various @code{@dots{}_SPECS} which are similar 328to each other, and the maintainer would like one central place to keep 329these definitions. 330 331For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to 332define either @code{_CALL_SYSV} when the System V calling sequence is 333used or @code{_CALL_AIX} when the older AIX-based calling sequence is 334used. 335 336The @file{config/rs6000/rs6000.h} target file defines: 337 338@smallexample 339#define EXTRA_SPECS \ 340 @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @}, 341 342#define CPP_SYS_DEFAULT "" 343@end smallexample 344 345The @file{config/rs6000/sysv.h} target file defines: 346@smallexample 347#undef CPP_SPEC 348#define CPP_SPEC \ 349"%@{posix: -D_POSIX_SOURCE @} \ 350%@{mcall-sysv: -D_CALL_SYSV @} \ 351%@{!mcall-sysv: %(cpp_sysv_default) @} \ 352%@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}" 353 354#undef CPP_SYSV_DEFAULT 355#define CPP_SYSV_DEFAULT "-D_CALL_SYSV" 356@end smallexample 357 358while the @file{config/rs6000/eabiaix.h} target file defines 359@code{CPP_SYSV_DEFAULT} as: 360 361@smallexample 362#undef CPP_SYSV_DEFAULT 363#define CPP_SYSV_DEFAULT "-D_CALL_AIX" 364@end smallexample 365@end defmac 366 367@defmac LINK_LIBGCC_SPECIAL_1 368Define this macro if the driver program should find the library 369@file{libgcc.a}. If you do not define this macro, the driver program will pass 370the argument @option{-lgcc} to tell the linker to do the search. 371@end defmac 372 373@defmac LINK_GCC_C_SEQUENCE_SPEC 374The sequence in which libgcc and libc are specified to the linker. 375By default this is @code{%G %L %G}. 376@end defmac 377 378@defmac LINK_COMMAND_SPEC 379A C string constant giving the complete command line need to execute the 380linker. When you do this, you will need to update your port each time a 381change is made to the link command line within @file{gcc.c}. Therefore, 382define this macro only if you need to completely redefine the command 383line for invoking the linker and there is no other way to accomplish 384the effect you need. Overriding this macro may be avoidable by overriding 385@code{LINK_GCC_C_SEQUENCE_SPEC} instead. 386@end defmac 387 388@hook TARGET_ALWAYS_STRIP_DOTDOT 389 390@defmac MULTILIB_DEFAULTS 391Define this macro as a C expression for the initializer of an array of 392string to tell the driver program which options are defaults for this 393target and thus do not need to be handled specially when using 394@code{MULTILIB_OPTIONS}. 395 396Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in 397the target makefile fragment or if none of the options listed in 398@code{MULTILIB_OPTIONS} are set by default. 399@xref{Target Fragment}. 400@end defmac 401 402@defmac RELATIVE_PREFIX_NOT_LINKDIR 403Define this macro to tell @command{gcc} that it should only translate 404a @option{-B} prefix into a @option{-L} linker option if the prefix 405indicates an absolute file name. 406@end defmac 407 408@defmac MD_EXEC_PREFIX 409If defined, this macro is an additional prefix to try after 410@code{STANDARD_EXEC_PREFIX}. @code{MD_EXEC_PREFIX} is not searched 411when the compiler is built as a cross 412compiler. If you define @code{MD_EXEC_PREFIX}, then be sure to add it 413to the list of directories used to find the assembler in @file{configure.in}. 414@end defmac 415 416@defmac STANDARD_STARTFILE_PREFIX 417Define this macro as a C string constant if you wish to override the 418standard choice of @code{libdir} as the default prefix to 419try when searching for startup files such as @file{crt0.o}. 420@code{STANDARD_STARTFILE_PREFIX} is not searched when the compiler 421is built as a cross compiler. 422@end defmac 423 424@defmac STANDARD_STARTFILE_PREFIX_1 425Define this macro as a C string constant if you wish to override the 426standard choice of @code{/lib} as a prefix to try after the default prefix 427when searching for startup files such as @file{crt0.o}. 428@code{STANDARD_STARTFILE_PREFIX_1} is not searched when the compiler 429is built as a cross compiler. 430@end defmac 431 432@defmac STANDARD_STARTFILE_PREFIX_2 433Define this macro as a C string constant if you wish to override the 434standard choice of @code{/lib} as yet another prefix to try after the 435default prefix when searching for startup files such as @file{crt0.o}. 436@code{STANDARD_STARTFILE_PREFIX_2} is not searched when the compiler 437is built as a cross compiler. 438@end defmac 439 440@defmac MD_STARTFILE_PREFIX 441If defined, this macro supplies an additional prefix to try after the 442standard prefixes. @code{MD_EXEC_PREFIX} is not searched when the 443compiler is built as a cross compiler. 444@end defmac 445 446@defmac MD_STARTFILE_PREFIX_1 447If defined, this macro supplies yet another prefix to try after the 448standard prefixes. It is not searched when the compiler is built as a 449cross compiler. 450@end defmac 451 452@defmac INIT_ENVIRONMENT 453Define this macro as a C string constant if you wish to set environment 454variables for programs called by the driver, such as the assembler and 455loader. The driver passes the value of this macro to @code{putenv} to 456initialize the necessary environment variables. 457@end defmac 458 459@defmac LOCAL_INCLUDE_DIR 460Define this macro as a C string constant if you wish to override the 461standard choice of @file{/usr/local/include} as the default prefix to 462try when searching for local header files. @code{LOCAL_INCLUDE_DIR} 463comes before @code{NATIVE_SYSTEM_HEADER_DIR} (set in 464@file{config.gcc}, normally @file{/usr/include}) in the search order. 465 466Cross compilers do not search either @file{/usr/local/include} or its 467replacement. 468@end defmac 469 470@defmac NATIVE_SYSTEM_HEADER_COMPONENT 471The ``component'' corresponding to @code{NATIVE_SYSTEM_HEADER_DIR}. 472See @code{INCLUDE_DEFAULTS}, below, for the description of components. 473If you do not define this macro, no component is used. 474@end defmac 475 476@defmac INCLUDE_DEFAULTS 477Define this macro if you wish to override the entire default search path 478for include files. For a native compiler, the default search path 479usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR}, 480@code{GPLUSPLUS_INCLUDE_DIR}, and 481@code{NATIVE_SYSTEM_HEADER_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR} 482and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile}, 483and specify private search areas for GCC@. The directory 484@code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs. 485 486The definition should be an initializer for an array of structures. 487Each array element should have four elements: the directory name (a 488string constant), the component name (also a string constant), a flag 489for C++-only directories, 490and a flag showing that the includes in the directory don't need to be 491wrapped in @code{extern @samp{C}} when compiling C++. Mark the end of 492the array with a null element. 493 494The component name denotes what GNU package the include file is part of, 495if any, in all uppercase letters. For example, it might be @samp{GCC} 496or @samp{BINUTILS}. If the package is part of a vendor-supplied 497operating system, code the component name as @samp{0}. 498 499For example, here is the definition used for VAX/VMS: 500 501@smallexample 502#define INCLUDE_DEFAULTS \ 503@{ \ 504 @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@}, \ 505 @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@}, \ 506 @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@}, \ 507 @{ ".", 0, 0, 0@}, \ 508 @{ 0, 0, 0, 0@} \ 509@} 510@end smallexample 511@end defmac 512 513Here is the order of prefixes tried for exec files: 514 515@enumerate 516@item 517Any prefixes specified by the user with @option{-B}. 518 519@item 520The environment variable @code{GCC_EXEC_PREFIX} or, if @code{GCC_EXEC_PREFIX} 521is not set and the compiler has not been installed in the configure-time 522@var{prefix}, the location in which the compiler has actually been installed. 523 524@item 525The directories specified by the environment variable @code{COMPILER_PATH}. 526 527@item 528The macro @code{STANDARD_EXEC_PREFIX}, if the compiler has been installed 529in the configured-time @var{prefix}. 530 531@item 532The location @file{/usr/libexec/gcc/}, but only if this is a native compiler. 533 534@item 535The location @file{/usr/lib/gcc/}, but only if this is a native compiler. 536 537@item 538The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native 539compiler. 540@end enumerate 541 542Here is the order of prefixes tried for startfiles: 543 544@enumerate 545@item 546Any prefixes specified by the user with @option{-B}. 547 548@item 549The environment variable @code{GCC_EXEC_PREFIX} or its automatically determined 550value based on the installed toolchain location. 551 552@item 553The directories specified by the environment variable @code{LIBRARY_PATH} 554(or port-specific name; native only, cross compilers do not use this). 555 556@item 557The macro @code{STANDARD_EXEC_PREFIX}, but only if the toolchain is installed 558in the configured @var{prefix} or this is a native compiler. 559 560@item 561The location @file{/usr/lib/gcc/}, but only if this is a native compiler. 562 563@item 564The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native 565compiler. 566 567@item 568The macro @code{MD_STARTFILE_PREFIX}, if defined, but only if this is a 569native compiler, or we have a target system root. 570 571@item 572The macro @code{MD_STARTFILE_PREFIX_1}, if defined, but only if this is a 573native compiler, or we have a target system root. 574 575@item 576The macro @code{STANDARD_STARTFILE_PREFIX}, with any sysroot modifications. 577If this path is relative it will be prefixed by @code{GCC_EXEC_PREFIX} and 578the machine suffix or @code{STANDARD_EXEC_PREFIX} and the machine suffix. 579 580@item 581The macro @code{STANDARD_STARTFILE_PREFIX_1}, but only if this is a native 582compiler, or we have a target system root. The default for this macro is 583@file{/lib/}. 584 585@item 586The macro @code{STANDARD_STARTFILE_PREFIX_2}, but only if this is a native 587compiler, or we have a target system root. The default for this macro is 588@file{/usr/lib/}. 589@end enumerate 590 591@node Run-time Target 592@section Run-time Target Specification 593@cindex run-time target specification 594@cindex predefined macros 595@cindex target specifications 596 597@c prevent bad page break with this line 598Here are run-time target specifications. 599 600@defmac TARGET_CPU_CPP_BUILTINS () 601This function-like macro expands to a block of code that defines 602built-in preprocessor macros and assertions for the target CPU, using 603the functions @code{builtin_define}, @code{builtin_define_std} and 604@code{builtin_assert}. When the front end 605calls this macro it provides a trailing semicolon, and since it has 606finished command line option processing your code can use those 607results freely. 608 609@code{builtin_assert} takes a string in the form you pass to the 610command-line option @option{-A}, such as @code{cpu=mips}, and creates 611the assertion. @code{builtin_define} takes a string in the form 612accepted by option @option{-D} and unconditionally defines the macro. 613 614@code{builtin_define_std} takes a string representing the name of an 615object-like macro. If it doesn't lie in the user's namespace, 616@code{builtin_define_std} defines it unconditionally. Otherwise, it 617defines a version with two leading underscores, and another version 618with two leading and trailing underscores, and defines the original 619only if an ISO standard was not requested on the command line. For 620example, passing @code{unix} defines @code{__unix}, @code{__unix__} 621and possibly @code{unix}; passing @code{_mips} defines @code{__mips}, 622@code{__mips__} and possibly @code{_mips}, and passing @code{_ABI64} 623defines only @code{_ABI64}. 624 625You can also test for the C dialect being compiled. The variable 626@code{c_language} is set to one of @code{clk_c}, @code{clk_cplusplus} 627or @code{clk_objective_c}. Note that if we are preprocessing 628assembler, this variable will be @code{clk_c} but the function-like 629macro @code{preprocessing_asm_p()} will return true, so you might want 630to check for that first. If you need to check for strict ANSI, the 631variable @code{flag_iso} can be used. The function-like macro 632@code{preprocessing_trad_p()} can be used to check for traditional 633preprocessing. 634@end defmac 635 636@defmac TARGET_OS_CPP_BUILTINS () 637Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional 638and is used for the target operating system instead. 639@end defmac 640 641@defmac TARGET_OBJFMT_CPP_BUILTINS () 642Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional 643and is used for the target object format. @file{elfos.h} uses this 644macro to define @code{__ELF__}, so you probably do not need to define 645it yourself. 646@end defmac 647 648@deftypevar {extern int} target_flags 649This variable is declared in @file{options.h}, which is included before 650any target-specific headers. 651@end deftypevar 652 653@hook TARGET_DEFAULT_TARGET_FLAGS 654This variable specifies the initial value of @code{target_flags}. 655Its default setting is 0. 656@end deftypevr 657 658@cindex optional hardware or system features 659@cindex features, optional, in system conventions 660 661@hook TARGET_HANDLE_OPTION 662This hook is called whenever the user specifies one of the 663target-specific options described by the @file{.opt} definition files 664(@pxref{Options}). It has the opportunity to do some option-specific 665processing and should return true if the option is valid. The default 666definition does nothing but return true. 667 668@var{decoded} specifies the option and its arguments. @var{opts} and 669@var{opts_set} are the @code{gcc_options} structures to be used for 670storing option state, and @var{loc} is the location at which the 671option was passed (@code{UNKNOWN_LOCATION} except for options passed 672via attributes). 673@end deftypefn 674 675@hook TARGET_HANDLE_C_OPTION 676This target hook is called whenever the user specifies one of the 677target-specific C language family options described by the @file{.opt} 678definition files(@pxref{Options}). It has the opportunity to do some 679option-specific processing and should return true if the option is 680valid. The arguments are like for @code{TARGET_HANDLE_OPTION}. The 681default definition does nothing but return false. 682 683In general, you should use @code{TARGET_HANDLE_OPTION} to handle 684options. However, if processing an option requires routines that are 685only available in the C (and related language) front ends, then you 686should use @code{TARGET_HANDLE_C_OPTION} instead. 687@end deftypefn 688 689@hook TARGET_OBJC_CONSTRUCT_STRING_OBJECT 690 691@hook TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE 692 693@hook TARGET_OBJC_DECLARE_CLASS_DEFINITION 694 695@hook TARGET_STRING_OBJECT_REF_TYPE_P 696 697@hook TARGET_CHECK_STRING_OBJECT_FORMAT_ARG 698 699@hook TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE 700This target function is similar to the hook @code{TARGET_OPTION_OVERRIDE} 701but is called when the optimize level is changed via an attribute or 702pragma or when it is reset at the end of the code affected by the 703attribute or pragma. It is not called at the beginning of compilation 704when @code{TARGET_OPTION_OVERRIDE} is called so if you want to perform these 705actions then, you should have @code{TARGET_OPTION_OVERRIDE} call 706@code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE}. 707@end deftypefn 708 709@defmac C_COMMON_OVERRIDE_OPTIONS 710This is similar to the @code{TARGET_OPTION_OVERRIDE} hook 711but is only used in the C 712language frontends (C, Objective-C, C++, Objective-C++) and so can be 713used to alter option flag variables which only exist in those 714frontends. 715@end defmac 716 717@hook TARGET_OPTION_OPTIMIZATION_TABLE 718Some machines may desire to change what optimizations are performed for 719various optimization levels. This variable, if defined, describes 720options to enable at particular sets of optimization levels. These 721options are processed once 722just after the optimization level is determined and before the remainder 723of the command options have been parsed, so may be overridden by other 724options passed explicitly. 725 726This processing is run once at program startup and when the optimization 727options are changed via @code{#pragma GCC optimize} or by using the 728@code{optimize} attribute. 729@end deftypevr 730 731@hook TARGET_OPTION_INIT_STRUCT 732 733@hook TARGET_OPTION_DEFAULT_PARAMS 734 735@defmac SWITCHABLE_TARGET 736Some targets need to switch between substantially different subtargets 737during compilation. For example, the MIPS target has one subtarget for 738the traditional MIPS architecture and another for MIPS16. Source code 739can switch between these two subarchitectures using the @code{mips16} 740and @code{nomips16} attributes. 741 742Such subtargets can differ in things like the set of available 743registers, the set of available instructions, the costs of various 744operations, and so on. GCC caches a lot of this type of information 745in global variables, and recomputing them for each subtarget takes a 746significant amount of time. The compiler therefore provides a facility 747for maintaining several versions of the global variables and quickly 748switching between them; see @file{target-globals.h} for details. 749 750Define this macro to 1 if your target needs this facility. The default 751is 0. 752@end defmac 753 754@node Per-Function Data 755@section Defining data structures for per-function information. 756@cindex per-function data 757@cindex data structures 758 759If the target needs to store information on a per-function basis, GCC 760provides a macro and a couple of variables to allow this. Note, just 761using statics to store the information is a bad idea, since GCC supports 762nested functions, so you can be halfway through encoding one function 763when another one comes along. 764 765GCC defines a data structure called @code{struct function} which 766contains all of the data specific to an individual function. This 767structure contains a field called @code{machine} whose type is 768@code{struct machine_function *}, which can be used by targets to point 769to their own specific data. 770 771If a target needs per-function specific data it should define the type 772@code{struct machine_function} and also the macro @code{INIT_EXPANDERS}. 773This macro should be used to initialize the function pointer 774@code{init_machine_status}. This pointer is explained below. 775 776One typical use of per-function, target specific data is to create an 777RTX to hold the register containing the function's return address. This 778RTX can then be used to implement the @code{__builtin_return_address} 779function, for level 0. 780 781Note---earlier implementations of GCC used a single data area to hold 782all of the per-function information. Thus when processing of a nested 783function began the old per-function data had to be pushed onto a 784stack, and when the processing was finished, it had to be popped off the 785stack. GCC used to provide function pointers called 786@code{save_machine_status} and @code{restore_machine_status} to handle 787the saving and restoring of the target specific information. Since the 788single data area approach is no longer used, these pointers are no 789longer supported. 790 791@defmac INIT_EXPANDERS 792Macro called to initialize any target specific information. This macro 793is called once per function, before generation of any RTL has begun. 794The intention of this macro is to allow the initialization of the 795function pointer @code{init_machine_status}. 796@end defmac 797 798@deftypevar {void (*)(struct function *)} init_machine_status 799If this function pointer is non-@code{NULL} it will be called once per 800function, before function compilation starts, in order to allow the 801target to perform any target specific initialization of the 802@code{struct function} structure. It is intended that this would be 803used to initialize the @code{machine} of that structure. 804 805@code{struct machine_function} structures are expected to be freed by GC@. 806Generally, any memory that they reference must be allocated by using 807GC allocation, including the structure itself. 808@end deftypevar 809 810@node Storage Layout 811@section Storage Layout 812@cindex storage layout 813 814Note that the definitions of the macros in this table which are sizes or 815alignments measured in bits do not need to be constant. They can be C 816expressions that refer to static variables, such as the @code{target_flags}. 817@xref{Run-time Target}. 818 819@defmac BITS_BIG_ENDIAN 820Define this macro to have the value 1 if the most significant bit in a 821byte has the lowest number; otherwise define it to have the value zero. 822This means that bit-field instructions count from the most significant 823bit. If the machine has no bit-field instructions, then this must still 824be defined, but it doesn't matter which value it is defined to. This 825macro need not be a constant. 826 827This macro does not affect the way structure fields are packed into 828bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}. 829@end defmac 830 831@defmac BYTES_BIG_ENDIAN 832Define this macro to have the value 1 if the most significant byte in a 833word has the lowest number. This macro need not be a constant. 834@end defmac 835 836@defmac WORDS_BIG_ENDIAN 837Define this macro to have the value 1 if, in a multiword object, the 838most significant word has the lowest number. This applies to both 839memory locations and registers; see @code{REG_WORDS_BIG_ENDIAN} if the 840order of words in memory is not the same as the order in registers. This 841macro need not be a constant. 842@end defmac 843 844@defmac REG_WORDS_BIG_ENDIAN 845On some machines, the order of words in a multiword object differs between 846registers in memory. In such a situation, define this macro to describe 847the order of words in a register. The macro @code{WORDS_BIG_ENDIAN} controls 848the order of words in memory. 849@end defmac 850 851@defmac FLOAT_WORDS_BIG_ENDIAN 852Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or 853@code{TFmode} floating point numbers are stored in memory with the word 854containing the sign bit at the lowest address; otherwise define it to 855have the value 0. This macro need not be a constant. 856 857You need not define this macro if the ordering is the same as for 858multi-word integers. 859@end defmac 860 861@defmac BITS_PER_UNIT 862Define this macro to be the number of bits in an addressable storage 863unit (byte). If you do not define this macro the default is 8. 864@end defmac 865 866@defmac BITS_PER_WORD 867Number of bits in a word. If you do not define this macro, the default 868is @code{BITS_PER_UNIT * UNITS_PER_WORD}. 869@end defmac 870 871@defmac MAX_BITS_PER_WORD 872Maximum number of bits in a word. If this is undefined, the default is 873@code{BITS_PER_WORD}. Otherwise, it is the constant value that is the 874largest value that @code{BITS_PER_WORD} can have at run-time. 875@end defmac 876 877@defmac UNITS_PER_WORD 878Number of storage units in a word; normally the size of a general-purpose 879register, a power of two from 1 or 8. 880@end defmac 881 882@defmac MIN_UNITS_PER_WORD 883Minimum number of units in a word. If this is undefined, the default is 884@code{UNITS_PER_WORD}. Otherwise, it is the constant value that is the 885smallest value that @code{UNITS_PER_WORD} can have at run-time. 886@end defmac 887 888@defmac POINTER_SIZE 889Width of a pointer, in bits. You must specify a value no wider than the 890width of @code{Pmode}. If it is not equal to the width of @code{Pmode}, 891you must define @code{POINTERS_EXTEND_UNSIGNED}. If you do not specify 892a value the default is @code{BITS_PER_WORD}. 893@end defmac 894 895@defmac POINTERS_EXTEND_UNSIGNED 896A C expression that determines how pointers should be extended from 897@code{ptr_mode} to either @code{Pmode} or @code{word_mode}. It is 898greater than zero if pointers should be zero-extended, zero if they 899should be sign-extended, and negative if some other sort of conversion 900is needed. In the last case, the extension is done by the target's 901@code{ptr_extend} instruction. 902 903You need not define this macro if the @code{ptr_mode}, @code{Pmode} 904and @code{word_mode} are all the same width. 905@end defmac 906 907@defmac PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type}) 908A macro to update @var{m} and @var{unsignedp} when an object whose type 909is @var{type} and which has the specified mode and signedness is to be 910stored in a register. This macro is only called when @var{type} is a 911scalar type. 912 913On most RISC machines, which only have operations that operate on a full 914register, define this macro to set @var{m} to @code{word_mode} if 915@var{m} is an integer mode narrower than @code{BITS_PER_WORD}. In most 916cases, only integer modes should be widened because wider-precision 917floating-point operations are usually more expensive than their narrower 918counterparts. 919 920For most machines, the macro definition does not change @var{unsignedp}. 921However, some machines, have instructions that preferentially handle 922either signed or unsigned quantities of certain modes. For example, on 923the DEC Alpha, 32-bit loads from memory and 32-bit add instructions 924sign-extend the result to 64 bits. On such machines, set 925@var{unsignedp} according to which kind of extension is more efficient. 926 927Do not define this macro if it would never modify @var{m}. 928@end defmac 929 930@hook TARGET_PROMOTE_FUNCTION_MODE 931Like @code{PROMOTE_MODE}, but it is applied to outgoing function arguments or 932function return values. The target hook should return the new mode 933and possibly change @code{*@var{punsignedp}} if the promotion should 934change signedness. This function is called only for scalar @emph{or 935pointer} types. 936 937@var{for_return} allows to distinguish the promotion of arguments and 938return values. If it is @code{1}, a return value is being promoted and 939@code{TARGET_FUNCTION_VALUE} must perform the same promotions done here. 940If it is @code{2}, the returned mode should be that of the register in 941which an incoming parameter is copied, or the outgoing result is computed; 942then the hook should return the same mode as @code{promote_mode}, though 943the signedness may be different. 944 945@var{type} can be NULL when promoting function arguments of libcalls. 946 947The default is to not promote arguments and return values. You can 948also define the hook to @code{default_promote_function_mode_always_promote} 949if you would like to apply the same rules given by @code{PROMOTE_MODE}. 950@end deftypefn 951 952@defmac PARM_BOUNDARY 953Normal alignment required for function parameters on the stack, in 954bits. All stack parameters receive at least this much alignment 955regardless of data type. On most machines, this is the same as the 956size of an integer. 957@end defmac 958 959@defmac STACK_BOUNDARY 960Define this macro to the minimum alignment enforced by hardware for the 961stack pointer on this machine. The definition is a C expression for the 962desired alignment (measured in bits). This value is used as a default 963if @code{PREFERRED_STACK_BOUNDARY} is not defined. On most machines, 964this should be the same as @code{PARM_BOUNDARY}. 965@end defmac 966 967@defmac PREFERRED_STACK_BOUNDARY 968Define this macro if you wish to preserve a certain alignment for the 969stack pointer, greater than what the hardware enforces. The definition 970is a C expression for the desired alignment (measured in bits). This 971macro must evaluate to a value equal to or larger than 972@code{STACK_BOUNDARY}. 973@end defmac 974 975@defmac INCOMING_STACK_BOUNDARY 976Define this macro if the incoming stack boundary may be different 977from @code{PREFERRED_STACK_BOUNDARY}. This macro must evaluate 978to a value equal to or larger than @code{STACK_BOUNDARY}. 979@end defmac 980 981@defmac FUNCTION_BOUNDARY 982Alignment required for a function entry point, in bits. 983@end defmac 984 985@defmac BIGGEST_ALIGNMENT 986Biggest alignment that any data type can require on this machine, in 987bits. Note that this is not the biggest alignment that is supported, 988just the biggest alignment that, when violated, may cause a fault. 989@end defmac 990 991@defmac MALLOC_ABI_ALIGNMENT 992Alignment, in bits, a C conformant malloc implementation has to 993provide. If not defined, the default value is @code{BITS_PER_WORD}. 994@end defmac 995 996@defmac ATTRIBUTE_ALIGNED_VALUE 997Alignment used by the @code{__attribute__ ((aligned))} construct. If 998not defined, the default value is @code{BIGGEST_ALIGNMENT}. 999@end defmac 1000 1001@defmac MINIMUM_ATOMIC_ALIGNMENT 1002If defined, the smallest alignment, in bits, that can be given to an 1003object that can be referenced in one operation, without disturbing any 1004nearby object. Normally, this is @code{BITS_PER_UNIT}, but may be larger 1005on machines that don't have byte or half-word store operations. 1006@end defmac 1007 1008@defmac BIGGEST_FIELD_ALIGNMENT 1009Biggest alignment that any structure or union field can require on this 1010machine, in bits. If defined, this overrides @code{BIGGEST_ALIGNMENT} for 1011structure and union fields only, unless the field alignment has been set 1012by the @code{__attribute__ ((aligned (@var{n})))} construct. 1013@end defmac 1014 1015@defmac ADJUST_FIELD_ALIGN (@var{field}, @var{computed}) 1016An expression for the alignment of a structure field @var{field} if the 1017alignment computed in the usual way (including applying of 1018@code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the 1019alignment) is @var{computed}. It overrides alignment only if the 1020field alignment has not been set by the 1021@code{__attribute__ ((aligned (@var{n})))} construct. 1022@end defmac 1023 1024@defmac MAX_STACK_ALIGNMENT 1025Biggest stack alignment guaranteed by the backend. Use this macro 1026to specify the maximum alignment of a variable on stack. 1027 1028If not defined, the default value is @code{STACK_BOUNDARY}. 1029 1030@c FIXME: The default should be @code{PREFERRED_STACK_BOUNDARY}. 1031@c But the fix for PR 32893 indicates that we can only guarantee 1032@c maximum stack alignment on stack up to @code{STACK_BOUNDARY}, not 1033@c @code{PREFERRED_STACK_BOUNDARY}, if stack alignment isn't supported. 1034@end defmac 1035 1036@defmac MAX_OFILE_ALIGNMENT 1037Biggest alignment supported by the object file format of this machine. 1038Use this macro to limit the alignment which can be specified using the 1039@code{__attribute__ ((aligned (@var{n})))} construct. If not defined, 1040the default value is @code{BIGGEST_ALIGNMENT}. 1041 1042On systems that use ELF, the default (in @file{config/elfos.h}) is 1043the largest supported 32-bit ELF section alignment representable on 1044a 32-bit host e.g. @samp{(((unsigned HOST_WIDEST_INT) 1 << 28) * 8)}. 1045On 32-bit ELF the largest supported section alignment in bits is 1046@samp{(0x80000000 * 8)}, but this is not representable on 32-bit hosts. 1047@end defmac 1048 1049@defmac DATA_ALIGNMENT (@var{type}, @var{basic-align}) 1050If defined, a C expression to compute the alignment for a variable in 1051the static store. @var{type} is the data type, and @var{basic-align} is 1052the alignment that the object would ordinarily have. The value of this 1053macro is used instead of that alignment to align the object. 1054 1055If this macro is not defined, then @var{basic-align} is used. 1056 1057@findex strcpy 1058One use of this macro is to increase alignment of medium-size data to 1059make it all fit in fewer cache lines. Another is to cause character 1060arrays to be word-aligned so that @code{strcpy} calls that copy 1061constants to character arrays can be done inline. 1062@end defmac 1063 1064@defmac CONSTANT_ALIGNMENT (@var{constant}, @var{basic-align}) 1065If defined, a C expression to compute the alignment given to a constant 1066that is being placed in memory. @var{constant} is the constant and 1067@var{basic-align} is the alignment that the object would ordinarily 1068have. The value of this macro is used instead of that alignment to 1069align the object. 1070 1071If this macro is not defined, then @var{basic-align} is used. 1072 1073The typical use of this macro is to increase alignment for string 1074constants to be word aligned so that @code{strcpy} calls that copy 1075constants can be done inline. 1076@end defmac 1077 1078@defmac LOCAL_ALIGNMENT (@var{type}, @var{basic-align}) 1079If defined, a C expression to compute the alignment for a variable in 1080the local store. @var{type} is the data type, and @var{basic-align} is 1081the alignment that the object would ordinarily have. The value of this 1082macro is used instead of that alignment to align the object. 1083 1084If this macro is not defined, then @var{basic-align} is used. 1085 1086One use of this macro is to increase alignment of medium-size data to 1087make it all fit in fewer cache lines. 1088 1089If the value of this macro has a type, it should be an unsigned type. 1090@end defmac 1091 1092@hook TARGET_VECTOR_ALIGNMENT 1093 1094@defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align}) 1095If defined, a C expression to compute the alignment for stack slot. 1096@var{type} is the data type, @var{mode} is the widest mode available, 1097and @var{basic-align} is the alignment that the slot would ordinarily 1098have. The value of this macro is used instead of that alignment to 1099align the slot. 1100 1101If this macro is not defined, then @var{basic-align} is used when 1102@var{type} is @code{NULL}. Otherwise, @code{LOCAL_ALIGNMENT} will 1103be used. 1104 1105This macro is to set alignment of stack slot to the maximum alignment 1106of all possible modes which the slot may have. 1107 1108If the value of this macro has a type, it should be an unsigned type. 1109@end defmac 1110 1111@defmac LOCAL_DECL_ALIGNMENT (@var{decl}) 1112If defined, a C expression to compute the alignment for a local 1113variable @var{decl}. 1114 1115If this macro is not defined, then 1116@code{LOCAL_ALIGNMENT (TREE_TYPE (@var{decl}), DECL_ALIGN (@var{decl}))} 1117is used. 1118 1119One use of this macro is to increase alignment of medium-size data to 1120make it all fit in fewer cache lines. 1121 1122If the value of this macro has a type, it should be an unsigned type. 1123@end defmac 1124 1125@defmac MINIMUM_ALIGNMENT (@var{exp}, @var{mode}, @var{align}) 1126If defined, a C expression to compute the minimum required alignment 1127for dynamic stack realignment purposes for @var{exp} (a type or decl), 1128@var{mode}, assuming normal alignment @var{align}. 1129 1130If this macro is not defined, then @var{align} will be used. 1131@end defmac 1132 1133@defmac EMPTY_FIELD_BOUNDARY 1134Alignment in bits to be given to a structure bit-field that follows an 1135empty field such as @code{int : 0;}. 1136 1137If @code{PCC_BITFIELD_TYPE_MATTERS} is true, it overrides this macro. 1138@end defmac 1139 1140@defmac STRUCTURE_SIZE_BOUNDARY 1141Number of bits which any structure or union's size must be a multiple of. 1142Each structure or union's size is rounded up to a multiple of this. 1143 1144If you do not define this macro, the default is the same as 1145@code{BITS_PER_UNIT}. 1146@end defmac 1147 1148@defmac STRICT_ALIGNMENT 1149Define this macro to be the value 1 if instructions will fail to work 1150if given data not on the nominal alignment. If instructions will merely 1151go slower in that case, define this macro as 0. 1152@end defmac 1153 1154@defmac PCC_BITFIELD_TYPE_MATTERS 1155Define this if you wish to imitate the way many other C compilers handle 1156alignment of bit-fields and the structures that contain them. 1157 1158The behavior is that the type written for a named bit-field (@code{int}, 1159@code{short}, or other integer type) imposes an alignment for the entire 1160structure, as if the structure really did contain an ordinary field of 1161that type. In addition, the bit-field is placed within the structure so 1162that it would fit within such a field, not crossing a boundary for it. 1163 1164Thus, on most machines, a named bit-field whose type is written as 1165@code{int} would not cross a four-byte boundary, and would force 1166four-byte alignment for the whole structure. (The alignment used may 1167not be four bytes; it is controlled by the other alignment parameters.) 1168 1169An unnamed bit-field will not affect the alignment of the containing 1170structure. 1171 1172If the macro is defined, its definition should be a C expression; 1173a nonzero value for the expression enables this behavior. 1174 1175Note that if this macro is not defined, or its value is zero, some 1176bit-fields may cross more than one alignment boundary. The compiler can 1177support such references if there are @samp{insv}, @samp{extv}, and 1178@samp{extzv} insns that can directly reference memory. 1179 1180The other known way of making bit-fields work is to define 1181@code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}. 1182Then every structure can be accessed with fullwords. 1183 1184Unless the machine has bit-field instructions or you define 1185@code{STRUCTURE_SIZE_BOUNDARY} that way, you must define 1186@code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value. 1187 1188If your aim is to make GCC use the same conventions for laying out 1189bit-fields as are used by another compiler, here is how to investigate 1190what the other compiler does. Compile and run this program: 1191 1192@smallexample 1193struct foo1 1194@{ 1195 char x; 1196 char :0; 1197 char y; 1198@}; 1199 1200struct foo2 1201@{ 1202 char x; 1203 int :0; 1204 char y; 1205@}; 1206 1207main () 1208@{ 1209 printf ("Size of foo1 is %d\n", 1210 sizeof (struct foo1)); 1211 printf ("Size of foo2 is %d\n", 1212 sizeof (struct foo2)); 1213 exit (0); 1214@} 1215@end smallexample 1216 1217If this prints 2 and 5, then the compiler's behavior is what you would 1218get from @code{PCC_BITFIELD_TYPE_MATTERS}. 1219@end defmac 1220 1221@defmac BITFIELD_NBYTES_LIMITED 1222Like @code{PCC_BITFIELD_TYPE_MATTERS} except that its effect is limited 1223to aligning a bit-field within the structure. 1224@end defmac 1225 1226@hook TARGET_ALIGN_ANON_BITFIELD 1227When @code{PCC_BITFIELD_TYPE_MATTERS} is true this hook will determine 1228whether unnamed bitfields affect the alignment of the containing 1229structure. The hook should return true if the structure should inherit 1230the alignment requirements of an unnamed bitfield's type. 1231@end deftypefn 1232 1233@hook TARGET_NARROW_VOLATILE_BITFIELD 1234This target hook should return @code{true} if accesses to volatile bitfields 1235should use the narrowest mode possible. It should return @code{false} if 1236these accesses should use the bitfield container type. 1237 1238The default is @code{!TARGET_STRICT_ALIGN}. 1239@end deftypefn 1240 1241@hook TARGET_MEMBER_TYPE_FORCES_BLK 1242Return true if a structure, union or array containing @var{field} should 1243be accessed using @code{BLKMODE}. 1244 1245If @var{field} is the only field in the structure, @var{mode} is its 1246mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the 1247case where structures of one field would require the structure's mode to 1248retain the field's mode. 1249 1250Normally, this is not needed. 1251@end deftypefn 1252 1253@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified}) 1254Define this macro as an expression for the alignment of a type (given 1255by @var{type} as a tree node) if the alignment computed in the usual 1256way is @var{computed} and the alignment explicitly specified was 1257@var{specified}. 1258 1259The default is to use @var{specified} if it is larger; otherwise, use 1260the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT} 1261@end defmac 1262 1263@defmac MAX_FIXED_MODE_SIZE 1264An integer expression for the size in bits of the largest integer 1265machine mode that should actually be used. All integer machine modes of 1266this size or smaller can be used for structures and unions with the 1267appropriate sizes. If this macro is undefined, @code{GET_MODE_BITSIZE 1268(DImode)} is assumed. 1269@end defmac 1270 1271@defmac STACK_SAVEAREA_MODE (@var{save_level}) 1272If defined, an expression of type @code{enum machine_mode} that 1273specifies the mode of the save area operand of a 1274@code{save_stack_@var{level}} named pattern (@pxref{Standard Names}). 1275@var{save_level} is one of @code{SAVE_BLOCK}, @code{SAVE_FUNCTION}, or 1276@code{SAVE_NONLOCAL} and selects which of the three named patterns is 1277having its mode specified. 1278 1279You need not define this macro if it always returns @code{Pmode}. You 1280would most commonly define this macro if the 1281@code{save_stack_@var{level}} patterns need to support both a 32- and a 128264-bit mode. 1283@end defmac 1284 1285@defmac STACK_SIZE_MODE 1286If defined, an expression of type @code{enum machine_mode} that 1287specifies the mode of the size increment operand of an 1288@code{allocate_stack} named pattern (@pxref{Standard Names}). 1289 1290You need not define this macro if it always returns @code{word_mode}. 1291You would most commonly define this macro if the @code{allocate_stack} 1292pattern needs to support both a 32- and a 64-bit mode. 1293@end defmac 1294 1295@hook TARGET_LIBGCC_CMP_RETURN_MODE 1296This target hook should return the mode to be used for the return value 1297of compare instructions expanded to libgcc calls. If not defined 1298@code{word_mode} is returned which is the right choice for a majority of 1299targets. 1300@end deftypefn 1301 1302@hook TARGET_LIBGCC_SHIFT_COUNT_MODE 1303This target hook should return the mode to be used for the shift count operand 1304of shift instructions expanded to libgcc calls. If not defined 1305@code{word_mode} is returned which is the right choice for a majority of 1306targets. 1307@end deftypefn 1308 1309@hook TARGET_UNWIND_WORD_MODE 1310Return machine mode to be used for @code{_Unwind_Word} type. 1311The default is to use @code{word_mode}. 1312@end deftypefn 1313 1314@defmac ROUND_TOWARDS_ZERO 1315If defined, this macro should be true if the prevailing rounding 1316mode is towards zero. 1317 1318Defining this macro only affects the way @file{libgcc.a} emulates 1319floating-point arithmetic. 1320 1321Not defining this macro is equivalent to returning zero. 1322@end defmac 1323 1324@defmac LARGEST_EXPONENT_IS_NORMAL (@var{size}) 1325This macro should return true if floats with @var{size} 1326bits do not have a NaN or infinity representation, but use the largest 1327exponent for normal numbers instead. 1328 1329Defining this macro only affects the way @file{libgcc.a} emulates 1330floating-point arithmetic. 1331 1332The default definition of this macro returns false for all sizes. 1333@end defmac 1334 1335@hook TARGET_MS_BITFIELD_LAYOUT_P 1336This target hook returns @code{true} if bit-fields in the given 1337@var{record_type} are to be laid out following the rules of Microsoft 1338Visual C/C++, namely: (i) a bit-field won't share the same storage 1339unit with the previous bit-field if their underlying types have 1340different sizes, and the bit-field will be aligned to the highest 1341alignment of the underlying types of itself and of the previous 1342bit-field; (ii) a zero-sized bit-field will affect the alignment of 1343the whole enclosing structure, even if it is unnamed; except that 1344(iii) a zero-sized bit-field will be disregarded unless it follows 1345another bit-field of nonzero size. If this hook returns @code{true}, 1346other macros that control bit-field layout are ignored. 1347 1348When a bit-field is inserted into a packed record, the whole size 1349of the underlying type is used by one or more same-size adjacent 1350bit-fields (that is, if its long:3, 32 bits is used in the record, 1351and any additional adjacent long bit-fields are packed into the same 1352chunk of 32 bits. However, if the size changes, a new field of that 1353size is allocated). In an unpacked record, this is the same as using 1354alignment, but not equivalent when packing. 1355 1356If both MS bit-fields and @samp{__attribute__((packed))} are used, 1357the latter will take precedence. If @samp{__attribute__((packed))} is 1358used on a single field when MS bit-fields are in use, it will take 1359precedence for that field, but the alignment of the rest of the structure 1360may affect its placement. 1361@end deftypefn 1362 1363@hook TARGET_DECIMAL_FLOAT_SUPPORTED_P 1364Returns true if the target supports decimal floating point. 1365@end deftypefn 1366 1367@hook TARGET_FIXED_POINT_SUPPORTED_P 1368Returns true if the target supports fixed-point arithmetic. 1369@end deftypefn 1370 1371@hook TARGET_EXPAND_TO_RTL_HOOK 1372This hook is called just before expansion into rtl, allowing the target 1373to perform additional initializations or analysis before the expansion. 1374For example, the rs6000 port uses it to allocate a scratch stack slot 1375for use in copying SDmode values between memory and floating point 1376registers whenever the function being expanded has any SDmode 1377usage. 1378@end deftypefn 1379 1380@hook TARGET_INSTANTIATE_DECLS 1381This hook allows the backend to perform additional instantiations on rtl 1382that are not actually in any insns yet, but will be later. 1383@end deftypefn 1384 1385@hook TARGET_MANGLE_TYPE 1386If your target defines any fundamental types, or any types your target 1387uses should be mangled differently from the default, define this hook 1388to return the appropriate encoding for these types as part of a C++ 1389mangled name. The @var{type} argument is the tree structure representing 1390the type to be mangled. The hook may be applied to trees which are 1391not target-specific fundamental types; it should return @code{NULL} 1392for all such types, as well as arguments it does not recognize. If the 1393return value is not @code{NULL}, it must point to a statically-allocated 1394string constant. 1395 1396Target-specific fundamental types might be new fundamental types or 1397qualified versions of ordinary fundamental types. Encode new 1398fundamental types as @samp{@w{u @var{n} @var{name}}}, where @var{name} 1399is the name used for the type in source code, and @var{n} is the 1400length of @var{name} in decimal. Encode qualified versions of 1401ordinary types as @samp{@w{U @var{n} @var{name} @var{code}}}, where 1402@var{name} is the name used for the type qualifier in source code, 1403@var{n} is the length of @var{name} as above, and @var{code} is the 1404code used to represent the unqualified version of this type. (See 1405@code{write_builtin_type} in @file{cp/mangle.c} for the list of 1406codes.) In both cases the spaces are for clarity; do not include any 1407spaces in your string. 1408 1409This hook is applied to types prior to typedef resolution. If the mangled 1410name for a particular type depends only on that type's main variant, you 1411can perform typedef resolution yourself using @code{TYPE_MAIN_VARIANT} 1412before mangling. 1413 1414The default version of this hook always returns @code{NULL}, which is 1415appropriate for a target that does not define any new fundamental 1416types. 1417@end deftypefn 1418 1419@node Type Layout 1420@section Layout of Source Language Data Types 1421 1422These macros define the sizes and other characteristics of the standard 1423basic data types used in programs being compiled. Unlike the macros in 1424the previous section, these apply to specific features of C and related 1425languages, rather than to fundamental aspects of storage layout. 1426 1427@defmac INT_TYPE_SIZE 1428A C expression for the size in bits of the type @code{int} on the 1429target machine. If you don't define this, the default is one word. 1430@end defmac 1431 1432@defmac SHORT_TYPE_SIZE 1433A C expression for the size in bits of the type @code{short} on the 1434target machine. If you don't define this, the default is half a word. 1435(If this would be less than one storage unit, it is rounded up to one 1436unit.) 1437@end defmac 1438 1439@defmac LONG_TYPE_SIZE 1440A C expression for the size in bits of the type @code{long} on the 1441target machine. If you don't define this, the default is one word. 1442@end defmac 1443 1444@defmac ADA_LONG_TYPE_SIZE 1445On some machines, the size used for the Ada equivalent of the type 1446@code{long} by a native Ada compiler differs from that used by C@. In 1447that situation, define this macro to be a C expression to be used for 1448the size of that type. If you don't define this, the default is the 1449value of @code{LONG_TYPE_SIZE}. 1450@end defmac 1451 1452@defmac LONG_LONG_TYPE_SIZE 1453A C expression for the size in bits of the type @code{long long} on the 1454target machine. If you don't define this, the default is two 1455words. If you want to support GNU Ada on your machine, the value of this 1456macro must be at least 64. 1457@end defmac 1458 1459@defmac CHAR_TYPE_SIZE 1460A C expression for the size in bits of the type @code{char} on the 1461target machine. If you don't define this, the default is 1462@code{BITS_PER_UNIT}. 1463@end defmac 1464 1465@defmac BOOL_TYPE_SIZE 1466A C expression for the size in bits of the C++ type @code{bool} and 1467C99 type @code{_Bool} on the target machine. If you don't define 1468this, and you probably shouldn't, the default is @code{CHAR_TYPE_SIZE}. 1469@end defmac 1470 1471@defmac FLOAT_TYPE_SIZE 1472A C expression for the size in bits of the type @code{float} on the 1473target machine. If you don't define this, the default is one word. 1474@end defmac 1475 1476@defmac DOUBLE_TYPE_SIZE 1477A C expression for the size in bits of the type @code{double} on the 1478target machine. If you don't define this, the default is two 1479words. 1480@end defmac 1481 1482@defmac LONG_DOUBLE_TYPE_SIZE 1483A C expression for the size in bits of the type @code{long double} on 1484the target machine. If you don't define this, the default is two 1485words. 1486@end defmac 1487 1488@defmac SHORT_FRACT_TYPE_SIZE 1489A C expression for the size in bits of the type @code{short _Fract} on 1490the target machine. If you don't define this, the default is 1491@code{BITS_PER_UNIT}. 1492@end defmac 1493 1494@defmac FRACT_TYPE_SIZE 1495A C expression for the size in bits of the type @code{_Fract} on 1496the target machine. If you don't define this, the default is 1497@code{BITS_PER_UNIT * 2}. 1498@end defmac 1499 1500@defmac LONG_FRACT_TYPE_SIZE 1501A C expression for the size in bits of the type @code{long _Fract} on 1502the target machine. If you don't define this, the default is 1503@code{BITS_PER_UNIT * 4}. 1504@end defmac 1505 1506@defmac LONG_LONG_FRACT_TYPE_SIZE 1507A C expression for the size in bits of the type @code{long long _Fract} on 1508the target machine. If you don't define this, the default is 1509@code{BITS_PER_UNIT * 8}. 1510@end defmac 1511 1512@defmac SHORT_ACCUM_TYPE_SIZE 1513A C expression for the size in bits of the type @code{short _Accum} on 1514the target machine. If you don't define this, the default is 1515@code{BITS_PER_UNIT * 2}. 1516@end defmac 1517 1518@defmac ACCUM_TYPE_SIZE 1519A C expression for the size in bits of the type @code{_Accum} on 1520the target machine. If you don't define this, the default is 1521@code{BITS_PER_UNIT * 4}. 1522@end defmac 1523 1524@defmac LONG_ACCUM_TYPE_SIZE 1525A C expression for the size in bits of the type @code{long _Accum} on 1526the target machine. If you don't define this, the default is 1527@code{BITS_PER_UNIT * 8}. 1528@end defmac 1529 1530@defmac LONG_LONG_ACCUM_TYPE_SIZE 1531A C expression for the size in bits of the type @code{long long _Accum} on 1532the target machine. If you don't define this, the default is 1533@code{BITS_PER_UNIT * 16}. 1534@end defmac 1535 1536@defmac LIBGCC2_LONG_DOUBLE_TYPE_SIZE 1537Define this macro if @code{LONG_DOUBLE_TYPE_SIZE} is not constant or 1538if you want routines in @file{libgcc2.a} for a size other than 1539@code{LONG_DOUBLE_TYPE_SIZE}. If you don't define this, the 1540default is @code{LONG_DOUBLE_TYPE_SIZE}. 1541@end defmac 1542 1543@defmac LIBGCC2_HAS_DF_MODE 1544Define this macro if neither @code{DOUBLE_TYPE_SIZE} nor 1545@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 1546@code{DFmode} but you want @code{DFmode} routines in @file{libgcc2.a} 1547anyway. If you don't define this and either @code{DOUBLE_TYPE_SIZE} 1548or @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64 then the default is 1, 1549otherwise it is 0. 1550@end defmac 1551 1552@defmac LIBGCC2_HAS_XF_MODE 1553Define this macro if @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is not 1554@code{XFmode} but you want @code{XFmode} routines in @file{libgcc2.a} 1555anyway. If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} 1556is 80 then the default is 1, otherwise it is 0. 1557@end defmac 1558 1559@defmac LIBGCC2_HAS_TF_MODE 1560Define this macro if @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is not 1561@code{TFmode} but you want @code{TFmode} routines in @file{libgcc2.a} 1562anyway. If you don't define this and @code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} 1563is 128 then the default is 1, otherwise it is 0. 1564@end defmac 1565 1566@defmac LIBGCC2_GNU_PREFIX 1567This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target 1568hook and should be defined if that hook is overriden to be true. It 1569causes function names in libgcc to be changed to use a @code{__gnu_} 1570prefix for their name rather than the default @code{__}. A port which 1571uses this macro should also arrange to use @file{t-gnu-prefix} in 1572the libgcc @file{config.host}. 1573@end defmac 1574 1575@defmac SF_SIZE 1576@defmacx DF_SIZE 1577@defmacx XF_SIZE 1578@defmacx TF_SIZE 1579Define these macros to be the size in bits of the mantissa of 1580@code{SFmode}, @code{DFmode}, @code{XFmode} and @code{TFmode} values, 1581if the defaults in @file{libgcc2.h} are inappropriate. By default, 1582@code{FLT_MANT_DIG} is used for @code{SF_SIZE}, @code{LDBL_MANT_DIG} 1583for @code{XF_SIZE} and @code{TF_SIZE}, and @code{DBL_MANT_DIG} or 1584@code{LDBL_MANT_DIG} for @code{DF_SIZE} according to whether 1585@code{DOUBLE_TYPE_SIZE} or 1586@code{LIBGCC2_LONG_DOUBLE_TYPE_SIZE} is 64. 1587@end defmac 1588 1589@defmac TARGET_FLT_EVAL_METHOD 1590A C expression for the value for @code{FLT_EVAL_METHOD} in @file{float.h}, 1591assuming, if applicable, that the floating-point control word is in its 1592default state. If you do not define this macro the value of 1593@code{FLT_EVAL_METHOD} will be zero. 1594@end defmac 1595 1596@defmac WIDEST_HARDWARE_FP_SIZE 1597A C expression for the size in bits of the widest floating-point format 1598supported by the hardware. If you define this macro, you must specify a 1599value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}. 1600If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE} 1601is the default. 1602@end defmac 1603 1604@defmac DEFAULT_SIGNED_CHAR 1605An expression whose value is 1 or 0, according to whether the type 1606@code{char} should be signed or unsigned by default. The user can 1607always override this default with the options @option{-fsigned-char} 1608and @option{-funsigned-char}. 1609@end defmac 1610 1611@hook TARGET_DEFAULT_SHORT_ENUMS 1612This target hook should return true if the compiler should give an 1613@code{enum} type only as many bytes as it takes to represent the range 1614of possible values of that type. It should return false if all 1615@code{enum} types should be allocated like @code{int}. 1616 1617The default is to return false. 1618@end deftypefn 1619 1620@defmac SIZE_TYPE 1621A C expression for a string describing the name of the data type to use 1622for size values. The typedef name @code{size_t} is defined using the 1623contents of the string. 1624 1625The string can contain more than one keyword. If so, separate them with 1626spaces, and write first any length keyword, then @code{unsigned} if 1627appropriate, and finally @code{int}. The string must exactly match one 1628of the data type names defined in the function 1629@code{c_common_nodes_and_builtins} in the file @file{c-family/c-common.c}. 1630You may not omit @code{int} or change the order---that would cause the 1631compiler to crash on startup. 1632 1633If you don't define this macro, the default is @code{"long unsigned 1634int"}. 1635@end defmac 1636 1637@defmac SIZETYPE 1638GCC defines internal types (@code{sizetype}, @code{ssizetype}, 1639@code{bitsizetype} and @code{sbitsizetype}) for expressions 1640dealing with size. This macro is a C expression for a string describing 1641the name of the data type from which the precision of @code{sizetype} 1642is extracted. 1643 1644The string has the same restrictions as @code{SIZE_TYPE} string. 1645 1646If you don't define this macro, the default is @code{SIZE_TYPE}. 1647@end defmac 1648 1649@defmac PTRDIFF_TYPE 1650A C expression for a string describing the name of the data type to use 1651for the result of subtracting two pointers. The typedef name 1652@code{ptrdiff_t} is defined using the contents of the string. See 1653@code{SIZE_TYPE} above for more information. 1654 1655If you don't define this macro, the default is @code{"long int"}. 1656@end defmac 1657 1658@defmac WCHAR_TYPE 1659A C expression for a string describing the name of the data type to use 1660for wide characters. The typedef name @code{wchar_t} is defined using 1661the contents of the string. See @code{SIZE_TYPE} above for more 1662information. 1663 1664If you don't define this macro, the default is @code{"int"}. 1665@end defmac 1666 1667@defmac WCHAR_TYPE_SIZE 1668A C expression for the size in bits of the data type for wide 1669characters. This is used in @code{cpp}, which cannot make use of 1670@code{WCHAR_TYPE}. 1671@end defmac 1672 1673@defmac WINT_TYPE 1674A C expression for a string describing the name of the data type to 1675use for wide characters passed to @code{printf} and returned from 1676@code{getwc}. The typedef name @code{wint_t} is defined using the 1677contents of the string. See @code{SIZE_TYPE} above for more 1678information. 1679 1680If you don't define this macro, the default is @code{"unsigned int"}. 1681@end defmac 1682 1683@defmac INTMAX_TYPE 1684A C expression for a string describing the name of the data type that 1685can represent any value of any standard or extended signed integer type. 1686The typedef name @code{intmax_t} is defined using the contents of the 1687string. See @code{SIZE_TYPE} above for more information. 1688 1689If you don't define this macro, the default is the first of 1690@code{"int"}, @code{"long int"}, or @code{"long long int"} that has as 1691much precision as @code{long long int}. 1692@end defmac 1693 1694@defmac UINTMAX_TYPE 1695A C expression for a string describing the name of the data type that 1696can represent any value of any standard or extended unsigned integer 1697type. The typedef name @code{uintmax_t} is defined using the contents 1698of the string. See @code{SIZE_TYPE} above for more information. 1699 1700If you don't define this macro, the default is the first of 1701@code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long 1702unsigned int"} that has as much precision as @code{long long unsigned 1703int}. 1704@end defmac 1705 1706@defmac SIG_ATOMIC_TYPE 1707@defmacx INT8_TYPE 1708@defmacx INT16_TYPE 1709@defmacx INT32_TYPE 1710@defmacx INT64_TYPE 1711@defmacx UINT8_TYPE 1712@defmacx UINT16_TYPE 1713@defmacx UINT32_TYPE 1714@defmacx UINT64_TYPE 1715@defmacx INT_LEAST8_TYPE 1716@defmacx INT_LEAST16_TYPE 1717@defmacx INT_LEAST32_TYPE 1718@defmacx INT_LEAST64_TYPE 1719@defmacx UINT_LEAST8_TYPE 1720@defmacx UINT_LEAST16_TYPE 1721@defmacx UINT_LEAST32_TYPE 1722@defmacx UINT_LEAST64_TYPE 1723@defmacx INT_FAST8_TYPE 1724@defmacx INT_FAST16_TYPE 1725@defmacx INT_FAST32_TYPE 1726@defmacx INT_FAST64_TYPE 1727@defmacx UINT_FAST8_TYPE 1728@defmacx UINT_FAST16_TYPE 1729@defmacx UINT_FAST32_TYPE 1730@defmacx UINT_FAST64_TYPE 1731@defmacx INTPTR_TYPE 1732@defmacx UINTPTR_TYPE 1733C expressions for the standard types @code{sig_atomic_t}, 1734@code{int8_t}, @code{int16_t}, @code{int32_t}, @code{int64_t}, 1735@code{uint8_t}, @code{uint16_t}, @code{uint32_t}, @code{uint64_t}, 1736@code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t}, 1737@code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t}, 1738@code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t}, 1739@code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t}, 1740@code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t}, 1741@code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t}. See 1742@code{SIZE_TYPE} above for more information. 1743 1744If any of these macros evaluates to a null pointer, the corresponding 1745type is not supported; if GCC is configured to provide 1746@code{<stdint.h>} in such a case, the header provided may not conform 1747to C99, depending on the type in question. The defaults for all of 1748these macros are null pointers. 1749@end defmac 1750 1751@defmac TARGET_PTRMEMFUNC_VBIT_LOCATION 1752The C++ compiler represents a pointer-to-member-function with a struct 1753that looks like: 1754 1755@smallexample 1756 struct @{ 1757 union @{ 1758 void (*fn)(); 1759 ptrdiff_t vtable_index; 1760 @}; 1761 ptrdiff_t delta; 1762 @}; 1763@end smallexample 1764 1765@noindent 1766The C++ compiler must use one bit to indicate whether the function that 1767will be called through a pointer-to-member-function is virtual. 1768Normally, we assume that the low-order bit of a function pointer must 1769always be zero. Then, by ensuring that the vtable_index is odd, we can 1770distinguish which variant of the union is in use. But, on some 1771platforms function pointers can be odd, and so this doesn't work. In 1772that case, we use the low-order bit of the @code{delta} field, and shift 1773the remainder of the @code{delta} field to the left. 1774 1775GCC will automatically make the right selection about where to store 1776this bit using the @code{FUNCTION_BOUNDARY} setting for your platform. 1777However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY} 1778set such that functions always start at even addresses, but the lowest 1779bit of pointers to functions indicate whether the function at that 1780address is in ARM or Thumb mode. If this is the case of your 1781architecture, you should define this macro to 1782@code{ptrmemfunc_vbit_in_delta}. 1783 1784In general, you should not have to define this macro. On architectures 1785in which function addresses are always even, according to 1786@code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to 1787@code{ptrmemfunc_vbit_in_pfn}. 1788@end defmac 1789 1790@defmac TARGET_VTABLE_USES_DESCRIPTORS 1791Normally, the C++ compiler uses function pointers in vtables. This 1792macro allows the target to change to use ``function descriptors'' 1793instead. Function descriptors are found on targets for whom a 1794function pointer is actually a small data structure. Normally the 1795data structure consists of the actual code address plus a data 1796pointer to which the function's data is relative. 1797 1798If vtables are used, the value of this macro should be the number 1799of words that the function descriptor occupies. 1800@end defmac 1801 1802@defmac TARGET_VTABLE_ENTRY_ALIGN 1803By default, the vtable entries are void pointers, the so the alignment 1804is the same as pointer alignment. The value of this macro specifies 1805the alignment of the vtable entry in bits. It should be defined only 1806when special alignment is necessary. */ 1807@end defmac 1808 1809@defmac TARGET_VTABLE_DATA_ENTRY_DISTANCE 1810There are a few non-descriptor entries in the vtable at offsets below 1811zero. If these entries must be padded (say, to preserve the alignment 1812specified by @code{TARGET_VTABLE_ENTRY_ALIGN}), set this to the number 1813of words in each data entry. 1814@end defmac 1815 1816@node Registers 1817@section Register Usage 1818@cindex register usage 1819 1820This section explains how to describe what registers the target machine 1821has, and how (in general) they can be used. 1822 1823The description of which registers a specific instruction can use is 1824done with register classes; see @ref{Register Classes}. For information 1825on using registers to access a stack frame, see @ref{Frame Registers}. 1826For passing values in registers, see @ref{Register Arguments}. 1827For returning values in registers, see @ref{Scalar Return}. 1828 1829@menu 1830* Register Basics:: Number and kinds of registers. 1831* Allocation Order:: Order in which registers are allocated. 1832* Values in Registers:: What kinds of values each reg can hold. 1833* Leaf Functions:: Renumbering registers for leaf functions. 1834* Stack Registers:: Handling a register stack such as 80387. 1835@end menu 1836 1837@node Register Basics 1838@subsection Basic Characteristics of Registers 1839 1840@c prevent bad page break with this line 1841Registers have various characteristics. 1842 1843@defmac FIRST_PSEUDO_REGISTER 1844Number of hardware registers known to the compiler. They receive 1845numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first 1846pseudo register's number really is assigned the number 1847@code{FIRST_PSEUDO_REGISTER}. 1848@end defmac 1849 1850@defmac FIXED_REGISTERS 1851@cindex fixed register 1852An initializer that says which registers are used for fixed purposes 1853all throughout the compiled code and are therefore not available for 1854general allocation. These would include the stack pointer, the frame 1855pointer (except on machines where that can be used as a general 1856register when no frame pointer is needed), the program counter on 1857machines where that is considered one of the addressable registers, 1858and any other numbered register with a standard use. 1859 1860This information is expressed as a sequence of numbers, separated by 1861commas and surrounded by braces. The @var{n}th number is 1 if 1862register @var{n} is fixed, 0 otherwise. 1863 1864The table initialized from this macro, and the table initialized by 1865the following one, may be overridden at run time either automatically, 1866by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by 1867the user with the command options @option{-ffixed-@var{reg}}, 1868@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}. 1869@end defmac 1870 1871@defmac CALL_USED_REGISTERS 1872@cindex call-used register 1873@cindex call-clobbered register 1874@cindex call-saved register 1875Like @code{FIXED_REGISTERS} but has 1 for each register that is 1876clobbered (in general) by function calls as well as for fixed 1877registers. This macro therefore identifies the registers that are not 1878available for general allocation of values that must live across 1879function calls. 1880 1881If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler 1882automatically saves it on function entry and restores it on function 1883exit, if the register is used within the function. 1884@end defmac 1885 1886@defmac CALL_REALLY_USED_REGISTERS 1887@cindex call-used register 1888@cindex call-clobbered register 1889@cindex call-saved register 1890Like @code{CALL_USED_REGISTERS} except this macro doesn't require 1891that the entire set of @code{FIXED_REGISTERS} be included. 1892(@code{CALL_USED_REGISTERS} must be a superset of @code{FIXED_REGISTERS}). 1893This macro is optional. If not specified, it defaults to the value 1894of @code{CALL_USED_REGISTERS}. 1895@end defmac 1896 1897@defmac HARD_REGNO_CALL_PART_CLOBBERED (@var{regno}, @var{mode}) 1898@cindex call-used register 1899@cindex call-clobbered register 1900@cindex call-saved register 1901A C expression that is nonzero if it is not permissible to store a 1902value of mode @var{mode} in hard register number @var{regno} across a 1903call without some part of it being clobbered. For most machines this 1904macro need not be defined. It is only required for machines that do not 1905preserve the entire contents of a register across a call. 1906@end defmac 1907 1908@findex fixed_regs 1909@findex call_used_regs 1910@findex global_regs 1911@findex reg_names 1912@findex reg_class_contents 1913@hook TARGET_CONDITIONAL_REGISTER_USAGE 1914This hook may conditionally modify five variables 1915@code{fixed_regs}, @code{call_used_regs}, @code{global_regs}, 1916@code{reg_names}, and @code{reg_class_contents}, to take into account 1917any dependence of these register sets on target flags. The first three 1918of these are of type @code{char []} (interpreted as Boolean vectors). 1919@code{global_regs} is a @code{const char *[]}, and 1920@code{reg_class_contents} is a @code{HARD_REG_SET}. Before the macro is 1921called, @code{fixed_regs}, @code{call_used_regs}, 1922@code{reg_class_contents}, and @code{reg_names} have been initialized 1923from @code{FIXED_REGISTERS}, @code{CALL_USED_REGISTERS}, 1924@code{REG_CLASS_CONTENTS}, and @code{REGISTER_NAMES}, respectively. 1925@code{global_regs} has been cleared, and any @option{-ffixed-@var{reg}}, 1926@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}} 1927command options have been applied. 1928 1929@cindex disabling certain registers 1930@cindex controlling register usage 1931If the usage of an entire class of registers depends on the target 1932flags, you may indicate this to GCC by using this macro to modify 1933@code{fixed_regs} and @code{call_used_regs} to 1 for each of the 1934registers in the classes which should not be used by GCC@. Also define 1935the macro @code{REG_CLASS_FROM_LETTER} / @code{REG_CLASS_FROM_CONSTRAINT} 1936to return @code{NO_REGS} if it 1937is called with a letter for a class that shouldn't be used. 1938 1939(However, if this class is not included in @code{GENERAL_REGS} and all 1940of the insn patterns whose constraints permit this class are 1941controlled by target switches, then GCC will automatically avoid using 1942these registers when the target switches are opposed to them.) 1943@end deftypefn 1944 1945@defmac INCOMING_REGNO (@var{out}) 1946Define this macro if the target machine has register windows. This C 1947expression returns the register number as seen by the called function 1948corresponding to the register number @var{out} as seen by the calling 1949function. Return @var{out} if register number @var{out} is not an 1950outbound register. 1951@end defmac 1952 1953@defmac OUTGOING_REGNO (@var{in}) 1954Define this macro if the target machine has register windows. This C 1955expression returns the register number as seen by the calling function 1956corresponding to the register number @var{in} as seen by the called 1957function. Return @var{in} if register number @var{in} is not an inbound 1958register. 1959@end defmac 1960 1961@defmac LOCAL_REGNO (@var{regno}) 1962Define this macro if the target machine has register windows. This C 1963expression returns true if the register is call-saved but is in the 1964register window. Unlike most call-saved registers, such registers 1965need not be explicitly restored on function exit or during non-local 1966gotos. 1967@end defmac 1968 1969@defmac PC_REGNUM 1970If the program counter has a register number, define this as that 1971register number. Otherwise, do not define it. 1972@end defmac 1973 1974@node Allocation Order 1975@subsection Order of Allocation of Registers 1976@cindex order of register allocation 1977@cindex register allocation order 1978 1979@c prevent bad page break with this line 1980Registers are allocated in order. 1981 1982@defmac REG_ALLOC_ORDER 1983If defined, an initializer for a vector of integers, containing the 1984numbers of hard registers in the order in which GCC should prefer 1985to use them (from most preferred to least). 1986 1987If this macro is not defined, registers are used lowest numbered first 1988(all else being equal). 1989 1990One use of this macro is on machines where the highest numbered 1991registers must always be saved and the save-multiple-registers 1992instruction supports only sequences of consecutive registers. On such 1993machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists 1994the highest numbered allocable register first. 1995@end defmac 1996 1997@defmac ADJUST_REG_ALLOC_ORDER 1998A C statement (sans semicolon) to choose the order in which to allocate 1999hard registers for pseudo-registers local to a basic block. 2000 2001Store the desired register order in the array @code{reg_alloc_order}. 2002Element 0 should be the register to allocate first; element 1, the next 2003register; and so on. 2004 2005The macro body should not assume anything about the contents of 2006@code{reg_alloc_order} before execution of the macro. 2007 2008On most machines, it is not necessary to define this macro. 2009@end defmac 2010 2011@defmac HONOR_REG_ALLOC_ORDER 2012Normally, IRA tries to estimate the costs for saving a register in the 2013prologue and restoring it in the epilogue. This discourages it from 2014using call-saved registers. If a machine wants to ensure that IRA 2015allocates registers in the order given by REG_ALLOC_ORDER even if some 2016call-saved registers appear earlier than call-used ones, this macro 2017should be defined. 2018@end defmac 2019 2020@defmac IRA_HARD_REGNO_ADD_COST_MULTIPLIER (@var{regno}) 2021In some case register allocation order is not enough for the 2022Integrated Register Allocator (@acronym{IRA}) to generate a good code. 2023If this macro is defined, it should return a floating point value 2024based on @var{regno}. The cost of using @var{regno} for a pseudo will 2025be increased by approximately the pseudo's usage frequency times the 2026value returned by this macro. Not defining this macro is equivalent 2027to having it always return @code{0.0}. 2028 2029On most machines, it is not necessary to define this macro. 2030@end defmac 2031 2032@node Values in Registers 2033@subsection How Values Fit in Registers 2034 2035This section discusses the macros that describe which kinds of values 2036(specifically, which machine modes) each register can hold, and how many 2037consecutive registers are needed for a given mode. 2038 2039@defmac HARD_REGNO_NREGS (@var{regno}, @var{mode}) 2040A C expression for the number of consecutive hard registers, starting 2041at register number @var{regno}, required to hold a value of mode 2042@var{mode}. This macro must never return zero, even if a register 2043cannot hold the requested mode - indicate that with HARD_REGNO_MODE_OK 2044and/or CANNOT_CHANGE_MODE_CLASS instead. 2045 2046On a machine where all registers are exactly one word, a suitable 2047definition of this macro is 2048 2049@smallexample 2050#define HARD_REGNO_NREGS(REGNO, MODE) \ 2051 ((GET_MODE_SIZE (MODE) + UNITS_PER_WORD - 1) \ 2052 / UNITS_PER_WORD) 2053@end smallexample 2054@end defmac 2055 2056@defmac HARD_REGNO_NREGS_HAS_PADDING (@var{regno}, @var{mode}) 2057A C expression that is nonzero if a value of mode @var{mode}, stored 2058in memory, ends with padding that causes it to take up more space than 2059in registers starting at register number @var{regno} (as determined by 2060multiplying GCC's notion of the size of the register when containing 2061this mode by the number of registers returned by 2062@code{HARD_REGNO_NREGS}). By default this is zero. 2063 2064For example, if a floating-point value is stored in three 32-bit 2065registers but takes up 128 bits in memory, then this would be 2066nonzero. 2067 2068This macros only needs to be defined if there are cases where 2069@code{subreg_get_info} 2070would otherwise wrongly determine that a @code{subreg} can be 2071represented by an offset to the register number, when in fact such a 2072@code{subreg} would contain some of the padding not stored in 2073registers and so not be representable. 2074@end defmac 2075 2076@defmac HARD_REGNO_NREGS_WITH_PADDING (@var{regno}, @var{mode}) 2077For values of @var{regno} and @var{mode} for which 2078@code{HARD_REGNO_NREGS_HAS_PADDING} returns nonzero, a C expression 2079returning the greater number of registers required to hold the value 2080including any padding. In the example above, the value would be four. 2081@end defmac 2082 2083@defmac REGMODE_NATURAL_SIZE (@var{mode}) 2084Define this macro if the natural size of registers that hold values 2085of mode @var{mode} is not the word size. It is a C expression that 2086should give the natural size in bytes for the specified mode. It is 2087used by the register allocator to try to optimize its results. This 2088happens for example on SPARC 64-bit where the natural size of 2089floating-point registers is still 32-bit. 2090@end defmac 2091 2092@defmac HARD_REGNO_MODE_OK (@var{regno}, @var{mode}) 2093A C expression that is nonzero if it is permissible to store a value 2094of mode @var{mode} in hard register number @var{regno} (or in several 2095registers starting with that one). For a machine where all registers 2096are equivalent, a suitable definition is 2097 2098@smallexample 2099#define HARD_REGNO_MODE_OK(REGNO, MODE) 1 2100@end smallexample 2101 2102You need not include code to check for the numbers of fixed registers, 2103because the allocation mechanism considers them to be always occupied. 2104 2105@cindex register pairs 2106On some machines, double-precision values must be kept in even/odd 2107register pairs. You can implement that by defining this macro to reject 2108odd register numbers for such modes. 2109 2110The minimum requirement for a mode to be OK in a register is that the 2111@samp{mov@var{mode}} instruction pattern support moves between the 2112register and other hard register in the same class and that moving a 2113value into the register and back out not alter it. 2114 2115Since the same instruction used to move @code{word_mode} will work for 2116all narrower integer modes, it is not necessary on any machine for 2117@code{HARD_REGNO_MODE_OK} to distinguish between these modes, provided 2118you define patterns @samp{movhi}, etc., to take advantage of this. This 2119is useful because of the interaction between @code{HARD_REGNO_MODE_OK} 2120and @code{MODES_TIEABLE_P}; it is very desirable for all integer modes 2121to be tieable. 2122 2123Many machines have special registers for floating point arithmetic. 2124Often people assume that floating point machine modes are allowed only 2125in floating point registers. This is not true. Any registers that 2126can hold integers can safely @emph{hold} a floating point machine 2127mode, whether or not floating arithmetic can be done on it in those 2128registers. Integer move instructions can be used to move the values. 2129 2130On some machines, though, the converse is true: fixed-point machine 2131modes may not go in floating registers. This is true if the floating 2132registers normalize any value stored in them, because storing a 2133non-floating value there would garble it. In this case, 2134@code{HARD_REGNO_MODE_OK} should reject fixed-point machine modes in 2135floating registers. But if the floating registers do not automatically 2136normalize, if you can store any bit pattern in one and retrieve it 2137unchanged without a trap, then any machine mode may go in a floating 2138register, so you can define this macro to say so. 2139 2140The primary significance of special floating registers is rather that 2141they are the registers acceptable in floating point arithmetic 2142instructions. However, this is of no concern to 2143@code{HARD_REGNO_MODE_OK}. You handle it by writing the proper 2144constraints for those instructions. 2145 2146On some machines, the floating registers are especially slow to access, 2147so that it is better to store a value in a stack frame than in such a 2148register if floating point arithmetic is not being done. As long as the 2149floating registers are not in class @code{GENERAL_REGS}, they will not 2150be used unless some pattern's constraint asks for one. 2151@end defmac 2152 2153@defmac HARD_REGNO_RENAME_OK (@var{from}, @var{to}) 2154A C expression that is nonzero if it is OK to rename a hard register 2155@var{from} to another hard register @var{to}. 2156 2157One common use of this macro is to prevent renaming of a register to 2158another register that is not saved by a prologue in an interrupt 2159handler. 2160 2161The default is always nonzero. 2162@end defmac 2163 2164@defmac MODES_TIEABLE_P (@var{mode1}, @var{mode2}) 2165A C expression that is nonzero if a value of mode 2166@var{mode1} is accessible in mode @var{mode2} without copying. 2167 2168If @code{HARD_REGNO_MODE_OK (@var{r}, @var{mode1})} and 2169@code{HARD_REGNO_MODE_OK (@var{r}, @var{mode2})} are always the same for 2170any @var{r}, then @code{MODES_TIEABLE_P (@var{mode1}, @var{mode2})} 2171should be nonzero. If they differ for any @var{r}, you should define 2172this macro to return zero unless some other mechanism ensures the 2173accessibility of the value in a narrower mode. 2174 2175You should define this macro to return nonzero in as many cases as 2176possible since doing so will allow GCC to perform better register 2177allocation. 2178@end defmac 2179 2180@hook TARGET_HARD_REGNO_SCRATCH_OK 2181This target hook should return @code{true} if it is OK to use a hard register 2182@var{regno} as scratch reg in peephole2. 2183 2184One common use of this macro is to prevent using of a register that 2185is not saved by a prologue in an interrupt handler. 2186 2187The default version of this hook always returns @code{true}. 2188@end deftypefn 2189 2190@defmac AVOID_CCMODE_COPIES 2191Define this macro if the compiler should avoid copies to/from @code{CCmode} 2192registers. You should only define this macro if support for copying to/from 2193@code{CCmode} is incomplete. 2194@end defmac 2195 2196@node Leaf Functions 2197@subsection Handling Leaf Functions 2198 2199@cindex leaf functions 2200@cindex functions, leaf 2201On some machines, a leaf function (i.e., one which makes no calls) can run 2202more efficiently if it does not make its own register window. Often this 2203means it is required to receive its arguments in the registers where they 2204are passed by the caller, instead of the registers where they would 2205normally arrive. 2206 2207The special treatment for leaf functions generally applies only when 2208other conditions are met; for example, often they may use only those 2209registers for its own variables and temporaries. We use the term ``leaf 2210function'' to mean a function that is suitable for this special 2211handling, so that functions with no calls are not necessarily ``leaf 2212functions''. 2213 2214GCC assigns register numbers before it knows whether the function is 2215suitable for leaf function treatment. So it needs to renumber the 2216registers in order to output a leaf function. The following macros 2217accomplish this. 2218 2219@defmac LEAF_REGISTERS 2220Name of a char vector, indexed by hard register number, which 2221contains 1 for a register that is allowable in a candidate for leaf 2222function treatment. 2223 2224If leaf function treatment involves renumbering the registers, then the 2225registers marked here should be the ones before renumbering---those that 2226GCC would ordinarily allocate. The registers which will actually be 2227used in the assembler code, after renumbering, should not be marked with 1 2228in this vector. 2229 2230Define this macro only if the target machine offers a way to optimize 2231the treatment of leaf functions. 2232@end defmac 2233 2234@defmac LEAF_REG_REMAP (@var{regno}) 2235A C expression whose value is the register number to which @var{regno} 2236should be renumbered, when a function is treated as a leaf function. 2237 2238If @var{regno} is a register number which should not appear in a leaf 2239function before renumbering, then the expression should yield @minus{}1, which 2240will cause the compiler to abort. 2241 2242Define this macro only if the target machine offers a way to optimize the 2243treatment of leaf functions, and registers need to be renumbered to do 2244this. 2245@end defmac 2246 2247@findex current_function_is_leaf 2248@findex current_function_uses_only_leaf_regs 2249@code{TARGET_ASM_FUNCTION_PROLOGUE} and 2250@code{TARGET_ASM_FUNCTION_EPILOGUE} must usually treat leaf functions 2251specially. They can test the C variable @code{current_function_is_leaf} 2252which is nonzero for leaf functions. @code{current_function_is_leaf} is 2253set prior to local register allocation and is valid for the remaining 2254compiler passes. They can also test the C variable 2255@code{current_function_uses_only_leaf_regs} which is nonzero for leaf 2256functions which only use leaf registers. 2257@code{current_function_uses_only_leaf_regs} is valid after all passes 2258that modify the instructions have been run and is only useful if 2259@code{LEAF_REGISTERS} is defined. 2260@c changed this to fix overfull. ALSO: why the "it" at the beginning 2261@c of the next paragraph?! --mew 2feb93 2262 2263@node Stack Registers 2264@subsection Registers That Form a Stack 2265 2266There are special features to handle computers where some of the 2267``registers'' form a stack. Stack registers are normally written by 2268pushing onto the stack, and are numbered relative to the top of the 2269stack. 2270 2271Currently, GCC can only handle one group of stack-like registers, and 2272they must be consecutively numbered. Furthermore, the existing 2273support for stack-like registers is specific to the 80387 floating 2274point coprocessor. If you have a new architecture that uses 2275stack-like registers, you will need to do substantial work on 2276@file{reg-stack.c} and write your machine description to cooperate 2277with it, as well as defining these macros. 2278 2279@defmac STACK_REGS 2280Define this if the machine has any stack-like registers. 2281@end defmac 2282 2283@defmac STACK_REG_COVER_CLASS 2284This is a cover class containing the stack registers. Define this if 2285the machine has any stack-like registers. 2286@end defmac 2287 2288@defmac FIRST_STACK_REG 2289The number of the first stack-like register. This one is the top 2290of the stack. 2291@end defmac 2292 2293@defmac LAST_STACK_REG 2294The number of the last stack-like register. This one is the bottom of 2295the stack. 2296@end defmac 2297 2298@node Register Classes 2299@section Register Classes 2300@cindex register class definitions 2301@cindex class definitions, register 2302 2303On many machines, the numbered registers are not all equivalent. 2304For example, certain registers may not be allowed for indexed addressing; 2305certain registers may not be allowed in some instructions. These machine 2306restrictions are described to the compiler using @dfn{register classes}. 2307 2308You define a number of register classes, giving each one a name and saying 2309which of the registers belong to it. Then you can specify register classes 2310that are allowed as operands to particular instruction patterns. 2311 2312@findex ALL_REGS 2313@findex NO_REGS 2314In general, each register will belong to several classes. In fact, one 2315class must be named @code{ALL_REGS} and contain all the registers. Another 2316class must be named @code{NO_REGS} and contain no registers. Often the 2317union of two classes will be another class; however, this is not required. 2318 2319@findex GENERAL_REGS 2320One of the classes must be named @code{GENERAL_REGS}. There is nothing 2321terribly special about the name, but the operand constraint letters 2322@samp{r} and @samp{g} specify this class. If @code{GENERAL_REGS} is 2323the same as @code{ALL_REGS}, just define it as a macro which expands 2324to @code{ALL_REGS}. 2325 2326Order the classes so that if class @var{x} is contained in class @var{y} 2327then @var{x} has a lower class number than @var{y}. 2328 2329The way classes other than @code{GENERAL_REGS} are specified in operand 2330constraints is through machine-dependent operand constraint letters. 2331You can define such letters to correspond to various classes, then use 2332them in operand constraints. 2333 2334You must define the narrowest register classes for allocatable 2335registers, so that each class either has no subclasses, or that for 2336some mode, the move cost between registers within the class is 2337cheaper than moving a register in the class to or from memory 2338(@pxref{Costs}). 2339 2340You should define a class for the union of two classes whenever some 2341instruction allows both classes. For example, if an instruction allows 2342either a floating point (coprocessor) register or a general register for a 2343certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS} 2344which includes both of them. Otherwise you will get suboptimal code, 2345or even internal compiler errors when reload cannot find a register in the 2346class computed via @code{reg_class_subunion}. 2347 2348You must also specify certain redundant information about the register 2349classes: for each class, which classes contain it and which ones are 2350contained in it; for each pair of classes, the largest class contained 2351in their union. 2352 2353When a value occupying several consecutive registers is expected in a 2354certain class, all the registers used must belong to that class. 2355Therefore, register classes cannot be used to enforce a requirement for 2356a register pair to start with an even-numbered register. The way to 2357specify this requirement is with @code{HARD_REGNO_MODE_OK}. 2358 2359Register classes used for input-operands of bitwise-and or shift 2360instructions have a special requirement: each such class must have, for 2361each fixed-point machine mode, a subclass whose registers can transfer that 2362mode to or from memory. For example, on some machines, the operations for 2363single-byte values (@code{QImode}) are limited to certain registers. When 2364this is so, each register class that is used in a bitwise-and or shift 2365instruction must have a subclass consisting of registers from which 2366single-byte values can be loaded or stored. This is so that 2367@code{PREFERRED_RELOAD_CLASS} can always have a possible value to return. 2368 2369@deftp {Data type} {enum reg_class} 2370An enumerated type that must be defined with all the register class names 2371as enumerated values. @code{NO_REGS} must be first. @code{ALL_REGS} 2372must be the last register class, followed by one more enumerated value, 2373@code{LIM_REG_CLASSES}, which is not a register class but rather 2374tells how many classes there are. 2375 2376Each register class has a number, which is the value of casting 2377the class name to type @code{int}. The number serves as an index 2378in many of the tables described below. 2379@end deftp 2380 2381@defmac N_REG_CLASSES 2382The number of distinct register classes, defined as follows: 2383 2384@smallexample 2385#define N_REG_CLASSES (int) LIM_REG_CLASSES 2386@end smallexample 2387@end defmac 2388 2389@defmac REG_CLASS_NAMES 2390An initializer containing the names of the register classes as C string 2391constants. These names are used in writing some of the debugging dumps. 2392@end defmac 2393 2394@defmac REG_CLASS_CONTENTS 2395An initializer containing the contents of the register classes, as integers 2396which are bit masks. The @var{n}th integer specifies the contents of class 2397@var{n}. The way the integer @var{mask} is interpreted is that 2398register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1. 2399 2400When the machine has more than 32 registers, an integer does not suffice. 2401Then the integers are replaced by sub-initializers, braced groupings containing 2402several integers. Each sub-initializer must be suitable as an initializer 2403for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}. 2404In this situation, the first integer in each sub-initializer corresponds to 2405registers 0 through 31, the second integer to registers 32 through 63, and 2406so on. 2407@end defmac 2408 2409@defmac REGNO_REG_CLASS (@var{regno}) 2410A C expression whose value is a register class containing hard register 2411@var{regno}. In general there is more than one such class; choose a class 2412which is @dfn{minimal}, meaning that no smaller class also contains the 2413register. 2414@end defmac 2415 2416@defmac BASE_REG_CLASS 2417A macro whose definition is the name of the class to which a valid 2418base register must belong. A base register is one used in an address 2419which is the register value plus a displacement. 2420@end defmac 2421 2422@defmac MODE_BASE_REG_CLASS (@var{mode}) 2423This is a variation of the @code{BASE_REG_CLASS} macro which allows 2424the selection of a base register in a mode dependent manner. If 2425@var{mode} is VOIDmode then it should return the same value as 2426@code{BASE_REG_CLASS}. 2427@end defmac 2428 2429@defmac MODE_BASE_REG_REG_CLASS (@var{mode}) 2430A C expression whose value is the register class to which a valid 2431base register must belong in order to be used in a base plus index 2432register address. You should define this macro if base plus index 2433addresses have different requirements than other base register uses. 2434@end defmac 2435 2436@defmac MODE_CODE_BASE_REG_CLASS (@var{mode}, @var{address_space}, @var{outer_code}, @var{index_code}) 2437A C expression whose value is the register class to which a valid 2438base register for a memory reference in mode @var{mode} to address 2439space @var{address_space} must belong. @var{outer_code} and @var{index_code} 2440define the context in which the base register occurs. @var{outer_code} is 2441the code of the immediately enclosing expression (@code{MEM} for the top level 2442of an address, @code{ADDRESS} for something that occurs in an 2443@code{address_operand}). @var{index_code} is the code of the corresponding 2444index expression if @var{outer_code} is @code{PLUS}; @code{SCRATCH} otherwise. 2445@end defmac 2446 2447@defmac INDEX_REG_CLASS 2448A macro whose definition is the name of the class to which a valid 2449index register must belong. An index register is one used in an 2450address where its value is either multiplied by a scale factor or 2451added to another register (as well as added to a displacement). 2452@end defmac 2453 2454@defmac REGNO_OK_FOR_BASE_P (@var{num}) 2455A C expression which is nonzero if register number @var{num} is 2456suitable for use as a base register in operand addresses. 2457@end defmac 2458 2459@defmac REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode}) 2460A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that 2461that expression may examine the mode of the memory reference in 2462@var{mode}. You should define this macro if the mode of the memory 2463reference affects whether a register may be used as a base register. If 2464you define this macro, the compiler will use it instead of 2465@code{REGNO_OK_FOR_BASE_P}. The mode may be @code{VOIDmode} for 2466addresses that appear outside a @code{MEM}, i.e., as an 2467@code{address_operand}. 2468@end defmac 2469 2470@defmac REGNO_MODE_OK_FOR_REG_BASE_P (@var{num}, @var{mode}) 2471A C expression which is nonzero if register number @var{num} is suitable for 2472use as a base register in base plus index operand addresses, accessing 2473memory in mode @var{mode}. It may be either a suitable hard register or a 2474pseudo register that has been allocated such a hard register. You should 2475define this macro if base plus index addresses have different requirements 2476than other base register uses. 2477 2478Use of this macro is deprecated; please use the more general 2479@code{REGNO_MODE_CODE_OK_FOR_BASE_P}. 2480@end defmac 2481 2482@defmac REGNO_MODE_CODE_OK_FOR_BASE_P (@var{num}, @var{mode}, @var{address_space}, @var{outer_code}, @var{index_code}) 2483A C expression which is nonzero if register number @var{num} is 2484suitable for use as a base register in operand addresses, accessing 2485memory in mode @var{mode} in address space @var{address_space}. 2486This is similar to @code{REGNO_MODE_OK_FOR_BASE_P}, except 2487that that expression may examine the context in which the register 2488appears in the memory reference. @var{outer_code} is the code of the 2489immediately enclosing expression (@code{MEM} if at the top level of the 2490address, @code{ADDRESS} for something that occurs in an 2491@code{address_operand}). @var{index_code} is the code of the 2492corresponding index expression if @var{outer_code} is @code{PLUS}; 2493@code{SCRATCH} otherwise. The mode may be @code{VOIDmode} for addresses 2494that appear outside a @code{MEM}, i.e., as an @code{address_operand}. 2495@end defmac 2496 2497@defmac REGNO_OK_FOR_INDEX_P (@var{num}) 2498A C expression which is nonzero if register number @var{num} is 2499suitable for use as an index register in operand addresses. It may be 2500either a suitable hard register or a pseudo register that has been 2501allocated such a hard register. 2502 2503The difference between an index register and a base register is that 2504the index register may be scaled. If an address involves the sum of 2505two registers, neither one of them scaled, then either one may be 2506labeled the ``base'' and the other the ``index''; but whichever 2507labeling is used must fit the machine's constraints of which registers 2508may serve in each capacity. The compiler will try both labelings, 2509looking for one that is valid, and will reload one or both registers 2510only if neither labeling works. 2511@end defmac 2512 2513@hook TARGET_PREFERRED_RENAME_CLASS 2514 2515@hook TARGET_PREFERRED_RELOAD_CLASS 2516A target hook that places additional restrictions on the register class 2517to use when it is necessary to copy value @var{x} into a register in class 2518@var{rclass}. The value is a register class; perhaps @var{rclass}, or perhaps 2519another, smaller class. 2520 2521The default version of this hook always returns value of @code{rclass} argument. 2522 2523Sometimes returning a more restrictive class makes better code. For 2524example, on the 68000, when @var{x} is an integer constant that is in range 2525for a @samp{moveq} instruction, the value of this macro is always 2526@code{DATA_REGS} as long as @var{rclass} includes the data registers. 2527Requiring a data register guarantees that a @samp{moveq} will be used. 2528 2529One case where @code{TARGET_PREFERRED_RELOAD_CLASS} must not return 2530@var{rclass} is if @var{x} is a legitimate constant which cannot be 2531loaded into some register class. By returning @code{NO_REGS} you can 2532force @var{x} into a memory location. For example, rs6000 can load 2533immediate values into general-purpose registers, but does not have an 2534instruction for loading an immediate value into a floating-point 2535register, so @code{TARGET_PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when 2536@var{x} is a floating-point constant. If the constant can't be loaded 2537into any kind of register, code generation will be better if 2538@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead 2539of using @code{TARGET_PREFERRED_RELOAD_CLASS}. 2540 2541If an insn has pseudos in it after register allocation, reload will go 2542through the alternatives and call repeatedly @code{TARGET_PREFERRED_RELOAD_CLASS} 2543to find the best one. Returning @code{NO_REGS}, in this case, makes 2544reload add a @code{!} in front of the constraint: the x86 back-end uses 2545this feature to discourage usage of 387 registers when math is done in 2546the SSE registers (and vice versa). 2547@end deftypefn 2548 2549@defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class}) 2550A C expression that places additional restrictions on the register class 2551to use when it is necessary to copy value @var{x} into a register in class 2552@var{class}. The value is a register class; perhaps @var{class}, or perhaps 2553another, smaller class. On many machines, the following definition is 2554safe: 2555 2556@smallexample 2557#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS 2558@end smallexample 2559 2560Sometimes returning a more restrictive class makes better code. For 2561example, on the 68000, when @var{x} is an integer constant that is in range 2562for a @samp{moveq} instruction, the value of this macro is always 2563@code{DATA_REGS} as long as @var{class} includes the data registers. 2564Requiring a data register guarantees that a @samp{moveq} will be used. 2565 2566One case where @code{PREFERRED_RELOAD_CLASS} must not return 2567@var{class} is if @var{x} is a legitimate constant which cannot be 2568loaded into some register class. By returning @code{NO_REGS} you can 2569force @var{x} into a memory location. For example, rs6000 can load 2570immediate values into general-purpose registers, but does not have an 2571instruction for loading an immediate value into a floating-point 2572register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when 2573@var{x} is a floating-point constant. If the constant can't be loaded 2574into any kind of register, code generation will be better if 2575@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead 2576of using @code{TARGET_PREFERRED_RELOAD_CLASS}. 2577 2578If an insn has pseudos in it after register allocation, reload will go 2579through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS} 2580to find the best one. Returning @code{NO_REGS}, in this case, makes 2581reload add a @code{!} in front of the constraint: the x86 back-end uses 2582this feature to discourage usage of 387 registers when math is done in 2583the SSE registers (and vice versa). 2584@end defmac 2585 2586@hook TARGET_PREFERRED_OUTPUT_RELOAD_CLASS 2587Like @code{TARGET_PREFERRED_RELOAD_CLASS}, but for output reloads instead of 2588input reloads. 2589 2590The default version of this hook always returns value of @code{rclass} 2591argument. 2592 2593You can also use @code{TARGET_PREFERRED_OUTPUT_RELOAD_CLASS} to discourage 2594reload from using some alternatives, like @code{TARGET_PREFERRED_RELOAD_CLASS}. 2595@end deftypefn 2596 2597@defmac LIMIT_RELOAD_CLASS (@var{mode}, @var{class}) 2598A C expression that places additional restrictions on the register class 2599to use when it is necessary to be able to hold a value of mode 2600@var{mode} in a reload register for which class @var{class} would 2601ordinarily be used. 2602 2603Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when 2604there are certain modes that simply can't go in certain reload classes. 2605 2606The value is a register class; perhaps @var{class}, or perhaps another, 2607smaller class. 2608 2609Don't define this macro unless the target machine has limitations which 2610require the macro to do something nontrivial. 2611@end defmac 2612 2613@hook TARGET_SECONDARY_RELOAD 2614Many machines have some registers that cannot be copied directly to or 2615from memory or even from other types of registers. An example is the 2616@samp{MQ} register, which on most machines, can only be copied to or 2617from general registers, but not memory. Below, we shall be using the 2618term 'intermediate register' when a move operation cannot be performed 2619directly, but has to be done by copying the source into the intermediate 2620register first, and then copying the intermediate register to the 2621destination. An intermediate register always has the same mode as 2622source and destination. Since it holds the actual value being copied, 2623reload might apply optimizations to re-use an intermediate register 2624and eliding the copy from the source when it can determine that the 2625intermediate register still holds the required value. 2626 2627Another kind of secondary reload is required on some machines which 2628allow copying all registers to and from memory, but require a scratch 2629register for stores to some memory locations (e.g., those with symbolic 2630address on the RT, and those with certain symbolic address on the SPARC 2631when compiling PIC)@. Scratch registers need not have the same mode 2632as the value being copied, and usually hold a different value than 2633that being copied. Special patterns in the md file are needed to 2634describe how the copy is performed with the help of the scratch register; 2635these patterns also describe the number, register class(es) and mode(s) 2636of the scratch register(s). 2637 2638In some cases, both an intermediate and a scratch register are required. 2639 2640For input reloads, this target hook is called with nonzero @var{in_p}, 2641and @var{x} is an rtx that needs to be copied to a register of class 2642@var{reload_class} in @var{reload_mode}. For output reloads, this target 2643hook is called with zero @var{in_p}, and a register of class @var{reload_class} 2644needs to be copied to rtx @var{x} in @var{reload_mode}. 2645 2646If copying a register of @var{reload_class} from/to @var{x} requires 2647an intermediate register, the hook @code{secondary_reload} should 2648return the register class required for this intermediate register. 2649If no intermediate register is required, it should return NO_REGS. 2650If more than one intermediate register is required, describe the one 2651that is closest in the copy chain to the reload register. 2652 2653If scratch registers are needed, you also have to describe how to 2654perform the copy from/to the reload register to/from this 2655closest intermediate register. Or if no intermediate register is 2656required, but still a scratch register is needed, describe the 2657copy from/to the reload register to/from the reload operand @var{x}. 2658 2659You do this by setting @code{sri->icode} to the instruction code of a pattern 2660in the md file which performs the move. Operands 0 and 1 are the output 2661and input of this copy, respectively. Operands from operand 2 onward are 2662for scratch operands. These scratch operands must have a mode, and a 2663single-register-class 2664@c [later: or memory] 2665output constraint. 2666 2667When an intermediate register is used, the @code{secondary_reload} 2668hook will be called again to determine how to copy the intermediate 2669register to/from the reload operand @var{x}, so your hook must also 2670have code to handle the register class of the intermediate operand. 2671 2672@c [For later: maybe we'll allow multi-alternative reload patterns - 2673@c the port maintainer could name a mov<mode> pattern that has clobbers - 2674@c and match the constraints of input and output to determine the required 2675@c alternative. A restriction would be that constraints used to match 2676@c against reloads registers would have to be written as register class 2677@c constraints, or we need a new target macro / hook that tells us if an 2678@c arbitrary constraint can match an unknown register of a given class. 2679@c Such a macro / hook would also be useful in other places.] 2680 2681 2682@var{x} might be a pseudo-register or a @code{subreg} of a 2683pseudo-register, which could either be in a hard register or in memory. 2684Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is 2685in memory and the hard register number if it is in a register. 2686 2687Scratch operands in memory (constraint @code{"=m"} / @code{"=&m"}) are 2688currently not supported. For the time being, you will have to continue 2689to use @code{SECONDARY_MEMORY_NEEDED} for that purpose. 2690 2691@code{copy_cost} also uses this target hook to find out how values are 2692copied. If you want it to include some extra cost for the need to allocate 2693(a) scratch register(s), set @code{sri->extra_cost} to the additional cost. 2694Or if two dependent moves are supposed to have a lower cost than the sum 2695of the individual moves due to expected fortuitous scheduling and/or special 2696forwarding logic, you can set @code{sri->extra_cost} to a negative amount. 2697@end deftypefn 2698 2699@defmac SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x}) 2700@defmacx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x}) 2701@defmacx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x}) 2702These macros are obsolete, new ports should use the target hook 2703@code{TARGET_SECONDARY_RELOAD} instead. 2704 2705These are obsolete macros, replaced by the @code{TARGET_SECONDARY_RELOAD} 2706target hook. Older ports still define these macros to indicate to the 2707reload phase that it may 2708need to allocate at least one register for a reload in addition to the 2709register to contain the data. Specifically, if copying @var{x} to a 2710register @var{class} in @var{mode} requires an intermediate register, 2711you were supposed to define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the 2712largest register class all of whose registers can be used as 2713intermediate registers or scratch registers. 2714 2715If copying a register @var{class} in @var{mode} to @var{x} requires an 2716intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS} 2717was supposed to be defined be defined to return the largest register 2718class required. If the 2719requirements for input and output reloads were the same, the macro 2720@code{SECONDARY_RELOAD_CLASS} should have been used instead of defining both 2721macros identically. 2722 2723The values returned by these macros are often @code{GENERAL_REGS}. 2724Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x} 2725can be directly copied to or from a register of @var{class} in 2726@var{mode} without requiring a scratch register. Do not define this 2727macro if it would always return @code{NO_REGS}. 2728 2729If a scratch register is required (either with or without an 2730intermediate register), you were supposed to define patterns for 2731@samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required 2732(@pxref{Standard Names}. These patterns, which were normally 2733implemented with a @code{define_expand}, should be similar to the 2734@samp{mov@var{m}} patterns, except that operand 2 is the scratch 2735register. 2736 2737These patterns need constraints for the reload register and scratch 2738register that 2739contain a single register class. If the original reload register (whose 2740class is @var{class}) can meet the constraint given in the pattern, the 2741value returned by these macros is used for the class of the scratch 2742register. Otherwise, two additional reload registers are required. 2743Their classes are obtained from the constraints in the insn pattern. 2744 2745@var{x} might be a pseudo-register or a @code{subreg} of a 2746pseudo-register, which could either be in a hard register or in memory. 2747Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is 2748in memory and the hard register number if it is in a register. 2749 2750These macros should not be used in the case where a particular class of 2751registers can only be copied to memory and not to another class of 2752registers. In that case, secondary reload registers are not needed and 2753would not be helpful. Instead, a stack location must be used to perform 2754the copy and the @code{mov@var{m}} pattern should use memory as an 2755intermediate storage. This case often occurs between floating-point and 2756general registers. 2757@end defmac 2758 2759@defmac SECONDARY_MEMORY_NEEDED (@var{class1}, @var{class2}, @var{m}) 2760Certain machines have the property that some registers cannot be copied 2761to some other registers without using memory. Define this macro on 2762those machines to be a C expression that is nonzero if objects of mode 2763@var{m} in registers of @var{class1} can only be copied to registers of 2764class @var{class2} by storing a register of @var{class1} into memory 2765and loading that memory location into a register of @var{class2}. 2766 2767Do not define this macro if its value would always be zero. 2768@end defmac 2769 2770@defmac SECONDARY_MEMORY_NEEDED_RTX (@var{mode}) 2771Normally when @code{SECONDARY_MEMORY_NEEDED} is defined, the compiler 2772allocates a stack slot for a memory location needed for register copies. 2773If this macro is defined, the compiler instead uses the memory location 2774defined by this macro. 2775 2776Do not define this macro if you do not define 2777@code{SECONDARY_MEMORY_NEEDED}. 2778@end defmac 2779 2780@defmac SECONDARY_MEMORY_NEEDED_MODE (@var{mode}) 2781When the compiler needs a secondary memory location to copy between two 2782registers of mode @var{mode}, it normally allocates sufficient memory to 2783hold a quantity of @code{BITS_PER_WORD} bits and performs the store and 2784load operations in a mode that many bits wide and whose class is the 2785same as that of @var{mode}. 2786 2787This is right thing to do on most machines because it ensures that all 2788bits of the register are copied and prevents accesses to the registers 2789in a narrower mode, which some machines prohibit for floating-point 2790registers. 2791 2792However, this default behavior is not correct on some machines, such as 2793the DEC Alpha, that store short integers in floating-point registers 2794differently than in integer registers. On those machines, the default 2795widening will not work correctly and you must define this macro to 2796suppress that widening in some cases. See the file @file{alpha.h} for 2797details. 2798 2799Do not define this macro if you do not define 2800@code{SECONDARY_MEMORY_NEEDED} or if widening @var{mode} to a mode that 2801is @code{BITS_PER_WORD} bits wide is correct for your machine. 2802@end defmac 2803 2804@hook TARGET_CLASS_LIKELY_SPILLED_P 2805A target hook which returns @code{true} if pseudos that have been assigned 2806to registers of class @var{rclass} would likely be spilled because 2807registers of @var{rclass} are needed for spill registers. 2808 2809The default version of this target hook returns @code{true} if @var{rclass} 2810has exactly one register and @code{false} otherwise. On most machines, this 2811default should be used. For generally register-starved machines, such as 2812i386, or machines with right register constraints, such as SH, this hook 2813can be used to avoid excessive spilling. 2814 2815This hook is also used by some of the global intra-procedural code 2816transformations to throtle code motion, to avoid increasing register 2817pressure. 2818@end deftypefn 2819 2820@hook TARGET_CLASS_MAX_NREGS 2821A target hook returns the maximum number of consecutive registers 2822of class @var{rclass} needed to hold a value of mode @var{mode}. 2823 2824This is closely related to the macro @code{HARD_REGNO_NREGS}. In fact, 2825the value returned by @code{TARGET_CLASS_MAX_NREGS (@var{rclass}, 2826@var{mode})} target hook should be the maximum value of 2827@code{HARD_REGNO_NREGS (@var{regno}, @var{mode})} for all @var{regno} 2828values in the class @var{rclass}. 2829 2830This target hook helps control the handling of multiple-word values 2831in the reload pass. 2832 2833The default version of this target hook returns the size of @var{mode} 2834in words. 2835@end deftypefn 2836 2837@defmac CLASS_MAX_NREGS (@var{class}, @var{mode}) 2838A C expression for the maximum number of consecutive registers 2839of class @var{class} needed to hold a value of mode @var{mode}. 2840 2841This is closely related to the macro @code{HARD_REGNO_NREGS}. In fact, 2842the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})} 2843should be the maximum value of @code{HARD_REGNO_NREGS (@var{regno}, 2844@var{mode})} for all @var{regno} values in the class @var{class}. 2845 2846This macro helps control the handling of multiple-word values 2847in the reload pass. 2848@end defmac 2849 2850@defmac CANNOT_CHANGE_MODE_CLASS (@var{from}, @var{to}, @var{class}) 2851If defined, a C expression that returns nonzero for a @var{class} for which 2852a change from mode @var{from} to mode @var{to} is invalid. 2853 2854For the example, loading 32-bit integer or floating-point objects into 2855floating-point registers on the Alpha extends them to 64 bits. 2856Therefore loading a 64-bit object and then storing it as a 32-bit object 2857does not store the low-order 32 bits, as would be the case for a normal 2858register. Therefore, @file{alpha.h} defines @code{CANNOT_CHANGE_MODE_CLASS} 2859as below: 2860 2861@smallexample 2862#define CANNOT_CHANGE_MODE_CLASS(FROM, TO, CLASS) \ 2863 (GET_MODE_SIZE (FROM) != GET_MODE_SIZE (TO) \ 2864 ? reg_classes_intersect_p (FLOAT_REGS, (CLASS)) : 0) 2865@end smallexample 2866@end defmac 2867 2868@hook TARGET_LRA_P 2869 2870@hook TARGET_REGISTER_PRIORITY 2871 2872@hook TARGET_DIFFERENT_ADDR_DISPLACEMENT_P 2873 2874@hook TARGET_SPILL_CLASS 2875 2876@node Old Constraints 2877@section Obsolete Macros for Defining Constraints 2878@cindex defining constraints, obsolete method 2879@cindex constraints, defining, obsolete method 2880 2881Machine-specific constraints can be defined with these macros instead 2882of the machine description constructs described in @ref{Define 2883Constraints}. This mechanism is obsolete. New ports should not use 2884it; old ports should convert to the new mechanism. 2885 2886@defmac CONSTRAINT_LEN (@var{char}, @var{str}) 2887For the constraint at the start of @var{str}, which starts with the letter 2888@var{c}, return the length. This allows you to have register class / 2889constant / extra constraints that are longer than a single letter; 2890you don't need to define this macro if you can do with single-letter 2891constraints only. The definition of this macro should use 2892DEFAULT_CONSTRAINT_LEN for all the characters that you don't want 2893to handle specially. 2894There are some sanity checks in genoutput.c that check the constraint lengths 2895for the md file, so you can also use this macro to help you while you are 2896transitioning from a byzantine single-letter-constraint scheme: when you 2897return a negative length for a constraint you want to re-use, genoutput 2898will complain about every instance where it is used in the md file. 2899@end defmac 2900 2901@defmac REG_CLASS_FROM_LETTER (@var{char}) 2902A C expression which defines the machine-dependent operand constraint 2903letters for register classes. If @var{char} is such a letter, the 2904value should be the register class corresponding to it. Otherwise, 2905the value should be @code{NO_REGS}. The register letter @samp{r}, 2906corresponding to class @code{GENERAL_REGS}, will not be passed 2907to this macro; you do not need to handle it. 2908@end defmac 2909 2910@defmac REG_CLASS_FROM_CONSTRAINT (@var{char}, @var{str}) 2911Like @code{REG_CLASS_FROM_LETTER}, but you also get the constraint string 2912passed in @var{str}, so that you can use suffixes to distinguish between 2913different variants. 2914@end defmac 2915 2916@defmac CONST_OK_FOR_LETTER_P (@var{value}, @var{c}) 2917A C expression that defines the machine-dependent operand constraint 2918letters (@samp{I}, @samp{J}, @samp{K}, @dots{} @samp{P}) that specify 2919particular ranges of integer values. If @var{c} is one of those 2920letters, the expression should check that @var{value}, an integer, is in 2921the appropriate range and return 1 if so, 0 otherwise. If @var{c} is 2922not one of those letters, the value should be 0 regardless of 2923@var{value}. 2924@end defmac 2925 2926@defmac CONST_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str}) 2927Like @code{CONST_OK_FOR_LETTER_P}, but you also get the constraint 2928string passed in @var{str}, so that you can use suffixes to distinguish 2929between different variants. 2930@end defmac 2931 2932@defmac CONST_DOUBLE_OK_FOR_LETTER_P (@var{value}, @var{c}) 2933A C expression that defines the machine-dependent operand constraint 2934letters that specify particular ranges of @code{const_double} values 2935(@samp{G} or @samp{H}). 2936 2937If @var{c} is one of those letters, the expression should check that 2938@var{value}, an RTX of code @code{const_double}, is in the appropriate 2939range and return 1 if so, 0 otherwise. If @var{c} is not one of those 2940letters, the value should be 0 regardless of @var{value}. 2941 2942@code{const_double} is used for all floating-point constants and for 2943@code{DImode} fixed-point constants. A given letter can accept either 2944or both kinds of values. It can use @code{GET_MODE} to distinguish 2945between these kinds. 2946@end defmac 2947 2948@defmac CONST_DOUBLE_OK_FOR_CONSTRAINT_P (@var{value}, @var{c}, @var{str}) 2949Like @code{CONST_DOUBLE_OK_FOR_LETTER_P}, but you also get the constraint 2950string passed in @var{str}, so that you can use suffixes to distinguish 2951between different variants. 2952@end defmac 2953 2954@defmac EXTRA_CONSTRAINT (@var{value}, @var{c}) 2955A C expression that defines the optional machine-dependent constraint 2956letters that can be used to segregate specific types of operands, usually 2957memory references, for the target machine. Any letter that is not 2958elsewhere defined and not matched by @code{REG_CLASS_FROM_LETTER} / 2959@code{REG_CLASS_FROM_CONSTRAINT} 2960may be used. Normally this macro will not be defined. 2961 2962If it is required for a particular target machine, it should return 1 2963if @var{value} corresponds to the operand type represented by the 2964constraint letter @var{c}. If @var{c} is not defined as an extra 2965constraint, the value returned should be 0 regardless of @var{value}. 2966 2967For example, on the ROMP, load instructions cannot have their output 2968in r0 if the memory reference contains a symbolic address. Constraint 2969letter @samp{Q} is defined as representing a memory address that does 2970@emph{not} contain a symbolic address. An alternative is specified with 2971a @samp{Q} constraint on the input and @samp{r} on the output. The next 2972alternative specifies @samp{m} on the input and a register class that 2973does not include r0 on the output. 2974@end defmac 2975 2976@defmac EXTRA_CONSTRAINT_STR (@var{value}, @var{c}, @var{str}) 2977Like @code{EXTRA_CONSTRAINT}, but you also get the constraint string passed 2978in @var{str}, so that you can use suffixes to distinguish between different 2979variants. 2980@end defmac 2981 2982@defmac EXTRA_MEMORY_CONSTRAINT (@var{c}, @var{str}) 2983A C expression that defines the optional machine-dependent constraint 2984letters, amongst those accepted by @code{EXTRA_CONSTRAINT}, that should 2985be treated like memory constraints by the reload pass. 2986 2987It should return 1 if the operand type represented by the constraint 2988at the start of @var{str}, the first letter of which is the letter @var{c}, 2989comprises a subset of all memory references including 2990all those whose address is simply a base register. This allows the reload 2991pass to reload an operand, if it does not directly correspond to the operand 2992type of @var{c}, by copying its address into a base register. 2993 2994For example, on the S/390, some instructions do not accept arbitrary 2995memory references, but only those that do not make use of an index 2996register. The constraint letter @samp{Q} is defined via 2997@code{EXTRA_CONSTRAINT} as representing a memory address of this type. 2998If the letter @samp{Q} is marked as @code{EXTRA_MEMORY_CONSTRAINT}, 2999a @samp{Q} constraint can handle any memory operand, because the 3000reload pass knows it can be reloaded by copying the memory address 3001into a base register if required. This is analogous to the way 3002an @samp{o} constraint can handle any memory operand. 3003@end defmac 3004 3005@defmac EXTRA_ADDRESS_CONSTRAINT (@var{c}, @var{str}) 3006A C expression that defines the optional machine-dependent constraint 3007letters, amongst those accepted by @code{EXTRA_CONSTRAINT} / 3008@code{EXTRA_CONSTRAINT_STR}, that should 3009be treated like address constraints by the reload pass. 3010 3011It should return 1 if the operand type represented by the constraint 3012at the start of @var{str}, which starts with the letter @var{c}, comprises 3013a subset of all memory addresses including 3014all those that consist of just a base register. This allows the reload 3015pass to reload an operand, if it does not directly correspond to the operand 3016type of @var{str}, by copying it into a base register. 3017 3018Any constraint marked as @code{EXTRA_ADDRESS_CONSTRAINT} can only 3019be used with the @code{address_operand} predicate. It is treated 3020analogously to the @samp{p} constraint. 3021@end defmac 3022 3023@node Stack and Calling 3024@section Stack Layout and Calling Conventions 3025@cindex calling conventions 3026 3027@c prevent bad page break with this line 3028This describes the stack layout and calling conventions. 3029 3030@menu 3031* Frame Layout:: 3032* Exception Handling:: 3033* Stack Checking:: 3034* Frame Registers:: 3035* Elimination:: 3036* Stack Arguments:: 3037* Register Arguments:: 3038* Scalar Return:: 3039* Aggregate Return:: 3040* Caller Saves:: 3041* Function Entry:: 3042* Profiling:: 3043* Tail Calls:: 3044* Stack Smashing Protection:: 3045@end menu 3046 3047@node Frame Layout 3048@subsection Basic Stack Layout 3049@cindex stack frame layout 3050@cindex frame layout 3051 3052@c prevent bad page break with this line 3053Here is the basic stack layout. 3054 3055@defmac STACK_GROWS_DOWNWARD 3056Define this macro if pushing a word onto the stack moves the stack 3057pointer to a smaller address. 3058 3059When we say, ``define this macro if @dots{}'', it means that the 3060compiler checks this macro only with @code{#ifdef} so the precise 3061definition used does not matter. 3062@end defmac 3063 3064@defmac STACK_PUSH_CODE 3065This macro defines the operation used when something is pushed 3066on the stack. In RTL, a push operation will be 3067@code{(set (mem (STACK_PUSH_CODE (reg sp))) @dots{})} 3068 3069The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC}, 3070and @code{POST_INC}. Which of these is correct depends on 3071the stack direction and on whether the stack pointer points 3072to the last item on the stack or whether it points to the 3073space for the next item on the stack. 3074 3075The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is 3076defined, which is almost always right, and @code{PRE_INC} otherwise, 3077which is often wrong. 3078@end defmac 3079 3080@defmac FRAME_GROWS_DOWNWARD 3081Define this macro to nonzero value if the addresses of local variable slots 3082are at negative offsets from the frame pointer. 3083@end defmac 3084 3085@defmac ARGS_GROW_DOWNWARD 3086Define this macro if successive arguments to a function occupy decreasing 3087addresses on the stack. 3088@end defmac 3089 3090@defmac STARTING_FRAME_OFFSET 3091Offset from the frame pointer to the first local variable slot to be allocated. 3092 3093If @code{FRAME_GROWS_DOWNWARD}, find the next slot's offset by 3094subtracting the first slot's length from @code{STARTING_FRAME_OFFSET}. 3095Otherwise, it is found by adding the length of the first slot to the 3096value @code{STARTING_FRAME_OFFSET}. 3097@c i'm not sure if the above is still correct.. had to change it to get 3098@c rid of an overfull. --mew 2feb93 3099@end defmac 3100 3101@defmac STACK_ALIGNMENT_NEEDED 3102Define to zero to disable final alignment of the stack during reload. 3103The nonzero default for this macro is suitable for most ports. 3104 3105On ports where @code{STARTING_FRAME_OFFSET} is nonzero or where there 3106is a register save block following the local block that doesn't require 3107alignment to @code{STACK_BOUNDARY}, it may be beneficial to disable 3108stack alignment and do it in the backend. 3109@end defmac 3110 3111@defmac STACK_POINTER_OFFSET 3112Offset from the stack pointer register to the first location at which 3113outgoing arguments are placed. If not specified, the default value of 3114zero is used. This is the proper value for most machines. 3115 3116If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above 3117the first location at which outgoing arguments are placed. 3118@end defmac 3119 3120@defmac FIRST_PARM_OFFSET (@var{fundecl}) 3121Offset from the argument pointer register to the first argument's 3122address. On some machines it may depend on the data type of the 3123function. 3124 3125If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above 3126the first argument's address. 3127@end defmac 3128 3129@defmac STACK_DYNAMIC_OFFSET (@var{fundecl}) 3130Offset from the stack pointer register to an item dynamically allocated 3131on the stack, e.g., by @code{alloca}. 3132 3133The default value for this macro is @code{STACK_POINTER_OFFSET} plus the 3134length of the outgoing arguments. The default is correct for most 3135machines. See @file{function.c} for details. 3136@end defmac 3137 3138@defmac INITIAL_FRAME_ADDRESS_RTX 3139A C expression whose value is RTL representing the address of the initial 3140stack frame. This address is passed to @code{RETURN_ADDR_RTX} and 3141@code{DYNAMIC_CHAIN_ADDRESS}. If you don't define this macro, a reasonable 3142default value will be used. Define this macro in order to make frame pointer 3143elimination work in the presence of @code{__builtin_frame_address (count)} and 3144@code{__builtin_return_address (count)} for @code{count} not equal to zero. 3145@end defmac 3146 3147@defmac DYNAMIC_CHAIN_ADDRESS (@var{frameaddr}) 3148A C expression whose value is RTL representing the address in a stack 3149frame where the pointer to the caller's frame is stored. Assume that 3150@var{frameaddr} is an RTL expression for the address of the stack frame 3151itself. 3152 3153If you don't define this macro, the default is to return the value 3154of @var{frameaddr}---that is, the stack frame address is also the 3155address of the stack word that points to the previous frame. 3156@end defmac 3157 3158@defmac SETUP_FRAME_ADDRESSES 3159If defined, a C expression that produces the machine-specific code to 3160setup the stack so that arbitrary frames can be accessed. For example, 3161on the SPARC, we must flush all of the register windows to the stack 3162before we can access arbitrary stack frames. You will seldom need to 3163define this macro. 3164@end defmac 3165 3166@hook TARGET_BUILTIN_SETJMP_FRAME_VALUE 3167This target hook should return an rtx that is used to store 3168the address of the current frame into the built in @code{setjmp} buffer. 3169The default value, @code{virtual_stack_vars_rtx}, is correct for most 3170machines. One reason you may need to define this target hook is if 3171@code{hard_frame_pointer_rtx} is the appropriate value on your machine. 3172@end deftypefn 3173 3174@defmac FRAME_ADDR_RTX (@var{frameaddr}) 3175A C expression whose value is RTL representing the value of the frame 3176address for the current frame. @var{frameaddr} is the frame pointer 3177of the current frame. This is used for __builtin_frame_address. 3178You need only define this macro if the frame address is not the same 3179as the frame pointer. Most machines do not need to define it. 3180@end defmac 3181 3182@defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr}) 3183A C expression whose value is RTL representing the value of the return 3184address for the frame @var{count} steps up from the current frame, after 3185the prologue. @var{frameaddr} is the frame pointer of the @var{count} 3186frame, or the frame pointer of the @var{count} @minus{} 1 frame if 3187@code{RETURN_ADDR_IN_PREVIOUS_FRAME} is defined. 3188 3189The value of the expression must always be the correct address when 3190@var{count} is zero, but may be @code{NULL_RTX} if there is no way to 3191determine the return address of other frames. 3192@end defmac 3193 3194@defmac RETURN_ADDR_IN_PREVIOUS_FRAME 3195Define this if the return address of a particular stack frame is accessed 3196from the frame pointer of the previous stack frame. 3197@end defmac 3198 3199@defmac INCOMING_RETURN_ADDR_RTX 3200A C expression whose value is RTL representing the location of the 3201incoming return address at the beginning of any function, before the 3202prologue. This RTL is either a @code{REG}, indicating that the return 3203value is saved in @samp{REG}, or a @code{MEM} representing a location in 3204the stack. 3205 3206You only need to define this macro if you want to support call frame 3207debugging information like that provided by DWARF 2. 3208 3209If this RTL is a @code{REG}, you should also define 3210@code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}. 3211@end defmac 3212 3213@defmac DWARF_ALT_FRAME_RETURN_COLUMN 3214A C expression whose value is an integer giving a DWARF 2 column 3215number that may be used as an alternative return column. The column 3216must not correspond to any gcc hard register (that is, it must not 3217be in the range of @code{DWARF_FRAME_REGNUM}). 3218 3219This macro can be useful if @code{DWARF_FRAME_RETURN_COLUMN} is set to a 3220general register, but an alternative column needs to be used for signal 3221frames. Some targets have also used different frame return columns 3222over time. 3223@end defmac 3224 3225@defmac DWARF_ZERO_REG 3226A C expression whose value is an integer giving a DWARF 2 register 3227number that is considered to always have the value zero. This should 3228only be defined if the target has an architected zero register, and 3229someone decided it was a good idea to use that register number to 3230terminate the stack backtrace. New ports should avoid this. 3231@end defmac 3232 3233@hook TARGET_DWARF_HANDLE_FRAME_UNSPEC 3234This target hook allows the backend to emit frame-related insns that 3235contain UNSPECs or UNSPEC_VOLATILEs. The DWARF 2 call frame debugging 3236info engine will invoke it on insns of the form 3237@smallexample 3238(set (reg) (unspec [@dots{}] UNSPEC_INDEX)) 3239@end smallexample 3240and 3241@smallexample 3242(set (reg) (unspec_volatile [@dots{}] UNSPECV_INDEX)). 3243@end smallexample 3244to let the backend emit the call frame instructions. @var{label} is 3245the CFI label attached to the insn, @var{pattern} is the pattern of 3246the insn and @var{index} is @code{UNSPEC_INDEX} or @code{UNSPECV_INDEX}. 3247@end deftypefn 3248 3249@defmac INCOMING_FRAME_SP_OFFSET 3250A C expression whose value is an integer giving the offset, in bytes, 3251from the value of the stack pointer register to the top of the stack 3252frame at the beginning of any function, before the prologue. The top of 3253the frame is defined to be the value of the stack pointer in the 3254previous frame, just before the call instruction. 3255 3256You only need to define this macro if you want to support call frame 3257debugging information like that provided by DWARF 2. 3258@end defmac 3259 3260@defmac ARG_POINTER_CFA_OFFSET (@var{fundecl}) 3261A C expression whose value is an integer giving the offset, in bytes, 3262from the argument pointer to the canonical frame address (cfa). The 3263final value should coincide with that calculated by 3264@code{INCOMING_FRAME_SP_OFFSET}. Which is unfortunately not usable 3265during virtual register instantiation. 3266 3267The default value for this macro is 3268@code{FIRST_PARM_OFFSET (fundecl) + crtl->args.pretend_args_size}, 3269which is correct for most machines; in general, the arguments are found 3270immediately before the stack frame. Note that this is not the case on 3271some targets that save registers into the caller's frame, such as SPARC 3272and rs6000, and so such targets need to define this macro. 3273 3274You only need to define this macro if the default is incorrect, and you 3275want to support call frame debugging information like that provided by 3276DWARF 2. 3277@end defmac 3278 3279@defmac FRAME_POINTER_CFA_OFFSET (@var{fundecl}) 3280If defined, a C expression whose value is an integer giving the offset 3281in bytes from the frame pointer to the canonical frame address (cfa). 3282The final value should coincide with that calculated by 3283@code{INCOMING_FRAME_SP_OFFSET}. 3284 3285Normally the CFA is calculated as an offset from the argument pointer, 3286via @code{ARG_POINTER_CFA_OFFSET}, but if the argument pointer is 3287variable due to the ABI, this may not be possible. If this macro is 3288defined, it implies that the virtual register instantiation should be 3289based on the frame pointer instead of the argument pointer. Only one 3290of @code{FRAME_POINTER_CFA_OFFSET} and @code{ARG_POINTER_CFA_OFFSET} 3291should be defined. 3292@end defmac 3293 3294@defmac CFA_FRAME_BASE_OFFSET (@var{fundecl}) 3295If defined, a C expression whose value is an integer giving the offset 3296in bytes from the canonical frame address (cfa) to the frame base used 3297in DWARF 2 debug information. The default is zero. A different value 3298may reduce the size of debug information on some ports. 3299@end defmac 3300 3301@node Exception Handling 3302@subsection Exception Handling Support 3303@cindex exception handling 3304 3305@defmac EH_RETURN_DATA_REGNO (@var{N}) 3306A C expression whose value is the @var{N}th register number used for 3307data by exception handlers, or @code{INVALID_REGNUM} if fewer than 3308@var{N} registers are usable. 3309 3310The exception handling library routines communicate with the exception 3311handlers via a set of agreed upon registers. Ideally these registers 3312should be call-clobbered; it is possible to use call-saved registers, 3313but may negatively impact code size. The target must support at least 33142 data registers, but should define 4 if there are enough free registers. 3315 3316You must define this macro if you want to support call frame exception 3317handling like that provided by DWARF 2. 3318@end defmac 3319 3320@defmac EH_RETURN_STACKADJ_RTX 3321A C expression whose value is RTL representing a location in which 3322to store a stack adjustment to be applied before function return. 3323This is used to unwind the stack to an exception handler's call frame. 3324It will be assigned zero on code paths that return normally. 3325 3326Typically this is a call-clobbered hard register that is otherwise 3327untouched by the epilogue, but could also be a stack slot. 3328 3329Do not define this macro if the stack pointer is saved and restored 3330by the regular prolog and epilog code in the call frame itself; in 3331this case, the exception handling library routines will update the 3332stack location to be restored in place. Otherwise, you must define 3333this macro if you want to support call frame exception handling like 3334that provided by DWARF 2. 3335@end defmac 3336 3337@defmac EH_RETURN_HANDLER_RTX 3338A C expression whose value is RTL representing a location in which 3339to store the address of an exception handler to which we should 3340return. It will not be assigned on code paths that return normally. 3341 3342Typically this is the location in the call frame at which the normal 3343return address is stored. For targets that return by popping an 3344address off the stack, this might be a memory address just below 3345the @emph{target} call frame rather than inside the current call 3346frame. If defined, @code{EH_RETURN_STACKADJ_RTX} will have already 3347been assigned, so it may be used to calculate the location of the 3348target call frame. 3349 3350Some targets have more complex requirements than storing to an 3351address calculable during initial code generation. In that case 3352the @code{eh_return} instruction pattern should be used instead. 3353 3354If you want to support call frame exception handling, you must 3355define either this macro or the @code{eh_return} instruction pattern. 3356@end defmac 3357 3358@defmac RETURN_ADDR_OFFSET 3359If defined, an integer-valued C expression for which rtl will be generated 3360to add it to the exception handler address before it is searched in the 3361exception handling tables, and to subtract it again from the address before 3362using it to return to the exception handler. 3363@end defmac 3364 3365@defmac ASM_PREFERRED_EH_DATA_FORMAT (@var{code}, @var{global}) 3366This macro chooses the encoding of pointers embedded in the exception 3367handling sections. If at all possible, this should be defined such 3368that the exception handling section will not require dynamic relocations, 3369and so may be read-only. 3370 3371@var{code} is 0 for data, 1 for code labels, 2 for function pointers. 3372@var{global} is true if the symbol may be affected by dynamic relocations. 3373The macro should return a combination of the @code{DW_EH_PE_*} defines 3374as found in @file{dwarf2.h}. 3375 3376If this macro is not defined, pointers will not be encoded but 3377represented directly. 3378@end defmac 3379 3380@defmac ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done}) 3381This macro allows the target to emit whatever special magic is required 3382to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}. 3383Generic code takes care of pc-relative and indirect encodings; this must 3384be defined if the target uses text-relative or data-relative encodings. 3385 3386This is a C statement that branches to @var{done} if the format was 3387handled. @var{encoding} is the format chosen, @var{size} is the number 3388of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF} 3389to be emitted. 3390@end defmac 3391 3392@defmac MD_FALLBACK_FRAME_STATE_FOR (@var{context}, @var{fs}) 3393This macro allows the target to add CPU and operating system specific 3394code to the call-frame unwinder for use when there is no unwind data 3395available. The most common reason to implement this macro is to unwind 3396through signal frames. 3397 3398This macro is called from @code{uw_frame_state_for} in 3399@file{unwind-dw2.c}, @file{unwind-dw2-xtensa.c} and 3400@file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context}; 3401@var{fs} is an @code{_Unwind_FrameState}. Examine @code{context->ra} 3402for the address of the code being executed and @code{context->cfa} for 3403the stack pointer value. If the frame can be decoded, the register 3404save addresses should be updated in @var{fs} and the macro should 3405evaluate to @code{_URC_NO_REASON}. If the frame cannot be decoded, 3406the macro should evaluate to @code{_URC_END_OF_STACK}. 3407 3408For proper signal handling in Java this macro is accompanied by 3409@code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers. 3410@end defmac 3411 3412@defmac MD_HANDLE_UNWABI (@var{context}, @var{fs}) 3413This macro allows the target to add operating system specific code to the 3414call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive, 3415usually used for signal or interrupt frames. 3416 3417This macro is called from @code{uw_update_context} in libgcc's 3418@file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context}; 3419@var{fs} is an @code{_Unwind_FrameState}. Examine @code{fs->unwabi} 3420for the abi and context in the @code{.unwabi} directive. If the 3421@code{.unwabi} directive can be handled, the register save addresses should 3422be updated in @var{fs}. 3423@end defmac 3424 3425@defmac TARGET_USES_WEAK_UNWIND_INFO 3426A C expression that evaluates to true if the target requires unwind 3427info to be given comdat linkage. Define it to be @code{1} if comdat 3428linkage is necessary. The default is @code{0}. 3429@end defmac 3430 3431@node Stack Checking 3432@subsection Specifying How Stack Checking is Done 3433 3434GCC will check that stack references are within the boundaries of the 3435stack, if the option @option{-fstack-check} is specified, in one of 3436three ways: 3437 3438@enumerate 3439@item 3440If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GCC 3441will assume that you have arranged for full stack checking to be done 3442at appropriate places in the configuration files. GCC will not do 3443other special processing. 3444 3445@item 3446If @code{STACK_CHECK_BUILTIN} is zero and the value of the 3447@code{STACK_CHECK_STATIC_BUILTIN} macro is nonzero, GCC will assume 3448that you have arranged for static stack checking (checking of the 3449static stack frame of functions) to be done at appropriate places 3450in the configuration files. GCC will only emit code to do dynamic 3451stack checking (checking on dynamic stack allocations) using the third 3452approach below. 3453 3454@item 3455If neither of the above are true, GCC will generate code to periodically 3456``probe'' the stack pointer using the values of the macros defined below. 3457@end enumerate 3458 3459If neither STACK_CHECK_BUILTIN nor STACK_CHECK_STATIC_BUILTIN is defined, 3460GCC will change its allocation strategy for large objects if the option 3461@option{-fstack-check} is specified: they will always be allocated 3462dynamically if their size exceeds @code{STACK_CHECK_MAX_VAR_SIZE} bytes. 3463 3464@defmac STACK_CHECK_BUILTIN 3465A nonzero value if stack checking is done by the configuration files in a 3466machine-dependent manner. You should define this macro if stack checking 3467is required by the ABI of your machine or if you would like to do stack 3468checking in some more efficient way than the generic approach. The default 3469value of this macro is zero. 3470@end defmac 3471 3472@defmac STACK_CHECK_STATIC_BUILTIN 3473A nonzero value if static stack checking is done by the configuration files 3474in a machine-dependent manner. You should define this macro if you would 3475like to do static stack checking in some more efficient way than the generic 3476approach. The default value of this macro is zero. 3477@end defmac 3478 3479@defmac STACK_CHECK_PROBE_INTERVAL_EXP 3480An integer specifying the interval at which GCC must generate stack probe 3481instructions, defined as 2 raised to this integer. You will normally 3482define this macro so that the interval be no larger than the size of 3483the ``guard pages'' at the end of a stack area. The default value 3484of 12 (4096-byte interval) is suitable for most systems. 3485@end defmac 3486 3487@defmac STACK_CHECK_MOVING_SP 3488An integer which is nonzero if GCC should move the stack pointer page by page 3489when doing probes. This can be necessary on systems where the stack pointer 3490contains the bottom address of the memory area accessible to the executing 3491thread at any point in time. In this situation an alternate signal stack 3492is required in order to be able to recover from a stack overflow. The 3493default value of this macro is zero. 3494@end defmac 3495 3496@defmac STACK_CHECK_PROTECT 3497The number of bytes of stack needed to recover from a stack overflow, for 3498languages where such a recovery is supported. The default value of 75 words 3499with the @code{setjmp}/@code{longjmp}-based exception handling mechanism and 35008192 bytes with other exception handling mechanisms should be adequate for 3501most machines. 3502@end defmac 3503 3504The following macros are relevant only if neither STACK_CHECK_BUILTIN 3505nor STACK_CHECK_STATIC_BUILTIN is defined; you can omit them altogether 3506in the opposite case. 3507 3508@defmac STACK_CHECK_MAX_FRAME_SIZE 3509The maximum size of a stack frame, in bytes. GCC will generate probe 3510instructions in non-leaf functions to ensure at least this many bytes of 3511stack are available. If a stack frame is larger than this size, stack 3512checking will not be reliable and GCC will issue a warning. The 3513default is chosen so that GCC only generates one instruction on most 3514systems. You should normally not change the default value of this macro. 3515@end defmac 3516 3517@defmac STACK_CHECK_FIXED_FRAME_SIZE 3518GCC uses this value to generate the above warning message. It 3519represents the amount of fixed frame used by a function, not including 3520space for any callee-saved registers, temporaries and user variables. 3521You need only specify an upper bound for this amount and will normally 3522use the default of four words. 3523@end defmac 3524 3525@defmac STACK_CHECK_MAX_VAR_SIZE 3526The maximum size, in bytes, of an object that GCC will place in the 3527fixed area of the stack frame when the user specifies 3528@option{-fstack-check}. 3529GCC computed the default from the values of the above macros and you will 3530normally not need to override that default. 3531@end defmac 3532 3533@need 2000 3534@node Frame Registers 3535@subsection Registers That Address the Stack Frame 3536 3537@c prevent bad page break with this line 3538This discusses registers that address the stack frame. 3539 3540@defmac STACK_POINTER_REGNUM 3541The register number of the stack pointer register, which must also be a 3542fixed register according to @code{FIXED_REGISTERS}. On most machines, 3543the hardware determines which register this is. 3544@end defmac 3545 3546@defmac FRAME_POINTER_REGNUM 3547The register number of the frame pointer register, which is used to 3548access automatic variables in the stack frame. On some machines, the 3549hardware determines which register this is. On other machines, you can 3550choose any register you wish for this purpose. 3551@end defmac 3552 3553@defmac HARD_FRAME_POINTER_REGNUM 3554On some machines the offset between the frame pointer and starting 3555offset of the automatic variables is not known until after register 3556allocation has been done (for example, because the saved registers are 3557between these two locations). On those machines, define 3558@code{FRAME_POINTER_REGNUM} the number of a special, fixed register to 3559be used internally until the offset is known, and define 3560@code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number 3561used for the frame pointer. 3562 3563You should define this macro only in the very rare circumstances when it 3564is not possible to calculate the offset between the frame pointer and 3565the automatic variables until after register allocation has been 3566completed. When this macro is defined, you must also indicate in your 3567definition of @code{ELIMINABLE_REGS} how to eliminate 3568@code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM} 3569or @code{STACK_POINTER_REGNUM}. 3570 3571Do not define this macro if it would be the same as 3572@code{FRAME_POINTER_REGNUM}. 3573@end defmac 3574 3575@defmac ARG_POINTER_REGNUM 3576The register number of the arg pointer register, which is used to access 3577the function's argument list. On some machines, this is the same as the 3578frame pointer register. On some machines, the hardware determines which 3579register this is. On other machines, you can choose any register you 3580wish for this purpose. If this is not the same register as the frame 3581pointer register, then you must mark it as a fixed register according to 3582@code{FIXED_REGISTERS}, or arrange to be able to eliminate it 3583(@pxref{Elimination}). 3584@end defmac 3585 3586@defmac HARD_FRAME_POINTER_IS_FRAME_POINTER 3587Define this to a preprocessor constant that is nonzero if 3588@code{hard_frame_pointer_rtx} and @code{frame_pointer_rtx} should be 3589the same. The default definition is @samp{(HARD_FRAME_POINTER_REGNUM 3590== FRAME_POINTER_REGNUM)}; you only need to define this macro if that 3591definition is not suitable for use in preprocessor conditionals. 3592@end defmac 3593 3594@defmac HARD_FRAME_POINTER_IS_ARG_POINTER 3595Define this to a preprocessor constant that is nonzero if 3596@code{hard_frame_pointer_rtx} and @code{arg_pointer_rtx} should be the 3597same. The default definition is @samp{(HARD_FRAME_POINTER_REGNUM == 3598ARG_POINTER_REGNUM)}; you only need to define this macro if that 3599definition is not suitable for use in preprocessor conditionals. 3600@end defmac 3601 3602@defmac RETURN_ADDRESS_POINTER_REGNUM 3603The register number of the return address pointer register, which is used to 3604access the current function's return address from the stack. On some 3605machines, the return address is not at a fixed offset from the frame 3606pointer or stack pointer or argument pointer. This register can be defined 3607to point to the return address on the stack, and then be converted by 3608@code{ELIMINABLE_REGS} into either the frame pointer or stack pointer. 3609 3610Do not define this macro unless there is no other way to get the return 3611address from the stack. 3612@end defmac 3613 3614@defmac STATIC_CHAIN_REGNUM 3615@defmacx STATIC_CHAIN_INCOMING_REGNUM 3616Register numbers used for passing a function's static chain pointer. If 3617register windows are used, the register number as seen by the called 3618function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register 3619number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}. If 3620these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need 3621not be defined. 3622 3623The static chain register need not be a fixed register. 3624 3625If the static chain is passed in memory, these macros should not be 3626defined; instead, the @code{TARGET_STATIC_CHAIN} hook should be used. 3627@end defmac 3628 3629@hook TARGET_STATIC_CHAIN 3630This hook replaces the use of @code{STATIC_CHAIN_REGNUM} et al for 3631targets that may use different static chain locations for different 3632nested functions. This may be required if the target has function 3633attributes that affect the calling conventions of the function and 3634those calling conventions use different static chain locations. 3635 3636The default version of this hook uses @code{STATIC_CHAIN_REGNUM} et al. 3637 3638If the static chain is passed in memory, this hook should be used to 3639provide rtx giving @code{mem} expressions that denote where they are stored. 3640Often the @code{mem} expression as seen by the caller will be at an offset 3641from the stack pointer and the @code{mem} expression as seen by the callee 3642will be at an offset from the frame pointer. 3643@findex stack_pointer_rtx 3644@findex frame_pointer_rtx 3645@findex arg_pointer_rtx 3646The variables @code{stack_pointer_rtx}, @code{frame_pointer_rtx}, and 3647@code{arg_pointer_rtx} will have been initialized and should be used 3648to refer to those items. 3649@end deftypefn 3650 3651@defmac DWARF_FRAME_REGISTERS 3652This macro specifies the maximum number of hard registers that can be 3653saved in a call frame. This is used to size data structures used in 3654DWARF2 exception handling. 3655 3656Prior to GCC 3.0, this macro was needed in order to establish a stable 3657exception handling ABI in the face of adding new hard registers for ISA 3658extensions. In GCC 3.0 and later, the EH ABI is insulated from changes 3659in the number of hard registers. Nevertheless, this macro can still be 3660used to reduce the runtime memory requirements of the exception handling 3661routines, which can be substantial if the ISA contains a lot of 3662registers that are not call-saved. 3663 3664If this macro is not defined, it defaults to 3665@code{FIRST_PSEUDO_REGISTER}. 3666@end defmac 3667 3668@defmac PRE_GCC3_DWARF_FRAME_REGISTERS 3669 3670This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided 3671for backward compatibility in pre GCC 3.0 compiled code. 3672 3673If this macro is not defined, it defaults to 3674@code{DWARF_FRAME_REGISTERS}. 3675@end defmac 3676 3677@defmac DWARF_REG_TO_UNWIND_COLUMN (@var{regno}) 3678 3679Define this macro if the target's representation for dwarf registers 3680is different than the internal representation for unwind column. 3681Given a dwarf register, this macro should return the internal unwind 3682column number to use instead. 3683 3684See the PowerPC's SPE target for an example. 3685@end defmac 3686 3687@defmac DWARF_FRAME_REGNUM (@var{regno}) 3688 3689Define this macro if the target's representation for dwarf registers 3690used in .eh_frame or .debug_frame is different from that used in other 3691debug info sections. Given a GCC hard register number, this macro 3692should return the .eh_frame register number. The default is 3693@code{DBX_REGISTER_NUMBER (@var{regno})}. 3694 3695@end defmac 3696 3697@defmac DWARF2_FRAME_REG_OUT (@var{regno}, @var{for_eh}) 3698 3699Define this macro to map register numbers held in the call frame info 3700that GCC has collected using @code{DWARF_FRAME_REGNUM} to those that 3701should be output in .debug_frame (@code{@var{for_eh}} is zero) and 3702.eh_frame (@code{@var{for_eh}} is nonzero). The default is to 3703return @code{@var{regno}}. 3704 3705@end defmac 3706 3707@defmac REG_VALUE_IN_UNWIND_CONTEXT 3708 3709Define this macro if the target stores register values as 3710@code{_Unwind_Word} type in unwind context. It should be defined if 3711target register size is larger than the size of @code{void *}. The 3712default is to store register values as @code{void *} type. 3713 3714@end defmac 3715 3716@defmac ASSUME_EXTENDED_UNWIND_CONTEXT 3717 3718Define this macro to be 1 if the target always uses extended unwind 3719context with version, args_size and by_value fields. If it is undefined, 3720it will be defined to 1 when @code{REG_VALUE_IN_UNWIND_CONTEXT} is 3721defined and 0 otherwise. 3722 3723@end defmac 3724 3725@node Elimination 3726@subsection Eliminating Frame Pointer and Arg Pointer 3727 3728@c prevent bad page break with this line 3729This is about eliminating the frame pointer and arg pointer. 3730 3731@hook TARGET_FRAME_POINTER_REQUIRED 3732This target hook should return @code{true} if a function must have and use 3733a frame pointer. This target hook is called in the reload pass. If its return 3734value is @code{true} the function will have a frame pointer. 3735 3736This target hook can in principle examine the current function and decide 3737according to the facts, but on most machines the constant @code{false} or the 3738constant @code{true} suffices. Use @code{false} when the machine allows code 3739to be generated with no frame pointer, and doing so saves some time or space. 3740Use @code{true} when there is no possible advantage to avoiding a frame 3741pointer. 3742 3743In certain cases, the compiler does not know how to produce valid code 3744without a frame pointer. The compiler recognizes those cases and 3745automatically gives the function a frame pointer regardless of what 3746@code{TARGET_FRAME_POINTER_REQUIRED} returns. You don't need to worry about 3747them. 3748 3749In a function that does not require a frame pointer, the frame pointer 3750register can be allocated for ordinary usage, unless you mark it as a 3751fixed register. See @code{FIXED_REGISTERS} for more information. 3752 3753Default return value is @code{false}. 3754@end deftypefn 3755 3756@findex get_frame_size 3757@defmac INITIAL_FRAME_POINTER_OFFSET (@var{depth-var}) 3758A C statement to store in the variable @var{depth-var} the difference 3759between the frame pointer and the stack pointer values immediately after 3760the function prologue. The value would be computed from information 3761such as the result of @code{get_frame_size ()} and the tables of 3762registers @code{regs_ever_live} and @code{call_used_regs}. 3763 3764If @code{ELIMINABLE_REGS} is defined, this macro will be not be used and 3765need not be defined. Otherwise, it must be defined even if 3766@code{TARGET_FRAME_POINTER_REQUIRED} always returns true; in that 3767case, you may set @var{depth-var} to anything. 3768@end defmac 3769 3770@defmac ELIMINABLE_REGS 3771If defined, this macro specifies a table of register pairs used to 3772eliminate unneeded registers that point into the stack frame. If it is not 3773defined, the only elimination attempted by the compiler is to replace 3774references to the frame pointer with references to the stack pointer. 3775 3776The definition of this macro is a list of structure initializations, each 3777of which specifies an original and replacement register. 3778 3779On some machines, the position of the argument pointer is not known until 3780the compilation is completed. In such a case, a separate hard register 3781must be used for the argument pointer. This register can be eliminated by 3782replacing it with either the frame pointer or the argument pointer, 3783depending on whether or not the frame pointer has been eliminated. 3784 3785In this case, you might specify: 3786@smallexample 3787#define ELIMINABLE_REGS \ 3788@{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \ 3789 @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \ 3790 @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@} 3791@end smallexample 3792 3793Note that the elimination of the argument pointer with the stack pointer is 3794specified first since that is the preferred elimination. 3795@end defmac 3796 3797@hook TARGET_CAN_ELIMINATE 3798This target hook should returns @code{true} if the compiler is allowed to 3799try to replace register number @var{from_reg} with register number 3800@var{to_reg}. This target hook need only be defined if @code{ELIMINABLE_REGS} 3801is defined, and will usually be @code{true}, since most of the cases 3802preventing register elimination are things that the compiler already 3803knows about. 3804 3805Default return value is @code{true}. 3806@end deftypefn 3807 3808@defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var}) 3809This macro is similar to @code{INITIAL_FRAME_POINTER_OFFSET}. It 3810specifies the initial difference between the specified pair of 3811registers. This macro must be defined if @code{ELIMINABLE_REGS} is 3812defined. 3813@end defmac 3814 3815@node Stack Arguments 3816@subsection Passing Function Arguments on the Stack 3817@cindex arguments on stack 3818@cindex stack arguments 3819 3820The macros in this section control how arguments are passed 3821on the stack. See the following section for other macros that 3822control passing certain arguments in registers. 3823 3824@hook TARGET_PROMOTE_PROTOTYPES 3825This target hook returns @code{true} if an argument declared in a 3826prototype as an integral type smaller than @code{int} should actually be 3827passed as an @code{int}. In addition to avoiding errors in certain 3828cases of mismatch, it also makes for better code on certain machines. 3829The default is to not promote prototypes. 3830@end deftypefn 3831 3832@defmac PUSH_ARGS 3833A C expression. If nonzero, push insns will be used to pass 3834outgoing arguments. 3835If the target machine does not have a push instruction, set it to zero. 3836That directs GCC to use an alternate strategy: to 3837allocate the entire argument block and then store the arguments into 3838it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too. 3839@end defmac 3840 3841@defmac PUSH_ARGS_REVERSED 3842A C expression. If nonzero, function arguments will be evaluated from 3843last to first, rather than from first to last. If this macro is not 3844defined, it defaults to @code{PUSH_ARGS} on targets where the stack 3845and args grow in opposite directions, and 0 otherwise. 3846@end defmac 3847 3848@defmac PUSH_ROUNDING (@var{npushed}) 3849A C expression that is the number of bytes actually pushed onto the 3850stack when an instruction attempts to push @var{npushed} bytes. 3851 3852On some machines, the definition 3853 3854@smallexample 3855#define PUSH_ROUNDING(BYTES) (BYTES) 3856@end smallexample 3857 3858@noindent 3859will suffice. But on other machines, instructions that appear 3860to push one byte actually push two bytes in an attempt to maintain 3861alignment. Then the definition should be 3862 3863@smallexample 3864#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1) 3865@end smallexample 3866 3867If the value of this macro has a type, it should be an unsigned type. 3868@end defmac 3869 3870@findex outgoing_args_size 3871@findex crtl->outgoing_args_size 3872@defmac ACCUMULATE_OUTGOING_ARGS 3873A C expression. If nonzero, the maximum amount of space required for outgoing arguments 3874will be computed and placed into 3875@code{crtl->outgoing_args_size}. No space will be pushed 3876onto the stack for each call; instead, the function prologue should 3877increase the stack frame size by this amount. 3878 3879Setting both @code{PUSH_ARGS} and @code{ACCUMULATE_OUTGOING_ARGS} 3880is not proper. 3881@end defmac 3882 3883@defmac REG_PARM_STACK_SPACE (@var{fndecl}) 3884Define this macro if functions should assume that stack space has been 3885allocated for arguments even when their values are passed in 3886registers. 3887 3888The value of this macro is the size, in bytes, of the area reserved for 3889arguments passed in registers for the function represented by @var{fndecl}, 3890which can be zero if GCC is calling a library function. 3891The argument @var{fndecl} can be the FUNCTION_DECL, or the type itself 3892of the function. 3893 3894This space can be allocated by the caller, or be a part of the 3895machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says 3896which. 3897@end defmac 3898@c above is overfull. not sure what to do. --mew 5feb93 did 3899@c something, not sure if it looks good. --mew 10feb93 3900 3901@defmac INCOMING_REG_PARM_STACK_SPACE (@var{fndecl}) 3902Like @code{REG_PARM_STACK_SPACE}, but for incoming register arguments. 3903Define this macro if space guaranteed when compiling a function body 3904is different to space required when making a call, a situation that 3905can arise with K&R style function definitions. 3906@end defmac 3907 3908@defmac OUTGOING_REG_PARM_STACK_SPACE (@var{fntype}) 3909Define this to a nonzero value if it is the responsibility of the 3910caller to allocate the area reserved for arguments passed in registers 3911when calling a function of @var{fntype}. @var{fntype} may be NULL 3912if the function called is a library function. 3913 3914If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls 3915whether the space for these arguments counts in the value of 3916@code{crtl->outgoing_args_size}. 3917@end defmac 3918 3919@defmac STACK_PARMS_IN_REG_PARM_AREA 3920Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the 3921stack parameters don't skip the area specified by it. 3922@c i changed this, makes more sens and it should have taken care of the 3923@c overfull.. not as specific, tho. --mew 5feb93 3924 3925Normally, when a parameter is not passed in registers, it is placed on the 3926stack beyond the @code{REG_PARM_STACK_SPACE} area. Defining this macro 3927suppresses this behavior and causes the parameter to be passed on the 3928stack in its natural location. 3929@end defmac 3930 3931@hook TARGET_RETURN_POPS_ARGS 3932This target hook returns the number of bytes of its own arguments that 3933a function pops on returning, or 0 if the function pops no arguments 3934and the caller must therefore pop them all after the function returns. 3935 3936@var{fundecl} is a C variable whose value is a tree node that describes 3937the function in question. Normally it is a node of type 3938@code{FUNCTION_DECL} that describes the declaration of the function. 3939From this you can obtain the @code{DECL_ATTRIBUTES} of the function. 3940 3941@var{funtype} is a C variable whose value is a tree node that 3942describes the function in question. Normally it is a node of type 3943@code{FUNCTION_TYPE} that describes the data type of the function. 3944From this it is possible to obtain the data types of the value and 3945arguments (if known). 3946 3947When a call to a library function is being considered, @var{fundecl} 3948will contain an identifier node for the library function. Thus, if 3949you need to distinguish among various library functions, you can do so 3950by their names. Note that ``library function'' in this context means 3951a function used to perform arithmetic, whose name is known specially 3952in the compiler and was not mentioned in the C code being compiled. 3953 3954@var{size} is the number of bytes of arguments passed on the 3955stack. If a variable number of bytes is passed, it is zero, and 3956argument popping will always be the responsibility of the calling function. 3957 3958On the VAX, all functions always pop their arguments, so the definition 3959of this macro is @var{size}. On the 68000, using the standard 3960calling convention, no functions pop their arguments, so the value of 3961the macro is always 0 in this case. But an alternative calling 3962convention is available in which functions that take a fixed number of 3963arguments pop them but other functions (such as @code{printf}) pop 3964nothing (the caller pops all). When this convention is in use, 3965@var{funtype} is examined to determine whether a function takes a fixed 3966number of arguments. 3967@end deftypefn 3968 3969@defmac CALL_POPS_ARGS (@var{cum}) 3970A C expression that should indicate the number of bytes a call sequence 3971pops off the stack. It is added to the value of @code{RETURN_POPS_ARGS} 3972when compiling a function call. 3973 3974@var{cum} is the variable in which all arguments to the called function 3975have been accumulated. 3976 3977On certain architectures, such as the SH5, a call trampoline is used 3978that pops certain registers off the stack, depending on the arguments 3979that have been passed to the function. Since this is a property of the 3980call site, not of the called function, @code{RETURN_POPS_ARGS} is not 3981appropriate. 3982@end defmac 3983 3984@node Register Arguments 3985@subsection Passing Arguments in Registers 3986@cindex arguments in registers 3987@cindex registers arguments 3988 3989This section describes the macros which let you control how various 3990types of arguments are passed in registers or how they are arranged in 3991the stack. 3992 3993@hook TARGET_FUNCTION_ARG 3994Return an RTX indicating whether a function argument is passed in a 3995register and if so, which register. 3996 3997The arguments are @var{ca}, which summarizes all the previous 3998arguments; @var{mode}, the machine mode of the argument; @var{type}, 3999the data type of the argument as a tree node or 0 if that is not known 4000(which happens for C support library functions); and @var{named}, 4001which is @code{true} for an ordinary argument and @code{false} for 4002nameless arguments that correspond to @samp{@dots{}} in the called 4003function's prototype. @var{type} can be an incomplete type if a 4004syntax error has previously occurred. 4005 4006The return value is usually either a @code{reg} RTX for the hard 4007register in which to pass the argument, or zero to pass the argument 4008on the stack. 4009 4010The value of the expression can also be a @code{parallel} RTX@. This is 4011used when an argument is passed in multiple locations. The mode of the 4012@code{parallel} should be the mode of the entire argument. The 4013@code{parallel} holds any number of @code{expr_list} pairs; each one 4014describes where part of the argument is passed. In each 4015@code{expr_list} the first operand must be a @code{reg} RTX for the hard 4016register in which to pass this part of the argument, and the mode of the 4017register RTX indicates how large this part of the argument is. The 4018second operand of the @code{expr_list} is a @code{const_int} which gives 4019the offset in bytes into the entire argument of where this part starts. 4020As a special exception the first @code{expr_list} in the @code{parallel} 4021RTX may have a first operand of zero. This indicates that the entire 4022argument is also stored on the stack. 4023 4024The last time this hook is called, it is called with @code{MODE == 4025VOIDmode}, and its result is passed to the @code{call} or @code{call_value} 4026pattern as operands 2 and 3 respectively. 4027 4028@cindex @file{stdarg.h} and register arguments 4029The usual way to make the ISO library @file{stdarg.h} work on a 4030machine where some arguments are usually passed in registers, is to 4031cause nameless arguments to be passed on the stack instead. This is 4032done by making @code{TARGET_FUNCTION_ARG} return 0 whenever 4033@var{named} is @code{false}. 4034 4035@cindex @code{TARGET_MUST_PASS_IN_STACK}, and @code{TARGET_FUNCTION_ARG} 4036@cindex @code{REG_PARM_STACK_SPACE}, and @code{TARGET_FUNCTION_ARG} 4037You may use the hook @code{targetm.calls.must_pass_in_stack} 4038in the definition of this macro to determine if this argument is of a 4039type that must be passed in the stack. If @code{REG_PARM_STACK_SPACE} 4040is not defined and @code{TARGET_FUNCTION_ARG} returns nonzero for such an 4041argument, the compiler will abort. If @code{REG_PARM_STACK_SPACE} is 4042defined, the argument will be computed in the stack and then loaded into 4043a register. 4044@end deftypefn 4045 4046@hook TARGET_MUST_PASS_IN_STACK 4047This target hook should return @code{true} if we should not pass @var{type} 4048solely in registers. The file @file{expr.h} defines a 4049definition that is usually appropriate, refer to @file{expr.h} for additional 4050documentation. 4051@end deftypefn 4052 4053@hook TARGET_FUNCTION_INCOMING_ARG 4054Define this hook if the target machine has ``register windows'', so 4055that the register in which a function sees an arguments is not 4056necessarily the same as the one in which the caller passed the 4057argument. 4058 4059For such machines, @code{TARGET_FUNCTION_ARG} computes the register in 4060which the caller passes the value, and 4061@code{TARGET_FUNCTION_INCOMING_ARG} should be defined in a similar 4062fashion to tell the function being called where the arguments will 4063arrive. 4064 4065If @code{TARGET_FUNCTION_INCOMING_ARG} is not defined, 4066@code{TARGET_FUNCTION_ARG} serves both purposes. 4067@end deftypefn 4068 4069@hook TARGET_ARG_PARTIAL_BYTES 4070This target hook returns the number of bytes at the beginning of an 4071argument that must be put in registers. The value must be zero for 4072arguments that are passed entirely in registers or that are entirely 4073pushed on the stack. 4074 4075On some machines, certain arguments must be passed partially in 4076registers and partially in memory. On these machines, typically the 4077first few words of arguments are passed in registers, and the rest 4078on the stack. If a multi-word argument (a @code{double} or a 4079structure) crosses that boundary, its first few words must be passed 4080in registers and the rest must be pushed. This macro tells the 4081compiler when this occurs, and how many bytes should go in registers. 4082 4083@code{TARGET_FUNCTION_ARG} for these arguments should return the first 4084register to be used by the caller for this argument; likewise 4085@code{TARGET_FUNCTION_INCOMING_ARG}, for the called function. 4086@end deftypefn 4087 4088@hook TARGET_PASS_BY_REFERENCE 4089This target hook should return @code{true} if an argument at the 4090position indicated by @var{cum} should be passed by reference. This 4091predicate is queried after target independent reasons for being 4092passed by reference, such as @code{TREE_ADDRESSABLE (type)}. 4093 4094If the hook returns true, a copy of that argument is made in memory and a 4095pointer to the argument is passed instead of the argument itself. 4096The pointer is passed in whatever way is appropriate for passing a pointer 4097to that type. 4098@end deftypefn 4099 4100@hook TARGET_CALLEE_COPIES 4101The function argument described by the parameters to this hook is 4102known to be passed by reference. The hook should return true if the 4103function argument should be copied by the callee instead of copied 4104by the caller. 4105 4106For any argument for which the hook returns true, if it can be 4107determined that the argument is not modified, then a copy need 4108not be generated. 4109 4110The default version of this hook always returns false. 4111@end deftypefn 4112 4113@defmac CUMULATIVE_ARGS 4114A C type for declaring a variable that is used as the first argument 4115of @code{TARGET_FUNCTION_ARG} and other related values. For some 4116target machines, the type @code{int} suffices and can hold the number 4117of bytes of argument so far. 4118 4119There is no need to record in @code{CUMULATIVE_ARGS} anything about the 4120arguments that have been passed on the stack. The compiler has other 4121variables to keep track of that. For target machines on which all 4122arguments are passed on the stack, there is no need to store anything in 4123@code{CUMULATIVE_ARGS}; however, the data structure must exist and 4124should not be empty, so use @code{int}. 4125@end defmac 4126 4127@defmac OVERRIDE_ABI_FORMAT (@var{fndecl}) 4128If defined, this macro is called before generating any code for a 4129function, but after the @var{cfun} descriptor for the function has been 4130created. The back end may use this macro to update @var{cfun} to 4131reflect an ABI other than that which would normally be used by default. 4132If the compiler is generating code for a compiler-generated function, 4133@var{fndecl} may be @code{NULL}. 4134@end defmac 4135 4136@defmac INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{fndecl}, @var{n_named_args}) 4137A C statement (sans semicolon) for initializing the variable 4138@var{cum} for the state at the beginning of the argument list. The 4139variable has type @code{CUMULATIVE_ARGS}. The value of @var{fntype} 4140is the tree node for the data type of the function which will receive 4141the args, or 0 if the args are to a compiler support library function. 4142For direct calls that are not libcalls, @var{fndecl} contain the 4143declaration node of the function. @var{fndecl} is also set when 4144@code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function 4145being compiled. @var{n_named_args} is set to the number of named 4146arguments, including a structure return address if it is passed as a 4147parameter, when making a call. When processing incoming arguments, 4148@var{n_named_args} is set to @minus{}1. 4149 4150When processing a call to a compiler support library function, 4151@var{libname} identifies which one. It is a @code{symbol_ref} rtx which 4152contains the name of the function, as a string. @var{libname} is 0 when 4153an ordinary C function call is being processed. Thus, each time this 4154macro is called, either @var{libname} or @var{fntype} is nonzero, but 4155never both of them at once. 4156@end defmac 4157 4158@defmac INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname}) 4159Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls, 4160it gets a @code{MODE} argument instead of @var{fntype}, that would be 4161@code{NULL}. @var{indirect} would always be zero, too. If this macro 4162is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 41630)} is used instead. 4164@end defmac 4165 4166@defmac INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname}) 4167Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of 4168finding the arguments for the function being compiled. If this macro is 4169undefined, @code{INIT_CUMULATIVE_ARGS} is used instead. 4170 4171The value passed for @var{libname} is always 0, since library routines 4172with special calling conventions are never compiled with GCC@. The 4173argument @var{libname} exists for symmetry with 4174@code{INIT_CUMULATIVE_ARGS}. 4175@c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe. 4176@c --mew 5feb93 i switched the order of the sentences. --mew 10feb93 4177@end defmac 4178 4179@hook TARGET_FUNCTION_ARG_ADVANCE 4180This hook updates the summarizer variable pointed to by @var{ca} to 4181advance past an argument in the argument list. The values @var{mode}, 4182@var{type} and @var{named} describe that argument. Once this is done, 4183the variable @var{cum} is suitable for analyzing the @emph{following} 4184argument with @code{TARGET_FUNCTION_ARG}, etc. 4185 4186This hook need not do anything if the argument in question was passed 4187on the stack. The compiler knows how to track the amount of stack space 4188used for arguments without any special help. 4189@end deftypefn 4190 4191@defmac FUNCTION_ARG_OFFSET (@var{mode}, @var{type}) 4192If defined, a C expression that is the number of bytes to add to the 4193offset of the argument passed in memory. This is needed for the SPU, 4194which passes @code{char} and @code{short} arguments in the preferred 4195slot that is in the middle of the quad word instead of starting at the 4196top. 4197@end defmac 4198 4199@defmac FUNCTION_ARG_PADDING (@var{mode}, @var{type}) 4200If defined, a C expression which determines whether, and in which direction, 4201to pad out an argument with extra space. The value should be of type 4202@code{enum direction}: either @code{upward} to pad above the argument, 4203@code{downward} to pad below, or @code{none} to inhibit padding. 4204 4205The @emph{amount} of padding is not controlled by this macro, but by the 4206target hook @code{TARGET_FUNCTION_ARG_ROUND_BOUNDARY}. It is 4207always just enough to reach the next multiple of that boundary. 4208 4209This macro has a default definition which is right for most systems. 4210For little-endian machines, the default is to pad upward. For 4211big-endian machines, the default is to pad downward for an argument of 4212constant size shorter than an @code{int}, and upward otherwise. 4213@end defmac 4214 4215@defmac PAD_VARARGS_DOWN 4216If defined, a C expression which determines whether the default 4217implementation of va_arg will attempt to pad down before reading the 4218next argument, if that argument is smaller than its aligned space as 4219controlled by @code{PARM_BOUNDARY}. If this macro is not defined, all such 4220arguments are padded down if @code{BYTES_BIG_ENDIAN} is true. 4221@end defmac 4222 4223@defmac BLOCK_REG_PADDING (@var{mode}, @var{type}, @var{first}) 4224Specify padding for the last element of a block move between registers and 4225memory. @var{first} is nonzero if this is the only element. Defining this 4226macro allows better control of register function parameters on big-endian 4227machines, without using @code{PARALLEL} rtl. In particular, 4228@code{MUST_PASS_IN_STACK} need not test padding and mode of types in 4229registers, as there is no longer a "wrong" part of a register; For example, 4230a three byte aggregate may be passed in the high part of a register if so 4231required. 4232@end defmac 4233 4234@hook TARGET_FUNCTION_ARG_BOUNDARY 4235This hook returns the alignment boundary, in bits, of an argument 4236with the specified mode and type. The default hook returns 4237@code{PARM_BOUNDARY} for all arguments. 4238@end deftypefn 4239 4240@hook TARGET_FUNCTION_ARG_ROUND_BOUNDARY 4241 4242@defmac FUNCTION_ARG_REGNO_P (@var{regno}) 4243A C expression that is nonzero if @var{regno} is the number of a hard 4244register in which function arguments are sometimes passed. This does 4245@emph{not} include implicit arguments such as the static chain and 4246the structure-value address. On many machines, no registers can be 4247used for this purpose since all function arguments are pushed on the 4248stack. 4249@end defmac 4250 4251@hook TARGET_SPLIT_COMPLEX_ARG 4252This hook should return true if parameter of type @var{type} are passed 4253as two scalar parameters. By default, GCC will attempt to pack complex 4254arguments into the target's word size. Some ABIs require complex arguments 4255to be split and treated as their individual components. For example, on 4256AIX64, complex floats should be passed in a pair of floating point 4257registers, even though a complex float would fit in one 64-bit floating 4258point register. 4259 4260The default value of this hook is @code{NULL}, which is treated as always 4261false. 4262@end deftypefn 4263 4264@hook TARGET_BUILD_BUILTIN_VA_LIST 4265This hook returns a type node for @code{va_list} for the target. 4266The default version of the hook returns @code{void*}. 4267@end deftypefn 4268 4269@hook TARGET_ENUM_VA_LIST_P 4270This target hook is used in function @code{c_common_nodes_and_builtins} 4271to iterate through the target specific builtin types for va_list. The 4272variable @var{idx} is used as iterator. @var{pname} has to be a pointer 4273to a @code{const char *} and @var{ptree} a pointer to a @code{tree} typed 4274variable. 4275The arguments @var{pname} and @var{ptree} are used to store the result of 4276this macro and are set to the name of the va_list builtin type and its 4277internal type. 4278If the return value of this macro is zero, then there is no more element. 4279Otherwise the @var{IDX} should be increased for the next call of this 4280macro to iterate through all types. 4281@end deftypefn 4282 4283@hook TARGET_FN_ABI_VA_LIST 4284This hook returns the va_list type of the calling convention specified by 4285@var{fndecl}. 4286The default version of this hook returns @code{va_list_type_node}. 4287@end deftypefn 4288 4289@hook TARGET_CANONICAL_VA_LIST_TYPE 4290This hook returns the va_list type of the calling convention specified by the 4291type of @var{type}. If @var{type} is not a valid va_list type, it returns 4292@code{NULL_TREE}. 4293@end deftypefn 4294 4295@hook TARGET_GIMPLIFY_VA_ARG_EXPR 4296This hook performs target-specific gimplification of 4297@code{VA_ARG_EXPR}. The first two parameters correspond to the 4298arguments to @code{va_arg}; the latter two are as in 4299@code{gimplify.c:gimplify_expr}. 4300@end deftypefn 4301 4302@hook TARGET_VALID_POINTER_MODE 4303Define this to return nonzero if the port can handle pointers 4304with machine mode @var{mode}. The default version of this 4305hook returns true for both @code{ptr_mode} and @code{Pmode}. 4306@end deftypefn 4307 4308@hook TARGET_REF_MAY_ALIAS_ERRNO 4309 4310@hook TARGET_SCALAR_MODE_SUPPORTED_P 4311Define this to return nonzero if the port is prepared to handle 4312insns involving scalar mode @var{mode}. For a scalar mode to be 4313considered supported, all the basic arithmetic and comparisons 4314must work. 4315 4316The default version of this hook returns true for any mode 4317required to handle the basic C types (as defined by the port). 4318Included here are the double-word arithmetic supported by the 4319code in @file{optabs.c}. 4320@end deftypefn 4321 4322@hook TARGET_VECTOR_MODE_SUPPORTED_P 4323Define this to return nonzero if the port is prepared to handle 4324insns involving vector mode @var{mode}. At the very least, it 4325must have move patterns for this mode. 4326@end deftypefn 4327 4328@hook TARGET_ARRAY_MODE_SUPPORTED_P 4329 4330@hook TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P 4331Define this to return nonzero for machine modes for which the port has 4332small register classes. If this target hook returns nonzero for a given 4333@var{mode}, the compiler will try to minimize the lifetime of registers 4334in @var{mode}. The hook may be called with @code{VOIDmode} as argument. 4335In this case, the hook is expected to return nonzero if it returns nonzero 4336for any mode. 4337 4338On some machines, it is risky to let hard registers live across arbitrary 4339insns. Typically, these machines have instructions that require values 4340to be in specific registers (like an accumulator), and reload will fail 4341if the required hard register is used for another purpose across such an 4342insn. 4343 4344Passes before reload do not know which hard registers will be used 4345in an instruction, but the machine modes of the registers set or used in 4346the instruction are already known. And for some machines, register 4347classes are small for, say, integer registers but not for floating point 4348registers. For example, the AMD x86-64 architecture requires specific 4349registers for the legacy x86 integer instructions, but there are many 4350SSE registers for floating point operations. On such targets, a good 4351strategy may be to return nonzero from this hook for @code{INTEGRAL_MODE_P} 4352machine modes but zero for the SSE register classes. 4353 4354The default version of this hook returns false for any mode. It is always 4355safe to redefine this hook to return with a nonzero value. But if you 4356unnecessarily define it, you will reduce the amount of optimizations 4357that can be performed in some cases. If you do not define this hook 4358to return a nonzero value when it is required, the compiler will run out 4359of spill registers and print a fatal error message. 4360@end deftypefn 4361 4362@node Scalar Return 4363@subsection How Scalar Function Values Are Returned 4364@cindex return values in registers 4365@cindex values, returned by functions 4366@cindex scalars, returned as values 4367 4368This section discusses the macros that control returning scalars as 4369values---values that can fit in registers. 4370 4371@hook TARGET_FUNCTION_VALUE 4372 4373Define this to return an RTX representing the place where a function 4374returns or receives a value of data type @var{ret_type}, a tree node 4375representing a data type. @var{fn_decl_or_type} is a tree node 4376representing @code{FUNCTION_DECL} or @code{FUNCTION_TYPE} of a 4377function being called. If @var{outgoing} is false, the hook should 4378compute the register in which the caller will see the return value. 4379Otherwise, the hook should return an RTX representing the place where 4380a function returns a value. 4381 4382On many machines, only @code{TYPE_MODE (@var{ret_type})} is relevant. 4383(Actually, on most machines, scalar values are returned in the same 4384place regardless of mode.) The value of the expression is usually a 4385@code{reg} RTX for the hard register where the return value is stored. 4386The value can also be a @code{parallel} RTX, if the return value is in 4387multiple places. See @code{TARGET_FUNCTION_ARG} for an explanation of the 4388@code{parallel} form. Note that the callee will populate every 4389location specified in the @code{parallel}, but if the first element of 4390the @code{parallel} contains the whole return value, callers will use 4391that element as the canonical location and ignore the others. The m68k 4392port uses this type of @code{parallel} to return pointers in both 4393@samp{%a0} (the canonical location) and @samp{%d0}. 4394 4395If @code{TARGET_PROMOTE_FUNCTION_RETURN} returns true, you must apply 4396the same promotion rules specified in @code{PROMOTE_MODE} if 4397@var{valtype} is a scalar type. 4398 4399If the precise function being called is known, @var{func} is a tree 4400node (@code{FUNCTION_DECL}) for it; otherwise, @var{func} is a null 4401pointer. This makes it possible to use a different value-returning 4402convention for specific functions when all their calls are 4403known. 4404 4405Some target machines have ``register windows'' so that the register in 4406which a function returns its value is not the same as the one in which 4407the caller sees the value. For such machines, you should return 4408different RTX depending on @var{outgoing}. 4409 4410@code{TARGET_FUNCTION_VALUE} is not used for return values with 4411aggregate data types, because these are returned in another way. See 4412@code{TARGET_STRUCT_VALUE_RTX} and related macros, below. 4413@end deftypefn 4414 4415@defmac FUNCTION_VALUE (@var{valtype}, @var{func}) 4416This macro has been deprecated. Use @code{TARGET_FUNCTION_VALUE} for 4417a new target instead. 4418@end defmac 4419 4420@defmac LIBCALL_VALUE (@var{mode}) 4421A C expression to create an RTX representing the place where a library 4422function returns a value of mode @var{mode}. 4423 4424Note that ``library function'' in this context means a compiler 4425support routine, used to perform arithmetic, whose name is known 4426specially by the compiler and was not mentioned in the C code being 4427compiled. 4428@end defmac 4429 4430@hook TARGET_LIBCALL_VALUE 4431Define this hook if the back-end needs to know the name of the libcall 4432function in order to determine where the result should be returned. 4433 4434The mode of the result is given by @var{mode} and the name of the called 4435library function is given by @var{fun}. The hook should return an RTX 4436representing the place where the library function result will be returned. 4437 4438If this hook is not defined, then LIBCALL_VALUE will be used. 4439@end deftypefn 4440 4441@defmac FUNCTION_VALUE_REGNO_P (@var{regno}) 4442A C expression that is nonzero if @var{regno} is the number of a hard 4443register in which the values of called function may come back. 4444 4445A register whose use for returning values is limited to serving as the 4446second of a pair (for a value of type @code{double}, say) need not be 4447recognized by this macro. So for most machines, this definition 4448suffices: 4449 4450@smallexample 4451#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0) 4452@end smallexample 4453 4454If the machine has register windows, so that the caller and the called 4455function use different registers for the return value, this macro 4456should recognize only the caller's register numbers. 4457 4458This macro has been deprecated. Use @code{TARGET_FUNCTION_VALUE_REGNO_P} 4459for a new target instead. 4460@end defmac 4461 4462@hook TARGET_FUNCTION_VALUE_REGNO_P 4463A target hook that return @code{true} if @var{regno} is the number of a hard 4464register in which the values of called function may come back. 4465 4466A register whose use for returning values is limited to serving as the 4467second of a pair (for a value of type @code{double}, say) need not be 4468recognized by this target hook. 4469 4470If the machine has register windows, so that the caller and the called 4471function use different registers for the return value, this target hook 4472should recognize only the caller's register numbers. 4473 4474If this hook is not defined, then FUNCTION_VALUE_REGNO_P will be used. 4475@end deftypefn 4476 4477@defmac APPLY_RESULT_SIZE 4478Define this macro if @samp{untyped_call} and @samp{untyped_return} 4479need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for 4480saving and restoring an arbitrary return value. 4481@end defmac 4482 4483@hook TARGET_RETURN_IN_MSB 4484This hook should return true if values of type @var{type} are returned 4485at the most significant end of a register (in other words, if they are 4486padded at the least significant end). You can assume that @var{type} 4487is returned in a register; the caller is required to check this. 4488 4489Note that the register provided by @code{TARGET_FUNCTION_VALUE} must 4490be able to hold the complete return value. For example, if a 1-, 2- 4491or 3-byte structure is returned at the most significant end of a 44924-byte register, @code{TARGET_FUNCTION_VALUE} should provide an 4493@code{SImode} rtx. 4494@end deftypefn 4495 4496@node Aggregate Return 4497@subsection How Large Values Are Returned 4498@cindex aggregates as return values 4499@cindex large return values 4500@cindex returning aggregate values 4501@cindex structure value address 4502 4503When a function value's mode is @code{BLKmode} (and in some other 4504cases), the value is not returned according to 4505@code{TARGET_FUNCTION_VALUE} (@pxref{Scalar Return}). Instead, the 4506caller passes the address of a block of memory in which the value 4507should be stored. This address is called the @dfn{structure value 4508address}. 4509 4510This section describes how to control returning structure values in 4511memory. 4512 4513@hook TARGET_RETURN_IN_MEMORY 4514This target hook should return a nonzero value to say to return the 4515function value in memory, just as large structures are always returned. 4516Here @var{type} will be the data type of the value, and @var{fntype} 4517will be the type of the function doing the returning, or @code{NULL} for 4518libcalls. 4519 4520Note that values of mode @code{BLKmode} must be explicitly handled 4521by this function. Also, the option @option{-fpcc-struct-return} 4522takes effect regardless of this macro. On most systems, it is 4523possible to leave the hook undefined; this causes a default 4524definition to be used, whose value is the constant 1 for @code{BLKmode} 4525values, and 0 otherwise. 4526 4527Do not use this hook to indicate that structures and unions should always 4528be returned in memory. You should instead use @code{DEFAULT_PCC_STRUCT_RETURN} 4529to indicate this. 4530@end deftypefn 4531 4532@defmac DEFAULT_PCC_STRUCT_RETURN 4533Define this macro to be 1 if all structure and union return values must be 4534in memory. Since this results in slower code, this should be defined 4535only if needed for compatibility with other compilers or with an ABI@. 4536If you define this macro to be 0, then the conventions used for structure 4537and union return values are decided by the @code{TARGET_RETURN_IN_MEMORY} 4538target hook. 4539 4540If not defined, this defaults to the value 1. 4541@end defmac 4542 4543@hook TARGET_STRUCT_VALUE_RTX 4544This target hook should return the location of the structure value 4545address (normally a @code{mem} or @code{reg}), or 0 if the address is 4546passed as an ``invisible'' first argument. Note that @var{fndecl} may 4547be @code{NULL}, for libcalls. You do not need to define this target 4548hook if the address is always passed as an ``invisible'' first 4549argument. 4550 4551On some architectures the place where the structure value address 4552is found by the called function is not the same place that the 4553caller put it. This can be due to register windows, or it could 4554be because the function prologue moves it to a different place. 4555@var{incoming} is @code{1} or @code{2} when the location is needed in 4556the context of the called function, and @code{0} in the context of 4557the caller. 4558 4559If @var{incoming} is nonzero and the address is to be found on the 4560stack, return a @code{mem} which refers to the frame pointer. If 4561@var{incoming} is @code{2}, the result is being used to fetch the 4562structure value address at the beginning of a function. If you need 4563to emit adjusting code, you should do it at this point. 4564@end deftypefn 4565 4566@defmac PCC_STATIC_STRUCT_RETURN 4567Define this macro if the usual system convention on the target machine 4568for returning structures and unions is for the called function to return 4569the address of a static variable containing the value. 4570 4571Do not define this if the usual system convention is for the caller to 4572pass an address to the subroutine. 4573 4574This macro has effect in @option{-fpcc-struct-return} mode, but it does 4575nothing when you use @option{-freg-struct-return} mode. 4576@end defmac 4577 4578@hook TARGET_GET_RAW_RESULT_MODE 4579 4580@hook TARGET_GET_RAW_ARG_MODE 4581 4582@node Caller Saves 4583@subsection Caller-Saves Register Allocation 4584 4585If you enable it, GCC can save registers around function calls. This 4586makes it possible to use call-clobbered registers to hold variables that 4587must live across calls. 4588 4589@defmac CALLER_SAVE_PROFITABLE (@var{refs}, @var{calls}) 4590A C expression to determine whether it is worthwhile to consider placing 4591a pseudo-register in a call-clobbered hard register and saving and 4592restoring it around each function call. The expression should be 1 when 4593this is worth doing, and 0 otherwise. 4594 4595If you don't define this macro, a default is used which is good on most 4596machines: @code{4 * @var{calls} < @var{refs}}. 4597@end defmac 4598 4599@defmac HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs}) 4600A C expression specifying which mode is required for saving @var{nregs} 4601of a pseudo-register in call-clobbered hard register @var{regno}. If 4602@var{regno} is unsuitable for caller save, @code{VOIDmode} should be 4603returned. For most machines this macro need not be defined since GCC 4604will select the smallest suitable mode. 4605@end defmac 4606 4607@node Function Entry 4608@subsection Function Entry and Exit 4609@cindex function entry and exit 4610@cindex prologue 4611@cindex epilogue 4612 4613This section describes the macros that output function entry 4614(@dfn{prologue}) and exit (@dfn{epilogue}) code. 4615 4616@hook TARGET_ASM_FUNCTION_PROLOGUE 4617If defined, a function that outputs the assembler code for entry to a 4618function. The prologue is responsible for setting up the stack frame, 4619initializing the frame pointer register, saving registers that must be 4620saved, and allocating @var{size} additional bytes of storage for the 4621local variables. @var{size} is an integer. @var{file} is a stdio 4622stream to which the assembler code should be output. 4623 4624The label for the beginning of the function need not be output by this 4625macro. That has already been done when the macro is run. 4626 4627@findex regs_ever_live 4628To determine which registers to save, the macro can refer to the array 4629@code{regs_ever_live}: element @var{r} is nonzero if hard register 4630@var{r} is used anywhere within the function. This implies the function 4631prologue should save register @var{r}, provided it is not one of the 4632call-used registers. (@code{TARGET_ASM_FUNCTION_EPILOGUE} must likewise use 4633@code{regs_ever_live}.) 4634 4635On machines that have ``register windows'', the function entry code does 4636not save on the stack the registers that are in the windows, even if 4637they are supposed to be preserved by function calls; instead it takes 4638appropriate steps to ``push'' the register stack, if any non-call-used 4639registers are used in the function. 4640 4641@findex frame_pointer_needed 4642On machines where functions may or may not have frame-pointers, the 4643function entry code must vary accordingly; it must set up the frame 4644pointer if one is wanted, and not otherwise. To determine whether a 4645frame pointer is in wanted, the macro can refer to the variable 4646@code{frame_pointer_needed}. The variable's value will be 1 at run 4647time in a function that needs a frame pointer. @xref{Elimination}. 4648 4649The function entry code is responsible for allocating any stack space 4650required for the function. This stack space consists of the regions 4651listed below. In most cases, these regions are allocated in the 4652order listed, with the last listed region closest to the top of the 4653stack (the lowest address if @code{STACK_GROWS_DOWNWARD} is defined, and 4654the highest address if it is not defined). You can use a different order 4655for a machine if doing so is more convenient or required for 4656compatibility reasons. Except in cases where required by standard 4657or by a debugger, there is no reason why the stack layout used by GCC 4658need agree with that used by other compilers for a machine. 4659@end deftypefn 4660 4661@hook TARGET_ASM_FUNCTION_END_PROLOGUE 4662If defined, a function that outputs assembler code at the end of a 4663prologue. This should be used when the function prologue is being 4664emitted as RTL, and you have some extra assembler that needs to be 4665emitted. @xref{prologue instruction pattern}. 4666@end deftypefn 4667 4668@hook TARGET_ASM_FUNCTION_BEGIN_EPILOGUE 4669If defined, a function that outputs assembler code at the start of an 4670epilogue. This should be used when the function epilogue is being 4671emitted as RTL, and you have some extra assembler that needs to be 4672emitted. @xref{epilogue instruction pattern}. 4673@end deftypefn 4674 4675@hook TARGET_ASM_FUNCTION_EPILOGUE 4676If defined, a function that outputs the assembler code for exit from a 4677function. The epilogue is responsible for restoring the saved 4678registers and stack pointer to their values when the function was 4679called, and returning control to the caller. This macro takes the 4680same arguments as the macro @code{TARGET_ASM_FUNCTION_PROLOGUE}, and the 4681registers to restore are determined from @code{regs_ever_live} and 4682@code{CALL_USED_REGISTERS} in the same way. 4683 4684On some machines, there is a single instruction that does all the work 4685of returning from the function. On these machines, give that 4686instruction the name @samp{return} and do not define the macro 4687@code{TARGET_ASM_FUNCTION_EPILOGUE} at all. 4688 4689Do not define a pattern named @samp{return} if you want the 4690@code{TARGET_ASM_FUNCTION_EPILOGUE} to be used. If you want the target 4691switches to control whether return instructions or epilogues are used, 4692define a @samp{return} pattern with a validity condition that tests the 4693target switches appropriately. If the @samp{return} pattern's validity 4694condition is false, epilogues will be used. 4695 4696On machines where functions may or may not have frame-pointers, the 4697function exit code must vary accordingly. Sometimes the code for these 4698two cases is completely different. To determine whether a frame pointer 4699is wanted, the macro can refer to the variable 4700@code{frame_pointer_needed}. The variable's value will be 1 when compiling 4701a function that needs a frame pointer. 4702 4703Normally, @code{TARGET_ASM_FUNCTION_PROLOGUE} and 4704@code{TARGET_ASM_FUNCTION_EPILOGUE} must treat leaf functions specially. 4705The C variable @code{current_function_is_leaf} is nonzero for such a 4706function. @xref{Leaf Functions}. 4707 4708On some machines, some functions pop their arguments on exit while 4709others leave that for the caller to do. For example, the 68020 when 4710given @option{-mrtd} pops arguments in functions that take a fixed 4711number of arguments. 4712 4713@findex pops_args 4714@findex crtl->args.pops_args 4715Your definition of the macro @code{RETURN_POPS_ARGS} decides which 4716functions pop their own arguments. @code{TARGET_ASM_FUNCTION_EPILOGUE} 4717needs to know what was decided. The number of bytes of the current 4718function's arguments that this function should pop is available in 4719@code{crtl->args.pops_args}. @xref{Scalar Return}. 4720@end deftypefn 4721 4722@itemize @bullet 4723@item 4724@findex pretend_args_size 4725@findex crtl->args.pretend_args_size 4726A region of @code{crtl->args.pretend_args_size} bytes of 4727uninitialized space just underneath the first argument arriving on the 4728stack. (This may not be at the very start of the allocated stack region 4729if the calling sequence has pushed anything else since pushing the stack 4730arguments. But usually, on such machines, nothing else has been pushed 4731yet, because the function prologue itself does all the pushing.) This 4732region is used on machines where an argument may be passed partly in 4733registers and partly in memory, and, in some cases to support the 4734features in @code{<stdarg.h>}. 4735 4736@item 4737An area of memory used to save certain registers used by the function. 4738The size of this area, which may also include space for such things as 4739the return address and pointers to previous stack frames, is 4740machine-specific and usually depends on which registers have been used 4741in the function. Machines with register windows often do not require 4742a save area. 4743 4744@item 4745A region of at least @var{size} bytes, possibly rounded up to an allocation 4746boundary, to contain the local variables of the function. On some machines, 4747this region and the save area may occur in the opposite order, with the 4748save area closer to the top of the stack. 4749 4750@item 4751@cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames 4752Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of 4753@code{crtl->outgoing_args_size} bytes to be used for outgoing 4754argument lists of the function. @xref{Stack Arguments}. 4755@end itemize 4756 4757@defmac EXIT_IGNORE_STACK 4758Define this macro as a C expression that is nonzero if the return 4759instruction or the function epilogue ignores the value of the stack 4760pointer; in other words, if it is safe to delete an instruction to 4761adjust the stack pointer before a return from the function. The 4762default is 0. 4763 4764Note that this macro's value is relevant only for functions for which 4765frame pointers are maintained. It is never safe to delete a final 4766stack adjustment in a function that has no frame pointer, and the 4767compiler knows this regardless of @code{EXIT_IGNORE_STACK}. 4768@end defmac 4769 4770@defmac EPILOGUE_USES (@var{regno}) 4771Define this macro as a C expression that is nonzero for registers that are 4772used by the epilogue or the @samp{return} pattern. The stack and frame 4773pointer registers are already assumed to be used as needed. 4774@end defmac 4775 4776@defmac EH_USES (@var{regno}) 4777Define this macro as a C expression that is nonzero for registers that are 4778used by the exception handling mechanism, and so should be considered live 4779on entry to an exception edge. 4780@end defmac 4781 4782@hook TARGET_ASM_OUTPUT_MI_THUNK 4783A function that outputs the assembler code for a thunk 4784function, used to implement C++ virtual function calls with multiple 4785inheritance. The thunk acts as a wrapper around a virtual function, 4786adjusting the implicit object parameter before handing control off to 4787the real function. 4788 4789First, emit code to add the integer @var{delta} to the location that 4790contains the incoming first argument. Assume that this argument 4791contains a pointer, and is the one used to pass the @code{this} pointer 4792in C++. This is the incoming argument @emph{before} the function prologue, 4793e.g.@: @samp{%o0} on a sparc. The addition must preserve the values of 4794all other incoming arguments. 4795 4796Then, if @var{vcall_offset} is nonzero, an additional adjustment should be 4797made after adding @code{delta}. In particular, if @var{p} is the 4798adjusted pointer, the following adjustment should be made: 4799 4800@smallexample 4801p += (*((ptrdiff_t **)p))[vcall_offset/sizeof(ptrdiff_t)] 4802@end smallexample 4803 4804After the additions, emit code to jump to @var{function}, which is a 4805@code{FUNCTION_DECL}. This is a direct pure jump, not a call, and does 4806not touch the return address. Hence returning from @var{FUNCTION} will 4807return to whoever called the current @samp{thunk}. 4808 4809The effect must be as if @var{function} had been called directly with 4810the adjusted first argument. This macro is responsible for emitting all 4811of the code for a thunk function; @code{TARGET_ASM_FUNCTION_PROLOGUE} 4812and @code{TARGET_ASM_FUNCTION_EPILOGUE} are not invoked. 4813 4814The @var{thunk_fndecl} is redundant. (@var{delta} and @var{function} 4815have already been extracted from it.) It might possibly be useful on 4816some targets, but probably not. 4817 4818If you do not define this macro, the target-independent code in the C++ 4819front end will generate a less efficient heavyweight thunk that calls 4820@var{function} instead of jumping to it. The generic approach does 4821not support varargs. 4822@end deftypefn 4823 4824@hook TARGET_ASM_CAN_OUTPUT_MI_THUNK 4825A function that returns true if TARGET_ASM_OUTPUT_MI_THUNK would be able 4826to output the assembler code for the thunk function specified by the 4827arguments it is passed, and false otherwise. In the latter case, the 4828generic approach will be used by the C++ front end, with the limitations 4829previously exposed. 4830@end deftypefn 4831 4832@node Profiling 4833@subsection Generating Code for Profiling 4834@cindex profiling, code generation 4835 4836These macros will help you generate code for profiling. 4837 4838@defmac FUNCTION_PROFILER (@var{file}, @var{labelno}) 4839A C statement or compound statement to output to @var{file} some 4840assembler code to call the profiling subroutine @code{mcount}. 4841 4842@findex mcount 4843The details of how @code{mcount} expects to be called are determined by 4844your operating system environment, not by GCC@. To figure them out, 4845compile a small program for profiling using the system's installed C 4846compiler and look at the assembler code that results. 4847 4848Older implementations of @code{mcount} expect the address of a counter 4849variable to be loaded into some register. The name of this variable is 4850@samp{LP} followed by the number @var{labelno}, so you would generate 4851the name using @samp{LP%d} in a @code{fprintf}. 4852@end defmac 4853 4854@defmac PROFILE_HOOK 4855A C statement or compound statement to output to @var{file} some assembly 4856code to call the profiling subroutine @code{mcount} even the target does 4857not support profiling. 4858@end defmac 4859 4860@defmac NO_PROFILE_COUNTERS 4861Define this macro to be an expression with a nonzero value if the 4862@code{mcount} subroutine on your system does not need a counter variable 4863allocated for each function. This is true for almost all modern 4864implementations. If you define this macro, you must not use the 4865@var{labelno} argument to @code{FUNCTION_PROFILER}. 4866@end defmac 4867 4868@defmac PROFILE_BEFORE_PROLOGUE 4869Define this macro if the code for function profiling should come before 4870the function prologue. Normally, the profiling code comes after. 4871@end defmac 4872 4873@node Tail Calls 4874@subsection Permitting tail calls 4875@cindex tail calls 4876 4877@hook TARGET_FUNCTION_OK_FOR_SIBCALL 4878True if it is ok to do sibling call optimization for the specified 4879call expression @var{exp}. @var{decl} will be the called function, 4880or @code{NULL} if this is an indirect call. 4881 4882It is not uncommon for limitations of calling conventions to prevent 4883tail calls to functions outside the current unit of translation, or 4884during PIC compilation. The hook is used to enforce these restrictions, 4885as the @code{sibcall} md pattern can not fail, or fall over to a 4886``normal'' call. The criteria for successful sibling call optimization 4887may vary greatly between different architectures. 4888@end deftypefn 4889 4890@hook TARGET_EXTRA_LIVE_ON_ENTRY 4891Add any hard registers to @var{regs} that are live on entry to the 4892function. This hook only needs to be defined to provide registers that 4893cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved 4894registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM, 4895TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES, 4896FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM. 4897@end deftypefn 4898 4899@hook TARGET_SET_UP_BY_PROLOGUE 4900 4901@hook TARGET_WARN_FUNC_RETURN 4902 4903@node Stack Smashing Protection 4904@subsection Stack smashing protection 4905@cindex stack smashing protection 4906 4907@hook TARGET_STACK_PROTECT_GUARD 4908This hook returns a @code{DECL} node for the external variable to use 4909for the stack protection guard. This variable is initialized by the 4910runtime to some random value and is used to initialize the guard value 4911that is placed at the top of the local stack frame. The type of this 4912variable must be @code{ptr_type_node}. 4913 4914The default version of this hook creates a variable called 4915@samp{__stack_chk_guard}, which is normally defined in @file{libgcc2.c}. 4916@end deftypefn 4917 4918@hook TARGET_STACK_PROTECT_FAIL 4919This hook returns a @code{CALL_EXPR} that alerts the runtime that the 4920stack protect guard variable has been modified. This expression should 4921involve a call to a @code{noreturn} function. 4922 4923The default version of this hook invokes a function called 4924@samp{__stack_chk_fail}, taking no arguments. This function is 4925normally defined in @file{libgcc2.c}. 4926@end deftypefn 4927 4928@hook TARGET_SUPPORTS_SPLIT_STACK 4929 4930@node Varargs 4931@section Implementing the Varargs Macros 4932@cindex varargs implementation 4933 4934GCC comes with an implementation of @code{<varargs.h>} and 4935@code{<stdarg.h>} that work without change on machines that pass arguments 4936on the stack. Other machines require their own implementations of 4937varargs, and the two machine independent header files must have 4938conditionals to include it. 4939 4940ISO @code{<stdarg.h>} differs from traditional @code{<varargs.h>} mainly in 4941the calling convention for @code{va_start}. The traditional 4942implementation takes just one argument, which is the variable in which 4943to store the argument pointer. The ISO implementation of 4944@code{va_start} takes an additional second argument. The user is 4945supposed to write the last named argument of the function here. 4946 4947However, @code{va_start} should not use this argument. The way to find 4948the end of the named arguments is with the built-in functions described 4949below. 4950 4951@defmac __builtin_saveregs () 4952Use this built-in function to save the argument registers in memory so 4953that the varargs mechanism can access them. Both ISO and traditional 4954versions of @code{va_start} must use @code{__builtin_saveregs}, unless 4955you use @code{TARGET_SETUP_INCOMING_VARARGS} (see below) instead. 4956 4957On some machines, @code{__builtin_saveregs} is open-coded under the 4958control of the target hook @code{TARGET_EXPAND_BUILTIN_SAVEREGS}. On 4959other machines, it calls a routine written in assembler language, 4960found in @file{libgcc2.c}. 4961 4962Code generated for the call to @code{__builtin_saveregs} appears at the 4963beginning of the function, as opposed to where the call to 4964@code{__builtin_saveregs} is written, regardless of what the code is. 4965This is because the registers must be saved before the function starts 4966to use them for its own purposes. 4967@c i rewrote the first sentence above to fix an overfull hbox. --mew 4968@c 10feb93 4969@end defmac 4970 4971@defmac __builtin_next_arg (@var{lastarg}) 4972This builtin returns the address of the first anonymous stack 4973argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it 4974returns the address of the location above the first anonymous stack 4975argument. Use it in @code{va_start} to initialize the pointer for 4976fetching arguments from the stack. Also use it in @code{va_start} to 4977verify that the second parameter @var{lastarg} is the last named argument 4978of the current function. 4979@end defmac 4980 4981@defmac __builtin_classify_type (@var{object}) 4982Since each machine has its own conventions for which data types are 4983passed in which kind of register, your implementation of @code{va_arg} 4984has to embody these conventions. The easiest way to categorize the 4985specified data type is to use @code{__builtin_classify_type} together 4986with @code{sizeof} and @code{__alignof__}. 4987 4988@code{__builtin_classify_type} ignores the value of @var{object}, 4989considering only its data type. It returns an integer describing what 4990kind of type that is---integer, floating, pointer, structure, and so on. 4991 4992The file @file{typeclass.h} defines an enumeration that you can use to 4993interpret the values of @code{__builtin_classify_type}. 4994@end defmac 4995 4996These machine description macros help implement varargs: 4997 4998@hook TARGET_EXPAND_BUILTIN_SAVEREGS 4999If defined, this hook produces the machine-specific code for a call to 5000@code{__builtin_saveregs}. This code will be moved to the very 5001beginning of the function, before any parameter access are made. The 5002return value of this function should be an RTX that contains the value 5003to use as the return of @code{__builtin_saveregs}. 5004@end deftypefn 5005 5006@hook TARGET_SETUP_INCOMING_VARARGS 5007This target hook offers an alternative to using 5008@code{__builtin_saveregs} and defining the hook 5009@code{TARGET_EXPAND_BUILTIN_SAVEREGS}. Use it to store the anonymous 5010register arguments into the stack so that all the arguments appear to 5011have been passed consecutively on the stack. Once this is done, you can 5012use the standard implementation of varargs that works for machines that 5013pass all their arguments on the stack. 5014 5015The argument @var{args_so_far} points to the @code{CUMULATIVE_ARGS} data 5016structure, containing the values that are obtained after processing the 5017named arguments. The arguments @var{mode} and @var{type} describe the 5018last named argument---its machine mode and its data type as a tree node. 5019 5020The target hook should do two things: first, push onto the stack all the 5021argument registers @emph{not} used for the named arguments, and second, 5022store the size of the data thus pushed into the @code{int}-valued 5023variable pointed to by @var{pretend_args_size}. The value that you 5024store here will serve as additional offset for setting up the stack 5025frame. 5026 5027Because you must generate code to push the anonymous arguments at 5028compile time without knowing their data types, 5029@code{TARGET_SETUP_INCOMING_VARARGS} is only useful on machines that 5030have just a single category of argument register and use it uniformly 5031for all data types. 5032 5033If the argument @var{second_time} is nonzero, it means that the 5034arguments of the function are being analyzed for the second time. This 5035happens for an inline function, which is not actually compiled until the 5036end of the source file. The hook @code{TARGET_SETUP_INCOMING_VARARGS} should 5037not generate any instructions in this case. 5038@end deftypefn 5039 5040@hook TARGET_STRICT_ARGUMENT_NAMING 5041Define this hook to return @code{true} if the location where a function 5042argument is passed depends on whether or not it is a named argument. 5043 5044This hook controls how the @var{named} argument to @code{TARGET_FUNCTION_ARG} 5045is set for varargs and stdarg functions. If this hook returns 5046@code{true}, the @var{named} argument is always true for named 5047arguments, and false for unnamed arguments. If it returns @code{false}, 5048but @code{TARGET_PRETEND_OUTGOING_VARARGS_NAMED} returns @code{true}, 5049then all arguments are treated as named. Otherwise, all named arguments 5050except the last are treated as named. 5051 5052You need not define this hook if it always returns @code{false}. 5053@end deftypefn 5054 5055@hook TARGET_PRETEND_OUTGOING_VARARGS_NAMED 5056If you need to conditionally change ABIs so that one works with 5057@code{TARGET_SETUP_INCOMING_VARARGS}, but the other works like neither 5058@code{TARGET_SETUP_INCOMING_VARARGS} nor @code{TARGET_STRICT_ARGUMENT_NAMING} was 5059defined, then define this hook to return @code{true} if 5060@code{TARGET_SETUP_INCOMING_VARARGS} is used, @code{false} otherwise. 5061Otherwise, you should not define this hook. 5062@end deftypefn 5063 5064@node Trampolines 5065@section Trampolines for Nested Functions 5066@cindex trampolines for nested functions 5067@cindex nested functions, trampolines for 5068 5069A @dfn{trampoline} is a small piece of code that is created at run time 5070when the address of a nested function is taken. It normally resides on 5071the stack, in the stack frame of the containing function. These macros 5072tell GCC how to generate code to allocate and initialize a 5073trampoline. 5074 5075The instructions in the trampoline must do two things: load a constant 5076address into the static chain register, and jump to the real address of 5077the nested function. On CISC machines such as the m68k, this requires 5078two instructions, a move immediate and a jump. Then the two addresses 5079exist in the trampoline as word-long immediate operands. On RISC 5080machines, it is often necessary to load each address into a register in 5081two parts. Then pieces of each address form separate immediate 5082operands. 5083 5084The code generated to initialize the trampoline must store the variable 5085parts---the static chain value and the function address---into the 5086immediate operands of the instructions. On a CISC machine, this is 5087simply a matter of copying each address to a memory reference at the 5088proper offset from the start of the trampoline. On a RISC machine, it 5089may be necessary to take out pieces of the address and store them 5090separately. 5091 5092@hook TARGET_ASM_TRAMPOLINE_TEMPLATE 5093This hook is called by @code{assemble_trampoline_template} to output, 5094on the stream @var{f}, assembler code for a block of data that contains 5095the constant parts of a trampoline. This code should not include a 5096label---the label is taken care of automatically. 5097 5098If you do not define this hook, it means no template is needed 5099for the target. Do not define this hook on systems where the block move 5100code to copy the trampoline into place would be larger than the code 5101to generate it on the spot. 5102@end deftypefn 5103 5104@defmac TRAMPOLINE_SECTION 5105Return the section into which the trampoline template is to be placed 5106(@pxref{Sections}). The default value is @code{readonly_data_section}. 5107@end defmac 5108 5109@defmac TRAMPOLINE_SIZE 5110A C expression for the size in bytes of the trampoline, as an integer. 5111@end defmac 5112 5113@defmac TRAMPOLINE_ALIGNMENT 5114Alignment required for trampolines, in bits. 5115 5116If you don't define this macro, the value of @code{FUNCTION_ALIGNMENT} 5117is used for aligning trampolines. 5118@end defmac 5119 5120@hook TARGET_TRAMPOLINE_INIT 5121This hook is called to initialize a trampoline. 5122@var{m_tramp} is an RTX for the memory block for the trampoline; @var{fndecl} 5123is the @code{FUNCTION_DECL} for the nested function; @var{static_chain} is an 5124RTX for the static chain value that should be passed to the function 5125when it is called. 5126 5127If the target defines @code{TARGET_ASM_TRAMPOLINE_TEMPLATE}, then the 5128first thing this hook should do is emit a block move into @var{m_tramp} 5129from the memory block returned by @code{assemble_trampoline_template}. 5130Note that the block move need only cover the constant parts of the 5131trampoline. If the target isolates the variable parts of the trampoline 5132to the end, not all @code{TRAMPOLINE_SIZE} bytes need be copied. 5133 5134If the target requires any other actions, such as flushing caches or 5135enabling stack execution, these actions should be performed after 5136initializing the trampoline proper. 5137@end deftypefn 5138 5139@hook TARGET_TRAMPOLINE_ADJUST_ADDRESS 5140This hook should perform any machine-specific adjustment in 5141the address of the trampoline. Its argument contains the address of the 5142memory block that was passed to @code{TARGET_TRAMPOLINE_INIT}. In case 5143the address to be used for a function call should be different from the 5144address at which the template was stored, the different address should 5145be returned; otherwise @var{addr} should be returned unchanged. 5146If this hook is not defined, @var{addr} will be used for function calls. 5147@end deftypefn 5148 5149Implementing trampolines is difficult on many machines because they have 5150separate instruction and data caches. Writing into a stack location 5151fails to clear the memory in the instruction cache, so when the program 5152jumps to that location, it executes the old contents. 5153 5154Here are two possible solutions. One is to clear the relevant parts of 5155the instruction cache whenever a trampoline is set up. The other is to 5156make all trampolines identical, by having them jump to a standard 5157subroutine. The former technique makes trampoline execution faster; the 5158latter makes initialization faster. 5159 5160To clear the instruction cache when a trampoline is initialized, define 5161the following macro. 5162 5163@defmac CLEAR_INSN_CACHE (@var{beg}, @var{end}) 5164If defined, expands to a C expression clearing the @emph{instruction 5165cache} in the specified interval. The definition of this macro would 5166typically be a series of @code{asm} statements. Both @var{beg} and 5167@var{end} are both pointer expressions. 5168@end defmac 5169 5170To use a standard subroutine, define the following macro. In addition, 5171you must make sure that the instructions in a trampoline fill an entire 5172cache line with identical instructions, or else ensure that the 5173beginning of the trampoline code is always aligned at the same point in 5174its cache line. Look in @file{m68k.h} as a guide. 5175 5176@defmac TRANSFER_FROM_TRAMPOLINE 5177Define this macro if trampolines need a special subroutine to do their 5178work. The macro should expand to a series of @code{asm} statements 5179which will be compiled with GCC@. They go in a library function named 5180@code{__transfer_from_trampoline}. 5181 5182If you need to avoid executing the ordinary prologue code of a compiled 5183C function when you jump to the subroutine, you can do so by placing a 5184special label of your own in the assembler code. Use one @code{asm} 5185statement to generate an assembler label, and another to make the label 5186global. Then trampolines can use that label to jump directly to your 5187special assembler code. 5188@end defmac 5189 5190@node Library Calls 5191@section Implicit Calls to Library Routines 5192@cindex library subroutine names 5193@cindex @file{libgcc.a} 5194 5195@c prevent bad page break with this line 5196Here is an explanation of implicit calls to library routines. 5197 5198@defmac DECLARE_LIBRARY_RENAMES 5199This macro, if defined, should expand to a piece of C code that will get 5200expanded when compiling functions for libgcc.a. It can be used to 5201provide alternate names for GCC's internal library functions if there 5202are ABI-mandated names that the compiler should provide. 5203@end defmac 5204 5205@findex set_optab_libfunc 5206@findex init_one_libfunc 5207@hook TARGET_INIT_LIBFUNCS 5208This hook should declare additional library routines or rename 5209existing ones, using the functions @code{set_optab_libfunc} and 5210@code{init_one_libfunc} defined in @file{optabs.c}. 5211@code{init_optabs} calls this macro after initializing all the normal 5212library routines. 5213 5214The default is to do nothing. Most ports don't need to define this hook. 5215@end deftypefn 5216 5217@hook TARGET_LIBFUNC_GNU_PREFIX 5218 5219@defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison}) 5220This macro should return @code{true} if the library routine that 5221implements the floating point comparison operator @var{comparison} in 5222mode @var{mode} will return a boolean, and @var{false} if it will 5223return a tristate. 5224 5225GCC's own floating point libraries return tristates from the 5226comparison operators, so the default returns false always. Most ports 5227don't need to define this macro. 5228@end defmac 5229 5230@defmac TARGET_LIB_INT_CMP_BIASED 5231This macro should evaluate to @code{true} if the integer comparison 5232functions (like @code{__cmpdi2}) return 0 to indicate that the first 5233operand is smaller than the second, 1 to indicate that they are equal, 5234and 2 to indicate that the first operand is greater than the second. 5235If this macro evaluates to @code{false} the comparison functions return 5236@minus{}1, 0, and 1 instead of 0, 1, and 2. If the target uses the routines 5237in @file{libgcc.a}, you do not need to define this macro. 5238@end defmac 5239 5240@cindex @code{EDOM}, implicit usage 5241@findex matherr 5242@defmac TARGET_EDOM 5243The value of @code{EDOM} on the target machine, as a C integer constant 5244expression. If you don't define this macro, GCC does not attempt to 5245deposit the value of @code{EDOM} into @code{errno} directly. Look in 5246@file{/usr/include/errno.h} to find the value of @code{EDOM} on your 5247system. 5248 5249If you do not define @code{TARGET_EDOM}, then compiled code reports 5250domain errors by calling the library function and letting it report the 5251error. If mathematical functions on your system use @code{matherr} when 5252there is an error, then you should leave @code{TARGET_EDOM} undefined so 5253that @code{matherr} is used normally. 5254@end defmac 5255 5256@cindex @code{errno}, implicit usage 5257@defmac GEN_ERRNO_RTX 5258Define this macro as a C expression to create an rtl expression that 5259refers to the global ``variable'' @code{errno}. (On certain systems, 5260@code{errno} may not actually be a variable.) If you don't define this 5261macro, a reasonable default is used. 5262@end defmac 5263 5264@cindex C99 math functions, implicit usage 5265@defmac TARGET_C99_FUNCTIONS 5266When this macro is nonzero, GCC will implicitly optimize @code{sin} calls into 5267@code{sinf} and similarly for other functions defined by C99 standard. The 5268default is zero because a number of existing systems lack support for these 5269functions in their runtime so this macro needs to be redefined to one on 5270systems that do support the C99 runtime. 5271@end defmac 5272 5273@cindex sincos math function, implicit usage 5274@defmac TARGET_HAS_SINCOS 5275When this macro is nonzero, GCC will implicitly optimize calls to @code{sin} 5276and @code{cos} with the same argument to a call to @code{sincos}. The 5277default is zero. The target has to provide the following functions: 5278@smallexample 5279void sincos(double x, double *sin, double *cos); 5280void sincosf(float x, float *sin, float *cos); 5281void sincosl(long double x, long double *sin, long double *cos); 5282@end smallexample 5283@end defmac 5284 5285@defmac NEXT_OBJC_RUNTIME 5286Set this macro to 1 to use the "NeXT" Objective-C message sending conventions 5287by default. This calling convention involves passing the object, the selector 5288and the method arguments all at once to the method-lookup library function. 5289This is the usual setting when targeting Darwin/Mac OS X systems, which have 5290the NeXT runtime installed. 5291 5292If the macro is set to 0, the "GNU" Objective-C message sending convention 5293will be used by default. This convention passes just the object and the 5294selector to the method-lookup function, which returns a pointer to the method. 5295 5296In either case, it remains possible to select code-generation for the alternate 5297scheme, by means of compiler command line switches. 5298@end defmac 5299 5300@node Addressing Modes 5301@section Addressing Modes 5302@cindex addressing modes 5303 5304@c prevent bad page break with this line 5305This is about addressing modes. 5306 5307@defmac HAVE_PRE_INCREMENT 5308@defmacx HAVE_PRE_DECREMENT 5309@defmacx HAVE_POST_INCREMENT 5310@defmacx HAVE_POST_DECREMENT 5311A C expression that is nonzero if the machine supports pre-increment, 5312pre-decrement, post-increment, or post-decrement addressing respectively. 5313@end defmac 5314 5315@defmac HAVE_PRE_MODIFY_DISP 5316@defmacx HAVE_POST_MODIFY_DISP 5317A C expression that is nonzero if the machine supports pre- or 5318post-address side-effect generation involving constants other than 5319the size of the memory operand. 5320@end defmac 5321 5322@defmac HAVE_PRE_MODIFY_REG 5323@defmacx HAVE_POST_MODIFY_REG 5324A C expression that is nonzero if the machine supports pre- or 5325post-address side-effect generation involving a register displacement. 5326@end defmac 5327 5328@defmac CONSTANT_ADDRESS_P (@var{x}) 5329A C expression that is 1 if the RTX @var{x} is a constant which 5330is a valid address. On most machines the default definition of 5331@code{(CONSTANT_P (@var{x}) && GET_CODE (@var{x}) != CONST_DOUBLE)} 5332is acceptable, but a few machines are more restrictive as to which 5333constant addresses are supported. 5334@end defmac 5335 5336@defmac CONSTANT_P (@var{x}) 5337@code{CONSTANT_P}, which is defined by target-independent code, 5338accepts integer-values expressions whose values are not explicitly 5339known, such as @code{symbol_ref}, @code{label_ref}, and @code{high} 5340expressions and @code{const} arithmetic expressions, in addition to 5341@code{const_int} and @code{const_double} expressions. 5342@end defmac 5343 5344@defmac MAX_REGS_PER_ADDRESS 5345A number, the maximum number of registers that can appear in a valid 5346memory address. Note that it is up to you to specify a value equal to 5347the maximum number that @code{TARGET_LEGITIMATE_ADDRESS_P} would ever 5348accept. 5349@end defmac 5350 5351@hook TARGET_LEGITIMATE_ADDRESS_P 5352A function that returns whether @var{x} (an RTX) is a legitimate memory 5353address on the target machine for a memory operand of mode @var{mode}. 5354 5355Legitimate addresses are defined in two variants: a strict variant and a 5356non-strict one. The @var{strict} parameter chooses which variant is 5357desired by the caller. 5358 5359The strict variant is used in the reload pass. It must be defined so 5360that any pseudo-register that has not been allocated a hard register is 5361considered a memory reference. This is because in contexts where some 5362kind of register is required, a pseudo-register with no hard register 5363must be rejected. For non-hard registers, the strict variant should look 5364up the @code{reg_renumber} array; it should then proceed using the hard 5365register number in the array, or treat the pseudo as a memory reference 5366if the array holds @code{-1}. 5367 5368The non-strict variant is used in other passes. It must be defined to 5369accept all pseudo-registers in every context where some kind of 5370register is required. 5371 5372Normally, constant addresses which are the sum of a @code{symbol_ref} 5373and an integer are stored inside a @code{const} RTX to mark them as 5374constant. Therefore, there is no need to recognize such sums 5375specifically as legitimate addresses. Normally you would simply 5376recognize any @code{const} as legitimate. 5377 5378Usually @code{PRINT_OPERAND_ADDRESS} is not prepared to handle constant 5379sums that are not marked with @code{const}. It assumes that a naked 5380@code{plus} indicates indexing. If so, then you @emph{must} reject such 5381naked constant sums as illegitimate addresses, so that none of them will 5382be given to @code{PRINT_OPERAND_ADDRESS}. 5383 5384@cindex @code{TARGET_ENCODE_SECTION_INFO} and address validation 5385On some machines, whether a symbolic address is legitimate depends on 5386the section that the address refers to. On these machines, define the 5387target hook @code{TARGET_ENCODE_SECTION_INFO} to store the information 5388into the @code{symbol_ref}, and then check for it here. When you see a 5389@code{const}, you will have to look inside it to find the 5390@code{symbol_ref} in order to determine the section. @xref{Assembler 5391Format}. 5392 5393@cindex @code{GO_IF_LEGITIMATE_ADDRESS} 5394Some ports are still using a deprecated legacy substitute for 5395this hook, the @code{GO_IF_LEGITIMATE_ADDRESS} macro. This macro 5396has this syntax: 5397 5398@example 5399#define GO_IF_LEGITIMATE_ADDRESS (@var{mode}, @var{x}, @var{label}) 5400@end example 5401 5402@noindent 5403and should @code{goto @var{label}} if the address @var{x} is a valid 5404address on the target machine for a memory operand of mode @var{mode}. 5405 5406@findex REG_OK_STRICT 5407Compiler source files that want to use the strict variant of this 5408macro define the macro @code{REG_OK_STRICT}. You should use an 5409@code{#ifdef REG_OK_STRICT} conditional to define the strict variant in 5410that case and the non-strict variant otherwise. 5411 5412Using the hook is usually simpler because it limits the number of 5413files that are recompiled when changes are made. 5414@end deftypefn 5415 5416@defmac TARGET_MEM_CONSTRAINT 5417A single character to be used instead of the default @code{'m'} 5418character for general memory addresses. This defines the constraint 5419letter which matches the memory addresses accepted by 5420@code{TARGET_LEGITIMATE_ADDRESS_P}. Define this macro if you want to 5421support new address formats in your back end without changing the 5422semantics of the @code{'m'} constraint. This is necessary in order to 5423preserve functionality of inline assembly constructs using the 5424@code{'m'} constraint. 5425@end defmac 5426 5427@defmac FIND_BASE_TERM (@var{x}) 5428A C expression to determine the base term of address @var{x}, 5429or to provide a simplified version of @var{x} from which @file{alias.c} 5430can easily find the base term. This macro is used in only two places: 5431@code{find_base_value} and @code{find_base_term} in @file{alias.c}. 5432 5433It is always safe for this macro to not be defined. It exists so 5434that alias analysis can understand machine-dependent addresses. 5435 5436The typical use of this macro is to handle addresses containing 5437a label_ref or symbol_ref within an UNSPEC@. 5438@end defmac 5439 5440@hook TARGET_LEGITIMIZE_ADDRESS 5441This hook is given an invalid memory address @var{x} for an 5442operand of mode @var{mode} and should try to return a valid memory 5443address. 5444 5445@findex break_out_memory_refs 5446@var{x} will always be the result of a call to @code{break_out_memory_refs}, 5447and @var{oldx} will be the operand that was given to that function to produce 5448@var{x}. 5449 5450The code of the hook should not alter the substructure of 5451@var{x}. If it transforms @var{x} into a more legitimate form, it 5452should return the new @var{x}. 5453 5454It is not necessary for this hook to come up with a legitimate address, 5455with the exception of native TLS addresses (@pxref{Emulated TLS}). 5456The compiler has standard ways of doing so in all cases. In fact, if 5457the target supports only emulated TLS, it 5458is safe to omit this hook or make it return @var{x} if it cannot find 5459a valid way to legitimize the address. But often a machine-dependent 5460strategy can generate better code. 5461@end deftypefn 5462 5463@defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win}) 5464A C compound statement that attempts to replace @var{x}, which is an address 5465that needs reloading, with a valid memory address for an operand of mode 5466@var{mode}. @var{win} will be a C statement label elsewhere in the code. 5467It is not necessary to define this macro, but it might be useful for 5468performance reasons. 5469 5470For example, on the i386, it is sometimes possible to use a single 5471reload register instead of two by reloading a sum of two pseudo 5472registers into a register. On the other hand, for number of RISC 5473processors offsets are limited so that often an intermediate address 5474needs to be generated in order to address a stack slot. By defining 5475@code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses 5476generated for adjacent some stack slots can be made identical, and thus 5477be shared. 5478 5479@emph{Note}: This macro should be used with caution. It is necessary 5480to know something of how reload works in order to effectively use this, 5481and it is quite easy to produce macros that build in too much knowledge 5482of reload internals. 5483 5484@emph{Note}: This macro must be able to reload an address created by a 5485previous invocation of this macro. If it fails to handle such addresses 5486then the compiler may generate incorrect code or abort. 5487 5488@findex push_reload 5489The macro definition should use @code{push_reload} to indicate parts that 5490need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually 5491suitable to be passed unaltered to @code{push_reload}. 5492 5493The code generated by this macro must not alter the substructure of 5494@var{x}. If it transforms @var{x} into a more legitimate form, it 5495should assign @var{x} (which will always be a C variable) a new value. 5496This also applies to parts that you change indirectly by calling 5497@code{push_reload}. 5498 5499@findex strict_memory_address_p 5500The macro definition may use @code{strict_memory_address_p} to test if 5501the address has become legitimate. 5502 5503@findex copy_rtx 5504If you want to change only a part of @var{x}, one standard way of doing 5505this is to use @code{copy_rtx}. Note, however, that it unshares only a 5506single level of rtl. Thus, if the part to be changed is not at the 5507top level, you'll need to replace first the top level. 5508It is not necessary for this macro to come up with a legitimate 5509address; but often a machine-dependent strategy can generate better code. 5510@end defmac 5511 5512@hook TARGET_MODE_DEPENDENT_ADDRESS_P 5513This hook returns @code{true} if memory address @var{addr} in address 5514space @var{addrspace} can have 5515different meanings depending on the machine mode of the memory 5516reference it is used for or if the address is valid for some modes 5517but not others. 5518 5519Autoincrement and autodecrement addresses typically have mode-dependent 5520effects because the amount of the increment or decrement is the size 5521of the operand being addressed. Some machines have other mode-dependent 5522addresses. Many RISC machines have no mode-dependent addresses. 5523 5524You may assume that @var{addr} is a valid address for the machine. 5525 5526The default version of this hook returns @code{false}. 5527@end deftypefn 5528 5529@hook TARGET_LEGITIMATE_CONSTANT_P 5530This hook returns true if @var{x} is a legitimate constant for a 5531@var{mode}-mode immediate operand on the target machine. You can assume that 5532@var{x} satisfies @code{CONSTANT_P}, so you need not check this. 5533 5534The default definition returns true. 5535@end deftypefn 5536 5537@hook TARGET_DELEGITIMIZE_ADDRESS 5538This hook is used to undo the possibly obfuscating effects of the 5539@code{LEGITIMIZE_ADDRESS} and @code{LEGITIMIZE_RELOAD_ADDRESS} target 5540macros. Some backend implementations of these macros wrap symbol 5541references inside an @code{UNSPEC} rtx to represent PIC or similar 5542addressing modes. This target hook allows GCC's optimizers to understand 5543the semantics of these opaque @code{UNSPEC}s by converting them back 5544into their original form. 5545@end deftypefn 5546 5547@hook TARGET_CONST_NOT_OK_FOR_DEBUG_P 5548This hook should return true if @var{x} should not be emitted into 5549debug sections. 5550@end deftypefn 5551 5552@hook TARGET_CANNOT_FORCE_CONST_MEM 5553This hook should return true if @var{x} is of a form that cannot (or 5554should not) be spilled to the constant pool. @var{mode} is the mode 5555of @var{x}. 5556 5557The default version of this hook returns false. 5558 5559The primary reason to define this hook is to prevent reload from 5560deciding that a non-legitimate constant would be better reloaded 5561from the constant pool instead of spilling and reloading a register 5562holding the constant. This restriction is often true of addresses 5563of TLS symbols for various targets. 5564@end deftypefn 5565 5566@hook TARGET_USE_BLOCKS_FOR_CONSTANT_P 5567This hook should return true if pool entries for constant @var{x} can 5568be placed in an @code{object_block} structure. @var{mode} is the mode 5569of @var{x}. 5570 5571The default version returns false for all constants. 5572@end deftypefn 5573 5574@hook TARGET_USE_BLOCKS_FOR_DECL_P 5575This hook should return true if pool entries for @var{decl} should 5576be placed in an @code{object_block} structure. 5577 5578The default version returns true for all decls. 5579@end deftypefn 5580 5581@hook TARGET_BUILTIN_RECIPROCAL 5582This hook should return the DECL of a function that implements reciprocal of 5583the builtin function with builtin function code @var{fn}, or 5584@code{NULL_TREE} if such a function is not available. @var{md_fn} is true 5585when @var{fn} is a code of a machine-dependent builtin function. When 5586@var{sqrt} is true, additional optimizations that apply only to the reciprocal 5587of a square root function are performed, and only reciprocals of @code{sqrt} 5588function are valid. 5589@end deftypefn 5590 5591@hook TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD 5592This hook should return the DECL of a function @var{f} that given an 5593address @var{addr} as an argument returns a mask @var{m} that can be 5594used to extract from two vectors the relevant data that resides in 5595@var{addr} in case @var{addr} is not properly aligned. 5596 5597The autovectorizer, when vectorizing a load operation from an address 5598@var{addr} that may be unaligned, will generate two vector loads from 5599the two aligned addresses around @var{addr}. It then generates a 5600@code{REALIGN_LOAD} operation to extract the relevant data from the 5601two loaded vectors. The first two arguments to @code{REALIGN_LOAD}, 5602@var{v1} and @var{v2}, are the two vectors, each of size @var{VS}, and 5603the third argument, @var{OFF}, defines how the data will be extracted 5604from these two vectors: if @var{OFF} is 0, then the returned vector is 5605@var{v2}; otherwise, the returned vector is composed from the last 5606@var{VS}-@var{OFF} elements of @var{v1} concatenated to the first 5607@var{OFF} elements of @var{v2}. 5608 5609If this hook is defined, the autovectorizer will generate a call 5610to @var{f} (using the DECL tree that this hook returns) and will 5611use the return value of @var{f} as the argument @var{OFF} to 5612@code{REALIGN_LOAD}. Therefore, the mask @var{m} returned by @var{f} 5613should comply with the semantics expected by @code{REALIGN_LOAD} 5614described above. 5615If this hook is not defined, then @var{addr} will be used as 5616the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low 5617log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered. 5618@end deftypefn 5619 5620@hook TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST 5621Returns cost of different scalar or vector statements for vectorization cost model. 5622For vector memory operations the cost may depend on type (@var{vectype}) and 5623misalignment value (@var{misalign}). 5624@end deftypefn 5625 5626@hook TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE 5627Return true if vector alignment is reachable (by peeling N iterations) for the given type. 5628@end deftypefn 5629 5630@hook TARGET_VECTORIZE_VEC_PERM_CONST_OK 5631Return true if a vector created for @code{vec_perm_const} is valid. 5632@end deftypefn 5633 5634@hook TARGET_VECTORIZE_BUILTIN_CONVERSION 5635This hook should return the DECL of a function that implements conversion of the 5636input vector of type @var{src_type} to type @var{dest_type}. 5637The value of @var{code} is one of the enumerators in @code{enum tree_code} and 5638specifies how the conversion is to be applied 5639(truncation, rounding, etc.). 5640 5641If this hook is defined, the autovectorizer will use the 5642@code{TARGET_VECTORIZE_BUILTIN_CONVERSION} target hook when vectorizing 5643conversion. Otherwise, it will return @code{NULL_TREE}. 5644@end deftypefn 5645 5646@hook TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION 5647This hook should return the decl of a function that implements the 5648vectorized variant of the builtin function with builtin function code 5649@var{code} or @code{NULL_TREE} if such a function is not available. 5650The value of @var{fndecl} is the builtin function declaration. The 5651return type of the vectorized function shall be of vector type 5652@var{vec_type_out} and the argument types should be @var{vec_type_in}. 5653@end deftypefn 5654 5655@hook TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT 5656This hook should return true if the target supports misaligned vector 5657store/load of a specific factor denoted in the @var{misalignment} 5658parameter. The vector store/load should be of machine mode @var{mode} and 5659the elements in the vectors should be of type @var{type}. @var{is_packed} 5660parameter is true if the memory access is defined in a packed struct. 5661@end deftypefn 5662 5663@hook TARGET_VECTORIZE_PREFERRED_SIMD_MODE 5664This hook should return the preferred mode for vectorizing scalar 5665mode @var{mode}. The default is 5666equal to @code{word_mode}, because the vectorizer can do some 5667transformations even in absence of specialized @acronym{SIMD} hardware. 5668@end deftypefn 5669 5670@hook TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SIZES 5671This hook should return a mask of sizes that should be iterated over 5672after trying to autovectorize using the vector size derived from the 5673mode returned by @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE}. 5674The default is zero which means to not iterate over other vector sizes. 5675@end deftypefn 5676 5677@hook TARGET_VECTORIZE_INIT_COST 5678 5679@hook TARGET_VECTORIZE_ADD_STMT_COST 5680 5681@hook TARGET_VECTORIZE_FINISH_COST 5682 5683@hook TARGET_VECTORIZE_DESTROY_COST_DATA 5684 5685@hook TARGET_VECTORIZE_BUILTIN_TM_LOAD 5686 5687@hook TARGET_VECTORIZE_BUILTIN_TM_STORE 5688 5689@hook TARGET_VECTORIZE_BUILTIN_GATHER 5690Target builtin that implements vector gather operation. @var{mem_vectype} 5691is the vector type of the load and @var{index_type} is scalar type of 5692the index, scaled by @var{scale}. 5693The default is @code{NULL_TREE} which means to not vectorize gather 5694loads. 5695@end deftypefn 5696 5697@node Anchored Addresses 5698@section Anchored Addresses 5699@cindex anchored addresses 5700@cindex @option{-fsection-anchors} 5701 5702GCC usually addresses every static object as a separate entity. 5703For example, if we have: 5704 5705@smallexample 5706static int a, b, c; 5707int foo (void) @{ return a + b + c; @} 5708@end smallexample 5709 5710the code for @code{foo} will usually calculate three separate symbolic 5711addresses: those of @code{a}, @code{b} and @code{c}. On some targets, 5712it would be better to calculate just one symbolic address and access 5713the three variables relative to it. The equivalent pseudocode would 5714be something like: 5715 5716@smallexample 5717int foo (void) 5718@{ 5719 register int *xr = &x; 5720 return xr[&a - &x] + xr[&b - &x] + xr[&c - &x]; 5721@} 5722@end smallexample 5723 5724(which isn't valid C). We refer to shared addresses like @code{x} as 5725``section anchors''. Their use is controlled by @option{-fsection-anchors}. 5726 5727The hooks below describe the target properties that GCC needs to know 5728in order to make effective use of section anchors. It won't use 5729section anchors at all unless either @code{TARGET_MIN_ANCHOR_OFFSET} 5730or @code{TARGET_MAX_ANCHOR_OFFSET} is set to a nonzero value. 5731 5732@hook TARGET_MIN_ANCHOR_OFFSET 5733The minimum offset that should be applied to a section anchor. 5734On most targets, it should be the smallest offset that can be 5735applied to a base register while still giving a legitimate address 5736for every mode. The default value is 0. 5737@end deftypevr 5738 5739@hook TARGET_MAX_ANCHOR_OFFSET 5740Like @code{TARGET_MIN_ANCHOR_OFFSET}, but the maximum (inclusive) 5741offset that should be applied to section anchors. The default 5742value is 0. 5743@end deftypevr 5744 5745@hook TARGET_ASM_OUTPUT_ANCHOR 5746Write the assembly code to define section anchor @var{x}, which is a 5747@code{SYMBOL_REF} for which @samp{SYMBOL_REF_ANCHOR_P (@var{x})} is true. 5748The hook is called with the assembly output position set to the beginning 5749of @code{SYMBOL_REF_BLOCK (@var{x})}. 5750 5751If @code{ASM_OUTPUT_DEF} is available, the hook's default definition uses 5752it to define the symbol as @samp{. + SYMBOL_REF_BLOCK_OFFSET (@var{x})}. 5753If @code{ASM_OUTPUT_DEF} is not available, the hook's default definition 5754is @code{NULL}, which disables the use of section anchors altogether. 5755@end deftypefn 5756 5757@hook TARGET_USE_ANCHORS_FOR_SYMBOL_P 5758Return true if GCC should attempt to use anchors to access @code{SYMBOL_REF} 5759@var{x}. You can assume @samp{SYMBOL_REF_HAS_BLOCK_INFO_P (@var{x})} and 5760@samp{!SYMBOL_REF_ANCHOR_P (@var{x})}. 5761 5762The default version is correct for most targets, but you might need to 5763intercept this hook to handle things like target-specific attributes 5764or target-specific sections. 5765@end deftypefn 5766 5767@node Condition Code 5768@section Condition Code Status 5769@cindex condition code status 5770 5771The macros in this section can be split in two families, according to the 5772two ways of representing condition codes in GCC. 5773 5774The first representation is the so called @code{(cc0)} representation 5775(@pxref{Jump Patterns}), where all instructions can have an implicit 5776clobber of the condition codes. The second is the condition code 5777register representation, which provides better schedulability for 5778architectures that do have a condition code register, but on which 5779most instructions do not affect it. The latter category includes 5780most RISC machines. 5781 5782The implicit clobbering poses a strong restriction on the placement of 5783the definition and use of the condition code, which need to be in adjacent 5784insns for machines using @code{(cc0)}. This can prevent important 5785optimizations on some machines. For example, on the IBM RS/6000, there 5786is a delay for taken branches unless the condition code register is set 5787three instructions earlier than the conditional branch. The instruction 5788scheduler cannot perform this optimization if it is not permitted to 5789separate the definition and use of the condition code register. 5790 5791For this reason, it is possible and suggested to use a register to 5792represent the condition code for new ports. If there is a specific 5793condition code register in the machine, use a hard register. If the 5794condition code or comparison result can be placed in any general register, 5795or if there are multiple condition registers, use a pseudo register. 5796Registers used to store the condition code value will usually have a mode 5797that is in class @code{MODE_CC}. 5798 5799Alternatively, you can use @code{BImode} if the comparison operator is 5800specified already in the compare instruction. In this case, you are not 5801interested in most macros in this section. 5802 5803@menu 5804* CC0 Condition Codes:: Old style representation of condition codes. 5805* MODE_CC Condition Codes:: Modern representation of condition codes. 5806@end menu 5807 5808@node CC0 Condition Codes 5809@subsection Representation of condition codes using @code{(cc0)} 5810@findex cc0 5811 5812@findex cc_status 5813The file @file{conditions.h} defines a variable @code{cc_status} to 5814describe how the condition code was computed (in case the interpretation of 5815the condition code depends on the instruction that it was set by). This 5816variable contains the RTL expressions on which the condition code is 5817currently based, and several standard flags. 5818 5819Sometimes additional machine-specific flags must be defined in the machine 5820description header file. It can also add additional machine-specific 5821information by defining @code{CC_STATUS_MDEP}. 5822 5823@defmac CC_STATUS_MDEP 5824C code for a data type which is used for declaring the @code{mdep} 5825component of @code{cc_status}. It defaults to @code{int}. 5826 5827This macro is not used on machines that do not use @code{cc0}. 5828@end defmac 5829 5830@defmac CC_STATUS_MDEP_INIT 5831A C expression to initialize the @code{mdep} field to ``empty''. 5832The default definition does nothing, since most machines don't use 5833the field anyway. If you want to use the field, you should probably 5834define this macro to initialize it. 5835 5836This macro is not used on machines that do not use @code{cc0}. 5837@end defmac 5838 5839@defmac NOTICE_UPDATE_CC (@var{exp}, @var{insn}) 5840A C compound statement to set the components of @code{cc_status} 5841appropriately for an insn @var{insn} whose body is @var{exp}. It is 5842this macro's responsibility to recognize insns that set the condition 5843code as a byproduct of other activity as well as those that explicitly 5844set @code{(cc0)}. 5845 5846This macro is not used on machines that do not use @code{cc0}. 5847 5848If there are insns that do not set the condition code but do alter 5849other machine registers, this macro must check to see whether they 5850invalidate the expressions that the condition code is recorded as 5851reflecting. For example, on the 68000, insns that store in address 5852registers do not set the condition code, which means that usually 5853@code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such 5854insns. But suppose that the previous insn set the condition code 5855based on location @samp{a4@@(102)} and the current insn stores a new 5856value in @samp{a4}. Although the condition code is not changed by 5857this, it will no longer be true that it reflects the contents of 5858@samp{a4@@(102)}. Therefore, @code{NOTICE_UPDATE_CC} must alter 5859@code{cc_status} in this case to say that nothing is known about the 5860condition code value. 5861 5862The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal 5863with the results of peephole optimization: insns whose patterns are 5864@code{parallel} RTXs containing various @code{reg}, @code{mem} or 5865constants which are just the operands. The RTL structure of these 5866insns is not sufficient to indicate what the insns actually do. What 5867@code{NOTICE_UPDATE_CC} should do when it sees one is just to run 5868@code{CC_STATUS_INIT}. 5869 5870A possible definition of @code{NOTICE_UPDATE_CC} is to call a function 5871that looks at an attribute (@pxref{Insn Attributes}) named, for example, 5872@samp{cc}. This avoids having detailed information about patterns in 5873two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}. 5874@end defmac 5875 5876@node MODE_CC Condition Codes 5877@subsection Representation of condition codes using registers 5878@findex CCmode 5879@findex MODE_CC 5880 5881@defmac SELECT_CC_MODE (@var{op}, @var{x}, @var{y}) 5882On many machines, the condition code may be produced by other instructions 5883than compares, for example the branch can use directly the condition 5884code set by a subtract instruction. However, on some machines 5885when the condition code is set this way some bits (such as the overflow 5886bit) are not set in the same way as a test instruction, so that a different 5887branch instruction must be used for some conditional branches. When 5888this happens, use the machine mode of the condition code register to 5889record different formats of the condition code register. Modes can 5890also be used to record which compare instruction (e.g. a signed or an 5891unsigned comparison) produced the condition codes. 5892 5893If other modes than @code{CCmode} are required, add them to 5894@file{@var{machine}-modes.def} and define @code{SELECT_CC_MODE} to choose 5895a mode given an operand of a compare. This is needed because the modes 5896have to be chosen not only during RTL generation but also, for example, 5897by instruction combination. The result of @code{SELECT_CC_MODE} should 5898be consistent with the mode used in the patterns; for example to support 5899the case of the add on the SPARC discussed above, we have the pattern 5900 5901@smallexample 5902(define_insn "" 5903 [(set (reg:CC_NOOV 0) 5904 (compare:CC_NOOV 5905 (plus:SI (match_operand:SI 0 "register_operand" "%r") 5906 (match_operand:SI 1 "arith_operand" "rI")) 5907 (const_int 0)))] 5908 "" 5909 "@dots{}") 5910@end smallexample 5911 5912@noindent 5913together with a @code{SELECT_CC_MODE} that returns @code{CC_NOOVmode} 5914for comparisons whose argument is a @code{plus}: 5915 5916@smallexample 5917#define SELECT_CC_MODE(OP,X,Y) \ 5918 (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \ 5919 ? ((OP == LT || OP == LE || OP == GT || OP == GE) \ 5920 ? CCFPEmode : CCFPmode) \ 5921 : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS \ 5922 || GET_CODE (X) == NEG || GET_CODE (x) == ASHIFT) \ 5923 ? CC_NOOVmode : CCmode)) 5924@end smallexample 5925 5926Another reason to use modes is to retain information on which operands 5927were used by the comparison; see @code{REVERSIBLE_CC_MODE} later in 5928this section. 5929 5930You should define this macro if and only if you define extra CC modes 5931in @file{@var{machine}-modes.def}. 5932@end defmac 5933 5934@hook TARGET_CANONICALIZE_COMPARISON (@var{code}, @var{op0}, @var{op1}, @var{op0_preserve_value}) 5935On some machines not all possible comparisons are defined, but you can 5936convert an invalid comparison into a valid one. For example, the Alpha 5937does not have a @code{GT} comparison, but you can use an @code{LT} 5938comparison instead and swap the order of the operands. 5939 5940On such machines, implement this hook to do any required conversions. 5941@var{code} is the initial comparison code and @var{op0} and @var{op1} 5942are the left and right operands of the comparison, respectively. If 5943@var{op0_preserve_value} is @code{true} the implementation is not 5944allowed to change the value of @var{op0} since the value might be used 5945in RTXs which aren't comparisons. E.g. the implementation is not 5946allowed to swap operands in that case. 5947 5948GCC will not assume that the comparison resulting from this macro is 5949valid but will see if the resulting insn matches a pattern in the 5950@file{md} file. 5951 5952You need not to implement this hook if it would never change the 5953comparison code or operands. 5954@end deftypefn 5955 5956@defmac REVERSIBLE_CC_MODE (@var{mode}) 5957A C expression whose value is one if it is always safe to reverse a 5958comparison whose mode is @var{mode}. If @code{SELECT_CC_MODE} 5959can ever return @var{mode} for a floating-point inequality comparison, 5960then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero. 5961 5962You need not define this macro if it would always returns zero or if the 5963floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}. 5964For example, here is the definition used on the SPARC, where floating-point 5965inequality comparisons are given either @code{CCFPEmode} or @code{CCFPmode}: 5966 5967@smallexample 5968#define REVERSIBLE_CC_MODE(MODE) \ 5969 ((MODE) != CCFPEmode && (MODE) != CCFPmode) 5970@end smallexample 5971@end defmac 5972 5973@defmac REVERSE_CONDITION (@var{code}, @var{mode}) 5974A C expression whose value is reversed condition code of the @var{code} for 5975comparison done in CC_MODE @var{mode}. The macro is used only in case 5976@code{REVERSIBLE_CC_MODE (@var{mode})} is nonzero. Define this macro in case 5977machine has some non-standard way how to reverse certain conditionals. For 5978instance in case all floating point conditions are non-trapping, compiler may 5979freely convert unordered compares to ordered ones. Then definition may look 5980like: 5981 5982@smallexample 5983#define REVERSE_CONDITION(CODE, MODE) \ 5984 ((MODE) != CCFPmode ? reverse_condition (CODE) \ 5985 : reverse_condition_maybe_unordered (CODE)) 5986@end smallexample 5987@end defmac 5988 5989@hook TARGET_FIXED_CONDITION_CODE_REGS 5990On targets which do not use @code{(cc0)}, and which use a hard 5991register rather than a pseudo-register to hold condition codes, the 5992regular CSE passes are often not able to identify cases in which the 5993hard register is set to a common value. Use this hook to enable a 5994small pass which optimizes such cases. This hook should return true 5995to enable this pass, and it should set the integers to which its 5996arguments point to the hard register numbers used for condition codes. 5997When there is only one such register, as is true on most systems, the 5998integer pointed to by @var{p2} should be set to 5999@code{INVALID_REGNUM}. 6000 6001The default version of this hook returns false. 6002@end deftypefn 6003 6004@hook TARGET_CC_MODES_COMPATIBLE 6005On targets which use multiple condition code modes in class 6006@code{MODE_CC}, it is sometimes the case that a comparison can be 6007validly done in more than one mode. On such a system, define this 6008target hook to take two mode arguments and to return a mode in which 6009both comparisons may be validly done. If there is no such mode, 6010return @code{VOIDmode}. 6011 6012The default version of this hook checks whether the modes are the 6013same. If they are, it returns that mode. If they are different, it 6014returns @code{VOIDmode}. 6015@end deftypefn 6016 6017@hook TARGET_FLAGS_REGNUM 6018 6019@node Costs 6020@section Describing Relative Costs of Operations 6021@cindex costs of instructions 6022@cindex relative costs 6023@cindex speed of instructions 6024 6025These macros let you describe the relative speed of various operations 6026on the target machine. 6027 6028@defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to}) 6029A C expression for the cost of moving data of mode @var{mode} from a 6030register in class @var{from} to one in class @var{to}. The classes are 6031expressed using the enumeration values such as @code{GENERAL_REGS}. A 6032value of 2 is the default; other values are interpreted relative to 6033that. 6034 6035It is not required that the cost always equal 2 when @var{from} is the 6036same as @var{to}; on some machines it is expensive to move between 6037registers if they are not general registers. 6038 6039If reload sees an insn consisting of a single @code{set} between two 6040hard registers, and if @code{REGISTER_MOVE_COST} applied to their 6041classes returns a value of 2, reload does not check to ensure that the 6042constraints of the insn are met. Setting a cost of other than 2 will 6043allow reload to verify that the constraints are met. You should do this 6044if the @samp{mov@var{m}} pattern's constraints do not allow such copying. 6045 6046These macros are obsolete, new ports should use the target hook 6047@code{TARGET_REGISTER_MOVE_COST} instead. 6048@end defmac 6049 6050@hook TARGET_REGISTER_MOVE_COST 6051This target hook should return the cost of moving data of mode @var{mode} 6052from a register in class @var{from} to one in class @var{to}. The classes 6053are expressed using the enumeration values such as @code{GENERAL_REGS}. 6054A value of 2 is the default; other values are interpreted relative to 6055that. 6056 6057It is not required that the cost always equal 2 when @var{from} is the 6058same as @var{to}; on some machines it is expensive to move between 6059registers if they are not general registers. 6060 6061If reload sees an insn consisting of a single @code{set} between two 6062hard registers, and if @code{TARGET_REGISTER_MOVE_COST} applied to their 6063classes returns a value of 2, reload does not check to ensure that the 6064constraints of the insn are met. Setting a cost of other than 2 will 6065allow reload to verify that the constraints are met. You should do this 6066if the @samp{mov@var{m}} pattern's constraints do not allow such copying. 6067 6068The default version of this function returns 2. 6069@end deftypefn 6070 6071@defmac MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in}) 6072A C expression for the cost of moving data of mode @var{mode} between a 6073register of class @var{class} and memory; @var{in} is zero if the value 6074is to be written to memory, nonzero if it is to be read in. This cost 6075is relative to those in @code{REGISTER_MOVE_COST}. If moving between 6076registers and memory is more expensive than between two registers, you 6077should define this macro to express the relative cost. 6078 6079If you do not define this macro, GCC uses a default cost of 4 plus 6080the cost of copying via a secondary reload register, if one is 6081needed. If your machine requires a secondary reload register to copy 6082between memory and a register of @var{class} but the reload mechanism is 6083more complex than copying via an intermediate, define this macro to 6084reflect the actual cost of the move. 6085 6086GCC defines the function @code{memory_move_secondary_cost} if 6087secondary reloads are needed. It computes the costs due to copying via 6088a secondary register. If your machine copies from memory using a 6089secondary register in the conventional way but the default base value of 60904 is not correct for your machine, define this macro to add some other 6091value to the result of that function. The arguments to that function 6092are the same as to this macro. 6093 6094These macros are obsolete, new ports should use the target hook 6095@code{TARGET_MEMORY_MOVE_COST} instead. 6096@end defmac 6097 6098@hook TARGET_MEMORY_MOVE_COST 6099This target hook should return the cost of moving data of mode @var{mode} 6100between a register of class @var{rclass} and memory; @var{in} is @code{false} 6101if the value is to be written to memory, @code{true} if it is to be read in. 6102This cost is relative to those in @code{TARGET_REGISTER_MOVE_COST}. 6103If moving between registers and memory is more expensive than between two 6104registers, you should add this target hook to express the relative cost. 6105 6106If you do not add this target hook, GCC uses a default cost of 4 plus 6107the cost of copying via a secondary reload register, if one is 6108needed. If your machine requires a secondary reload register to copy 6109between memory and a register of @var{rclass} but the reload mechanism is 6110more complex than copying via an intermediate, use this target hook to 6111reflect the actual cost of the move. 6112 6113GCC defines the function @code{memory_move_secondary_cost} if 6114secondary reloads are needed. It computes the costs due to copying via 6115a secondary register. If your machine copies from memory using a 6116secondary register in the conventional way but the default base value of 61174 is not correct for your machine, use this target hook to add some other 6118value to the result of that function. The arguments to that function 6119are the same as to this target hook. 6120@end deftypefn 6121 6122@defmac BRANCH_COST (@var{speed_p}, @var{predictable_p}) 6123A C expression for the cost of a branch instruction. A value of 1 is 6124the default; other values are interpreted relative to that. Parameter 6125@var{speed_p} is true when the branch in question should be optimized 6126for speed. When it is false, @code{BRANCH_COST} should return a value 6127optimal for code size rather than performance. @var{predictable_p} is 6128true for well-predicted branches. On many architectures the 6129@code{BRANCH_COST} can be reduced then. 6130@end defmac 6131 6132Here are additional macros which do not specify precise relative costs, 6133but only that certain actions are more expensive than GCC would 6134ordinarily expect. 6135 6136@defmac SLOW_BYTE_ACCESS 6137Define this macro as a C expression which is nonzero if accessing less 6138than a word of memory (i.e.@: a @code{char} or a @code{short}) is no 6139faster than accessing a word of memory, i.e., if such access 6140require more than one instruction or if there is no difference in cost 6141between byte and (aligned) word loads. 6142 6143When this macro is not defined, the compiler will access a field by 6144finding the smallest containing object; when it is defined, a fullword 6145load will be used if alignment permits. Unless bytes accesses are 6146faster than word accesses, using word accesses is preferable since it 6147may eliminate subsequent memory access if subsequent accesses occur to 6148other fields in the same word of the structure, but to different bytes. 6149@end defmac 6150 6151@defmac SLOW_UNALIGNED_ACCESS (@var{mode}, @var{alignment}) 6152Define this macro to be the value 1 if memory accesses described by the 6153@var{mode} and @var{alignment} parameters have a cost many times greater 6154than aligned accesses, for example if they are emulated in a trap 6155handler. 6156 6157When this macro is nonzero, the compiler will act as if 6158@code{STRICT_ALIGNMENT} were nonzero when generating code for block 6159moves. This can cause significantly more instructions to be produced. 6160Therefore, do not set this macro nonzero if unaligned accesses only add a 6161cycle or two to the time for a memory access. 6162 6163If the value of this macro is always zero, it need not be defined. If 6164this macro is defined, it should produce a nonzero value when 6165@code{STRICT_ALIGNMENT} is nonzero. 6166@end defmac 6167 6168@defmac MOVE_RATIO (@var{speed}) 6169The threshold of number of scalar memory-to-memory move insns, @emph{below} 6170which a sequence of insns should be generated instead of a 6171string move insn or a library call. Increasing the value will always 6172make code faster, but eventually incurs high cost in increased code size. 6173 6174Note that on machines where the corresponding move insn is a 6175@code{define_expand} that emits a sequence of insns, this macro counts 6176the number of such sequences. 6177 6178The parameter @var{speed} is true if the code is currently being 6179optimized for speed rather than size. 6180 6181If you don't define this, a reasonable default is used. 6182@end defmac 6183 6184@defmac MOVE_BY_PIECES_P (@var{size}, @var{alignment}) 6185A C expression used to determine whether @code{move_by_pieces} will be used to 6186copy a chunk of memory, or whether some other block move mechanism 6187will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less 6188than @code{MOVE_RATIO}. 6189@end defmac 6190 6191@defmac MOVE_MAX_PIECES 6192A C expression used by @code{move_by_pieces} to determine the largest unit 6193a load or store used to copy memory is. Defaults to @code{MOVE_MAX}. 6194@end defmac 6195 6196@defmac CLEAR_RATIO (@var{speed}) 6197The threshold of number of scalar move insns, @emph{below} which a sequence 6198of insns should be generated to clear memory instead of a string clear insn 6199or a library call. Increasing the value will always make code faster, but 6200eventually incurs high cost in increased code size. 6201 6202The parameter @var{speed} is true if the code is currently being 6203optimized for speed rather than size. 6204 6205If you don't define this, a reasonable default is used. 6206@end defmac 6207 6208@defmac CLEAR_BY_PIECES_P (@var{size}, @var{alignment}) 6209A C expression used to determine whether @code{clear_by_pieces} will be used 6210to clear a chunk of memory, or whether some other block clear mechanism 6211will be used. Defaults to 1 if @code{move_by_pieces_ninsns} returns less 6212than @code{CLEAR_RATIO}. 6213@end defmac 6214 6215@defmac SET_RATIO (@var{speed}) 6216The threshold of number of scalar move insns, @emph{below} which a sequence 6217of insns should be generated to set memory to a constant value, instead of 6218a block set insn or a library call. 6219Increasing the value will always make code faster, but 6220eventually incurs high cost in increased code size. 6221 6222The parameter @var{speed} is true if the code is currently being 6223optimized for speed rather than size. 6224 6225If you don't define this, it defaults to the value of @code{MOVE_RATIO}. 6226@end defmac 6227 6228@defmac SET_BY_PIECES_P (@var{size}, @var{alignment}) 6229A C expression used to determine whether @code{store_by_pieces} will be 6230used to set a chunk of memory to a constant value, or whether some 6231other mechanism will be used. Used by @code{__builtin_memset} when 6232storing values other than constant zero. 6233Defaults to 1 if @code{move_by_pieces_ninsns} returns less 6234than @code{SET_RATIO}. 6235@end defmac 6236 6237@defmac STORE_BY_PIECES_P (@var{size}, @var{alignment}) 6238A C expression used to determine whether @code{store_by_pieces} will be 6239used to set a chunk of memory to a constant string value, or whether some 6240other mechanism will be used. Used by @code{__builtin_strcpy} when 6241called with a constant source string. 6242Defaults to 1 if @code{move_by_pieces_ninsns} returns less 6243than @code{MOVE_RATIO}. 6244@end defmac 6245 6246@defmac USE_LOAD_POST_INCREMENT (@var{mode}) 6247A C expression used to determine whether a load postincrement is a good 6248thing to use for a given mode. Defaults to the value of 6249@code{HAVE_POST_INCREMENT}. 6250@end defmac 6251 6252@defmac USE_LOAD_POST_DECREMENT (@var{mode}) 6253A C expression used to determine whether a load postdecrement is a good 6254thing to use for a given mode. Defaults to the value of 6255@code{HAVE_POST_DECREMENT}. 6256@end defmac 6257 6258@defmac USE_LOAD_PRE_INCREMENT (@var{mode}) 6259A C expression used to determine whether a load preincrement is a good 6260thing to use for a given mode. Defaults to the value of 6261@code{HAVE_PRE_INCREMENT}. 6262@end defmac 6263 6264@defmac USE_LOAD_PRE_DECREMENT (@var{mode}) 6265A C expression used to determine whether a load predecrement is a good 6266thing to use for a given mode. Defaults to the value of 6267@code{HAVE_PRE_DECREMENT}. 6268@end defmac 6269 6270@defmac USE_STORE_POST_INCREMENT (@var{mode}) 6271A C expression used to determine whether a store postincrement is a good 6272thing to use for a given mode. Defaults to the value of 6273@code{HAVE_POST_INCREMENT}. 6274@end defmac 6275 6276@defmac USE_STORE_POST_DECREMENT (@var{mode}) 6277A C expression used to determine whether a store postdecrement is a good 6278thing to use for a given mode. Defaults to the value of 6279@code{HAVE_POST_DECREMENT}. 6280@end defmac 6281 6282@defmac USE_STORE_PRE_INCREMENT (@var{mode}) 6283This macro is used to determine whether a store preincrement is a good 6284thing to use for a given mode. Defaults to the value of 6285@code{HAVE_PRE_INCREMENT}. 6286@end defmac 6287 6288@defmac USE_STORE_PRE_DECREMENT (@var{mode}) 6289This macro is used to determine whether a store predecrement is a good 6290thing to use for a given mode. Defaults to the value of 6291@code{HAVE_PRE_DECREMENT}. 6292@end defmac 6293 6294@defmac NO_FUNCTION_CSE 6295Define this macro if it is as good or better to call a constant 6296function address than to call an address kept in a register. 6297@end defmac 6298 6299@defmac LOGICAL_OP_NON_SHORT_CIRCUIT 6300Define this macro if a non-short-circuit operation produced by 6301@samp{fold_range_test ()} is optimal. This macro defaults to true if 6302@code{BRANCH_COST} is greater than or equal to the value 2. 6303@end defmac 6304 6305@hook TARGET_RTX_COSTS 6306This target hook describes the relative costs of RTL expressions. 6307 6308The cost may depend on the precise form of the expression, which is 6309available for examination in @var{x}, and the fact that @var{x} appears 6310as operand @var{opno} of an expression with rtx code @var{outer_code}. 6311That is, the hook can assume that there is some rtx @var{y} such 6312that @samp{GET_CODE (@var{y}) == @var{outer_code}} and such that 6313either (a) @samp{XEXP (@var{y}, @var{opno}) == @var{x}} or 6314(b) @samp{XVEC (@var{y}, @var{opno})} contains @var{x}. 6315 6316@var{code} is @var{x}'s expression code---redundant, since it can be 6317obtained with @code{GET_CODE (@var{x})}. 6318 6319In implementing this hook, you can use the construct 6320@code{COSTS_N_INSNS (@var{n})} to specify a cost equal to @var{n} fast 6321instructions. 6322 6323On entry to the hook, @code{*@var{total}} contains a default estimate 6324for the cost of the expression. The hook should modify this value as 6325necessary. Traditionally, the default costs are @code{COSTS_N_INSNS (5)} 6326for multiplications, @code{COSTS_N_INSNS (7)} for division and modulus 6327operations, and @code{COSTS_N_INSNS (1)} for all other operations. 6328 6329When optimizing for code size, i.e.@: when @code{speed} is 6330false, this target hook should be used to estimate the relative 6331size cost of an expression, again relative to @code{COSTS_N_INSNS}. 6332 6333The hook returns true when all subexpressions of @var{x} have been 6334processed, and false when @code{rtx_cost} should recurse. 6335@end deftypefn 6336 6337@hook TARGET_ADDRESS_COST 6338This hook computes the cost of an addressing mode that contains 6339@var{address}. If not defined, the cost is computed from 6340the @var{address} expression and the @code{TARGET_RTX_COST} hook. 6341 6342For most CISC machines, the default cost is a good approximation of the 6343true cost of the addressing mode. However, on RISC machines, all 6344instructions normally have the same length and execution time. Hence 6345all addresses will have equal costs. 6346 6347In cases where more than one form of an address is known, the form with 6348the lowest cost will be used. If multiple forms have the same, lowest, 6349cost, the one that is the most complex will be used. 6350 6351For example, suppose an address that is equal to the sum of a register 6352and a constant is used twice in the same basic block. When this macro 6353is not defined, the address will be computed in a register and memory 6354references will be indirect through that register. On machines where 6355the cost of the addressing mode containing the sum is no higher than 6356that of a simple indirect reference, this will produce an additional 6357instruction and possibly require an additional register. Proper 6358specification of this macro eliminates this overhead for such machines. 6359 6360This hook is never called with an invalid address. 6361 6362On machines where an address involving more than one register is as 6363cheap as an address computation involving only one register, defining 6364@code{TARGET_ADDRESS_COST} to reflect this can cause two registers to 6365be live over a region of code where only one would have been if 6366@code{TARGET_ADDRESS_COST} were not defined in that manner. This effect 6367should be considered in the definition of this macro. Equivalent costs 6368should probably only be given to addresses with different numbers of 6369registers on machines with lots of registers. 6370@end deftypefn 6371 6372@node Scheduling 6373@section Adjusting the Instruction Scheduler 6374 6375The instruction scheduler may need a fair amount of machine-specific 6376adjustment in order to produce good code. GCC provides several target 6377hooks for this purpose. It is usually enough to define just a few of 6378them: try the first ones in this list first. 6379 6380@hook TARGET_SCHED_ISSUE_RATE 6381This hook returns the maximum number of instructions that can ever 6382issue at the same time on the target machine. The default is one. 6383Although the insn scheduler can define itself the possibility of issue 6384an insn on the same cycle, the value can serve as an additional 6385constraint to issue insns on the same simulated processor cycle (see 6386hooks @samp{TARGET_SCHED_REORDER} and @samp{TARGET_SCHED_REORDER2}). 6387This value must be constant over the entire compilation. If you need 6388it to vary depending on what the instructions are, you must use 6389@samp{TARGET_SCHED_VARIABLE_ISSUE}. 6390@end deftypefn 6391 6392@hook TARGET_SCHED_VARIABLE_ISSUE 6393This hook is executed by the scheduler after it has scheduled an insn 6394from the ready list. It should return the number of insns which can 6395still be issued in the current cycle. The default is 6396@samp{@w{@var{more} - 1}} for insns other than @code{CLOBBER} and 6397@code{USE}, which normally are not counted against the issue rate. 6398You should define this hook if some insns take more machine resources 6399than others, so that fewer insns can follow them in the same cycle. 6400@var{file} is either a null pointer, or a stdio stream to write any 6401debug output to. @var{verbose} is the verbose level provided by 6402@option{-fsched-verbose-@var{n}}. @var{insn} is the instruction that 6403was scheduled. 6404@end deftypefn 6405 6406@hook TARGET_SCHED_ADJUST_COST 6407This function corrects the value of @var{cost} based on the 6408relationship between @var{insn} and @var{dep_insn} through the 6409dependence @var{link}. It should return the new value. The default 6410is to make no adjustment to @var{cost}. This can be used for example 6411to specify to the scheduler using the traditional pipeline description 6412that an output- or anti-dependence does not incur the same cost as a 6413data-dependence. If the scheduler using the automaton based pipeline 6414description, the cost of anti-dependence is zero and the cost of 6415output-dependence is maximum of one and the difference of latency 6416times of the first and the second insns. If these values are not 6417acceptable, you could use the hook to modify them too. See also 6418@pxref{Processor pipeline description}. 6419@end deftypefn 6420 6421@hook TARGET_SCHED_ADJUST_PRIORITY 6422This hook adjusts the integer scheduling priority @var{priority} of 6423@var{insn}. It should return the new priority. Increase the priority to 6424execute @var{insn} earlier, reduce the priority to execute @var{insn} 6425later. Do not define this hook if you do not need to adjust the 6426scheduling priorities of insns. 6427@end deftypefn 6428 6429@hook TARGET_SCHED_REORDER 6430This hook is executed by the scheduler after it has scheduled the ready 6431list, to allow the machine description to reorder it (for example to 6432combine two small instructions together on @samp{VLIW} machines). 6433@var{file} is either a null pointer, or a stdio stream to write any 6434debug output to. @var{verbose} is the verbose level provided by 6435@option{-fsched-verbose-@var{n}}. @var{ready} is a pointer to the ready 6436list of instructions that are ready to be scheduled. @var{n_readyp} is 6437a pointer to the number of elements in the ready list. The scheduler 6438reads the ready list in reverse order, starting with 6439@var{ready}[@var{*n_readyp} @minus{} 1] and going to @var{ready}[0]. @var{clock} 6440is the timer tick of the scheduler. You may modify the ready list and 6441the number of ready insns. The return value is the number of insns that 6442can issue this cycle; normally this is just @code{issue_rate}. See also 6443@samp{TARGET_SCHED_REORDER2}. 6444@end deftypefn 6445 6446@hook TARGET_SCHED_REORDER2 6447Like @samp{TARGET_SCHED_REORDER}, but called at a different time. That 6448function is called whenever the scheduler starts a new cycle. This one 6449is called once per iteration over a cycle, immediately after 6450@samp{TARGET_SCHED_VARIABLE_ISSUE}; it can reorder the ready list and 6451return the number of insns to be scheduled in the same cycle. Defining 6452this hook can be useful if there are frequent situations where 6453scheduling one insn causes other insns to become ready in the same 6454cycle. These other insns can then be taken into account properly. 6455@end deftypefn 6456 6457@hook TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK 6458This hook is called after evaluation forward dependencies of insns in 6459chain given by two parameter values (@var{head} and @var{tail} 6460correspondingly) but before insns scheduling of the insn chain. For 6461example, it can be used for better insn classification if it requires 6462analysis of dependencies. This hook can use backward and forward 6463dependencies of the insn scheduler because they are already 6464calculated. 6465@end deftypefn 6466 6467@hook TARGET_SCHED_INIT 6468This hook is executed by the scheduler at the beginning of each block of 6469instructions that are to be scheduled. @var{file} is either a null 6470pointer, or a stdio stream to write any debug output to. @var{verbose} 6471is the verbose level provided by @option{-fsched-verbose-@var{n}}. 6472@var{max_ready} is the maximum number of insns in the current scheduling 6473region that can be live at the same time. This can be used to allocate 6474scratch space if it is needed, e.g.@: by @samp{TARGET_SCHED_REORDER}. 6475@end deftypefn 6476 6477@hook TARGET_SCHED_FINISH 6478This hook is executed by the scheduler at the end of each block of 6479instructions that are to be scheduled. It can be used to perform 6480cleanup of any actions done by the other scheduling hooks. @var{file} 6481is either a null pointer, or a stdio stream to write any debug output 6482to. @var{verbose} is the verbose level provided by 6483@option{-fsched-verbose-@var{n}}. 6484@end deftypefn 6485 6486@hook TARGET_SCHED_INIT_GLOBAL 6487This hook is executed by the scheduler after function level initializations. 6488@var{file} is either a null pointer, or a stdio stream to write any debug output to. 6489@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}. 6490@var{old_max_uid} is the maximum insn uid when scheduling begins. 6491@end deftypefn 6492 6493@hook TARGET_SCHED_FINISH_GLOBAL 6494This is the cleanup hook corresponding to @code{TARGET_SCHED_INIT_GLOBAL}. 6495@var{file} is either a null pointer, or a stdio stream to write any debug output to. 6496@var{verbose} is the verbose level provided by @option{-fsched-verbose-@var{n}}. 6497@end deftypefn 6498 6499@hook TARGET_SCHED_DFA_PRE_CYCLE_INSN 6500The hook returns an RTL insn. The automaton state used in the 6501pipeline hazard recognizer is changed as if the insn were scheduled 6502when the new simulated processor cycle starts. Usage of the hook may 6503simplify the automaton pipeline description for some @acronym{VLIW} 6504processors. If the hook is defined, it is used only for the automaton 6505based pipeline description. The default is not to change the state 6506when the new simulated processor cycle starts. 6507@end deftypefn 6508 6509@hook TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN 6510The hook can be used to initialize data used by the previous hook. 6511@end deftypefn 6512 6513@hook TARGET_SCHED_DFA_POST_CYCLE_INSN 6514The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used 6515to changed the state as if the insn were scheduled when the new 6516simulated processor cycle finishes. 6517@end deftypefn 6518 6519@hook TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN 6520The hook is analogous to @samp{TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN} but 6521used to initialize data used by the previous hook. 6522@end deftypefn 6523 6524@hook TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE 6525The hook to notify target that the current simulated cycle is about to finish. 6526The hook is analogous to @samp{TARGET_SCHED_DFA_PRE_CYCLE_INSN} but used 6527to change the state in more complicated situations - e.g., when advancing 6528state on a single insn is not enough. 6529@end deftypefn 6530 6531@hook TARGET_SCHED_DFA_POST_ADVANCE_CYCLE 6532The hook to notify target that new simulated cycle has just started. 6533The hook is analogous to @samp{TARGET_SCHED_DFA_POST_CYCLE_INSN} but used 6534to change the state in more complicated situations - e.g., when advancing 6535state on a single insn is not enough. 6536@end deftypefn 6537 6538@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD 6539This hook controls better choosing an insn from the ready insn queue 6540for the @acronym{DFA}-based insn scheduler. Usually the scheduler 6541chooses the first insn from the queue. If the hook returns a positive 6542value, an additional scheduler code tries all permutations of 6543@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD ()} 6544subsequent ready insns to choose an insn whose issue will result in 6545maximal number of issued insns on the same cycle. For the 6546@acronym{VLIW} processor, the code could actually solve the problem of 6547packing simple insns into the @acronym{VLIW} insn. Of course, if the 6548rules of @acronym{VLIW} packing are described in the automaton. 6549 6550This code also could be used for superscalar @acronym{RISC} 6551processors. Let us consider a superscalar @acronym{RISC} processor 6552with 3 pipelines. Some insns can be executed in pipelines @var{A} or 6553@var{B}, some insns can be executed only in pipelines @var{B} or 6554@var{C}, and one insn can be executed in pipeline @var{B}. The 6555processor may issue the 1st insn into @var{A} and the 2nd one into 6556@var{B}. In this case, the 3rd insn will wait for freeing @var{B} 6557until the next cycle. If the scheduler issues the 3rd insn the first, 6558the processor could issue all 3 insns per cycle. 6559 6560Actually this code demonstrates advantages of the automaton based 6561pipeline hazard recognizer. We try quickly and easy many insn 6562schedules to choose the best one. 6563 6564The default is no multipass scheduling. 6565@end deftypefn 6566 6567@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD 6568 6569This hook controls what insns from the ready insn queue will be 6570considered for the multipass insn scheduling. If the hook returns 6571zero for @var{insn}, the insn will be not chosen to 6572be issued. 6573 6574The default is that any ready insns can be chosen to be issued. 6575@end deftypefn 6576 6577@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN 6578This hook prepares the target backend for a new round of multipass 6579scheduling. 6580@end deftypefn 6581 6582@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE 6583This hook is called when multipass scheduling evaluates instruction INSN. 6584@end deftypefn 6585 6586@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK 6587This is called when multipass scheduling backtracks from evaluation of 6588an instruction. 6589@end deftypefn 6590 6591@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_END 6592This hook notifies the target about the result of the concluded current 6593round of multipass scheduling. 6594@end deftypefn 6595 6596@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_INIT 6597This hook initializes target-specific data used in multipass scheduling. 6598@end deftypefn 6599 6600@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_FINI 6601This hook finalizes target-specific data used in multipass scheduling. 6602@end deftypefn 6603 6604@hook TARGET_SCHED_DFA_NEW_CYCLE 6605This hook is called by the insn scheduler before issuing @var{insn} 6606on cycle @var{clock}. If the hook returns nonzero, 6607@var{insn} is not issued on this processor cycle. Instead, 6608the processor cycle is advanced. If *@var{sort_p} 6609is zero, the insn ready queue is not sorted on the new cycle 6610start as usually. @var{dump} and @var{verbose} specify the file and 6611verbosity level to use for debugging output. 6612@var{last_clock} and @var{clock} are, respectively, the 6613processor cycle on which the previous insn has been issued, 6614and the current processor cycle. 6615@end deftypefn 6616 6617@hook TARGET_SCHED_IS_COSTLY_DEPENDENCE 6618This hook is used to define which dependences are considered costly by 6619the target, so costly that it is not advisable to schedule the insns that 6620are involved in the dependence too close to one another. The parameters 6621to this hook are as follows: The first parameter @var{_dep} is the dependence 6622being evaluated. The second parameter @var{cost} is the cost of the 6623dependence as estimated by the scheduler, and the third 6624parameter @var{distance} is the distance in cycles between the two insns. 6625The hook returns @code{true} if considering the distance between the two 6626insns the dependence between them is considered costly by the target, 6627and @code{false} otherwise. 6628 6629Defining this hook can be useful in multiple-issue out-of-order machines, 6630where (a) it's practically hopeless to predict the actual data/resource 6631delays, however: (b) there's a better chance to predict the actual grouping 6632that will be formed, and (c) correctly emulating the grouping can be very 6633important. In such targets one may want to allow issuing dependent insns 6634closer to one another---i.e., closer than the dependence distance; however, 6635not in cases of ``costly dependences'', which this hooks allows to define. 6636@end deftypefn 6637 6638@hook TARGET_SCHED_H_I_D_EXTENDED 6639This hook is called by the insn scheduler after emitting a new instruction to 6640the instruction stream. The hook notifies a target backend to extend its 6641per instruction data structures. 6642@end deftypefn 6643 6644@hook TARGET_SCHED_ALLOC_SCHED_CONTEXT 6645Return a pointer to a store large enough to hold target scheduling context. 6646@end deftypefn 6647 6648@hook TARGET_SCHED_INIT_SCHED_CONTEXT 6649Initialize store pointed to by @var{tc} to hold target scheduling context. 6650It @var{clean_p} is true then initialize @var{tc} as if scheduler is at the 6651beginning of the block. Otherwise, copy the current context into @var{tc}. 6652@end deftypefn 6653 6654@hook TARGET_SCHED_SET_SCHED_CONTEXT 6655Copy target scheduling context pointed to by @var{tc} to the current context. 6656@end deftypefn 6657 6658@hook TARGET_SCHED_CLEAR_SCHED_CONTEXT 6659Deallocate internal data in target scheduling context pointed to by @var{tc}. 6660@end deftypefn 6661 6662@hook TARGET_SCHED_FREE_SCHED_CONTEXT 6663Deallocate a store for target scheduling context pointed to by @var{tc}. 6664@end deftypefn 6665 6666@hook TARGET_SCHED_SPECULATE_INSN 6667This hook is called by the insn scheduler when @var{insn} has only 6668speculative dependencies and therefore can be scheduled speculatively. 6669The hook is used to check if the pattern of @var{insn} has a speculative 6670version and, in case of successful check, to generate that speculative 6671pattern. The hook should return 1, if the instruction has a speculative form, 6672or @minus{}1, if it doesn't. @var{request} describes the type of requested 6673speculation. If the return value equals 1 then @var{new_pat} is assigned 6674the generated speculative pattern. 6675@end deftypefn 6676 6677@hook TARGET_SCHED_NEEDS_BLOCK_P 6678This hook is called by the insn scheduler during generation of recovery code 6679for @var{insn}. It should return @code{true}, if the corresponding check 6680instruction should branch to recovery code, or @code{false} otherwise. 6681@end deftypefn 6682 6683@hook TARGET_SCHED_GEN_SPEC_CHECK 6684This hook is called by the insn scheduler to generate a pattern for recovery 6685check instruction. If @var{mutate_p} is zero, then @var{insn} is a 6686speculative instruction for which the check should be generated. 6687@var{label} is either a label of a basic block, where recovery code should 6688be emitted, or a null pointer, when requested check doesn't branch to 6689recovery code (a simple check). If @var{mutate_p} is nonzero, then 6690a pattern for a branchy check corresponding to a simple check denoted by 6691@var{insn} should be generated. In this case @var{label} can't be null. 6692@end deftypefn 6693 6694@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD_SPEC 6695This hook is used as a workaround for 6696@samp{TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD} not being 6697called on the first instruction of the ready list. The hook is used to 6698discard speculative instructions that stand first in the ready list from 6699being scheduled on the current cycle. If the hook returns @code{false}, 6700@var{insn} will not be chosen to be issued. 6701For non-speculative instructions, 6702the hook should always return @code{true}. For example, in the ia64 backend 6703the hook is used to cancel data speculative insns when the ALAT table 6704is nearly full. 6705@end deftypefn 6706 6707@hook TARGET_SCHED_SET_SCHED_FLAGS 6708This hook is used by the insn scheduler to find out what features should be 6709enabled/used. 6710The structure *@var{spec_info} should be filled in by the target. 6711The structure describes speculation types that can be used in the scheduler. 6712@end deftypefn 6713 6714@hook TARGET_SCHED_SMS_RES_MII 6715This hook is called by the swing modulo scheduler to calculate a 6716resource-based lower bound which is based on the resources available in 6717the machine and the resources required by each instruction. The target 6718backend can use @var{g} to calculate such bound. A very simple lower 6719bound will be used in case this hook is not implemented: the total number 6720of instructions divided by the issue rate. 6721@end deftypefn 6722 6723@hook TARGET_SCHED_DISPATCH 6724This hook is called by Haifa Scheduler. It returns true if dispatch scheduling 6725is supported in hardware and the condition specified in the parameter is true. 6726@end deftypefn 6727 6728@hook TARGET_SCHED_DISPATCH_DO 6729This hook is called by Haifa Scheduler. It performs the operation specified 6730in its second parameter. 6731@end deftypefn 6732 6733@hook TARGET_SCHED_EXPOSED_PIPELINE 6734 6735@hook TARGET_SCHED_REASSOCIATION_WIDTH 6736 6737@node Sections 6738@section Dividing the Output into Sections (Texts, Data, @dots{}) 6739@c the above section title is WAY too long. maybe cut the part between 6740@c the (...)? --mew 10feb93 6741 6742An object file is divided into sections containing different types of 6743data. In the most common case, there are three sections: the @dfn{text 6744section}, which holds instructions and read-only data; the @dfn{data 6745section}, which holds initialized writable data; and the @dfn{bss 6746section}, which holds uninitialized data. Some systems have other kinds 6747of sections. 6748 6749@file{varasm.c} provides several well-known sections, such as 6750@code{text_section}, @code{data_section} and @code{bss_section}. 6751The normal way of controlling a @code{@var{foo}_section} variable 6752is to define the associated @code{@var{FOO}_SECTION_ASM_OP} macro, 6753as described below. The macros are only read once, when @file{varasm.c} 6754initializes itself, so their values must be run-time constants. 6755They may however depend on command-line flags. 6756 6757@emph{Note:} Some run-time files, such @file{crtstuff.c}, also make 6758use of the @code{@var{FOO}_SECTION_ASM_OP} macros, and expect them 6759to be string literals. 6760 6761Some assemblers require a different string to be written every time a 6762section is selected. If your assembler falls into this category, you 6763should define the @code{TARGET_ASM_INIT_SECTIONS} hook and use 6764@code{get_unnamed_section} to set up the sections. 6765 6766You must always create a @code{text_section}, either by defining 6767@code{TEXT_SECTION_ASM_OP} or by initializing @code{text_section} 6768in @code{TARGET_ASM_INIT_SECTIONS}. The same is true of 6769@code{data_section} and @code{DATA_SECTION_ASM_OP}. If you do not 6770create a distinct @code{readonly_data_section}, the default is to 6771reuse @code{text_section}. 6772 6773All the other @file{varasm.c} sections are optional, and are null 6774if the target does not provide them. 6775 6776@defmac TEXT_SECTION_ASM_OP 6777A C expression whose value is a string, including spacing, containing the 6778assembler operation that should precede instructions and read-only data. 6779Normally @code{"\t.text"} is right. 6780@end defmac 6781 6782@defmac HOT_TEXT_SECTION_NAME 6783If defined, a C string constant for the name of the section containing most 6784frequently executed functions of the program. If not defined, GCC will provide 6785a default definition if the target supports named sections. 6786@end defmac 6787 6788@defmac UNLIKELY_EXECUTED_TEXT_SECTION_NAME 6789If defined, a C string constant for the name of the section containing unlikely 6790executed functions in the program. 6791@end defmac 6792 6793@defmac DATA_SECTION_ASM_OP 6794A C expression whose value is a string, including spacing, containing the 6795assembler operation to identify the following data as writable initialized 6796data. Normally @code{"\t.data"} is right. 6797@end defmac 6798 6799@defmac SDATA_SECTION_ASM_OP 6800If defined, a C expression whose value is a string, including spacing, 6801containing the assembler operation to identify the following data as 6802initialized, writable small data. 6803@end defmac 6804 6805@defmac READONLY_DATA_SECTION_ASM_OP 6806A C expression whose value is a string, including spacing, containing the 6807assembler operation to identify the following data as read-only initialized 6808data. 6809@end defmac 6810 6811@defmac BSS_SECTION_ASM_OP 6812If defined, a C expression whose value is a string, including spacing, 6813containing the assembler operation to identify the following data as 6814uninitialized global data. If not defined, and 6815@code{ASM_OUTPUT_ALIGNED_BSS} not defined, 6816uninitialized global data will be output in the data section if 6817@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be 6818used. 6819@end defmac 6820 6821@defmac SBSS_SECTION_ASM_OP 6822If defined, a C expression whose value is a string, including spacing, 6823containing the assembler operation to identify the following data as 6824uninitialized, writable small data. 6825@end defmac 6826 6827@defmac TLS_COMMON_ASM_OP 6828If defined, a C expression whose value is a string containing the 6829assembler operation to identify the following data as thread-local 6830common data. The default is @code{".tls_common"}. 6831@end defmac 6832 6833@defmac TLS_SECTION_ASM_FLAG 6834If defined, a C expression whose value is a character constant 6835containing the flag used to mark a section as a TLS section. The 6836default is @code{'T'}. 6837@end defmac 6838 6839@defmac INIT_SECTION_ASM_OP 6840If defined, a C expression whose value is a string, including spacing, 6841containing the assembler operation to identify the following data as 6842initialization code. If not defined, GCC will assume such a section does 6843not exist. This section has no corresponding @code{init_section} 6844variable; it is used entirely in runtime code. 6845@end defmac 6846 6847@defmac FINI_SECTION_ASM_OP 6848If defined, a C expression whose value is a string, including spacing, 6849containing the assembler operation to identify the following data as 6850finalization code. If not defined, GCC will assume such a section does 6851not exist. This section has no corresponding @code{fini_section} 6852variable; it is used entirely in runtime code. 6853@end defmac 6854 6855@defmac INIT_ARRAY_SECTION_ASM_OP 6856If defined, a C expression whose value is a string, including spacing, 6857containing the assembler operation to identify the following data as 6858part of the @code{.init_array} (or equivalent) section. If not 6859defined, GCC will assume such a section does not exist. Do not define 6860both this macro and @code{INIT_SECTION_ASM_OP}. 6861@end defmac 6862 6863@defmac FINI_ARRAY_SECTION_ASM_OP 6864If defined, a C expression whose value is a string, including spacing, 6865containing the assembler operation to identify the following data as 6866part of the @code{.fini_array} (or equivalent) section. If not 6867defined, GCC will assume such a section does not exist. Do not define 6868both this macro and @code{FINI_SECTION_ASM_OP}. 6869@end defmac 6870 6871@defmac CRT_CALL_STATIC_FUNCTION (@var{section_op}, @var{function}) 6872If defined, an ASM statement that switches to a different section 6873via @var{section_op}, calls @var{function}, and switches back to 6874the text section. This is used in @file{crtstuff.c} if 6875@code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls 6876to initialization and finalization functions from the init and fini 6877sections. By default, this macro uses a simple function call. Some 6878ports need hand-crafted assembly code to avoid dependencies on 6879registers initialized in the function prologue or to ensure that 6880constant pools don't end up too far way in the text section. 6881@end defmac 6882 6883@defmac TARGET_LIBGCC_SDATA_SECTION 6884If defined, a string which names the section into which small 6885variables defined in crtstuff and libgcc should go. This is useful 6886when the target has options for optimizing access to small data, and 6887you want the crtstuff and libgcc routines to be conservative in what 6888they expect of your application yet liberal in what your application 6889expects. For example, for targets with a @code{.sdata} section (like 6890MIPS), you could compile crtstuff with @code{-G 0} so that it doesn't 6891require small data support from your application, but use this macro 6892to put small data into @code{.sdata} so that your application can 6893access these variables whether it uses small data or not. 6894@end defmac 6895 6896@defmac FORCE_CODE_SECTION_ALIGN 6897If defined, an ASM statement that aligns a code section to some 6898arbitrary boundary. This is used to force all fragments of the 6899@code{.init} and @code{.fini} sections to have to same alignment 6900and thus prevent the linker from having to add any padding. 6901@end defmac 6902 6903@defmac JUMP_TABLES_IN_TEXT_SECTION 6904Define this macro to be an expression with a nonzero value if jump 6905tables (for @code{tablejump} insns) should be output in the text 6906section, along with the assembler instructions. Otherwise, the 6907readonly data section is used. 6908 6909This macro is irrelevant if there is no separate readonly data section. 6910@end defmac 6911 6912@hook TARGET_ASM_INIT_SECTIONS 6913Define this hook if you need to do something special to set up the 6914@file{varasm.c} sections, or if your target has some special sections 6915of its own that you need to create. 6916 6917GCC calls this hook after processing the command line, but before writing 6918any assembly code, and before calling any of the section-returning hooks 6919described below. 6920@end deftypefn 6921 6922@hook TARGET_ASM_RELOC_RW_MASK 6923Return a mask describing how relocations should be treated when 6924selecting sections. Bit 1 should be set if global relocations 6925should be placed in a read-write section; bit 0 should be set if 6926local relocations should be placed in a read-write section. 6927 6928The default version of this function returns 3 when @option{-fpic} 6929is in effect, and 0 otherwise. The hook is typically redefined 6930when the target cannot support (some kinds of) dynamic relocations 6931in read-only sections even in executables. 6932@end deftypefn 6933 6934@hook TARGET_ASM_SELECT_SECTION 6935Return the section into which @var{exp} should be placed. You can 6936assume that @var{exp} is either a @code{VAR_DECL} node or a constant of 6937some sort. @var{reloc} indicates whether the initial value of @var{exp} 6938requires link-time relocations. Bit 0 is set when variable contains 6939local relocations only, while bit 1 is set for global relocations. 6940@var{align} is the constant alignment in bits. 6941 6942The default version of this function takes care of putting read-only 6943variables in @code{readonly_data_section}. 6944 6945See also @var{USE_SELECT_SECTION_FOR_FUNCTIONS}. 6946@end deftypefn 6947 6948@defmac USE_SELECT_SECTION_FOR_FUNCTIONS 6949Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called 6950for @code{FUNCTION_DECL}s as well as for variables and constants. 6951 6952In the case of a @code{FUNCTION_DECL}, @var{reloc} will be zero if the 6953function has been determined to be likely to be called, and nonzero if 6954it is unlikely to be called. 6955@end defmac 6956 6957@hook TARGET_ASM_UNIQUE_SECTION 6958Build up a unique section name, expressed as a @code{STRING_CST} node, 6959and assign it to @samp{DECL_SECTION_NAME (@var{decl})}. 6960As with @code{TARGET_ASM_SELECT_SECTION}, @var{reloc} indicates whether 6961the initial value of @var{exp} requires link-time relocations. 6962 6963The default version of this function appends the symbol name to the 6964ELF section name that would normally be used for the symbol. For 6965example, the function @code{foo} would be placed in @code{.text.foo}. 6966Whatever the actual target object format, this is often good enough. 6967@end deftypefn 6968 6969@hook TARGET_ASM_FUNCTION_RODATA_SECTION 6970Return the readonly data section associated with 6971@samp{DECL_SECTION_NAME (@var{decl})}. 6972The default version of this function selects @code{.gnu.linkonce.r.name} if 6973the function's section is @code{.gnu.linkonce.t.name}, @code{.rodata.name} 6974if function is in @code{.text.name}, and the normal readonly-data section 6975otherwise. 6976@end deftypefn 6977 6978@hook TARGET_ASM_MERGEABLE_RODATA_PREFIX 6979 6980@hook TARGET_ASM_TM_CLONE_TABLE_SECTION 6981 6982@hook TARGET_ASM_SELECT_RTX_SECTION 6983Return the section into which a constant @var{x}, of mode @var{mode}, 6984should be placed. You can assume that @var{x} is some kind of 6985constant in RTL@. The argument @var{mode} is redundant except in the 6986case of a @code{const_int} rtx. @var{align} is the constant alignment 6987in bits. 6988 6989The default version of this function takes care of putting symbolic 6990constants in @code{flag_pic} mode in @code{data_section} and everything 6991else in @code{readonly_data_section}. 6992@end deftypefn 6993 6994@hook TARGET_MANGLE_DECL_ASSEMBLER_NAME 6995Define this hook if you need to postprocess the assembler name generated 6996by target-independent code. The @var{id} provided to this hook will be 6997the computed name (e.g., the macro @code{DECL_NAME} of the @var{decl} in C, 6998or the mangled name of the @var{decl} in C++). The return value of the 6999hook is an @code{IDENTIFIER_NODE} for the appropriate mangled name on 7000your target system. The default implementation of this hook just 7001returns the @var{id} provided. 7002@end deftypefn 7003 7004@hook TARGET_ENCODE_SECTION_INFO 7005Define this hook if references to a symbol or a constant must be 7006treated differently depending on something about the variable or 7007function named by the symbol (such as what section it is in). 7008 7009The hook is executed immediately after rtl has been created for 7010@var{decl}, which may be a variable or function declaration or 7011an entry in the constant pool. In either case, @var{rtl} is the 7012rtl in question. Do @emph{not} use @code{DECL_RTL (@var{decl})} 7013in this hook; that field may not have been initialized yet. 7014 7015In the case of a constant, it is safe to assume that the rtl is 7016a @code{mem} whose address is a @code{symbol_ref}. Most decls 7017will also have this form, but that is not guaranteed. Global 7018register variables, for instance, will have a @code{reg} for their 7019rtl. (Normally the right thing to do with such unusual rtl is 7020leave it alone.) 7021 7022The @var{new_decl_p} argument will be true if this is the first time 7023that @code{TARGET_ENCODE_SECTION_INFO} has been invoked on this decl. It will 7024be false for subsequent invocations, which will happen for duplicate 7025declarations. Whether or not anything must be done for the duplicate 7026declaration depends on whether the hook examines @code{DECL_ATTRIBUTES}. 7027@var{new_decl_p} is always true when the hook is called for a constant. 7028 7029@cindex @code{SYMBOL_REF_FLAG}, in @code{TARGET_ENCODE_SECTION_INFO} 7030The usual thing for this hook to do is to record flags in the 7031@code{symbol_ref}, using @code{SYMBOL_REF_FLAG} or @code{SYMBOL_REF_FLAGS}. 7032Historically, the name string was modified if it was necessary to 7033encode more than one bit of information, but this practice is now 7034discouraged; use @code{SYMBOL_REF_FLAGS}. 7035 7036The default definition of this hook, @code{default_encode_section_info} 7037in @file{varasm.c}, sets a number of commonly-useful bits in 7038@code{SYMBOL_REF_FLAGS}. Check whether the default does what you need 7039before overriding it. 7040@end deftypefn 7041 7042@hook TARGET_STRIP_NAME_ENCODING 7043Decode @var{name} and return the real name part, sans 7044the characters that @code{TARGET_ENCODE_SECTION_INFO} 7045may have added. 7046@end deftypefn 7047 7048@hook TARGET_IN_SMALL_DATA_P 7049Returns true if @var{exp} should be placed into a ``small data'' section. 7050The default version of this hook always returns false. 7051@end deftypefn 7052 7053@hook TARGET_HAVE_SRODATA_SECTION 7054Contains the value true if the target places read-only 7055``small data'' into a separate section. The default value is false. 7056@end deftypevr 7057 7058@hook TARGET_PROFILE_BEFORE_PROLOGUE 7059 7060@hook TARGET_BINDS_LOCAL_P 7061Returns true if @var{exp} names an object for which name resolution 7062rules must resolve to the current ``module'' (dynamic shared library 7063or executable image). 7064 7065The default version of this hook implements the name resolution rules 7066for ELF, which has a looser model of global name binding than other 7067currently supported object file formats. 7068@end deftypefn 7069 7070@hook TARGET_HAVE_TLS 7071Contains the value true if the target supports thread-local storage. 7072The default value is false. 7073@end deftypevr 7074 7075 7076@node PIC 7077@section Position Independent Code 7078@cindex position independent code 7079@cindex PIC 7080 7081This section describes macros that help implement generation of position 7082independent code. Simply defining these macros is not enough to 7083generate valid PIC; you must also add support to the hook 7084@code{TARGET_LEGITIMATE_ADDRESS_P} and to the macro 7085@code{PRINT_OPERAND_ADDRESS}, as well as @code{LEGITIMIZE_ADDRESS}. You 7086must modify the definition of @samp{movsi} to do something appropriate 7087when the source operand contains a symbolic address. You may also 7088need to alter the handling of switch statements so that they use 7089relative addresses. 7090@c i rearranged the order of the macros above to try to force one of 7091@c them to the next line, to eliminate an overfull hbox. --mew 10feb93 7092 7093@defmac PIC_OFFSET_TABLE_REGNUM 7094The register number of the register used to address a table of static 7095data addresses in memory. In some cases this register is defined by a 7096processor's ``application binary interface'' (ABI)@. When this macro 7097is defined, RTL is generated for this register once, as with the stack 7098pointer and frame pointer registers. If this macro is not defined, it 7099is up to the machine-dependent files to allocate such a register (if 7100necessary). Note that this register must be fixed when in use (e.g.@: 7101when @code{flag_pic} is true). 7102@end defmac 7103 7104@defmac PIC_OFFSET_TABLE_REG_CALL_CLOBBERED 7105A C expression that is nonzero if the register defined by 7106@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls. If not defined, 7107the default is zero. Do not define 7108this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined. 7109@end defmac 7110 7111@defmac LEGITIMATE_PIC_OPERAND_P (@var{x}) 7112A C expression that is nonzero if @var{x} is a legitimate immediate 7113operand on the target machine when generating position independent code. 7114You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not 7115check this. You can also assume @var{flag_pic} is true, so you need not 7116check it either. You need not define this macro if all constants 7117(including @code{SYMBOL_REF}) can be immediate operands when generating 7118position independent code. 7119@end defmac 7120 7121@node Assembler Format 7122@section Defining the Output Assembler Language 7123 7124This section describes macros whose principal purpose is to describe how 7125to write instructions in assembler language---rather than what the 7126instructions do. 7127 7128@menu 7129* File Framework:: Structural information for the assembler file. 7130* Data Output:: Output of constants (numbers, strings, addresses). 7131* Uninitialized Data:: Output of uninitialized variables. 7132* Label Output:: Output and generation of labels. 7133* Initialization:: General principles of initialization 7134 and termination routines. 7135* Macros for Initialization:: 7136 Specific macros that control the handling of 7137 initialization and termination routines. 7138* Instruction Output:: Output of actual instructions. 7139* Dispatch Tables:: Output of jump tables. 7140* Exception Region Output:: Output of exception region code. 7141* Alignment Output:: Pseudo ops for alignment and skipping data. 7142@end menu 7143 7144@node File Framework 7145@subsection The Overall Framework of an Assembler File 7146@cindex assembler format 7147@cindex output of assembler code 7148 7149@c prevent bad page break with this line 7150This describes the overall framework of an assembly file. 7151 7152@findex default_file_start 7153@hook TARGET_ASM_FILE_START 7154Output to @code{asm_out_file} any text which the assembler expects to 7155find at the beginning of a file. The default behavior is controlled 7156by two flags, documented below. Unless your target's assembler is 7157quite unusual, if you override the default, you should call 7158@code{default_file_start} at some point in your target hook. This 7159lets other target files rely on these variables. 7160@end deftypefn 7161 7162@hook TARGET_ASM_FILE_START_APP_OFF 7163If this flag is true, the text of the macro @code{ASM_APP_OFF} will be 7164printed as the very first line in the assembly file, unless 7165@option{-fverbose-asm} is in effect. (If that macro has been defined 7166to the empty string, this variable has no effect.) With the normal 7167definition of @code{ASM_APP_OFF}, the effect is to notify the GNU 7168assembler that it need not bother stripping comments or extra 7169whitespace from its input. This allows it to work a bit faster. 7170 7171The default is false. You should not set it to true unless you have 7172verified that your port does not generate any extra whitespace or 7173comments that will cause GAS to issue errors in NO_APP mode. 7174@end deftypevr 7175 7176@hook TARGET_ASM_FILE_START_FILE_DIRECTIVE 7177If this flag is true, @code{output_file_directive} will be called 7178for the primary source file, immediately after printing 7179@code{ASM_APP_OFF} (if that is enabled). Most ELF assemblers expect 7180this to be done. The default is false. 7181@end deftypevr 7182 7183@hook TARGET_ASM_FILE_END 7184Output to @code{asm_out_file} any text which the assembler expects 7185to find at the end of a file. The default is to output nothing. 7186@end deftypefn 7187 7188@deftypefun void file_end_indicate_exec_stack () 7189Some systems use a common convention, the @samp{.note.GNU-stack} 7190special section, to indicate whether or not an object file relies on 7191the stack being executable. If your system uses this convention, you 7192should define @code{TARGET_ASM_FILE_END} to this function. If you 7193need to do other things in that hook, have your hook function call 7194this function. 7195@end deftypefun 7196 7197@hook TARGET_ASM_LTO_START 7198Output to @code{asm_out_file} any text which the assembler expects 7199to find at the start of an LTO section. The default is to output 7200nothing. 7201@end deftypefn 7202 7203@hook TARGET_ASM_LTO_END 7204Output to @code{asm_out_file} any text which the assembler expects 7205to find at the end of an LTO section. The default is to output 7206nothing. 7207@end deftypefn 7208 7209@hook TARGET_ASM_CODE_END 7210Output to @code{asm_out_file} any text which is needed before emitting 7211unwind info and debug info at the end of a file. Some targets emit 7212here PIC setup thunks that cannot be emitted at the end of file, 7213because they couldn't have unwind info then. The default is to output 7214nothing. 7215@end deftypefn 7216 7217@defmac ASM_COMMENT_START 7218A C string constant describing how to begin a comment in the target 7219assembler language. The compiler assumes that the comment will end at 7220the end of the line. 7221@end defmac 7222 7223@defmac ASM_APP_ON 7224A C string constant for text to be output before each @code{asm} 7225statement or group of consecutive ones. Normally this is 7226@code{"#APP"}, which is a comment that has no effect on most 7227assemblers but tells the GNU assembler that it must check the lines 7228that follow for all valid assembler constructs. 7229@end defmac 7230 7231@defmac ASM_APP_OFF 7232A C string constant for text to be output after each @code{asm} 7233statement or group of consecutive ones. Normally this is 7234@code{"#NO_APP"}, which tells the GNU assembler to resume making the 7235time-saving assumptions that are valid for ordinary compiler output. 7236@end defmac 7237 7238@defmac ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name}) 7239A C statement to output COFF information or DWARF debugging information 7240which indicates that filename @var{name} is the current source file to 7241the stdio stream @var{stream}. 7242 7243This macro need not be defined if the standard form of output 7244for the file format in use is appropriate. 7245@end defmac 7246 7247@hook TARGET_ASM_OUTPUT_SOURCE_FILENAME 7248 7249@hook TARGET_ASM_OUTPUT_IDENT 7250 7251@defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string}) 7252A C statement to output the string @var{string} to the stdio stream 7253@var{stream}. If you do not call the function @code{output_quoted_string} 7254in your config files, GCC will only call it to output filenames to 7255the assembler source. So you can use it to canonicalize the format 7256of the filename using this macro. 7257@end defmac 7258 7259@hook TARGET_ASM_NAMED_SECTION 7260Output assembly directives to switch to section @var{name}. The section 7261should have attributes as specified by @var{flags}, which is a bit mask 7262of the @code{SECTION_*} flags defined in @file{output.h}. If @var{decl} 7263is non-NULL, it is the @code{VAR_DECL} or @code{FUNCTION_DECL} with which 7264this section is associated. 7265@end deftypefn 7266 7267@hook TARGET_ASM_FUNCTION_SECTION 7268Return preferred text (sub)section for function @var{decl}. 7269Main purpose of this function is to separate cold, normal and hot 7270functions. @var{startup} is true when function is known to be used only 7271at startup (from static constructors or it is @code{main()}). 7272@var{exit} is true when function is known to be used only at exit 7273(from static destructors). 7274Return NULL if function should go to default text section. 7275@end deftypefn 7276 7277@hook TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS 7278 7279@hook TARGET_HAVE_NAMED_SECTIONS 7280This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}. 7281It must not be modified by command-line option processing. 7282@end deftypevr 7283 7284@anchor{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS} 7285@hook TARGET_HAVE_SWITCHABLE_BSS_SECTIONS 7286This flag is true if we can create zeroed data by switching to a BSS 7287section and then using @code{ASM_OUTPUT_SKIP} to allocate the space. 7288This is true on most ELF targets. 7289@end deftypevr 7290 7291@hook TARGET_SECTION_TYPE_FLAGS 7292Choose a set of section attributes for use by @code{TARGET_ASM_NAMED_SECTION} 7293based on a variable or function decl, a section name, and whether or not the 7294declaration's initializer may contain runtime relocations. @var{decl} may be 7295null, in which case read-write data should be assumed. 7296 7297The default version of this function handles choosing code vs data, 7298read-only vs read-write data, and @code{flag_pic}. You should only 7299need to override this if your target has special flags that might be 7300set via @code{__attribute__}. 7301@end deftypefn 7302 7303@hook TARGET_ASM_RECORD_GCC_SWITCHES 7304Provides the target with the ability to record the gcc command line 7305switches that have been passed to the compiler, and options that are 7306enabled. The @var{type} argument specifies what is being recorded. 7307It can take the following values: 7308 7309@table @gcctabopt 7310@item SWITCH_TYPE_PASSED 7311@var{text} is a command line switch that has been set by the user. 7312 7313@item SWITCH_TYPE_ENABLED 7314@var{text} is an option which has been enabled. This might be as a 7315direct result of a command line switch, or because it is enabled by 7316default or because it has been enabled as a side effect of a different 7317command line switch. For example, the @option{-O2} switch enables 7318various different individual optimization passes. 7319 7320@item SWITCH_TYPE_DESCRIPTIVE 7321@var{text} is either NULL or some descriptive text which should be 7322ignored. If @var{text} is NULL then it is being used to warn the 7323target hook that either recording is starting or ending. The first 7324time @var{type} is SWITCH_TYPE_DESCRIPTIVE and @var{text} is NULL, the 7325warning is for start up and the second time the warning is for 7326wind down. This feature is to allow the target hook to make any 7327necessary preparations before it starts to record switches and to 7328perform any necessary tidying up after it has finished recording 7329switches. 7330 7331@item SWITCH_TYPE_LINE_START 7332This option can be ignored by this target hook. 7333 7334@item SWITCH_TYPE_LINE_END 7335This option can be ignored by this target hook. 7336@end table 7337 7338The hook's return value must be zero. Other return values may be 7339supported in the future. 7340 7341By default this hook is set to NULL, but an example implementation is 7342provided for ELF based targets. Called @var{elf_record_gcc_switches}, 7343it records the switches as ASCII text inside a new, string mergeable 7344section in the assembler output file. The name of the new section is 7345provided by the @code{TARGET_ASM_RECORD_GCC_SWITCHES_SECTION} target 7346hook. 7347@end deftypefn 7348 7349@hook TARGET_ASM_RECORD_GCC_SWITCHES_SECTION 7350This is the name of the section that will be created by the example 7351ELF implementation of the @code{TARGET_ASM_RECORD_GCC_SWITCHES} target 7352hook. 7353@end deftypevr 7354 7355@need 2000 7356@node Data Output 7357@subsection Output of Data 7358 7359 7360@hook TARGET_ASM_BYTE_OP 7361@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_HI_OP 7362@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_SI_OP 7363@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_DI_OP 7364@deftypevrx {Target Hook} {const char *} TARGET_ASM_ALIGNED_TI_OP 7365@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_HI_OP 7366@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_SI_OP 7367@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_DI_OP 7368@deftypevrx {Target Hook} {const char *} TARGET_ASM_UNALIGNED_TI_OP 7369These hooks specify assembly directives for creating certain kinds 7370of integer object. The @code{TARGET_ASM_BYTE_OP} directive creates a 7371byte-sized object, the @code{TARGET_ASM_ALIGNED_HI_OP} one creates an 7372aligned two-byte object, and so on. Any of the hooks may be 7373@code{NULL}, indicating that no suitable directive is available. 7374 7375The compiler will print these strings at the start of a new line, 7376followed immediately by the object's initial value. In most cases, 7377the string should contain a tab, a pseudo-op, and then another tab. 7378@end deftypevr 7379 7380@hook TARGET_ASM_INTEGER 7381The @code{assemble_integer} function uses this hook to output an 7382integer object. @var{x} is the object's value, @var{size} is its size 7383in bytes and @var{aligned_p} indicates whether it is aligned. The 7384function should return @code{true} if it was able to output the 7385object. If it returns false, @code{assemble_integer} will try to 7386split the object into smaller parts. 7387 7388The default implementation of this hook will use the 7389@code{TARGET_ASM_BYTE_OP} family of strings, returning @code{false} 7390when the relevant string is @code{NULL}. 7391@end deftypefn 7392 7393@hook TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA 7394A target hook to recognize @var{rtx} patterns that @code{output_addr_const} 7395can't deal with, and output assembly code to @var{file} corresponding to 7396the pattern @var{x}. This may be used to allow machine-dependent 7397@code{UNSPEC}s to appear within constants. 7398 7399If target hook fails to recognize a pattern, it must return @code{false}, 7400so that a standard error message is printed. If it prints an error message 7401itself, by calling, for example, @code{output_operand_lossage}, it may just 7402return @code{true}. 7403@end deftypefn 7404 7405@defmac ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len}) 7406A C statement to output to the stdio stream @var{stream} an assembler 7407instruction to assemble a string constant containing the @var{len} 7408bytes at @var{ptr}. @var{ptr} will be a C expression of type 7409@code{char *} and @var{len} a C expression of type @code{int}. 7410 7411If the assembler has a @code{.ascii} pseudo-op as found in the 7412Berkeley Unix assembler, do not define the macro 7413@code{ASM_OUTPUT_ASCII}. 7414@end defmac 7415 7416@defmac ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n}) 7417A C statement to output word @var{n} of a function descriptor for 7418@var{decl}. This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS} 7419is defined, and is otherwise unused. 7420@end defmac 7421 7422@defmac CONSTANT_POOL_BEFORE_FUNCTION 7423You may define this macro as a C expression. You should define the 7424expression to have a nonzero value if GCC should output the constant 7425pool for a function before the code for the function, or a zero value if 7426GCC should output the constant pool after the function. If you do 7427not define this macro, the usual case, GCC will output the constant 7428pool before the function. 7429@end defmac 7430 7431@defmac ASM_OUTPUT_POOL_PROLOGUE (@var{file}, @var{funname}, @var{fundecl}, @var{size}) 7432A C statement to output assembler commands to define the start of the 7433constant pool for a function. @var{funname} is a string giving 7434the name of the function. Should the return type of the function 7435be required, it can be obtained via @var{fundecl}. @var{size} 7436is the size, in bytes, of the constant pool that will be written 7437immediately after this call. 7438 7439If no constant-pool prefix is required, the usual case, this macro need 7440not be defined. 7441@end defmac 7442 7443@defmac ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto}) 7444A C statement (with or without semicolon) to output a constant in the 7445constant pool, if it needs special treatment. (This macro need not do 7446anything for RTL expressions that can be output normally.) 7447 7448The argument @var{file} is the standard I/O stream to output the 7449assembler code on. @var{x} is the RTL expression for the constant to 7450output, and @var{mode} is the machine mode (in case @var{x} is a 7451@samp{const_int}). @var{align} is the required alignment for the value 7452@var{x}; you should output an assembler directive to force this much 7453alignment. 7454 7455The argument @var{labelno} is a number to use in an internal label for 7456the address of this pool entry. The definition of this macro is 7457responsible for outputting the label definition at the proper place. 7458Here is how to do this: 7459 7460@smallexample 7461@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno}); 7462@end smallexample 7463 7464When you output a pool entry specially, you should end with a 7465@code{goto} to the label @var{jumpto}. This will prevent the same pool 7466entry from being output a second time in the usual manner. 7467 7468You need not define this macro if it would do nothing. 7469@end defmac 7470 7471@defmac ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size}) 7472A C statement to output assembler commands to at the end of the constant 7473pool for a function. @var{funname} is a string giving the name of the 7474function. Should the return type of the function be required, you can 7475obtain it via @var{fundecl}. @var{size} is the size, in bytes, of the 7476constant pool that GCC wrote immediately before this call. 7477 7478If no constant-pool epilogue is required, the usual case, you need not 7479define this macro. 7480@end defmac 7481 7482@defmac IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C}, @var{STR}) 7483Define this macro as a C expression which is nonzero if @var{C} is 7484used as a logical line separator by the assembler. @var{STR} points 7485to the position in the string where @var{C} was found; this can be used if 7486a line separator uses multiple characters. 7487 7488If you do not define this macro, the default is that only 7489the character @samp{;} is treated as a logical line separator. 7490@end defmac 7491 7492@hook TARGET_ASM_OPEN_PAREN 7493These target hooks are C string constants, describing the syntax in the 7494assembler for grouping arithmetic expressions. If not overridden, they 7495default to normal parentheses, which is correct for most assemblers. 7496@end deftypevr 7497 7498These macros are provided by @file{real.h} for writing the definitions 7499of @code{ASM_OUTPUT_DOUBLE} and the like: 7500 7501@defmac REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l}) 7502@defmacx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l}) 7503@defmacx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l}) 7504@defmacx REAL_VALUE_TO_TARGET_DECIMAL32 (@var{x}, @var{l}) 7505@defmacx REAL_VALUE_TO_TARGET_DECIMAL64 (@var{x}, @var{l}) 7506@defmacx REAL_VALUE_TO_TARGET_DECIMAL128 (@var{x}, @var{l}) 7507These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the 7508target's floating point representation, and store its bit pattern in 7509the variable @var{l}. For @code{REAL_VALUE_TO_TARGET_SINGLE} and 7510@code{REAL_VALUE_TO_TARGET_DECIMAL32}, this variable should be a 7511simple @code{long int}. For the others, it should be an array of 7512@code{long int}. The number of elements in this array is determined 7513by the size of the desired target floating point data type: 32 bits of 7514it go in each @code{long int} array element. Each array element holds 751532 bits of the result, even if @code{long int} is wider than 32 bits 7516on the host machine. 7517 7518The array element values are designed so that you can print them out 7519using @code{fprintf} in the order they should appear in the target 7520machine's memory. 7521@end defmac 7522 7523@node Uninitialized Data 7524@subsection Output of Uninitialized Variables 7525 7526Each of the macros in this section is used to do the whole job of 7527outputting a single uninitialized variable. 7528 7529@defmac ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded}) 7530A C statement (sans semicolon) to output to the stdio stream 7531@var{stream} the assembler definition of a common-label named 7532@var{name} whose size is @var{size} bytes. The variable @var{rounded} 7533is the size rounded up to whatever alignment the caller wants. It is 7534possible that @var{size} may be zero, for instance if a struct with no 7535other member than a zero-length array is defined. In this case, the 7536backend must output a symbol definition that allocates at least one 7537byte, both so that the address of the resulting object does not compare 7538equal to any other, and because some object formats cannot even express 7539the concept of a zero-sized common symbol, as that is how they represent 7540an ordinary undefined external. 7541 7542Use the expression @code{assemble_name (@var{stream}, @var{name})} to 7543output the name itself; before and after that, output the additional 7544assembler syntax for defining the name, and a newline. 7545 7546This macro controls how the assembler definitions of uninitialized 7547common global variables are output. 7548@end defmac 7549 7550@defmac ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment}) 7551Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a 7552separate, explicit argument. If you define this macro, it is used in 7553place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in 7554handling the required alignment of the variable. The alignment is specified 7555as the number of bits. 7556@end defmac 7557 7558@defmac ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment}) 7559Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the 7560variable to be output, if there is one, or @code{NULL_TREE} if there 7561is no corresponding variable. If you define this macro, GCC will use it 7562in place of both @code{ASM_OUTPUT_COMMON} and 7563@code{ASM_OUTPUT_ALIGNED_COMMON}. Define this macro when you need to see 7564the variable's decl in order to chose what to output. 7565@end defmac 7566 7567@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment}) 7568A C statement (sans semicolon) to output to the stdio stream 7569@var{stream} the assembler definition of uninitialized global @var{decl} named 7570@var{name} whose size is @var{size} bytes. The variable @var{alignment} 7571is the alignment specified as the number of bits. 7572 7573Try to use function @code{asm_output_aligned_bss} defined in file 7574@file{varasm.c} when defining this macro. If unable, use the expression 7575@code{assemble_name (@var{stream}, @var{name})} to output the name itself; 7576before and after that, output the additional assembler syntax for defining 7577the name, and a newline. 7578 7579There are two ways of handling global BSS@. One is to define this macro. 7580The other is to have @code{TARGET_ASM_SELECT_SECTION} return a 7581switchable BSS section (@pxref{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}). 7582You do not need to do both. 7583 7584Some languages do not have @code{common} data, and require a 7585non-common form of global BSS in order to handle uninitialized globals 7586efficiently. C++ is one example of this. However, if the target does 7587not support global BSS, the front end may choose to make globals 7588common in order to save space in the object file. 7589@end defmac 7590 7591@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded}) 7592A C statement (sans semicolon) to output to the stdio stream 7593@var{stream} the assembler definition of a local-common-label named 7594@var{name} whose size is @var{size} bytes. The variable @var{rounded} 7595is the size rounded up to whatever alignment the caller wants. 7596 7597Use the expression @code{assemble_name (@var{stream}, @var{name})} to 7598output the name itself; before and after that, output the additional 7599assembler syntax for defining the name, and a newline. 7600 7601This macro controls how the assembler definitions of uninitialized 7602static variables are output. 7603@end defmac 7604 7605@defmac ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment}) 7606Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a 7607separate, explicit argument. If you define this macro, it is used in 7608place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in 7609handling the required alignment of the variable. The alignment is specified 7610as the number of bits. 7611@end defmac 7612 7613@defmac ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment}) 7614Like @code{ASM_OUTPUT_ALIGNED_DECL} except that @var{decl} of the 7615variable to be output, if there is one, or @code{NULL_TREE} if there 7616is no corresponding variable. If you define this macro, GCC will use it 7617in place of both @code{ASM_OUTPUT_DECL} and 7618@code{ASM_OUTPUT_ALIGNED_DECL}. Define this macro when you need to see 7619the variable's decl in order to chose what to output. 7620@end defmac 7621 7622@node Label Output 7623@subsection Output and Generation of Labels 7624 7625@c prevent bad page break with this line 7626This is about outputting labels. 7627 7628@findex assemble_name 7629@defmac ASM_OUTPUT_LABEL (@var{stream}, @var{name}) 7630A C statement (sans semicolon) to output to the stdio stream 7631@var{stream} the assembler definition of a label named @var{name}. 7632Use the expression @code{assemble_name (@var{stream}, @var{name})} to 7633output the name itself; before and after that, output the additional 7634assembler syntax for defining the name, and a newline. A default 7635definition of this macro is provided which is correct for most systems. 7636@end defmac 7637 7638@defmac ASM_OUTPUT_FUNCTION_LABEL (@var{stream}, @var{name}, @var{decl}) 7639A C statement (sans semicolon) to output to the stdio stream 7640@var{stream} the assembler definition of a label named @var{name} of 7641a function. 7642Use the expression @code{assemble_name (@var{stream}, @var{name})} to 7643output the name itself; before and after that, output the additional 7644assembler syntax for defining the name, and a newline. A default 7645definition of this macro is provided which is correct for most systems. 7646 7647If this macro is not defined, then the function name is defined in the 7648usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}). 7649@end defmac 7650 7651@findex assemble_name_raw 7652@defmac ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{name}) 7653Identical to @code{ASM_OUTPUT_LABEL}, except that @var{name} is known 7654to refer to a compiler-generated label. The default definition uses 7655@code{assemble_name_raw}, which is like @code{assemble_name} except 7656that it is more efficient. 7657@end defmac 7658 7659@defmac SIZE_ASM_OP 7660A C string containing the appropriate assembler directive to specify the 7661size of a symbol, without any arguments. On systems that use ELF, the 7662default (in @file{config/elfos.h}) is @samp{"\t.size\t"}; on other 7663systems, the default is not to define this macro. 7664 7665Define this macro only if it is correct to use the default definitions 7666of @code{ASM_OUTPUT_SIZE_DIRECTIVE} and @code{ASM_OUTPUT_MEASURED_SIZE} 7667for your system. If you need your own custom definitions of those 7668macros, or if you do not need explicit symbol sizes at all, do not 7669define this macro. 7670@end defmac 7671 7672@defmac ASM_OUTPUT_SIZE_DIRECTIVE (@var{stream}, @var{name}, @var{size}) 7673A C statement (sans semicolon) to output to the stdio stream 7674@var{stream} a directive telling the assembler that the size of the 7675symbol @var{name} is @var{size}. @var{size} is a @code{HOST_WIDE_INT}. 7676If you define @code{SIZE_ASM_OP}, a default definition of this macro is 7677provided. 7678@end defmac 7679 7680@defmac ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name}) 7681A C statement (sans semicolon) to output to the stdio stream 7682@var{stream} a directive telling the assembler to calculate the size of 7683the symbol @var{name} by subtracting its address from the current 7684address. 7685 7686If you define @code{SIZE_ASM_OP}, a default definition of this macro is 7687provided. The default assumes that the assembler recognizes a special 7688@samp{.} symbol as referring to the current address, and can calculate 7689the difference between this and another symbol. If your assembler does 7690not recognize @samp{.} or cannot do calculations with it, you will need 7691to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique. 7692@end defmac 7693 7694@defmac NO_DOLLAR_IN_LABEL 7695Define this macro if the assembler does not accept the character 7696@samp{$} in label names. By default constructors and destructors in 7697G++ have @samp{$} in the identifiers. If this macro is defined, 7698@samp{.} is used instead. 7699@end defmac 7700 7701@defmac NO_DOT_IN_LABEL 7702Define this macro if the assembler does not accept the character 7703@samp{.} in label names. By default constructors and destructors in G++ 7704have names that use @samp{.}. If this macro is defined, these names 7705are rewritten to avoid @samp{.}. 7706@end defmac 7707 7708@defmac TYPE_ASM_OP 7709A C string containing the appropriate assembler directive to specify the 7710type of a symbol, without any arguments. On systems that use ELF, the 7711default (in @file{config/elfos.h}) is @samp{"\t.type\t"}; on other 7712systems, the default is not to define this macro. 7713 7714Define this macro only if it is correct to use the default definition of 7715@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own 7716custom definition of this macro, or if you do not need explicit symbol 7717types at all, do not define this macro. 7718@end defmac 7719 7720@defmac TYPE_OPERAND_FMT 7721A C string which specifies (using @code{printf} syntax) the format of 7722the second operand to @code{TYPE_ASM_OP}. On systems that use ELF, the 7723default (in @file{config/elfos.h}) is @samp{"@@%s"}; on other systems, 7724the default is not to define this macro. 7725 7726Define this macro only if it is correct to use the default definition of 7727@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own 7728custom definition of this macro, or if you do not need explicit symbol 7729types at all, do not define this macro. 7730@end defmac 7731 7732@defmac ASM_OUTPUT_TYPE_DIRECTIVE (@var{stream}, @var{type}) 7733A C statement (sans semicolon) to output to the stdio stream 7734@var{stream} a directive telling the assembler that the type of the 7735symbol @var{name} is @var{type}. @var{type} is a C string; currently, 7736that string is always either @samp{"function"} or @samp{"object"}, but 7737you should not count on this. 7738 7739If you define @code{TYPE_ASM_OP} and @code{TYPE_OPERAND_FMT}, a default 7740definition of this macro is provided. 7741@end defmac 7742 7743@defmac ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl}) 7744A C statement (sans semicolon) to output to the stdio stream 7745@var{stream} any text necessary for declaring the name @var{name} of a 7746function which is being defined. This macro is responsible for 7747outputting the label definition (perhaps using 7748@code{ASM_OUTPUT_FUNCTION_LABEL}). The argument @var{decl} is the 7749@code{FUNCTION_DECL} tree node representing the function. 7750 7751If this macro is not defined, then the function name is defined in the 7752usual manner as a label (by means of @code{ASM_OUTPUT_FUNCTION_LABEL}). 7753 7754You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition 7755of this macro. 7756@end defmac 7757 7758@defmac ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl}) 7759A C statement (sans semicolon) to output to the stdio stream 7760@var{stream} any text necessary for declaring the size of a function 7761which is being defined. The argument @var{name} is the name of the 7762function. The argument @var{decl} is the @code{FUNCTION_DECL} tree node 7763representing the function. 7764 7765If this macro is not defined, then the function size is not defined. 7766 7767You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition 7768of this macro. 7769@end defmac 7770 7771@defmac ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl}) 7772A C statement (sans semicolon) to output to the stdio stream 7773@var{stream} any text necessary for declaring the name @var{name} of an 7774initialized variable which is being defined. This macro must output the 7775label definition (perhaps using @code{ASM_OUTPUT_LABEL}). The argument 7776@var{decl} is the @code{VAR_DECL} tree node representing the variable. 7777 7778If this macro is not defined, then the variable name is defined in the 7779usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}). 7780 7781You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} and/or 7782@code{ASM_OUTPUT_SIZE_DIRECTIVE} in the definition of this macro. 7783@end defmac 7784 7785@hook TARGET_ASM_DECLARE_CONSTANT_NAME 7786A target hook to output to the stdio stream @var{file} any text necessary 7787for declaring the name @var{name} of a constant which is being defined. This 7788target hook is responsible for outputting the label definition (perhaps using 7789@code{assemble_label}). The argument @var{exp} is the value of the constant, 7790and @var{size} is the size of the constant in bytes. The @var{name} 7791will be an internal label. 7792 7793The default version of this target hook, define the @var{name} in the 7794usual manner as a label (by means of @code{assemble_label}). 7795 7796You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in this target hook. 7797@end deftypefn 7798 7799@defmac ASM_DECLARE_REGISTER_GLOBAL (@var{stream}, @var{decl}, @var{regno}, @var{name}) 7800A C statement (sans semicolon) to output to the stdio stream 7801@var{stream} any text necessary for claiming a register @var{regno} 7802for a global variable @var{decl} with name @var{name}. 7803 7804If you don't define this macro, that is equivalent to defining it to do 7805nothing. 7806@end defmac 7807 7808@defmac ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend}) 7809A C statement (sans semicolon) to finish up declaring a variable name 7810once the compiler has processed its initializer fully and thus has had a 7811chance to determine the size of an array when controlled by an 7812initializer. This is used on systems where it's necessary to declare 7813something about the size of the object. 7814 7815If you don't define this macro, that is equivalent to defining it to do 7816nothing. 7817 7818You may wish to use @code{ASM_OUTPUT_SIZE_DIRECTIVE} and/or 7819@code{ASM_OUTPUT_MEASURED_SIZE} in the definition of this macro. 7820@end defmac 7821 7822@hook TARGET_ASM_GLOBALIZE_LABEL 7823This target hook is a function to output to the stdio stream 7824@var{stream} some commands that will make the label @var{name} global; 7825that is, available for reference from other files. 7826 7827The default implementation relies on a proper definition of 7828@code{GLOBAL_ASM_OP}. 7829@end deftypefn 7830 7831@hook TARGET_ASM_GLOBALIZE_DECL_NAME 7832This target hook is a function to output to the stdio stream 7833@var{stream} some commands that will make the name associated with @var{decl} 7834global; that is, available for reference from other files. 7835 7836The default implementation uses the TARGET_ASM_GLOBALIZE_LABEL target hook. 7837@end deftypefn 7838 7839@defmac ASM_WEAKEN_LABEL (@var{stream}, @var{name}) 7840A C statement (sans semicolon) to output to the stdio stream 7841@var{stream} some commands that will make the label @var{name} weak; 7842that is, available for reference from other files but only used if 7843no other definition is available. Use the expression 7844@code{assemble_name (@var{stream}, @var{name})} to output the name 7845itself; before and after that, output the additional assembler syntax 7846for making that name weak, and a newline. 7847 7848If you don't define this macro or @code{ASM_WEAKEN_DECL}, GCC will not 7849support weak symbols and you should not define the @code{SUPPORTS_WEAK} 7850macro. 7851@end defmac 7852 7853@defmac ASM_WEAKEN_DECL (@var{stream}, @var{decl}, @var{name}, @var{value}) 7854Combines (and replaces) the function of @code{ASM_WEAKEN_LABEL} and 7855@code{ASM_OUTPUT_WEAK_ALIAS}, allowing access to the associated function 7856or variable decl. If @var{value} is not @code{NULL}, this C statement 7857should output to the stdio stream @var{stream} assembler code which 7858defines (equates) the weak symbol @var{name} to have the value 7859@var{value}. If @var{value} is @code{NULL}, it should output commands 7860to make @var{name} weak. 7861@end defmac 7862 7863@defmac ASM_OUTPUT_WEAKREF (@var{stream}, @var{decl}, @var{name}, @var{value}) 7864Outputs a directive that enables @var{name} to be used to refer to 7865symbol @var{value} with weak-symbol semantics. @code{decl} is the 7866declaration of @code{name}. 7867@end defmac 7868 7869@defmac SUPPORTS_WEAK 7870A preprocessor constant expression which evaluates to true if the target 7871supports weak symbols. 7872 7873If you don't define this macro, @file{defaults.h} provides a default 7874definition. If either @code{ASM_WEAKEN_LABEL} or @code{ASM_WEAKEN_DECL} 7875is defined, the default definition is @samp{1}; otherwise, it is @samp{0}. 7876@end defmac 7877 7878@defmac TARGET_SUPPORTS_WEAK 7879A C expression which evaluates to true if the target supports weak symbols. 7880 7881If you don't define this macro, @file{defaults.h} provides a default 7882definition. The default definition is @samp{(SUPPORTS_WEAK)}. Define 7883this macro if you want to control weak symbol support with a compiler 7884flag such as @option{-melf}. 7885@end defmac 7886 7887@defmac MAKE_DECL_ONE_ONLY (@var{decl}) 7888A C statement (sans semicolon) to mark @var{decl} to be emitted as a 7889public symbol such that extra copies in multiple translation units will 7890be discarded by the linker. Define this macro if your object file 7891format provides support for this concept, such as the @samp{COMDAT} 7892section flags in the Microsoft Windows PE/COFF format, and this support 7893requires changes to @var{decl}, such as putting it in a separate section. 7894@end defmac 7895 7896@defmac SUPPORTS_ONE_ONLY 7897A C expression which evaluates to true if the target supports one-only 7898semantics. 7899 7900If you don't define this macro, @file{varasm.c} provides a default 7901definition. If @code{MAKE_DECL_ONE_ONLY} is defined, the default 7902definition is @samp{1}; otherwise, it is @samp{0}. Define this macro if 7903you want to control one-only symbol support with a compiler flag, or if 7904setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to 7905be emitted as one-only. 7906@end defmac 7907 7908@hook TARGET_ASM_ASSEMBLE_VISIBILITY 7909This target hook is a function to output to @var{asm_out_file} some 7910commands that will make the symbol(s) associated with @var{decl} have 7911hidden, protected or internal visibility as specified by @var{visibility}. 7912@end deftypefn 7913 7914@defmac TARGET_WEAK_NOT_IN_ARCHIVE_TOC 7915A C expression that evaluates to true if the target's linker expects 7916that weak symbols do not appear in a static archive's table of contents. 7917The default is @code{0}. 7918 7919Leaving weak symbols out of an archive's table of contents means that, 7920if a symbol will only have a definition in one translation unit and 7921will have undefined references from other translation units, that 7922symbol should not be weak. Defining this macro to be nonzero will 7923thus have the effect that certain symbols that would normally be weak 7924(explicit template instantiations, and vtables for polymorphic classes 7925with noninline key methods) will instead be nonweak. 7926 7927The C++ ABI requires this macro to be zero. Define this macro for 7928targets where full C++ ABI compliance is impossible and where linker 7929restrictions require weak symbols to be left out of a static archive's 7930table of contents. 7931@end defmac 7932 7933@defmac ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name}) 7934A C statement (sans semicolon) to output to the stdio stream 7935@var{stream} any text necessary for declaring the name of an external 7936symbol named @var{name} which is referenced in this compilation but 7937not defined. The value of @var{decl} is the tree node for the 7938declaration. 7939 7940This macro need not be defined if it does not need to output anything. 7941The GNU assembler and most Unix assemblers don't require anything. 7942@end defmac 7943 7944@hook TARGET_ASM_EXTERNAL_LIBCALL 7945This target hook is a function to output to @var{asm_out_file} an assembler 7946pseudo-op to declare a library function name external. The name of the 7947library function is given by @var{symref}, which is a @code{symbol_ref}. 7948@end deftypefn 7949 7950@hook TARGET_ASM_MARK_DECL_PRESERVED 7951This target hook is a function to output to @var{asm_out_file} an assembler 7952directive to annotate @var{symbol} as used. The Darwin target uses the 7953.no_dead_code_strip directive. 7954@end deftypefn 7955 7956@defmac ASM_OUTPUT_LABELREF (@var{stream}, @var{name}) 7957A C statement (sans semicolon) to output to the stdio stream 7958@var{stream} a reference in assembler syntax to a label named 7959@var{name}. This should add @samp{_} to the front of the name, if that 7960is customary on your operating system, as it is in most Berkeley Unix 7961systems. This macro is used in @code{assemble_name}. 7962@end defmac 7963 7964@hook TARGET_MANGLE_ASSEMBLER_NAME 7965 7966@defmac ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym}) 7967A C statement (sans semicolon) to output a reference to 7968@code{SYMBOL_REF} @var{sym}. If not defined, @code{assemble_name} 7969will be used to output the name of the symbol. This macro may be used 7970to modify the way a symbol is referenced depending on information 7971encoded by @code{TARGET_ENCODE_SECTION_INFO}. 7972@end defmac 7973 7974@defmac ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf}) 7975A C statement (sans semicolon) to output a reference to @var{buf}, the 7976result of @code{ASM_GENERATE_INTERNAL_LABEL}. If not defined, 7977@code{assemble_name} will be used to output the name of the symbol. 7978This macro is not used by @code{output_asm_label}, or the @code{%l} 7979specifier that calls it; the intention is that this macro should be set 7980when it is necessary to output a label differently when its address is 7981being taken. 7982@end defmac 7983 7984@hook TARGET_ASM_INTERNAL_LABEL 7985A function to output to the stdio stream @var{stream} a label whose 7986name is made from the string @var{prefix} and the number @var{labelno}. 7987 7988It is absolutely essential that these labels be distinct from the labels 7989used for user-level functions and variables. Otherwise, certain programs 7990will have name conflicts with internal labels. 7991 7992It is desirable to exclude internal labels from the symbol table of the 7993object file. Most assemblers have a naming convention for labels that 7994should be excluded; on many systems, the letter @samp{L} at the 7995beginning of a label has this effect. You should find out what 7996convention your system uses, and follow it. 7997 7998The default version of this function utilizes @code{ASM_GENERATE_INTERNAL_LABEL}. 7999@end deftypefn 8000 8001@defmac ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num}) 8002A C statement to output to the stdio stream @var{stream} a debug info 8003label whose name is made from the string @var{prefix} and the number 8004@var{num}. This is useful for VLIW targets, where debug info labels 8005may need to be treated differently than branch target labels. On some 8006systems, branch target labels must be at the beginning of instruction 8007bundles, but debug info labels can occur in the middle of instruction 8008bundles. 8009 8010If this macro is not defined, then @code{(*targetm.asm_out.internal_label)} will be 8011used. 8012@end defmac 8013 8014@defmac ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num}) 8015A C statement to store into the string @var{string} a label whose name 8016is made from the string @var{prefix} and the number @var{num}. 8017 8018This string, when output subsequently by @code{assemble_name}, should 8019produce the output that @code{(*targetm.asm_out.internal_label)} would produce 8020with the same @var{prefix} and @var{num}. 8021 8022If the string begins with @samp{*}, then @code{assemble_name} will 8023output the rest of the string unchanged. It is often convenient for 8024@code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way. If the 8025string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets 8026to output the string, and may change it. (Of course, 8027@code{ASM_OUTPUT_LABELREF} is also part of your machine description, so 8028you should know what it does on your machine.) 8029@end defmac 8030 8031@defmac ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number}) 8032A C expression to assign to @var{outvar} (which is a variable of type 8033@code{char *}) a newly allocated string made from the string 8034@var{name} and the number @var{number}, with some suitable punctuation 8035added. Use @code{alloca} to get space for the string. 8036 8037The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to 8038produce an assembler label for an internal static variable whose name is 8039@var{name}. Therefore, the string must be such as to result in valid 8040assembler code. The argument @var{number} is different each time this 8041macro is executed; it prevents conflicts between similarly-named 8042internal static variables in different scopes. 8043 8044Ideally this string should not be a valid C identifier, to prevent any 8045conflict with the user's own symbols. Most assemblers allow periods 8046or percent signs in assembler symbols; putting at least one of these 8047between the name and the number will suffice. 8048 8049If this macro is not defined, a default definition will be provided 8050which is correct for most systems. 8051@end defmac 8052 8053@defmac ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value}) 8054A C statement to output to the stdio stream @var{stream} assembler code 8055which defines (equates) the symbol @var{name} to have the value @var{value}. 8056 8057@findex SET_ASM_OP 8058If @code{SET_ASM_OP} is defined, a default definition is provided which is 8059correct for most systems. 8060@end defmac 8061 8062@defmac ASM_OUTPUT_DEF_FROM_DECLS (@var{stream}, @var{decl_of_name}, @var{decl_of_value}) 8063A C statement to output to the stdio stream @var{stream} assembler code 8064which defines (equates) the symbol whose tree node is @var{decl_of_name} 8065to have the value of the tree node @var{decl_of_value}. This macro will 8066be used in preference to @samp{ASM_OUTPUT_DEF} if it is defined and if 8067the tree nodes are available. 8068 8069@findex SET_ASM_OP 8070If @code{SET_ASM_OP} is defined, a default definition is provided which is 8071correct for most systems. 8072@end defmac 8073 8074@defmac TARGET_DEFERRED_OUTPUT_DEFS (@var{decl_of_name}, @var{decl_of_value}) 8075A C statement that evaluates to true if the assembler code which defines 8076(equates) the symbol whose tree node is @var{decl_of_name} to have the value 8077of the tree node @var{decl_of_value} should be emitted near the end of the 8078current compilation unit. The default is to not defer output of defines. 8079This macro affects defines output by @samp{ASM_OUTPUT_DEF} and 8080@samp{ASM_OUTPUT_DEF_FROM_DECLS}. 8081@end defmac 8082 8083@defmac ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value}) 8084A C statement to output to the stdio stream @var{stream} assembler code 8085which defines (equates) the weak symbol @var{name} to have the value 8086@var{value}. If @var{value} is @code{NULL}, it defines @var{name} as 8087an undefined weak symbol. 8088 8089Define this macro if the target only supports weak aliases; define 8090@code{ASM_OUTPUT_DEF} instead if possible. 8091@end defmac 8092 8093@defmac OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name}) 8094Define this macro to override the default assembler names used for 8095Objective-C methods. 8096 8097The default name is a unique method number followed by the name of the 8098class (e.g.@: @samp{_1_Foo}). For methods in categories, the name of 8099the category is also included in the assembler name (e.g.@: 8100@samp{_1_Foo_Bar}). 8101 8102These names are safe on most systems, but make debugging difficult since 8103the method's selector is not present in the name. Therefore, particular 8104systems define other ways of computing names. 8105 8106@var{buf} is an expression of type @code{char *} which gives you a 8107buffer in which to store the name; its length is as long as 8108@var{class_name}, @var{cat_name} and @var{sel_name} put together, plus 810950 characters extra. 8110 8111The argument @var{is_inst} specifies whether the method is an instance 8112method or a class method; @var{class_name} is the name of the class; 8113@var{cat_name} is the name of the category (or @code{NULL} if the method is not 8114in a category); and @var{sel_name} is the name of the selector. 8115 8116On systems where the assembler can handle quoted names, you can use this 8117macro to provide more human-readable names. 8118@end defmac 8119 8120@node Initialization 8121@subsection How Initialization Functions Are Handled 8122@cindex initialization routines 8123@cindex termination routines 8124@cindex constructors, output of 8125@cindex destructors, output of 8126 8127The compiled code for certain languages includes @dfn{constructors} 8128(also called @dfn{initialization routines})---functions to initialize 8129data in the program when the program is started. These functions need 8130to be called before the program is ``started''---that is to say, before 8131@code{main} is called. 8132 8133Compiling some languages generates @dfn{destructors} (also called 8134@dfn{termination routines}) that should be called when the program 8135terminates. 8136 8137To make the initialization and termination functions work, the compiler 8138must output something in the assembler code to cause those functions to 8139be called at the appropriate time. When you port the compiler to a new 8140system, you need to specify how to do this. 8141 8142There are two major ways that GCC currently supports the execution of 8143initialization and termination functions. Each way has two variants. 8144Much of the structure is common to all four variations. 8145 8146@findex __CTOR_LIST__ 8147@findex __DTOR_LIST__ 8148The linker must build two lists of these functions---a list of 8149initialization functions, called @code{__CTOR_LIST__}, and a list of 8150termination functions, called @code{__DTOR_LIST__}. 8151 8152Each list always begins with an ignored function pointer (which may hold 81530, @minus{}1, or a count of the function pointers after it, depending on 8154the environment). This is followed by a series of zero or more function 8155pointers to constructors (or destructors), followed by a function 8156pointer containing zero. 8157 8158Depending on the operating system and its executable file format, either 8159@file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup 8160time and exit time. Constructors are called in reverse order of the 8161list; destructors in forward order. 8162 8163The best way to handle static constructors works only for object file 8164formats which provide arbitrarily-named sections. A section is set 8165aside for a list of constructors, and another for a list of destructors. 8166Traditionally these are called @samp{.ctors} and @samp{.dtors}. Each 8167object file that defines an initialization function also puts a word in 8168the constructor section to point to that function. The linker 8169accumulates all these words into one contiguous @samp{.ctors} section. 8170Termination functions are handled similarly. 8171 8172This method will be chosen as the default by @file{target-def.h} if 8173@code{TARGET_ASM_NAMED_SECTION} is defined. A target that does not 8174support arbitrary sections, but does support special designated 8175constructor and destructor sections may define @code{CTORS_SECTION_ASM_OP} 8176and @code{DTORS_SECTION_ASM_OP} to achieve the same effect. 8177 8178When arbitrary sections are available, there are two variants, depending 8179upon how the code in @file{crtstuff.c} is called. On systems that 8180support a @dfn{.init} section which is executed at program startup, 8181parts of @file{crtstuff.c} are compiled into that section. The 8182program is linked by the @command{gcc} driver like this: 8183 8184@smallexample 8185ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o 8186@end smallexample 8187 8188The prologue of a function (@code{__init}) appears in the @code{.init} 8189section of @file{crti.o}; the epilogue appears in @file{crtn.o}. Likewise 8190for the function @code{__fini} in the @dfn{.fini} section. Normally these 8191files are provided by the operating system or by the GNU C library, but 8192are provided by GCC for a few targets. 8193 8194The objects @file{crtbegin.o} and @file{crtend.o} are (for most targets) 8195compiled from @file{crtstuff.c}. They contain, among other things, code 8196fragments within the @code{.init} and @code{.fini} sections that branch 8197to routines in the @code{.text} section. The linker will pull all parts 8198of a section together, which results in a complete @code{__init} function 8199that invokes the routines we need at startup. 8200 8201To use this variant, you must define the @code{INIT_SECTION_ASM_OP} 8202macro properly. 8203 8204If no init section is available, when GCC compiles any function called 8205@code{main} (or more accurately, any function designated as a program 8206entry point by the language front end calling @code{expand_main_function}), 8207it inserts a procedure call to @code{__main} as the first executable code 8208after the function prologue. The @code{__main} function is defined 8209in @file{libgcc2.c} and runs the global constructors. 8210 8211In file formats that don't support arbitrary sections, there are again 8212two variants. In the simplest variant, the GNU linker (GNU @code{ld}) 8213and an `a.out' format must be used. In this case, 8214@code{TARGET_ASM_CONSTRUCTOR} is defined to produce a @code{.stabs} 8215entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__}, 8216and with the address of the void function containing the initialization 8217code as its value. The GNU linker recognizes this as a request to add 8218the value to a @dfn{set}; the values are accumulated, and are eventually 8219placed in the executable as a vector in the format described above, with 8220a leading (ignored) count and a trailing zero element. 8221@code{TARGET_ASM_DESTRUCTOR} is handled similarly. Since no init 8222section is available, the absence of @code{INIT_SECTION_ASM_OP} causes 8223the compilation of @code{main} to call @code{__main} as above, starting 8224the initialization process. 8225 8226The last variant uses neither arbitrary sections nor the GNU linker. 8227This is preferable when you want to do dynamic linking and when using 8228file formats which the GNU linker does not support, such as `ECOFF'@. In 8229this case, @code{TARGET_HAVE_CTORS_DTORS} is false, initialization and 8230termination functions are recognized simply by their names. This requires 8231an extra program in the linkage step, called @command{collect2}. This program 8232pretends to be the linker, for use with GCC; it does its job by running 8233the ordinary linker, but also arranges to include the vectors of 8234initialization and termination functions. These functions are called 8235via @code{__main} as described above. In order to use this method, 8236@code{use_collect2} must be defined in the target in @file{config.gcc}. 8237 8238@ifinfo 8239The following section describes the specific macros that control and 8240customize the handling of initialization and termination functions. 8241@end ifinfo 8242 8243@node Macros for Initialization 8244@subsection Macros Controlling Initialization Routines 8245 8246Here are the macros that control how the compiler handles initialization 8247and termination functions: 8248 8249@defmac INIT_SECTION_ASM_OP 8250If defined, a C string constant, including spacing, for the assembler 8251operation to identify the following data as initialization code. If not 8252defined, GCC will assume such a section does not exist. When you are 8253using special sections for initialization and termination functions, this 8254macro also controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to 8255run the initialization functions. 8256@end defmac 8257 8258@defmac HAS_INIT_SECTION 8259If defined, @code{main} will not call @code{__main} as described above. 8260This macro should be defined for systems that control start-up code 8261on a symbol-by-symbol basis, such as OSF/1, and should not 8262be defined explicitly for systems that support @code{INIT_SECTION_ASM_OP}. 8263@end defmac 8264 8265@defmac LD_INIT_SWITCH 8266If defined, a C string constant for a switch that tells the linker that 8267the following symbol is an initialization routine. 8268@end defmac 8269 8270@defmac LD_FINI_SWITCH 8271If defined, a C string constant for a switch that tells the linker that 8272the following symbol is a finalization routine. 8273@end defmac 8274 8275@defmac COLLECT_SHARED_INIT_FUNC (@var{stream}, @var{func}) 8276If defined, a C statement that will write a function that can be 8277automatically called when a shared library is loaded. The function 8278should call @var{func}, which takes no arguments. If not defined, and 8279the object format requires an explicit initialization function, then a 8280function called @code{_GLOBAL__DI} will be generated. 8281 8282This function and the following one are used by collect2 when linking a 8283shared library that needs constructors or destructors, or has DWARF2 8284exception tables embedded in the code. 8285@end defmac 8286 8287@defmac COLLECT_SHARED_FINI_FUNC (@var{stream}, @var{func}) 8288If defined, a C statement that will write a function that can be 8289automatically called when a shared library is unloaded. The function 8290should call @var{func}, which takes no arguments. If not defined, and 8291the object format requires an explicit finalization function, then a 8292function called @code{_GLOBAL__DD} will be generated. 8293@end defmac 8294 8295@defmac INVOKE__main 8296If defined, @code{main} will call @code{__main} despite the presence of 8297@code{INIT_SECTION_ASM_OP}. This macro should be defined for systems 8298where the init section is not actually run automatically, but is still 8299useful for collecting the lists of constructors and destructors. 8300@end defmac 8301 8302@defmac SUPPORTS_INIT_PRIORITY 8303If nonzero, the C++ @code{init_priority} attribute is supported and the 8304compiler should emit instructions to control the order of initialization 8305of objects. If zero, the compiler will issue an error message upon 8306encountering an @code{init_priority} attribute. 8307@end defmac 8308 8309@hook TARGET_HAVE_CTORS_DTORS 8310This value is true if the target supports some ``native'' method of 8311collecting constructors and destructors to be run at startup and exit. 8312It is false if we must use @command{collect2}. 8313@end deftypevr 8314 8315@hook TARGET_ASM_CONSTRUCTOR 8316If defined, a function that outputs assembler code to arrange to call 8317the function referenced by @var{symbol} at initialization time. 8318 8319Assume that @var{symbol} is a @code{SYMBOL_REF} for a function taking 8320no arguments and with no return value. If the target supports initialization 8321priorities, @var{priority} is a value between 0 and @code{MAX_INIT_PRIORITY}; 8322otherwise it must be @code{DEFAULT_INIT_PRIORITY}. 8323 8324If this macro is not defined by the target, a suitable default will 8325be chosen if (1) the target supports arbitrary section names, (2) the 8326target defines @code{CTORS_SECTION_ASM_OP}, or (3) @code{USE_COLLECT2} 8327is not defined. 8328@end deftypefn 8329 8330@hook TARGET_ASM_DESTRUCTOR 8331This is like @code{TARGET_ASM_CONSTRUCTOR} but used for termination 8332functions rather than initialization functions. 8333@end deftypefn 8334 8335If @code{TARGET_HAVE_CTORS_DTORS} is true, the initialization routine 8336generated for the generated object file will have static linkage. 8337 8338If your system uses @command{collect2} as the means of processing 8339constructors, then that program normally uses @command{nm} to scan 8340an object file for constructor functions to be called. 8341 8342On certain kinds of systems, you can define this macro to make 8343@command{collect2} work faster (and, in some cases, make it work at all): 8344 8345@defmac OBJECT_FORMAT_COFF 8346Define this macro if the system uses COFF (Common Object File Format) 8347object files, so that @command{collect2} can assume this format and scan 8348object files directly for dynamic constructor/destructor functions. 8349 8350This macro is effective only in a native compiler; @command{collect2} as 8351part of a cross compiler always uses @command{nm} for the target machine. 8352@end defmac 8353 8354@defmac REAL_NM_FILE_NAME 8355Define this macro as a C string constant containing the file name to use 8356to execute @command{nm}. The default is to search the path normally for 8357@command{nm}. 8358@end defmac 8359 8360@defmac NM_FLAGS 8361@command{collect2} calls @command{nm} to scan object files for static 8362constructors and destructors and LTO info. By default, @option{-n} is 8363passed. Define @code{NM_FLAGS} to a C string constant if other options 8364are needed to get the same output format as GNU @command{nm -n} 8365produces. 8366@end defmac 8367 8368If your system supports shared libraries and has a program to list the 8369dynamic dependencies of a given library or executable, you can define 8370these macros to enable support for running initialization and 8371termination functions in shared libraries: 8372 8373@defmac LDD_SUFFIX 8374Define this macro to a C string constant containing the name of the program 8375which lists dynamic dependencies, like @command{ldd} under SunOS 4. 8376@end defmac 8377 8378@defmac PARSE_LDD_OUTPUT (@var{ptr}) 8379Define this macro to be C code that extracts filenames from the output 8380of the program denoted by @code{LDD_SUFFIX}. @var{ptr} is a variable 8381of type @code{char *} that points to the beginning of a line of output 8382from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the 8383code must advance @var{ptr} to the beginning of the filename on that 8384line. Otherwise, it must set @var{ptr} to @code{NULL}. 8385@end defmac 8386 8387@defmac SHLIB_SUFFIX 8388Define this macro to a C string constant containing the default shared 8389library extension of the target (e.g., @samp{".so"}). @command{collect2} 8390strips version information after this suffix when generating global 8391constructor and destructor names. This define is only needed on targets 8392that use @command{collect2} to process constructors and destructors. 8393@end defmac 8394 8395@node Instruction Output 8396@subsection Output of Assembler Instructions 8397 8398@c prevent bad page break with this line 8399This describes assembler instruction output. 8400 8401@defmac REGISTER_NAMES 8402A C initializer containing the assembler's names for the machine 8403registers, each one as a C string constant. This is what translates 8404register numbers in the compiler into assembler language. 8405@end defmac 8406 8407@defmac ADDITIONAL_REGISTER_NAMES 8408If defined, a C initializer for an array of structures containing a name 8409and a register number. This macro defines additional names for hard 8410registers, thus allowing the @code{asm} option in declarations to refer 8411to registers using alternate names. 8412@end defmac 8413 8414@defmac OVERLAPPING_REGISTER_NAMES 8415If defined, a C initializer for an array of structures containing a 8416name, a register number and a count of the number of consecutive 8417machine registers the name overlaps. This macro defines additional 8418names for hard registers, thus allowing the @code{asm} option in 8419declarations to refer to registers using alternate names. Unlike 8420@code{ADDITIONAL_REGISTER_NAMES}, this macro should be used when the 8421register name implies multiple underlying registers. 8422 8423This macro should be used when it is important that a clobber in an 8424@code{asm} statement clobbers all the underlying values implied by the 8425register name. For example, on ARM, clobbering the double-precision 8426VFP register ``d0'' implies clobbering both single-precision registers 8427``s0'' and ``s1''. 8428@end defmac 8429 8430@defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr}) 8431Define this macro if you are using an unusual assembler that 8432requires different names for the machine instructions. 8433 8434The definition is a C statement or statements which output an 8435assembler instruction opcode to the stdio stream @var{stream}. The 8436macro-operand @var{ptr} is a variable of type @code{char *} which 8437points to the opcode name in its ``internal'' form---the form that is 8438written in the machine description. The definition should output the 8439opcode name to @var{stream}, performing any translation you desire, and 8440increment the variable @var{ptr} to point at the end of the opcode 8441so that it will not be output twice. 8442 8443In fact, your macro definition may process less than the entire opcode 8444name, or more than the opcode name; but if you want to process text 8445that includes @samp{%}-sequences to substitute operands, you must take 8446care of the substitution yourself. Just be sure to increment 8447@var{ptr} over whatever text should not be output normally. 8448 8449@findex recog_data.operand 8450If you need to look at the operand values, they can be found as the 8451elements of @code{recog_data.operand}. 8452 8453If the macro definition does nothing, the instruction is output 8454in the usual way. 8455@end defmac 8456 8457@defmac FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands}) 8458If defined, a C statement to be executed just prior to the output of 8459assembler code for @var{insn}, to modify the extracted operands so 8460they will be output differently. 8461 8462Here the argument @var{opvec} is the vector containing the operands 8463extracted from @var{insn}, and @var{noperands} is the number of 8464elements of the vector which contain meaningful data for this insn. 8465The contents of this vector are what will be used to convert the insn 8466template into assembler code, so you can change the assembler output 8467by changing the contents of the vector. 8468 8469This macro is useful when various assembler syntaxes share a single 8470file of instruction patterns; by defining this macro differently, you 8471can cause a large class of instructions to be output differently (such 8472as with rearranged operands). Naturally, variations in assembler 8473syntax affecting individual insn patterns ought to be handled by 8474writing conditional output routines in those patterns. 8475 8476If this macro is not defined, it is equivalent to a null statement. 8477@end defmac 8478 8479@hook TARGET_ASM_FINAL_POSTSCAN_INSN 8480If defined, this target hook is a function which is executed just after the 8481output of assembler code for @var{insn}, to change the mode of the assembler 8482if necessary. 8483 8484Here the argument @var{opvec} is the vector containing the operands 8485extracted from @var{insn}, and @var{noperands} is the number of 8486elements of the vector which contain meaningful data for this insn. 8487The contents of this vector are what was used to convert the insn 8488template into assembler code, so you can change the assembler mode 8489by checking the contents of the vector. 8490@end deftypefn 8491 8492@defmac PRINT_OPERAND (@var{stream}, @var{x}, @var{code}) 8493A C compound statement to output to stdio stream @var{stream} the 8494assembler syntax for an instruction operand @var{x}. @var{x} is an 8495RTL expression. 8496 8497@var{code} is a value that can be used to specify one of several ways 8498of printing the operand. It is used when identical operands must be 8499printed differently depending on the context. @var{code} comes from 8500the @samp{%} specification that was used to request printing of the 8501operand. If the specification was just @samp{%@var{digit}} then 8502@var{code} is 0; if the specification was @samp{%@var{ltr} 8503@var{digit}} then @var{code} is the ASCII code for @var{ltr}. 8504 8505@findex reg_names 8506If @var{x} is a register, this macro should print the register's name. 8507The names can be found in an array @code{reg_names} whose type is 8508@code{char *[]}. @code{reg_names} is initialized from 8509@code{REGISTER_NAMES}. 8510 8511When the machine description has a specification @samp{%@var{punct}} 8512(a @samp{%} followed by a punctuation character), this macro is called 8513with a null pointer for @var{x} and the punctuation character for 8514@var{code}. 8515@end defmac 8516 8517@defmac PRINT_OPERAND_PUNCT_VALID_P (@var{code}) 8518A C expression which evaluates to true if @var{code} is a valid 8519punctuation character for use in the @code{PRINT_OPERAND} macro. If 8520@code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no 8521punctuation characters (except for the standard one, @samp{%}) are used 8522in this way. 8523@end defmac 8524 8525@defmac PRINT_OPERAND_ADDRESS (@var{stream}, @var{x}) 8526A C compound statement to output to stdio stream @var{stream} the 8527assembler syntax for an instruction operand that is a memory reference 8528whose address is @var{x}. @var{x} is an RTL expression. 8529 8530@cindex @code{TARGET_ENCODE_SECTION_INFO} usage 8531On some machines, the syntax for a symbolic address depends on the 8532section that the address refers to. On these machines, define the hook 8533@code{TARGET_ENCODE_SECTION_INFO} to store the information into the 8534@code{symbol_ref}, and then check for it here. @xref{Assembler 8535Format}. 8536@end defmac 8537 8538@findex dbr_sequence_length 8539@defmac DBR_OUTPUT_SEQEND (@var{file}) 8540A C statement, to be executed after all slot-filler instructions have 8541been output. If necessary, call @code{dbr_sequence_length} to 8542determine the number of slots filled in a sequence (zero if not 8543currently outputting a sequence), to decide how many no-ops to output, 8544or whatever. 8545 8546Don't define this macro if it has nothing to do, but it is helpful in 8547reading assembly output if the extent of the delay sequence is made 8548explicit (e.g.@: with white space). 8549@end defmac 8550 8551@findex final_sequence 8552Note that output routines for instructions with delay slots must be 8553prepared to deal with not being output as part of a sequence 8554(i.e.@: when the scheduling pass is not run, or when no slot fillers could be 8555found.) The variable @code{final_sequence} is null when not 8556processing a sequence, otherwise it contains the @code{sequence} rtx 8557being output. 8558 8559@findex asm_fprintf 8560@defmac REGISTER_PREFIX 8561@defmacx LOCAL_LABEL_PREFIX 8562@defmacx USER_LABEL_PREFIX 8563@defmacx IMMEDIATE_PREFIX 8564If defined, C string expressions to be used for the @samp{%R}, @samp{%L}, 8565@samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see 8566@file{final.c}). These are useful when a single @file{md} file must 8567support multiple assembler formats. In that case, the various @file{tm.h} 8568files can define these macros differently. 8569@end defmac 8570 8571@defmac ASM_FPRINTF_EXTENSIONS (@var{file}, @var{argptr}, @var{format}) 8572If defined this macro should expand to a series of @code{case} 8573statements which will be parsed inside the @code{switch} statement of 8574the @code{asm_fprintf} function. This allows targets to define extra 8575printf formats which may useful when generating their assembler 8576statements. Note that uppercase letters are reserved for future 8577generic extensions to asm_fprintf, and so are not available to target 8578specific code. The output file is given by the parameter @var{file}. 8579The varargs input pointer is @var{argptr} and the rest of the format 8580string, starting the character after the one that is being switched 8581upon, is pointed to by @var{format}. 8582@end defmac 8583 8584@defmac ASSEMBLER_DIALECT 8585If your target supports multiple dialects of assembler language (such as 8586different opcodes), define this macro as a C expression that gives the 8587numeric index of the assembler language dialect to use, with zero as the 8588first variant. 8589 8590If this macro is defined, you may use constructs of the form 8591@smallexample 8592@samp{@{option0|option1|option2@dots{}@}} 8593@end smallexample 8594@noindent 8595in the output templates of patterns (@pxref{Output Template}) or in the 8596first argument of @code{asm_fprintf}. This construct outputs 8597@samp{option0}, @samp{option1}, @samp{option2}, etc., if the value of 8598@code{ASSEMBLER_DIALECT} is zero, one, two, etc. Any special characters 8599within these strings retain their usual meaning. If there are fewer 8600alternatives within the braces than the value of 8601@code{ASSEMBLER_DIALECT}, the construct outputs nothing. 8602 8603If you do not define this macro, the characters @samp{@{}, @samp{|} and 8604@samp{@}} do not have any special meaning when used in templates or 8605operands to @code{asm_fprintf}. 8606 8607Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX}, 8608@code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express 8609the variations in assembler language syntax with that mechanism. Define 8610@code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax 8611if the syntax variant are larger and involve such things as different 8612opcodes or operand order. 8613@end defmac 8614 8615@defmac ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno}) 8616A C expression to output to @var{stream} some assembler code 8617which will push hard register number @var{regno} onto the stack. 8618The code need not be optimal, since this macro is used only when 8619profiling. 8620@end defmac 8621 8622@defmac ASM_OUTPUT_REG_POP (@var{stream}, @var{regno}) 8623A C expression to output to @var{stream} some assembler code 8624which will pop hard register number @var{regno} off of the stack. 8625The code need not be optimal, since this macro is used only when 8626profiling. 8627@end defmac 8628 8629@node Dispatch Tables 8630@subsection Output of Dispatch Tables 8631 8632@c prevent bad page break with this line 8633This concerns dispatch tables. 8634 8635@cindex dispatch table 8636@defmac ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{body}, @var{value}, @var{rel}) 8637A C statement to output to the stdio stream @var{stream} an assembler 8638pseudo-instruction to generate a difference between two labels. 8639@var{value} and @var{rel} are the numbers of two internal labels. The 8640definitions of these labels are output using 8641@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same 8642way here. For example, 8643 8644@smallexample 8645fprintf (@var{stream}, "\t.word L%d-L%d\n", 8646 @var{value}, @var{rel}) 8647@end smallexample 8648 8649You must provide this macro on machines where the addresses in a 8650dispatch table are relative to the table's own address. If defined, GCC 8651will also use this macro on all machines when producing PIC@. 8652@var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the 8653mode and flags can be read. 8654@end defmac 8655 8656@defmac ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value}) 8657This macro should be provided on machines where the addresses 8658in a dispatch table are absolute. 8659 8660The definition should be a C statement to output to the stdio stream 8661@var{stream} an assembler pseudo-instruction to generate a reference to 8662a label. @var{value} is the number of an internal label whose 8663definition is output using @code{(*targetm.asm_out.internal_label)}. 8664For example, 8665 8666@smallexample 8667fprintf (@var{stream}, "\t.word L%d\n", @var{value}) 8668@end smallexample 8669@end defmac 8670 8671@defmac ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table}) 8672Define this if the label before a jump-table needs to be output 8673specially. The first three arguments are the same as for 8674@code{(*targetm.asm_out.internal_label)}; the fourth argument is the 8675jump-table which follows (a @code{jump_insn} containing an 8676@code{addr_vec} or @code{addr_diff_vec}). 8677 8678This feature is used on system V to output a @code{swbeg} statement 8679for the table. 8680 8681If this macro is not defined, these labels are output with 8682@code{(*targetm.asm_out.internal_label)}. 8683@end defmac 8684 8685@defmac ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table}) 8686Define this if something special must be output at the end of a 8687jump-table. The definition should be a C statement to be executed 8688after the assembler code for the table is written. It should write 8689the appropriate code to stdio stream @var{stream}. The argument 8690@var{table} is the jump-table insn, and @var{num} is the label-number 8691of the preceding label. 8692 8693If this macro is not defined, nothing special is output at the end of 8694the jump-table. 8695@end defmac 8696 8697@hook TARGET_ASM_EMIT_UNWIND_LABEL 8698This target hook emits a label at the beginning of each FDE@. It 8699should be defined on targets where FDEs need special labels, and it 8700should write the appropriate label, for the FDE associated with the 8701function declaration @var{decl}, to the stdio stream @var{stream}. 8702The third argument, @var{for_eh}, is a boolean: true if this is for an 8703exception table. The fourth argument, @var{empty}, is a boolean: 8704true if this is a placeholder label for an omitted FDE@. 8705 8706The default is that FDEs are not given nonlocal labels. 8707@end deftypefn 8708 8709@hook TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL 8710This target hook emits a label at the beginning of the exception table. 8711It should be defined on targets where it is desirable for the table 8712to be broken up according to function. 8713 8714The default is that no label is emitted. 8715@end deftypefn 8716 8717@hook TARGET_ASM_EMIT_EXCEPT_PERSONALITY 8718 8719@hook TARGET_ASM_UNWIND_EMIT 8720This target hook emits assembly directives required to unwind the 8721given instruction. This is only used when @code{TARGET_EXCEPT_UNWIND_INFO} 8722returns @code{UI_TARGET}. 8723@end deftypefn 8724 8725@hook TARGET_ASM_UNWIND_EMIT_BEFORE_INSN 8726 8727@node Exception Region Output 8728@subsection Assembler Commands for Exception Regions 8729 8730@c prevent bad page break with this line 8731 8732This describes commands marking the start and the end of an exception 8733region. 8734 8735@defmac EH_FRAME_SECTION_NAME 8736If defined, a C string constant for the name of the section containing 8737exception handling frame unwind information. If not defined, GCC will 8738provide a default definition if the target supports named sections. 8739@file{crtstuff.c} uses this macro to switch to the appropriate section. 8740 8741You should define this symbol if your target supports DWARF 2 frame 8742unwind information and the default definition does not work. 8743@end defmac 8744 8745@defmac EH_FRAME_IN_DATA_SECTION 8746If defined, DWARF 2 frame unwind information will be placed in the 8747data section even though the target supports named sections. This 8748might be necessary, for instance, if the system linker does garbage 8749collection and sections cannot be marked as not to be collected. 8750 8751Do not define this macro unless @code{TARGET_ASM_NAMED_SECTION} is 8752also defined. 8753@end defmac 8754 8755@defmac EH_TABLES_CAN_BE_READ_ONLY 8756Define this macro to 1 if your target is such that no frame unwind 8757information encoding used with non-PIC code will ever require a 8758runtime relocation, but the linker may not support merging read-only 8759and read-write sections into a single read-write section. 8760@end defmac 8761 8762@defmac MASK_RETURN_ADDR 8763An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so 8764that it does not contain any extraneous set bits in it. 8765@end defmac 8766 8767@defmac DWARF2_UNWIND_INFO 8768Define this macro to 0 if your target supports DWARF 2 frame unwind 8769information, but it does not yet work with exception handling. 8770Otherwise, if your target supports this information (if it defines 8771@code{INCOMING_RETURN_ADDR_RTX} and @code{OBJECT_FORMAT_ELF}), 8772GCC will provide a default definition of 1. 8773@end defmac 8774 8775@hook TARGET_EXCEPT_UNWIND_INFO 8776This hook defines the mechanism that will be used for exception handling 8777by the target. If the target has ABI specified unwind tables, the hook 8778should return @code{UI_TARGET}. If the target is to use the 8779@code{setjmp}/@code{longjmp}-based exception handling scheme, the hook 8780should return @code{UI_SJLJ}. If the target supports DWARF 2 frame unwind 8781information, the hook should return @code{UI_DWARF2}. 8782 8783A target may, if exceptions are disabled, choose to return @code{UI_NONE}. 8784This may end up simplifying other parts of target-specific code. The 8785default implementation of this hook never returns @code{UI_NONE}. 8786 8787Note that the value returned by this hook should be constant. It should 8788not depend on anything except the command-line switches described by 8789@var{opts}. In particular, the 8790setting @code{UI_SJLJ} must be fixed at compiler start-up as C pre-processor 8791macros and builtin functions related to exception handling are set up 8792depending on this setting. 8793 8794The default implementation of the hook first honors the 8795@option{--enable-sjlj-exceptions} configure option, then 8796@code{DWARF2_UNWIND_INFO}, and finally defaults to @code{UI_SJLJ}. If 8797@code{DWARF2_UNWIND_INFO} depends on command-line options, the target 8798must define this hook so that @var{opts} is used correctly. 8799@end deftypefn 8800 8801@hook TARGET_UNWIND_TABLES_DEFAULT 8802This variable should be set to @code{true} if the target ABI requires unwinding 8803tables even when exceptions are not used. It must not be modified by 8804command-line option processing. 8805@end deftypevr 8806 8807@defmac DONT_USE_BUILTIN_SETJMP 8808Define this macro to 1 if the @code{setjmp}/@code{longjmp}-based scheme 8809should use the @code{setjmp}/@code{longjmp} functions from the C library 8810instead of the @code{__builtin_setjmp}/@code{__builtin_longjmp} machinery. 8811@end defmac 8812 8813@defmac JMP_BUF_SIZE 8814This macro has no effect unless @code{DONT_USE_BUILTIN_SETJMP} is also 8815defined. Define this macro if the default size of @code{jmp_buf} buffer 8816for the @code{setjmp}/@code{longjmp}-based exception handling mechanism 8817is not large enough, or if it is much too large. 8818The default size is @code{FIRST_PSEUDO_REGISTER * sizeof(void *)}. 8819@end defmac 8820 8821@defmac DWARF_CIE_DATA_ALIGNMENT 8822This macro need only be defined if the target might save registers in the 8823function prologue at an offset to the stack pointer that is not aligned to 8824@code{UNITS_PER_WORD}. The definition should be the negative minimum 8825alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive 8826minimum alignment otherwise. @xref{SDB and DWARF}. Only applicable if 8827the target supports DWARF 2 frame unwind information. 8828@end defmac 8829 8830@hook TARGET_TERMINATE_DW2_EH_FRAME_INFO 8831Contains the value true if the target should add a zero word onto the 8832end of a Dwarf-2 frame info section when used for exception handling. 8833Default value is false if @code{EH_FRAME_SECTION_NAME} is defined, and 8834true otherwise. 8835@end deftypevr 8836 8837@hook TARGET_DWARF_REGISTER_SPAN 8838Given a register, this hook should return a parallel of registers to 8839represent where to find the register pieces. Define this hook if the 8840register and its mode are represented in Dwarf in non-contiguous 8841locations, or if the register should be represented in more than one 8842register in Dwarf. Otherwise, this hook should return @code{NULL_RTX}. 8843If not defined, the default is to return @code{NULL_RTX}. 8844@end deftypefn 8845 8846@hook TARGET_INIT_DWARF_REG_SIZES_EXTRA 8847If some registers are represented in Dwarf-2 unwind information in 8848multiple pieces, define this hook to fill in information about the 8849sizes of those pieces in the table used by the unwinder at runtime. 8850It will be called by @code{expand_builtin_init_dwarf_reg_sizes} after 8851filling in a single size corresponding to each hard register; 8852@var{address} is the address of the table. 8853@end deftypefn 8854 8855@hook TARGET_ASM_TTYPE 8856This hook is used to output a reference from a frame unwinding table to 8857the type_info object identified by @var{sym}. It should return @code{true} 8858if the reference was output. Returning @code{false} will cause the 8859reference to be output using the normal Dwarf2 routines. 8860@end deftypefn 8861 8862@hook TARGET_ARM_EABI_UNWINDER 8863This flag should be set to @code{true} on targets that use an ARM EABI 8864based unwinding library, and @code{false} on other targets. This effects 8865the format of unwinding tables, and how the unwinder in entered after 8866running a cleanup. The default is @code{false}. 8867@end deftypevr 8868 8869@node Alignment Output 8870@subsection Assembler Commands for Alignment 8871 8872@c prevent bad page break with this line 8873This describes commands for alignment. 8874 8875@defmac JUMP_ALIGN (@var{label}) 8876The alignment (log base 2) to put in front of @var{label}, which is 8877a common destination of jumps and has no fallthru incoming edge. 8878 8879This macro need not be defined if you don't want any special alignment 8880to be done at such a time. Most machine descriptions do not currently 8881define the macro. 8882 8883Unless it's necessary to inspect the @var{label} parameter, it is better 8884to set the variable @var{align_jumps} in the target's 8885@code{TARGET_OPTION_OVERRIDE}. Otherwise, you should try to honor the user's 8886selection in @var{align_jumps} in a @code{JUMP_ALIGN} implementation. 8887@end defmac 8888 8889@hook TARGET_ASM_JUMP_ALIGN_MAX_SKIP 8890The maximum number of bytes to skip before @var{label} when applying 8891@code{JUMP_ALIGN}. This works only if 8892@code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined. 8893@end deftypefn 8894 8895@defmac LABEL_ALIGN_AFTER_BARRIER (@var{label}) 8896The alignment (log base 2) to put in front of @var{label}, which follows 8897a @code{BARRIER}. 8898 8899This macro need not be defined if you don't want any special alignment 8900to be done at such a time. Most machine descriptions do not currently 8901define the macro. 8902@end defmac 8903 8904@hook TARGET_ASM_LABEL_ALIGN_AFTER_BARRIER_MAX_SKIP 8905The maximum number of bytes to skip before @var{label} when applying 8906@code{LABEL_ALIGN_AFTER_BARRIER}. This works only if 8907@code{ASM_OUTPUT_MAX_SKIP_ALIGN} is defined. 8908@end deftypefn 8909 8910@defmac LOOP_ALIGN (@var{label}) 8911The alignment (log base 2) to put in front of @var{label}, which follows 8912a @code{NOTE_INSN_LOOP_BEG} note. 8913 8914This macro need not be defined if you don't want any special alignment 8915to be done at such a time. Most machine descriptions do not currently 8916define the macro. 8917 8918Unless it's necessary to inspect the @var{label} parameter, it is better 8919to set the variable @code{align_loops} in the target's 8920@code{TARGET_OPTION_OVERRIDE}. Otherwise, you should try to honor the user's 8921selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation. 8922@end defmac 8923 8924@hook TARGET_ASM_LOOP_ALIGN_MAX_SKIP 8925The maximum number of bytes to skip when applying @code{LOOP_ALIGN} to 8926@var{label}. This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} is 8927defined. 8928@end deftypefn 8929 8930@defmac LABEL_ALIGN (@var{label}) 8931The alignment (log base 2) to put in front of @var{label}. 8932If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment, 8933the maximum of the specified values is used. 8934 8935Unless it's necessary to inspect the @var{label} parameter, it is better 8936to set the variable @code{align_labels} in the target's 8937@code{TARGET_OPTION_OVERRIDE}. Otherwise, you should try to honor the user's 8938selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation. 8939@end defmac 8940 8941@hook TARGET_ASM_LABEL_ALIGN_MAX_SKIP 8942The maximum number of bytes to skip when applying @code{LABEL_ALIGN} 8943to @var{label}. This works only if @code{ASM_OUTPUT_MAX_SKIP_ALIGN} 8944is defined. 8945@end deftypefn 8946 8947@defmac ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes}) 8948A C statement to output to the stdio stream @var{stream} an assembler 8949instruction to advance the location counter by @var{nbytes} bytes. 8950Those bytes should be zero when loaded. @var{nbytes} will be a C 8951expression of type @code{unsigned HOST_WIDE_INT}. 8952@end defmac 8953 8954@defmac ASM_NO_SKIP_IN_TEXT 8955Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the 8956text section because it fails to put zeros in the bytes that are skipped. 8957This is true on many Unix systems, where the pseudo--op to skip bytes 8958produces no-op instructions rather than zeros when used in the text 8959section. 8960@end defmac 8961 8962@defmac ASM_OUTPUT_ALIGN (@var{stream}, @var{power}) 8963A C statement to output to the stdio stream @var{stream} an assembler 8964command to advance the location counter to a multiple of 2 to the 8965@var{power} bytes. @var{power} will be a C expression of type @code{int}. 8966@end defmac 8967 8968@defmac ASM_OUTPUT_ALIGN_WITH_NOP (@var{stream}, @var{power}) 8969Like @code{ASM_OUTPUT_ALIGN}, except that the ``nop'' instruction is used 8970for padding, if necessary. 8971@end defmac 8972 8973@defmac ASM_OUTPUT_MAX_SKIP_ALIGN (@var{stream}, @var{power}, @var{max_skip}) 8974A C statement to output to the stdio stream @var{stream} an assembler 8975command to advance the location counter to a multiple of 2 to the 8976@var{power} bytes, but only if @var{max_skip} or fewer bytes are needed to 8977satisfy the alignment request. @var{power} and @var{max_skip} will be 8978a C expression of type @code{int}. 8979@end defmac 8980 8981@need 3000 8982@node Debugging Info 8983@section Controlling Debugging Information Format 8984 8985@c prevent bad page break with this line 8986This describes how to specify debugging information. 8987 8988@menu 8989* All Debuggers:: Macros that affect all debugging formats uniformly. 8990* DBX Options:: Macros enabling specific options in DBX format. 8991* DBX Hooks:: Hook macros for varying DBX format. 8992* File Names and DBX:: Macros controlling output of file names in DBX format. 8993* SDB and DWARF:: Macros for SDB (COFF) and DWARF formats. 8994* VMS Debug:: Macros for VMS debug format. 8995@end menu 8996 8997@node All Debuggers 8998@subsection Macros Affecting All Debugging Formats 8999 9000@c prevent bad page break with this line 9001These macros affect all debugging formats. 9002 9003@defmac DBX_REGISTER_NUMBER (@var{regno}) 9004A C expression that returns the DBX register number for the compiler 9005register number @var{regno}. In the default macro provided, the value 9006of this expression will be @var{regno} itself. But sometimes there are 9007some registers that the compiler knows about and DBX does not, or vice 9008versa. In such cases, some register may need to have one number in the 9009compiler and another for DBX@. 9010 9011If two registers have consecutive numbers inside GCC, and they can be 9012used as a pair to hold a multiword value, then they @emph{must} have 9013consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}. 9014Otherwise, debuggers will be unable to access such a pair, because they 9015expect register pairs to be consecutive in their own numbering scheme. 9016 9017If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that 9018does not preserve register pairs, then what you must do instead is 9019redefine the actual register numbering scheme. 9020@end defmac 9021 9022@defmac DEBUGGER_AUTO_OFFSET (@var{x}) 9023A C expression that returns the integer offset value for an automatic 9024variable having address @var{x} (an RTL expression). The default 9025computation assumes that @var{x} is based on the frame-pointer and 9026gives the offset from the frame-pointer. This is required for targets 9027that produce debugging output for DBX or COFF-style debugging output 9028for SDB and allow the frame-pointer to be eliminated when the 9029@option{-g} options is used. 9030@end defmac 9031 9032@defmac DEBUGGER_ARG_OFFSET (@var{offset}, @var{x}) 9033A C expression that returns the integer offset value for an argument 9034having address @var{x} (an RTL expression). The nominal offset is 9035@var{offset}. 9036@end defmac 9037 9038@defmac PREFERRED_DEBUGGING_TYPE 9039A C expression that returns the type of debugging output GCC should 9040produce when the user specifies just @option{-g}. Define 9041this if you have arranged for GCC to support more than one format of 9042debugging output. Currently, the allowable values are @code{DBX_DEBUG}, 9043@code{SDB_DEBUG}, @code{DWARF_DEBUG}, @code{DWARF2_DEBUG}, 9044@code{XCOFF_DEBUG}, @code{VMS_DEBUG}, and @code{VMS_AND_DWARF2_DEBUG}. 9045 9046When the user specifies @option{-ggdb}, GCC normally also uses the 9047value of this macro to select the debugging output format, but with two 9048exceptions. If @code{DWARF2_DEBUGGING_INFO} is defined, GCC uses the 9049value @code{DWARF2_DEBUG}. Otherwise, if @code{DBX_DEBUGGING_INFO} is 9050defined, GCC uses @code{DBX_DEBUG}. 9051 9052The value of this macro only affects the default debugging output; the 9053user can always get a specific type of output by using @option{-gstabs}, 9054@option{-gcoff}, @option{-gdwarf-2}, @option{-gxcoff}, or @option{-gvms}. 9055@end defmac 9056 9057@node DBX Options 9058@subsection Specific Options for DBX Output 9059 9060@c prevent bad page break with this line 9061These are specific options for DBX output. 9062 9063@defmac DBX_DEBUGGING_INFO 9064Define this macro if GCC should produce debugging output for DBX 9065in response to the @option{-g} option. 9066@end defmac 9067 9068@defmac XCOFF_DEBUGGING_INFO 9069Define this macro if GCC should produce XCOFF format debugging output 9070in response to the @option{-g} option. This is a variant of DBX format. 9071@end defmac 9072 9073@defmac DEFAULT_GDB_EXTENSIONS 9074Define this macro to control whether GCC should by default generate 9075GDB's extended version of DBX debugging information (assuming DBX-format 9076debugging information is enabled at all). If you don't define the 9077macro, the default is 1: always generate the extended information 9078if there is any occasion to. 9079@end defmac 9080 9081@defmac DEBUG_SYMS_TEXT 9082Define this macro if all @code{.stabs} commands should be output while 9083in the text section. 9084@end defmac 9085 9086@defmac ASM_STABS_OP 9087A C string constant, including spacing, naming the assembler pseudo op to 9088use instead of @code{"\t.stabs\t"} to define an ordinary debugging symbol. 9089If you don't define this macro, @code{"\t.stabs\t"} is used. This macro 9090applies only to DBX debugging information format. 9091@end defmac 9092 9093@defmac ASM_STABD_OP 9094A C string constant, including spacing, naming the assembler pseudo op to 9095use instead of @code{"\t.stabd\t"} to define a debugging symbol whose 9096value is the current location. If you don't define this macro, 9097@code{"\t.stabd\t"} is used. This macro applies only to DBX debugging 9098information format. 9099@end defmac 9100 9101@defmac ASM_STABN_OP 9102A C string constant, including spacing, naming the assembler pseudo op to 9103use instead of @code{"\t.stabn\t"} to define a debugging symbol with no 9104name. If you don't define this macro, @code{"\t.stabn\t"} is used. This 9105macro applies only to DBX debugging information format. 9106@end defmac 9107 9108@defmac DBX_NO_XREFS 9109Define this macro if DBX on your system does not support the construct 9110@samp{xs@var{tagname}}. On some systems, this construct is used to 9111describe a forward reference to a structure named @var{tagname}. 9112On other systems, this construct is not supported at all. 9113@end defmac 9114 9115@defmac DBX_CONTIN_LENGTH 9116A symbol name in DBX-format debugging information is normally 9117continued (split into two separate @code{.stabs} directives) when it 9118exceeds a certain length (by default, 80 characters). On some 9119operating systems, DBX requires this splitting; on others, splitting 9120must not be done. You can inhibit splitting by defining this macro 9121with the value zero. You can override the default splitting-length by 9122defining this macro as an expression for the length you desire. 9123@end defmac 9124 9125@defmac DBX_CONTIN_CHAR 9126Normally continuation is indicated by adding a @samp{\} character to 9127the end of a @code{.stabs} string when a continuation follows. To use 9128a different character instead, define this macro as a character 9129constant for the character you want to use. Do not define this macro 9130if backslash is correct for your system. 9131@end defmac 9132 9133@defmac DBX_STATIC_STAB_DATA_SECTION 9134Define this macro if it is necessary to go to the data section before 9135outputting the @samp{.stabs} pseudo-op for a non-global static 9136variable. 9137@end defmac 9138 9139@defmac DBX_TYPE_DECL_STABS_CODE 9140The value to use in the ``code'' field of the @code{.stabs} directive 9141for a typedef. The default is @code{N_LSYM}. 9142@end defmac 9143 9144@defmac DBX_STATIC_CONST_VAR_CODE 9145The value to use in the ``code'' field of the @code{.stabs} directive 9146for a static variable located in the text section. DBX format does not 9147provide any ``right'' way to do this. The default is @code{N_FUN}. 9148@end defmac 9149 9150@defmac DBX_REGPARM_STABS_CODE 9151The value to use in the ``code'' field of the @code{.stabs} directive 9152for a parameter passed in registers. DBX format does not provide any 9153``right'' way to do this. The default is @code{N_RSYM}. 9154@end defmac 9155 9156@defmac DBX_REGPARM_STABS_LETTER 9157The letter to use in DBX symbol data to identify a symbol as a parameter 9158passed in registers. DBX format does not customarily provide any way to 9159do this. The default is @code{'P'}. 9160@end defmac 9161 9162@defmac DBX_FUNCTION_FIRST 9163Define this macro if the DBX information for a function and its 9164arguments should precede the assembler code for the function. Normally, 9165in DBX format, the debugging information entirely follows the assembler 9166code. 9167@end defmac 9168 9169@defmac DBX_BLOCKS_FUNCTION_RELATIVE 9170Define this macro, with value 1, if the value of a symbol describing 9171the scope of a block (@code{N_LBRAC} or @code{N_RBRAC}) should be 9172relative to the start of the enclosing function. Normally, GCC uses 9173an absolute address. 9174@end defmac 9175 9176@defmac DBX_LINES_FUNCTION_RELATIVE 9177Define this macro, with value 1, if the value of a symbol indicating 9178the current line number (@code{N_SLINE}) should be relative to the 9179start of the enclosing function. Normally, GCC uses an absolute address. 9180@end defmac 9181 9182@defmac DBX_USE_BINCL 9183Define this macro if GCC should generate @code{N_BINCL} and 9184@code{N_EINCL} stabs for included header files, as on Sun systems. This 9185macro also directs GCC to output a type number as a pair of a file 9186number and a type number within the file. Normally, GCC does not 9187generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single 9188number for a type number. 9189@end defmac 9190 9191@node DBX Hooks 9192@subsection Open-Ended Hooks for DBX Format 9193 9194@c prevent bad page break with this line 9195These are hooks for DBX format. 9196 9197@defmac DBX_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter}) 9198A C statement to output DBX debugging information before code for line 9199number @var{line} of the current source file to the stdio stream 9200@var{stream}. @var{counter} is the number of time the macro was 9201invoked, including the current invocation; it is intended to generate 9202unique labels in the assembly output. 9203 9204This macro should not be defined if the default output is correct, or 9205if it can be made correct by defining @code{DBX_LINES_FUNCTION_RELATIVE}. 9206@end defmac 9207 9208@defmac NO_DBX_FUNCTION_END 9209Some stabs encapsulation formats (in particular ECOFF), cannot handle the 9210@code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extension construct. 9211On those machines, define this macro to turn this feature off without 9212disturbing the rest of the gdb extensions. 9213@end defmac 9214 9215@defmac NO_DBX_BNSYM_ENSYM 9216Some assemblers cannot handle the @code{.stabd BNSYM/ENSYM,0,0} gdb dbx 9217extension construct. On those machines, define this macro to turn this 9218feature off without disturbing the rest of the gdb extensions. 9219@end defmac 9220 9221@node File Names and DBX 9222@subsection File Names in DBX Format 9223 9224@c prevent bad page break with this line 9225This describes file names in DBX format. 9226 9227@defmac DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name}) 9228A C statement to output DBX debugging information to the stdio stream 9229@var{stream}, which indicates that file @var{name} is the main source 9230file---the file specified as the input file for compilation. 9231This macro is called only once, at the beginning of compilation. 9232 9233This macro need not be defined if the standard form of output 9234for DBX debugging information is appropriate. 9235 9236It may be necessary to refer to a label equal to the beginning of the 9237text section. You can use @samp{assemble_name (stream, ltext_label_name)} 9238to do so. If you do this, you must also set the variable 9239@var{used_ltext_label_name} to @code{true}. 9240@end defmac 9241 9242@defmac NO_DBX_MAIN_SOURCE_DIRECTORY 9243Define this macro, with value 1, if GCC should not emit an indication 9244of the current directory for compilation and current source language at 9245the beginning of the file. 9246@end defmac 9247 9248@defmac NO_DBX_GCC_MARKER 9249Define this macro, with value 1, if GCC should not emit an indication 9250that this object file was compiled by GCC@. The default is to emit 9251an @code{N_OPT} stab at the beginning of every source file, with 9252@samp{gcc2_compiled.} for the string and value 0. 9253@end defmac 9254 9255@defmac DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name}) 9256A C statement to output DBX debugging information at the end of 9257compilation of the main source file @var{name}. Output should be 9258written to the stdio stream @var{stream}. 9259 9260If you don't define this macro, nothing special is output at the end 9261of compilation, which is correct for most machines. 9262@end defmac 9263 9264@defmac DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END 9265Define this macro @emph{instead of} defining 9266@code{DBX_OUTPUT_MAIN_SOURCE_FILE_END}, if what needs to be output at 9267the end of compilation is an @code{N_SO} stab with an empty string, 9268whose value is the highest absolute text address in the file. 9269@end defmac 9270 9271@need 2000 9272@node SDB and DWARF 9273@subsection Macros for SDB and DWARF Output 9274 9275@c prevent bad page break with this line 9276Here are macros for SDB and DWARF output. 9277 9278@defmac SDB_DEBUGGING_INFO 9279Define this macro if GCC should produce COFF-style debugging output 9280for SDB in response to the @option{-g} option. 9281@end defmac 9282 9283@defmac DWARF2_DEBUGGING_INFO 9284Define this macro if GCC should produce dwarf version 2 format 9285debugging output in response to the @option{-g} option. 9286 9287@hook TARGET_DWARF_CALLING_CONVENTION 9288Define this to enable the dwarf attribute @code{DW_AT_calling_convention} to 9289be emitted for each function. Instead of an integer return the enum 9290value for the @code{DW_CC_} tag. 9291@end deftypefn 9292 9293To support optional call frame debugging information, you must also 9294define @code{INCOMING_RETURN_ADDR_RTX} and either set 9295@code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the 9296prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save} 9297as appropriate from @code{TARGET_ASM_FUNCTION_PROLOGUE} if you don't. 9298@end defmac 9299 9300@defmac DWARF2_FRAME_INFO 9301Define this macro to a nonzero value if GCC should always output 9302Dwarf 2 frame information. If @code{TARGET_EXCEPT_UNWIND_INFO} 9303(@pxref{Exception Region Output}) returns @code{UI_DWARF2}, and 9304exceptions are enabled, GCC will output this information not matter 9305how you define @code{DWARF2_FRAME_INFO}. 9306@end defmac 9307 9308@hook TARGET_DEBUG_UNWIND_INFO 9309This hook defines the mechanism that will be used for describing frame 9310unwind information to the debugger. Normally the hook will return 9311@code{UI_DWARF2} if DWARF 2 debug information is enabled, and 9312return @code{UI_NONE} otherwise. 9313 9314A target may return @code{UI_DWARF2} even when DWARF 2 debug information 9315is disabled in order to always output DWARF 2 frame information. 9316 9317A target may return @code{UI_TARGET} if it has ABI specified unwind tables. 9318This will suppress generation of the normal debug frame unwind information. 9319@end deftypefn 9320 9321@defmac DWARF2_ASM_LINE_DEBUG_INFO 9322Define this macro to be a nonzero value if the assembler can generate Dwarf 2 9323line debug info sections. This will result in much more compact line number 9324tables, and hence is desirable if it works. 9325@end defmac 9326 9327@hook TARGET_WANT_DEBUG_PUB_SECTIONS 9328 9329@hook TARGET_FORCE_AT_COMP_DIR 9330 9331@hook TARGET_DELAY_SCHED2 9332 9333@hook TARGET_DELAY_VARTRACK 9334 9335@defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) 9336A C statement to issue assembly directives that create a difference 9337@var{lab1} minus @var{lab2}, using an integer of the given @var{size}. 9338@end defmac 9339 9340@defmac ASM_OUTPUT_DWARF_VMS_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) 9341A C statement to issue assembly directives that create a difference 9342between the two given labels in system defined units, e.g. instruction 9343slots on IA64 VMS, using an integer of the given size. 9344@end defmac 9345 9346@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label}, @var{section}) 9347A C statement to issue assembly directives that create a 9348section-relative reference to the given @var{label}, using an integer of the 9349given @var{size}. The label is known to be defined in the given @var{section}. 9350@end defmac 9351 9352@defmac ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label}) 9353A C statement to issue assembly directives that create a self-relative 9354reference to the given @var{label}, using an integer of the given @var{size}. 9355@end defmac 9356 9357@defmac ASM_OUTPUT_DWARF_TABLE_REF (@var{label}) 9358A C statement to issue assembly directives that create a reference to 9359the DWARF table identifier @var{label} from the current section. This 9360is used on some systems to avoid garbage collecting a DWARF table which 9361is referenced by a function. 9362@end defmac 9363 9364@hook TARGET_ASM_OUTPUT_DWARF_DTPREL 9365If defined, this target hook is a function which outputs a DTP-relative 9366reference to the given TLS symbol of the specified size. 9367@end deftypefn 9368 9369@defmac PUT_SDB_@dots{} 9370Define these macros to override the assembler syntax for the special 9371SDB assembler directives. See @file{sdbout.c} for a list of these 9372macros and their arguments. If the standard syntax is used, you need 9373not define them yourself. 9374@end defmac 9375 9376@defmac SDB_DELIM 9377Some assemblers do not support a semicolon as a delimiter, even between 9378SDB assembler directives. In that case, define this macro to be the 9379delimiter to use (usually @samp{\n}). It is not necessary to define 9380a new set of @code{PUT_SDB_@var{op}} macros if this is the only change 9381required. 9382@end defmac 9383 9384@defmac SDB_ALLOW_UNKNOWN_REFERENCES 9385Define this macro to allow references to unknown structure, 9386union, or enumeration tags to be emitted. Standard COFF does not 9387allow handling of unknown references, MIPS ECOFF has support for 9388it. 9389@end defmac 9390 9391@defmac SDB_ALLOW_FORWARD_REFERENCES 9392Define this macro to allow references to structure, union, or 9393enumeration tags that have not yet been seen to be handled. Some 9394assemblers choke if forward tags are used, while some require it. 9395@end defmac 9396 9397@defmac SDB_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}) 9398A C statement to output SDB debugging information before code for line 9399number @var{line} of the current source file to the stdio stream 9400@var{stream}. The default is to emit an @code{.ln} directive. 9401@end defmac 9402 9403@need 2000 9404@node VMS Debug 9405@subsection Macros for VMS Debug Format 9406 9407@c prevent bad page break with this line 9408Here are macros for VMS debug format. 9409 9410@defmac VMS_DEBUGGING_INFO 9411Define this macro if GCC should produce debugging output for VMS 9412in response to the @option{-g} option. The default behavior for VMS 9413is to generate minimal debug info for a traceback in the absence of 9414@option{-g} unless explicitly overridden with @option{-g0}. This 9415behavior is controlled by @code{TARGET_OPTION_OPTIMIZATION} and 9416@code{TARGET_OPTION_OVERRIDE}. 9417@end defmac 9418 9419@node Floating Point 9420@section Cross Compilation and Floating Point 9421@cindex cross compilation and floating point 9422@cindex floating point and cross compilation 9423 9424While all modern machines use twos-complement representation for integers, 9425there are a variety of representations for floating point numbers. This 9426means that in a cross-compiler the representation of floating point numbers 9427in the compiled program may be different from that used in the machine 9428doing the compilation. 9429 9430Because different representation systems may offer different amounts of 9431range and precision, all floating point constants must be represented in 9432the target machine's format. Therefore, the cross compiler cannot 9433safely use the host machine's floating point arithmetic; it must emulate 9434the target's arithmetic. To ensure consistency, GCC always uses 9435emulation to work with floating point values, even when the host and 9436target floating point formats are identical. 9437 9438The following macros are provided by @file{real.h} for the compiler to 9439use. All parts of the compiler which generate or optimize 9440floating-point calculations must use these macros. They may evaluate 9441their operands more than once, so operands must not have side effects. 9442 9443@defmac REAL_VALUE_TYPE 9444The C data type to be used to hold a floating point value in the target 9445machine's format. Typically this is a @code{struct} containing an 9446array of @code{HOST_WIDE_INT}, but all code should treat it as an opaque 9447quantity. 9448@end defmac 9449 9450@deftypefn Macro int REAL_VALUES_EQUAL (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y}) 9451Compares for equality the two values, @var{x} and @var{y}. If the target 9452floating point format supports negative zeroes and/or NaNs, 9453@samp{REAL_VALUES_EQUAL (-0.0, 0.0)} is true, and 9454@samp{REAL_VALUES_EQUAL (NaN, NaN)} is false. 9455@end deftypefn 9456 9457@deftypefn Macro int REAL_VALUES_LESS (REAL_VALUE_TYPE @var{x}, REAL_VALUE_TYPE @var{y}) 9458Tests whether @var{x} is less than @var{y}. 9459@end deftypefn 9460 9461@deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x}) 9462Truncates @var{x} to a signed integer, rounding toward zero. 9463@end deftypefn 9464 9465@deftypefn Macro {unsigned HOST_WIDE_INT} REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE @var{x}) 9466Truncates @var{x} to an unsigned integer, rounding toward zero. If 9467@var{x} is negative, returns zero. 9468@end deftypefn 9469 9470@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *@var{string}, enum machine_mode @var{mode}) 9471Converts @var{string} into a floating point number in the target machine's 9472representation for mode @var{mode}. This routine can handle both 9473decimal and hexadecimal floating point constants, using the syntax 9474defined by the C language for both. 9475@end deftypefn 9476 9477@deftypefn Macro int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE @var{x}) 9478Returns 1 if @var{x} is negative (including negative zero), 0 otherwise. 9479@end deftypefn 9480 9481@deftypefn Macro int REAL_VALUE_ISINF (REAL_VALUE_TYPE @var{x}) 9482Determines whether @var{x} represents infinity (positive or negative). 9483@end deftypefn 9484 9485@deftypefn Macro int REAL_VALUE_ISNAN (REAL_VALUE_TYPE @var{x}) 9486Determines whether @var{x} represents a ``NaN'' (not-a-number). 9487@end deftypefn 9488 9489@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}) 9490Calculates an arithmetic operation on the two floating point values 9491@var{x} and @var{y}, storing the result in @var{output} (which must be a 9492variable). 9493 9494The operation to be performed is specified by @var{code}. Only the 9495following codes are supported: @code{PLUS_EXPR}, @code{MINUS_EXPR}, 9496@code{MULT_EXPR}, @code{RDIV_EXPR}, @code{MAX_EXPR}, @code{MIN_EXPR}. 9497 9498If @code{REAL_ARITHMETIC} is asked to evaluate division by zero and the 9499target's floating point format cannot represent infinity, it will call 9500@code{abort}. Callers should check for this situation first, using 9501@code{MODE_HAS_INFINITIES}. @xref{Storage Layout}. 9502@end deftypefn 9503 9504@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x}) 9505Returns the negative of the floating point value @var{x}. 9506@end deftypefn 9507 9508@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x}) 9509Returns the absolute value of @var{x}. 9510@end deftypefn 9511 9512@deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT @var{high}, REAL_VALUE_TYPE @var{x}) 9513Converts a floating point value @var{x} into a double-precision integer 9514which is then stored into @var{low} and @var{high}. If the value is not 9515integral, it is truncated. 9516@end deftypefn 9517 9518@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}) 9519Converts a double-precision integer found in @var{low} and @var{high}, 9520into a floating point value which is then stored into @var{x}. The 9521value is truncated to fit in mode @var{mode}. 9522@end deftypefn 9523 9524@node Mode Switching 9525@section Mode Switching Instructions 9526@cindex mode switching 9527The following macros control mode switching optimizations: 9528 9529@defmac OPTIMIZE_MODE_SWITCHING (@var{entity}) 9530Define this macro if the port needs extra instructions inserted for mode 9531switching in an optimizing compilation. 9532 9533For an example, the SH4 can perform both single and double precision 9534floating point operations, but to perform a single precision operation, 9535the FPSCR PR bit has to be cleared, while for a double precision 9536operation, this bit has to be set. Changing the PR bit requires a general 9537purpose register as a scratch register, hence these FPSCR sets have to 9538be inserted before reload, i.e.@: you can't put this into instruction emitting 9539or @code{TARGET_MACHINE_DEPENDENT_REORG}. 9540 9541You can have multiple entities that are mode-switched, and select at run time 9542which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should 9543return nonzero for any @var{entity} that needs mode-switching. 9544If you define this macro, you also have to define 9545@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{MODE_NEEDED}, 9546@code{MODE_PRIORITY_TO_MODE} and @code{EMIT_MODE_SET}. 9547@code{MODE_AFTER}, @code{MODE_ENTRY}, and @code{MODE_EXIT} 9548are optional. 9549@end defmac 9550 9551@defmac NUM_MODES_FOR_MODE_SWITCHING 9552If you define @code{OPTIMIZE_MODE_SWITCHING}, you have to define this as 9553initializer for an array of integers. Each initializer element 9554N refers to an entity that needs mode switching, and specifies the number 9555of different modes that might need to be set for this entity. 9556The position of the initializer in the initializer---starting counting at 9557zero---determines the integer that is used to refer to the mode-switched 9558entity in question. 9559In macros that take mode arguments / yield a mode result, modes are 9560represented as numbers 0 @dots{} N @minus{} 1. N is used to specify that no mode 9561switch is needed / supplied. 9562@end defmac 9563 9564@defmac MODE_NEEDED (@var{entity}, @var{insn}) 9565@var{entity} is an integer specifying a mode-switched entity. If 9566@code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to 9567return an integer value not larger than the corresponding element in 9568@code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must 9569be switched into prior to the execution of @var{insn}. 9570@end defmac 9571 9572@defmac MODE_AFTER (@var{entity}, @var{mode}, @var{insn}) 9573@var{entity} is an integer specifying a mode-switched entity. If 9574this macro is defined, it is evaluated for every @var{insn} during 9575mode switching. It determines the mode that an insn results in (if 9576different from the incoming mode). 9577@end defmac 9578 9579@defmac MODE_ENTRY (@var{entity}) 9580If this macro is defined, it is evaluated for every @var{entity} that needs 9581mode switching. It should evaluate to an integer, which is a mode that 9582@var{entity} is assumed to be switched to at function entry. If @code{MODE_ENTRY} 9583is defined then @code{MODE_EXIT} must be defined. 9584@end defmac 9585 9586@defmac MODE_EXIT (@var{entity}) 9587If this macro is defined, it is evaluated for every @var{entity} that needs 9588mode switching. It should evaluate to an integer, which is a mode that 9589@var{entity} is assumed to be switched to at function exit. If @code{MODE_EXIT} 9590is defined then @code{MODE_ENTRY} must be defined. 9591@end defmac 9592 9593@defmac MODE_PRIORITY_TO_MODE (@var{entity}, @var{n}) 9594This macro specifies the order in which modes for @var{entity} are processed. 95950 is the highest priority, @code{NUM_MODES_FOR_MODE_SWITCHING[@var{entity}] - 1} the 9596lowest. The value of the macro should be an integer designating a mode 9597for @var{entity}. For any fixed @var{entity}, @code{mode_priority_to_mode} 9598(@var{entity}, @var{n}) shall be a bijection in 0 @dots{} 9599@code{num_modes_for_mode_switching[@var{entity}] - 1}. 9600@end defmac 9601 9602@defmac EMIT_MODE_SET (@var{entity}, @var{mode}, @var{hard_regs_live}) 9603Generate one or more insns to set @var{entity} to @var{mode}. 9604@var{hard_reg_live} is the set of hard registers live at the point where 9605the insn(s) are to be inserted. 9606@end defmac 9607 9608@node Target Attributes 9609@section Defining target-specific uses of @code{__attribute__} 9610@cindex target attributes 9611@cindex machine attributes 9612@cindex attributes, target-specific 9613 9614Target-specific attributes may be defined for functions, data and types. 9615These are described using the following target hooks; they also need to 9616be documented in @file{extend.texi}. 9617 9618@hook TARGET_ATTRIBUTE_TABLE 9619If defined, this target hook points to an array of @samp{struct 9620attribute_spec} (defined in @file{tree.h}) specifying the machine 9621specific attributes for this target and some of the restrictions on the 9622entities to which these attributes are applied and the arguments they 9623take. 9624@end deftypevr 9625 9626@hook TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P 9627If defined, this target hook is a function which returns true if the 9628machine-specific attribute named @var{name} expects an identifier 9629given as its first argument to be passed on as a plain identifier, not 9630subjected to name lookup. If this is not defined, the default is 9631false for all machine-specific attributes. 9632@end deftypefn 9633 9634@hook TARGET_COMP_TYPE_ATTRIBUTES 9635If defined, this target hook is a function which returns zero if the attributes on 9636@var{type1} and @var{type2} are incompatible, one if they are compatible, 9637and two if they are nearly compatible (which causes a warning to be 9638generated). If this is not defined, machine-specific attributes are 9639supposed always to be compatible. 9640@end deftypefn 9641 9642@hook TARGET_SET_DEFAULT_TYPE_ATTRIBUTES 9643If defined, this target hook is a function which assigns default attributes to 9644the newly defined @var{type}. 9645@end deftypefn 9646 9647@hook TARGET_MERGE_TYPE_ATTRIBUTES 9648Define this target hook if the merging of type attributes needs special 9649handling. If defined, the result is a list of the combined 9650@code{TYPE_ATTRIBUTES} of @var{type1} and @var{type2}. It is assumed 9651that @code{comptypes} has already been called and returned 1. This 9652function may call @code{merge_attributes} to handle machine-independent 9653merging. 9654@end deftypefn 9655 9656@hook TARGET_MERGE_DECL_ATTRIBUTES 9657Define this target hook if the merging of decl attributes needs special 9658handling. If defined, the result is a list of the combined 9659@code{DECL_ATTRIBUTES} of @var{olddecl} and @var{newdecl}. 9660@var{newdecl} is a duplicate declaration of @var{olddecl}. Examples of 9661when this is needed are when one attribute overrides another, or when an 9662attribute is nullified by a subsequent definition. This function may 9663call @code{merge_attributes} to handle machine-independent merging. 9664 9665@findex TARGET_DLLIMPORT_DECL_ATTRIBUTES 9666If the only target-specific handling you require is @samp{dllimport} 9667for Microsoft Windows targets, you should define the macro 9668@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES} to @code{1}. The compiler 9669will then define a function called 9670@code{merge_dllimport_decl_attributes} which can then be defined as 9671the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}. You can also 9672add @code{handle_dll_attribute} in the attribute table for your port 9673to perform initial processing of the @samp{dllimport} and 9674@samp{dllexport} attributes. This is done in @file{i386/cygwin.h} and 9675@file{i386/i386.c}, for example. 9676@end deftypefn 9677 9678@hook TARGET_VALID_DLLIMPORT_ATTRIBUTE_P 9679 9680@defmac TARGET_DECLSPEC 9681Define this macro to a nonzero value if you want to treat 9682@code{__declspec(X)} as equivalent to @code{__attribute((X))}. By 9683default, this behavior is enabled only for targets that define 9684@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}. The current implementation 9685of @code{__declspec} is via a built-in macro, but you should not rely 9686on this implementation detail. 9687@end defmac 9688 9689@hook TARGET_INSERT_ATTRIBUTES 9690Define this target hook if you want to be able to add attributes to a decl 9691when it is being created. This is normally useful for back ends which 9692wish to implement a pragma by using the attributes which correspond to 9693the pragma's effect. The @var{node} argument is the decl which is being 9694created. The @var{attr_ptr} argument is a pointer to the attribute list 9695for this decl. The list itself should not be modified, since it may be 9696shared with other decls, but attributes may be chained on the head of 9697the list and @code{*@var{attr_ptr}} modified to point to the new 9698attributes, or a copy of the list may be made if further changes are 9699needed. 9700@end deftypefn 9701 9702@hook TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P 9703@cindex inlining 9704This target hook returns @code{true} if it is ok to inline @var{fndecl} 9705into the current function, despite its having target-specific 9706attributes, @code{false} otherwise. By default, if a function has a 9707target specific attribute attached to it, it will not be inlined. 9708@end deftypefn 9709 9710@hook TARGET_OPTION_VALID_ATTRIBUTE_P 9711This hook is called to parse @code{attribute(target("..."))}, which 9712allows setting target-specific options on individual functions. 9713These function-specific options may differ 9714from the options specified on the command line. The hook should return 9715@code{true} if the options are valid. 9716 9717The hook should set the @code{DECL_FUNCTION_SPECIFIC_TARGET} field in 9718the function declaration to hold a pointer to a target-specific 9719@code{struct cl_target_option} structure. 9720@end deftypefn 9721 9722@hook TARGET_OPTION_SAVE 9723This hook is called to save any additional target-specific information 9724in the @code{struct cl_target_option} structure for function-specific 9725options. 9726@xref{Option file format}. 9727@end deftypefn 9728 9729@hook TARGET_OPTION_RESTORE 9730This hook is called to restore any additional target-specific 9731information in the @code{struct cl_target_option} structure for 9732function-specific options. 9733@end deftypefn 9734 9735@hook TARGET_OPTION_PRINT 9736This hook is called to print any additional target-specific 9737information in the @code{struct cl_target_option} structure for 9738function-specific options. 9739@end deftypefn 9740 9741@hook TARGET_OPTION_PRAGMA_PARSE 9742This target hook parses the options for @code{#pragma GCC target}, which 9743sets the target-specific options for functions that occur later in the 9744input stream. The options accepted should be the same as those handled by the 9745@code{TARGET_OPTION_VALID_ATTRIBUTE_P} hook. 9746@end deftypefn 9747 9748@hook TARGET_OPTION_OVERRIDE 9749Sometimes certain combinations of command options do not make sense on 9750a particular target machine. You can override the hook 9751@code{TARGET_OPTION_OVERRIDE} to take account of this. This hooks is called 9752once just after all the command options have been parsed. 9753 9754Don't use this hook to turn on various extra optimizations for 9755@option{-O}. That is what @code{TARGET_OPTION_OPTIMIZATION} is for. 9756 9757If you need to do something whenever the optimization level is 9758changed via the optimize attribute or pragma, see 9759@code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE} 9760@end deftypefn 9761 9762@hook TARGET_OPTION_FUNCTION_VERSIONS 9763This target hook returns @code{true} if @var{DECL1} and @var{DECL2} are 9764versions of the same function. @var{DECL1} and @var{DECL2} are function 9765versions if and only if they have the same function signature and 9766different target specific attributes, that is, they are compiled for 9767different target machines. 9768@end deftypefn 9769 9770@hook TARGET_CAN_INLINE_P 9771This target hook returns @code{false} if the @var{caller} function 9772cannot inline @var{callee}, based on target specific information. By 9773default, inlining is not allowed if the callee function has function 9774specific target options and the caller does not use the same options. 9775@end deftypefn 9776 9777@node Emulated TLS 9778@section Emulating TLS 9779@cindex Emulated TLS 9780 9781For targets whose psABI does not provide Thread Local Storage via 9782specific relocations and instruction sequences, an emulation layer is 9783used. A set of target hooks allows this emulation layer to be 9784configured for the requirements of a particular target. For instance 9785the psABI may in fact specify TLS support in terms of an emulation 9786layer. 9787 9788The emulation layer works by creating a control object for every TLS 9789object. To access the TLS object, a lookup function is provided 9790which, when given the address of the control object, will return the 9791address of the current thread's instance of the TLS object. 9792 9793@hook TARGET_EMUTLS_GET_ADDRESS 9794Contains the name of the helper function that uses a TLS control 9795object to locate a TLS instance. The default causes libgcc's 9796emulated TLS helper function to be used. 9797@end deftypevr 9798 9799@hook TARGET_EMUTLS_REGISTER_COMMON 9800Contains the name of the helper function that should be used at 9801program startup to register TLS objects that are implicitly 9802initialized to zero. If this is @code{NULL}, all TLS objects will 9803have explicit initializers. The default causes libgcc's emulated TLS 9804registration function to be used. 9805@end deftypevr 9806 9807@hook TARGET_EMUTLS_VAR_SECTION 9808Contains the name of the section in which TLS control variables should 9809be placed. The default of @code{NULL} allows these to be placed in 9810any section. 9811@end deftypevr 9812 9813@hook TARGET_EMUTLS_TMPL_SECTION 9814Contains the name of the section in which TLS initializers should be 9815placed. The default of @code{NULL} allows these to be placed in any 9816section. 9817@end deftypevr 9818 9819@hook TARGET_EMUTLS_VAR_PREFIX 9820Contains the prefix to be prepended to TLS control variable names. 9821The default of @code{NULL} uses a target-specific prefix. 9822@end deftypevr 9823 9824@hook TARGET_EMUTLS_TMPL_PREFIX 9825Contains the prefix to be prepended to TLS initializer objects. The 9826default of @code{NULL} uses a target-specific prefix. 9827@end deftypevr 9828 9829@hook TARGET_EMUTLS_VAR_FIELDS 9830Specifies a function that generates the FIELD_DECLs for a TLS control 9831object type. @var{type} is the RECORD_TYPE the fields are for and 9832@var{name} should be filled with the structure tag, if the default of 9833@code{__emutls_object} is unsuitable. The default creates a type suitable 9834for libgcc's emulated TLS function. 9835@end deftypefn 9836 9837@hook TARGET_EMUTLS_VAR_INIT 9838Specifies a function that generates the CONSTRUCTOR to initialize a 9839TLS control object. @var{var} is the TLS control object, @var{decl} 9840is the TLS object and @var{tmpl_addr} is the address of the 9841initializer. The default initializes libgcc's emulated TLS control object. 9842@end deftypefn 9843 9844@hook TARGET_EMUTLS_VAR_ALIGN_FIXED 9845Specifies whether the alignment of TLS control variable objects is 9846fixed and should not be increased as some backends may do to optimize 9847single objects. The default is false. 9848@end deftypevr 9849 9850@hook TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS 9851Specifies whether a DWARF @code{DW_OP_form_tls_address} location descriptor 9852may be used to describe emulated TLS control objects. 9853@end deftypevr 9854 9855@node MIPS Coprocessors 9856@section Defining coprocessor specifics for MIPS targets. 9857@cindex MIPS coprocessor-definition macros 9858 9859The MIPS specification allows MIPS implementations to have as many as 4 9860coprocessors, each with as many as 32 private registers. GCC supports 9861accessing these registers and transferring values between the registers 9862and memory using asm-ized variables. For example: 9863 9864@smallexample 9865 register unsigned int cp0count asm ("c0r1"); 9866 unsigned int d; 9867 9868 d = cp0count + 3; 9869@end smallexample 9870 9871(``c0r1'' is the default name of register 1 in coprocessor 0; alternate 9872names may be added as described below, or the default names may be 9873overridden entirely in @code{SUBTARGET_CONDITIONAL_REGISTER_USAGE}.) 9874 9875Coprocessor registers are assumed to be epilogue-used; sets to them will 9876be preserved even if it does not appear that the register is used again 9877later in the function. 9878 9879Another note: according to the MIPS spec, coprocessor 1 (if present) is 9880the FPU@. One accesses COP1 registers through standard mips 9881floating-point support; they are not included in this mechanism. 9882 9883There is one macro used in defining the MIPS coprocessor interface which 9884you may want to override in subtargets; it is described below. 9885 9886@node PCH Target 9887@section Parameters for Precompiled Header Validity Checking 9888@cindex parameters, precompiled headers 9889 9890@hook TARGET_GET_PCH_VALIDITY 9891This hook returns a pointer to the data needed by 9892@code{TARGET_PCH_VALID_P} and sets 9893@samp{*@var{sz}} to the size of the data in bytes. 9894@end deftypefn 9895 9896@hook TARGET_PCH_VALID_P 9897This hook checks whether the options used to create a PCH file are 9898compatible with the current settings. It returns @code{NULL} 9899if so and a suitable error message if not. Error messages will 9900be presented to the user and must be localized using @samp{_(@var{msg})}. 9901 9902@var{data} is the data that was returned by @code{TARGET_GET_PCH_VALIDITY} 9903when the PCH file was created and @var{sz} is the size of that data in bytes. 9904It's safe to assume that the data was created by the same version of the 9905compiler, so no format checking is needed. 9906 9907The default definition of @code{default_pch_valid_p} should be 9908suitable for most targets. 9909@end deftypefn 9910 9911@hook TARGET_CHECK_PCH_TARGET_FLAGS 9912If this hook is nonnull, the default implementation of 9913@code{TARGET_PCH_VALID_P} will use it to check for compatible values 9914of @code{target_flags}. @var{pch_flags} specifies the value that 9915@code{target_flags} had when the PCH file was created. The return 9916value is the same as for @code{TARGET_PCH_VALID_P}. 9917@end deftypefn 9918 9919@hook TARGET_PREPARE_PCH_SAVE 9920 9921@node C++ ABI 9922@section C++ ABI parameters 9923@cindex parameters, c++ abi 9924 9925@hook TARGET_CXX_GUARD_TYPE 9926Define this hook to override the integer type used for guard variables. 9927These are used to implement one-time construction of static objects. The 9928default is long_long_integer_type_node. 9929@end deftypefn 9930 9931@hook TARGET_CXX_GUARD_MASK_BIT 9932This hook determines how guard variables are used. It should return 9933@code{false} (the default) if the first byte should be used. A return value of 9934@code{true} indicates that only the least significant bit should be used. 9935@end deftypefn 9936 9937@hook TARGET_CXX_GET_COOKIE_SIZE 9938This hook returns the size of the cookie to use when allocating an array 9939whose elements have the indicated @var{type}. Assumes that it is already 9940known that a cookie is needed. The default is 9941@code{max(sizeof (size_t), alignof(type))}, as defined in section 2.7 of the 9942IA64/Generic C++ ABI@. 9943@end deftypefn 9944 9945@hook TARGET_CXX_COOKIE_HAS_SIZE 9946This hook should return @code{true} if the element size should be stored in 9947array cookies. The default is to return @code{false}. 9948@end deftypefn 9949 9950@hook TARGET_CXX_IMPORT_EXPORT_CLASS 9951If defined by a backend this hook allows the decision made to export 9952class @var{type} to be overruled. Upon entry @var{import_export} 9953will contain 1 if the class is going to be exported, @minus{}1 if it is going 9954to be imported and 0 otherwise. This function should return the 9955modified value and perform any other actions necessary to support the 9956backend's targeted operating system. 9957@end deftypefn 9958 9959@hook TARGET_CXX_CDTOR_RETURNS_THIS 9960This hook should return @code{true} if constructors and destructors return 9961the address of the object created/destroyed. The default is to return 9962@code{false}. 9963@end deftypefn 9964 9965@hook TARGET_CXX_KEY_METHOD_MAY_BE_INLINE 9966This hook returns true if the key method for a class (i.e., the method 9967which, if defined in the current translation unit, causes the virtual 9968table to be emitted) may be an inline function. Under the standard 9969Itanium C++ ABI the key method may be an inline function so long as 9970the function is not declared inline in the class definition. Under 9971some variants of the ABI, an inline function can never be the key 9972method. The default is to return @code{true}. 9973@end deftypefn 9974 9975@hook TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY 9976 9977@hook TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT 9978This hook returns true (the default) if virtual tables and other 9979similar implicit class data objects are always COMDAT if they have 9980external linkage. If this hook returns false, then class data for 9981classes whose virtual table will be emitted in only one translation 9982unit will not be COMDAT. 9983@end deftypefn 9984 9985@hook TARGET_CXX_LIBRARY_RTTI_COMDAT 9986This hook returns true (the default) if the RTTI information for 9987the basic types which is defined in the C++ runtime should always 9988be COMDAT, false if it should not be COMDAT. 9989@end deftypefn 9990 9991@hook TARGET_CXX_USE_AEABI_ATEXIT 9992This hook returns true if @code{__aeabi_atexit} (as defined by the ARM EABI) 9993should be used to register static destructors when @option{-fuse-cxa-atexit} 9994is in effect. The default is to return false to use @code{__cxa_atexit}. 9995@end deftypefn 9996 9997@hook TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT 9998This hook returns true if the target @code{atexit} function can be used 9999in the same manner as @code{__cxa_atexit} to register C++ static 10000destructors. This requires that @code{atexit}-registered functions in 10001shared libraries are run in the correct order when the libraries are 10002unloaded. The default is to return false. 10003@end deftypefn 10004 10005@hook TARGET_CXX_ADJUST_CLASS_AT_DEFINITION 10006 10007@hook TARGET_CXX_DECL_MANGLING_CONTEXT 10008 10009@node Named Address Spaces 10010@section Adding support for named address spaces 10011@cindex named address spaces 10012 10013The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275 10014standards committee, @cite{Programming Languages - C - Extensions to 10015support embedded processors}, specifies a syntax for embedded 10016processors to specify alternate address spaces. You can configure a 10017GCC port to support section 5.1 of the draft report to add support for 10018address spaces other than the default address space. These address 10019spaces are new keywords that are similar to the @code{volatile} and 10020@code{const} type attributes. 10021 10022Pointers to named address spaces can have a different size than 10023pointers to the generic address space. 10024 10025For example, the SPU port uses the @code{__ea} address space to refer 10026to memory in the host processor, rather than memory local to the SPU 10027processor. Access to memory in the @code{__ea} address space involves 10028issuing DMA operations to move data between the host processor and the 10029local processor memory address space. Pointers in the @code{__ea} 10030address space are either 32 bits or 64 bits based on the 10031@option{-mea32} or @option{-mea64} switches (native SPU pointers are 10032always 32 bits). 10033 10034Internally, address spaces are represented as a small integer in the 10035range 0 to 15 with address space 0 being reserved for the generic 10036address space. 10037 10038To register a named address space qualifier keyword with the C front end, 10039the target may call the @code{c_register_addr_space} routine. For example, 10040the SPU port uses the following to declare @code{__ea} as the keyword for 10041named address space #1: 10042@smallexample 10043#define ADDR_SPACE_EA 1 10044c_register_addr_space ("__ea", ADDR_SPACE_EA); 10045@end smallexample 10046 10047@hook TARGET_ADDR_SPACE_POINTER_MODE 10048Define this to return the machine mode to use for pointers to 10049@var{address_space} if the target supports named address spaces. 10050The default version of this hook returns @code{ptr_mode} for the 10051generic address space only. 10052@end deftypefn 10053 10054@hook TARGET_ADDR_SPACE_ADDRESS_MODE 10055Define this to return the machine mode to use for addresses in 10056@var{address_space} if the target supports named address spaces. 10057The default version of this hook returns @code{Pmode} for the 10058generic address space only. 10059@end deftypefn 10060 10061@hook TARGET_ADDR_SPACE_VALID_POINTER_MODE 10062Define this to return nonzero if the port can handle pointers 10063with machine mode @var{mode} to address space @var{as}. This target 10064hook is the same as the @code{TARGET_VALID_POINTER_MODE} target hook, 10065except that it includes explicit named address space support. The default 10066version of this hook returns true for the modes returned by either the 10067@code{TARGET_ADDR_SPACE_POINTER_MODE} or @code{TARGET_ADDR_SPACE_ADDRESS_MODE} 10068target hooks for the given address space. 10069@end deftypefn 10070 10071@hook TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P 10072Define this to return true if @var{exp} is a valid address for mode 10073@var{mode} in the named address space @var{as}. The @var{strict} 10074parameter says whether strict addressing is in effect after reload has 10075finished. This target hook is the same as the 10076@code{TARGET_LEGITIMATE_ADDRESS_P} target hook, except that it includes 10077explicit named address space support. 10078@end deftypefn 10079 10080@hook TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS 10081Define this to modify an invalid address @var{x} to be a valid address 10082with mode @var{mode} in the named address space @var{as}. This target 10083hook is the same as the @code{TARGET_LEGITIMIZE_ADDRESS} target hook, 10084except that it includes explicit named address space support. 10085@end deftypefn 10086 10087@hook TARGET_ADDR_SPACE_SUBSET_P 10088Define this to return whether the @var{subset} named address space is 10089contained within the @var{superset} named address space. Pointers to 10090a named address space that is a subset of another named address space 10091will be converted automatically without a cast if used together in 10092arithmetic operations. Pointers to a superset address space can be 10093converted to pointers to a subset address space via explicit casts. 10094@end deftypefn 10095 10096@hook TARGET_ADDR_SPACE_CONVERT 10097Define this to convert the pointer expression represented by the RTL 10098@var{op} with type @var{from_type} that points to a named address 10099space to a new pointer expression with type @var{to_type} that points 10100to a different named address space. When this hook it called, it is 10101guaranteed that one of the two address spaces is a subset of the other, 10102as determined by the @code{TARGET_ADDR_SPACE_SUBSET_P} target hook. 10103@end deftypefn 10104 10105@node Misc 10106@section Miscellaneous Parameters 10107@cindex parameters, miscellaneous 10108 10109@c prevent bad page break with this line 10110Here are several miscellaneous parameters. 10111 10112@defmac HAS_LONG_COND_BRANCH 10113Define this boolean macro to indicate whether or not your architecture 10114has conditional branches that can span all of memory. It is used in 10115conjunction with an optimization that partitions hot and cold basic 10116blocks into separate sections of the executable. If this macro is 10117set to false, gcc will convert any conditional branches that attempt 10118to cross between sections into unconditional branches or indirect jumps. 10119@end defmac 10120 10121@defmac HAS_LONG_UNCOND_BRANCH 10122Define this boolean macro to indicate whether or not your architecture 10123has unconditional branches that can span all of memory. It is used in 10124conjunction with an optimization that partitions hot and cold basic 10125blocks into separate sections of the executable. If this macro is 10126set to false, gcc will convert any unconditional branches that attempt 10127to cross between sections into indirect jumps. 10128@end defmac 10129 10130@defmac CASE_VECTOR_MODE 10131An alias for a machine mode name. This is the machine mode that 10132elements of a jump-table should have. 10133@end defmac 10134 10135@defmac CASE_VECTOR_SHORTEN_MODE (@var{min_offset}, @var{max_offset}, @var{body}) 10136Optional: return the preferred mode for an @code{addr_diff_vec} 10137when the minimum and maximum offset are known. If you define this, 10138it enables extra code in branch shortening to deal with @code{addr_diff_vec}. 10139To make this work, you also have to define @code{INSN_ALIGN} and 10140make the alignment for @code{addr_diff_vec} explicit. 10141The @var{body} argument is provided so that the offset_unsigned and scale 10142flags can be updated. 10143@end defmac 10144 10145@defmac CASE_VECTOR_PC_RELATIVE 10146Define this macro to be a C expression to indicate when jump-tables 10147should contain relative addresses. You need not define this macro if 10148jump-tables never contain relative addresses, or jump-tables should 10149contain relative addresses only when @option{-fPIC} or @option{-fPIC} 10150is in effect. 10151@end defmac 10152 10153@hook TARGET_CASE_VALUES_THRESHOLD 10154This function return the smallest number of different values for which it 10155is best to use a jump-table instead of a tree of conditional branches. 10156The default is four for machines with a @code{casesi} instruction and 10157five otherwise. This is best for most machines. 10158@end deftypefn 10159 10160@defmac WORD_REGISTER_OPERATIONS 10161Define this macro if operations between registers with integral mode 10162smaller than a word are always performed on the entire register. 10163Most RISC machines have this property and most CISC machines do not. 10164@end defmac 10165 10166@defmac LOAD_EXTEND_OP (@var{mem_mode}) 10167Define this macro to be a C expression indicating when insns that read 10168memory in @var{mem_mode}, an integral mode narrower than a word, set the 10169bits outside of @var{mem_mode} to be either the sign-extension or the 10170zero-extension of the data read. Return @code{SIGN_EXTEND} for values 10171of @var{mem_mode} for which the 10172insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and 10173@code{UNKNOWN} for other modes. 10174 10175This macro is not called with @var{mem_mode} non-integral or with a width 10176greater than or equal to @code{BITS_PER_WORD}, so you may return any 10177value in this case. Do not define this macro if it would always return 10178@code{UNKNOWN}. On machines where this macro is defined, you will normally 10179define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}. 10180 10181You may return a non-@code{UNKNOWN} value even if for some hard registers 10182the sign extension is not performed, if for the @code{REGNO_REG_CLASS} 10183of these hard registers @code{CANNOT_CHANGE_MODE_CLASS} returns nonzero 10184when the @var{from} mode is @var{mem_mode} and the @var{to} mode is any 10185integral mode larger than this but not larger than @code{word_mode}. 10186 10187You must return @code{UNKNOWN} if for some hard registers that allow this 10188mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to 10189@code{word_mode}, but that they can change to another integral mode that 10190is larger then @var{mem_mode} but still smaller than @code{word_mode}. 10191@end defmac 10192 10193@defmac SHORT_IMMEDIATES_SIGN_EXTEND 10194Define this macro if loading short immediate values into registers sign 10195extends. 10196@end defmac 10197 10198@hook TARGET_MIN_DIVISIONS_FOR_RECIP_MUL 10199When @option{-ffast-math} is in effect, GCC tries to optimize 10200divisions by the same divisor, by turning them into multiplications by 10201the reciprocal. This target hook specifies the minimum number of divisions 10202that should be there for GCC to perform the optimization for a variable 10203of mode @var{mode}. The default implementation returns 3 if the machine 10204has an instruction for the division, and 2 if it does not. 10205@end deftypefn 10206 10207@defmac MOVE_MAX 10208The maximum number of bytes that a single instruction can move quickly 10209between memory and registers or between two memory locations. 10210@end defmac 10211 10212@defmac MAX_MOVE_MAX 10213The maximum number of bytes that a single instruction can move quickly 10214between memory and registers or between two memory locations. If this 10215is undefined, the default is @code{MOVE_MAX}. Otherwise, it is the 10216constant value that is the largest value that @code{MOVE_MAX} can have 10217at run-time. 10218@end defmac 10219 10220@defmac SHIFT_COUNT_TRUNCATED 10221A C expression that is nonzero if on this machine the number of bits 10222actually used for the count of a shift operation is equal to the number 10223of bits needed to represent the size of the object being shifted. When 10224this macro is nonzero, the compiler will assume that it is safe to omit 10225a sign-extend, zero-extend, and certain bitwise `and' instructions that 10226truncates the count of a shift operation. On machines that have 10227instructions that act on bit-fields at variable positions, which may 10228include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED} 10229also enables deletion of truncations of the values that serve as 10230arguments to bit-field instructions. 10231 10232If both types of instructions truncate the count (for shifts) and 10233position (for bit-field operations), or if no variable-position bit-field 10234instructions exist, you should define this macro. 10235 10236However, on some machines, such as the 80386 and the 680x0, truncation 10237only applies to shift operations and not the (real or pretended) 10238bit-field operations. Define @code{SHIFT_COUNT_TRUNCATED} to be zero on 10239such machines. Instead, add patterns to the @file{md} file that include 10240the implied truncation of the shift instructions. 10241 10242You need not define this macro if it would always have the value of zero. 10243@end defmac 10244 10245@anchor{TARGET_SHIFT_TRUNCATION_MASK} 10246@hook TARGET_SHIFT_TRUNCATION_MASK 10247This function describes how the standard shift patterns for @var{mode} 10248deal with shifts by negative amounts or by more than the width of the mode. 10249@xref{shift patterns}. 10250 10251On many machines, the shift patterns will apply a mask @var{m} to the 10252shift count, meaning that a fixed-width shift of @var{x} by @var{y} is 10253equivalent to an arbitrary-width shift of @var{x} by @var{y & m}. If 10254this is true for mode @var{mode}, the function should return @var{m}, 10255otherwise it should return 0. A return value of 0 indicates that no 10256particular behavior is guaranteed. 10257 10258Note that, unlike @code{SHIFT_COUNT_TRUNCATED}, this function does 10259@emph{not} apply to general shift rtxes; it applies only to instructions 10260that are generated by the named shift patterns. 10261 10262The default implementation of this function returns 10263@code{GET_MODE_BITSIZE (@var{mode}) - 1} if @code{SHIFT_COUNT_TRUNCATED} 10264and 0 otherwise. This definition is always safe, but if 10265@code{SHIFT_COUNT_TRUNCATED} is false, and some shift patterns 10266nevertheless truncate the shift count, you may get better code 10267by overriding it. 10268@end deftypefn 10269 10270@defmac TRULY_NOOP_TRUNCATION (@var{outprec}, @var{inprec}) 10271A C expression which is nonzero if on this machine it is safe to 10272``convert'' an integer of @var{inprec} bits to one of @var{outprec} 10273bits (where @var{outprec} is smaller than @var{inprec}) by merely 10274operating on it as if it had only @var{outprec} bits. 10275 10276On many machines, this expression can be 1. 10277 10278@c rearranged this, removed the phrase "it is reported that". this was 10279@c to fix an overfull hbox. --mew 10feb93 10280When @code{TRULY_NOOP_TRUNCATION} returns 1 for a pair of sizes for 10281modes for which @code{MODES_TIEABLE_P} is 0, suboptimal code can result. 10282If this is the case, making @code{TRULY_NOOP_TRUNCATION} return 0 in 10283such cases may improve things. 10284@end defmac 10285 10286@hook TARGET_MODE_REP_EXTENDED 10287The representation of an integral mode can be such that the values 10288are always extended to a wider integral mode. Return 10289@code{SIGN_EXTEND} if values of @var{mode} are represented in 10290sign-extended form to @var{rep_mode}. Return @code{UNKNOWN} 10291otherwise. (Currently, none of the targets use zero-extended 10292representation this way so unlike @code{LOAD_EXTEND_OP}, 10293@code{TARGET_MODE_REP_EXTENDED} is expected to return either 10294@code{SIGN_EXTEND} or @code{UNKNOWN}. Also no target extends 10295@var{mode} to @var{rep_mode} so that @var{rep_mode} is not the next 10296widest integral mode and currently we take advantage of this fact.) 10297 10298Similarly to @code{LOAD_EXTEND_OP} you may return a non-@code{UNKNOWN} 10299value even if the extension is not performed on certain hard registers 10300as long as for the @code{REGNO_REG_CLASS} of these hard registers 10301@code{CANNOT_CHANGE_MODE_CLASS} returns nonzero. 10302 10303Note that @code{TARGET_MODE_REP_EXTENDED} and @code{LOAD_EXTEND_OP} 10304describe two related properties. If you define 10305@code{TARGET_MODE_REP_EXTENDED (mode, word_mode)} you probably also want 10306to define @code{LOAD_EXTEND_OP (mode)} to return the same type of 10307extension. 10308 10309In order to enforce the representation of @code{mode}, 10310@code{TRULY_NOOP_TRUNCATION} should return false when truncating to 10311@code{mode}. 10312@end deftypefn 10313 10314@defmac STORE_FLAG_VALUE 10315A C expression describing the value returned by a comparison operator 10316with an integral mode and stored by a store-flag instruction 10317(@samp{cstore@var{mode}4}) when the condition is true. This description must 10318apply to @emph{all} the @samp{cstore@var{mode}4} patterns and all the 10319comparison operators whose results have a @code{MODE_INT} mode. 10320 10321A value of 1 or @minus{}1 means that the instruction implementing the 10322comparison operator returns exactly 1 or @minus{}1 when the comparison is true 10323and 0 when the comparison is false. Otherwise, the value indicates 10324which bits of the result are guaranteed to be 1 when the comparison is 10325true. This value is interpreted in the mode of the comparison 10326operation, which is given by the mode of the first operand in the 10327@samp{cstore@var{mode}4} pattern. Either the low bit or the sign bit of 10328@code{STORE_FLAG_VALUE} be on. Presently, only those bits are used by 10329the compiler. 10330 10331If @code{STORE_FLAG_VALUE} is neither 1 or @minus{}1, the compiler will 10332generate code that depends only on the specified bits. It can also 10333replace comparison operators with equivalent operations if they cause 10334the required bits to be set, even if the remaining bits are undefined. 10335For example, on a machine whose comparison operators return an 10336@code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as 10337@samp{0x80000000}, saying that just the sign bit is relevant, the 10338expression 10339 10340@smallexample 10341(ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0)) 10342@end smallexample 10343 10344@noindent 10345can be converted to 10346 10347@smallexample 10348(ashift:SI @var{x} (const_int @var{n})) 10349@end smallexample 10350 10351@noindent 10352where @var{n} is the appropriate shift count to move the bit being 10353tested into the sign bit. 10354 10355There is no way to describe a machine that always sets the low-order bit 10356for a true value, but does not guarantee the value of any other bits, 10357but we do not know of any machine that has such an instruction. If you 10358are trying to port GCC to such a machine, include an instruction to 10359perform a logical-and of the result with 1 in the pattern for the 10360comparison operators and let us know at @email{gcc@@gcc.gnu.org}. 10361 10362Often, a machine will have multiple instructions that obtain a value 10363from a comparison (or the condition codes). Here are rules to guide the 10364choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions 10365to be used: 10366 10367@itemize @bullet 10368@item 10369Use the shortest sequence that yields a valid definition for 10370@code{STORE_FLAG_VALUE}. It is more efficient for the compiler to 10371``normalize'' the value (convert it to, e.g., 1 or 0) than for the 10372comparison operators to do so because there may be opportunities to 10373combine the normalization with other operations. 10374 10375@item 10376For equal-length sequences, use a value of 1 or @minus{}1, with @minus{}1 being 10377slightly preferred on machines with expensive jumps and 1 preferred on 10378other machines. 10379 10380@item 10381As a second choice, choose a value of @samp{0x80000001} if instructions 10382exist that set both the sign and low-order bits but do not define the 10383others. 10384 10385@item 10386Otherwise, use a value of @samp{0x80000000}. 10387@end itemize 10388 10389Many machines can produce both the value chosen for 10390@code{STORE_FLAG_VALUE} and its negation in the same number of 10391instructions. On those machines, you should also define a pattern for 10392those cases, e.g., one matching 10393 10394@smallexample 10395(set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C}))) 10396@end smallexample 10397 10398Some machines can also perform @code{and} or @code{plus} operations on 10399condition code values with less instructions than the corresponding 10400@samp{cstore@var{mode}4} insn followed by @code{and} or @code{plus}. On those 10401machines, define the appropriate patterns. Use the names @code{incscc} 10402and @code{decscc}, respectively, for the patterns which perform 10403@code{plus} or @code{minus} operations on condition code values. See 10404@file{rs6000.md} for some examples. The GNU Superoptimizer can be used to 10405find such instruction sequences on other machines. 10406 10407If this macro is not defined, the default value, 1, is used. You need 10408not define @code{STORE_FLAG_VALUE} if the machine has no store-flag 10409instructions, or if the value generated by these instructions is 1. 10410@end defmac 10411 10412@defmac FLOAT_STORE_FLAG_VALUE (@var{mode}) 10413A C expression that gives a nonzero @code{REAL_VALUE_TYPE} value that is 10414returned when comparison operators with floating-point results are true. 10415Define this macro on machines that have comparison operations that return 10416floating-point values. If there are no such operations, do not define 10417this macro. 10418@end defmac 10419 10420@defmac VECTOR_STORE_FLAG_VALUE (@var{mode}) 10421A C expression that gives a rtx representing the nonzero true element 10422for vector comparisons. The returned rtx should be valid for the inner 10423mode of @var{mode} which is guaranteed to be a vector mode. Define 10424this macro on machines that have vector comparison operations that 10425return a vector result. If there are no such operations, do not define 10426this macro. Typically, this macro is defined as @code{const1_rtx} or 10427@code{constm1_rtx}. This macro may return @code{NULL_RTX} to prevent 10428the compiler optimizing such vector comparison operations for the 10429given mode. 10430@end defmac 10431 10432@defmac CLZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value}) 10433@defmacx CTZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value}) 10434A C expression that indicates whether the architecture defines a value 10435for @code{clz} or @code{ctz} with a zero operand. 10436A result of @code{0} indicates the value is undefined. 10437If the value is defined for only the RTL expression, the macro should 10438evaluate to @code{1}; if the value applies also to the corresponding optab 10439entry (which is normally the case if it expands directly into 10440the corresponding RTL), then the macro should evaluate to @code{2}. 10441In the cases where the value is defined, @var{value} should be set to 10442this value. 10443 10444If this macro is not defined, the value of @code{clz} or 10445@code{ctz} at zero is assumed to be undefined. 10446 10447This macro must be defined if the target's expansion for @code{ffs} 10448relies on a particular value to get correct results. Otherwise it 10449is not necessary, though it may be used to optimize some corner cases, and 10450to provide a default expansion for the @code{ffs} optab. 10451 10452Note that regardless of this macro the ``definedness'' of @code{clz} 10453and @code{ctz} at zero do @emph{not} extend to the builtin functions 10454visible to the user. Thus one may be free to adjust the value at will 10455to match the target expansion of these operations without fear of 10456breaking the API@. 10457@end defmac 10458 10459@defmac Pmode 10460An alias for the machine mode for pointers. On most machines, define 10461this to be the integer mode corresponding to the width of a hardware 10462pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines. 10463On some machines you must define this to be one of the partial integer 10464modes, such as @code{PSImode}. 10465 10466The width of @code{Pmode} must be at least as large as the value of 10467@code{POINTER_SIZE}. If it is not equal, you must define the macro 10468@code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended 10469to @code{Pmode}. 10470@end defmac 10471 10472@defmac FUNCTION_MODE 10473An alias for the machine mode used for memory references to functions 10474being called, in @code{call} RTL expressions. On most CISC machines, 10475where an instruction can begin at any byte address, this should be 10476@code{QImode}. On most RISC machines, where all instructions have fixed 10477size and alignment, this should be a mode with the same size and alignment 10478as the machine instruction words - typically @code{SImode} or @code{HImode}. 10479@end defmac 10480 10481@defmac STDC_0_IN_SYSTEM_HEADERS 10482In normal operation, the preprocessor expands @code{__STDC__} to the 10483constant 1, to signify that GCC conforms to ISO Standard C@. On some 10484hosts, like Solaris, the system compiler uses a different convention, 10485where @code{__STDC__} is normally 0, but is 1 if the user specifies 10486strict conformance to the C Standard. 10487 10488Defining @code{STDC_0_IN_SYSTEM_HEADERS} makes GNU CPP follows the host 10489convention when processing system header files, but when processing user 10490files @code{__STDC__} will always expand to 1. 10491@end defmac 10492 10493@hook TARGET_C_PREINCLUDE 10494 10495@defmac NO_IMPLICIT_EXTERN_C 10496Define this macro if the system header files support C++ as well as C@. 10497This macro inhibits the usual method of using system header files in 10498C++, which is to pretend that the file's contents are enclosed in 10499@samp{extern "C" @{@dots{}@}}. 10500@end defmac 10501 10502@findex #pragma 10503@findex pragma 10504@defmac REGISTER_TARGET_PRAGMAS () 10505Define this macro if you want to implement any target-specific pragmas. 10506If defined, it is a C expression which makes a series of calls to 10507@code{c_register_pragma} or @code{c_register_pragma_with_expansion} 10508for each pragma. The macro may also do any 10509setup required for the pragmas. 10510 10511The primary reason to define this macro is to provide compatibility with 10512other compilers for the same target. In general, we discourage 10513definition of target-specific pragmas for GCC@. 10514 10515If the pragma can be implemented by attributes then you should consider 10516defining the target hook @samp{TARGET_INSERT_ATTRIBUTES} as well. 10517 10518Preprocessor macros that appear on pragma lines are not expanded. All 10519@samp{#pragma} directives that do not match any registered pragma are 10520silently ignored, unless the user specifies @option{-Wunknown-pragmas}. 10521@end defmac 10522 10523@deftypefun void c_register_pragma (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *)) 10524@deftypefunx void c_register_pragma_with_expansion (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *)) 10525 10526Each call to @code{c_register_pragma} or 10527@code{c_register_pragma_with_expansion} establishes one pragma. The 10528@var{callback} routine will be called when the preprocessor encounters a 10529pragma of the form 10530 10531@smallexample 10532#pragma [@var{space}] @var{name} @dots{} 10533@end smallexample 10534 10535@var{space} is the case-sensitive namespace of the pragma, or 10536@code{NULL} to put the pragma in the global namespace. The callback 10537routine receives @var{pfile} as its first argument, which can be passed 10538on to cpplib's functions if necessary. You can lex tokens after the 10539@var{name} by calling @code{pragma_lex}. Tokens that are not read by the 10540callback will be silently ignored. The end of the line is indicated by 10541a token of type @code{CPP_EOF}. Macro expansion occurs on the 10542arguments of pragmas registered with 10543@code{c_register_pragma_with_expansion} but not on the arguments of 10544pragmas registered with @code{c_register_pragma}. 10545 10546Note that the use of @code{pragma_lex} is specific to the C and C++ 10547compilers. It will not work in the Java or Fortran compilers, or any 10548other language compilers for that matter. Thus if @code{pragma_lex} is going 10549to be called from target-specific code, it must only be done so when 10550building the C and C++ compilers. This can be done by defining the 10551variables @code{c_target_objs} and @code{cxx_target_objs} in the 10552target entry in the @file{config.gcc} file. These variables should name 10553the target-specific, language-specific object file which contains the 10554code that uses @code{pragma_lex}. Note it will also be necessary to add a 10555rule to the makefile fragment pointed to by @code{tmake_file} that shows 10556how to build this object file. 10557@end deftypefun 10558 10559@defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION 10560Define this macro if macros should be expanded in the 10561arguments of @samp{#pragma pack}. 10562@end defmac 10563 10564@defmac TARGET_DEFAULT_PACK_STRUCT 10565If your target requires a structure packing default other than 0 (meaning 10566the machine default), define this macro to the necessary value (in bytes). 10567This must be a value that would also be valid to use with 10568@samp{#pragma pack()} (that is, a small power of two). 10569@end defmac 10570 10571@defmac DOLLARS_IN_IDENTIFIERS 10572Define this macro to control use of the character @samp{$} in 10573identifier names for the C family of languages. 0 means @samp{$} is 10574not allowed by default; 1 means it is allowed. 1 is the default; 10575there is no need to define this macro in that case. 10576@end defmac 10577 10578@defmac INSN_SETS_ARE_DELAYED (@var{insn}) 10579Define this macro as a C expression that is nonzero if it is safe for the 10580delay slot scheduler to place instructions in the delay slot of @var{insn}, 10581even if they appear to use a resource set or clobbered in @var{insn}. 10582@var{insn} is always a @code{jump_insn} or an @code{insn}; GCC knows that 10583every @code{call_insn} has this behavior. On machines where some @code{insn} 10584or @code{jump_insn} is really a function call and hence has this behavior, 10585you should define this macro. 10586 10587You need not define this macro if it would always return zero. 10588@end defmac 10589 10590@defmac INSN_REFERENCES_ARE_DELAYED (@var{insn}) 10591Define this macro as a C expression that is nonzero if it is safe for the 10592delay slot scheduler to place instructions in the delay slot of @var{insn}, 10593even if they appear to set or clobber a resource referenced in @var{insn}. 10594@var{insn} is always a @code{jump_insn} or an @code{insn}. On machines where 10595some @code{insn} or @code{jump_insn} is really a function call and its operands 10596are registers whose use is actually in the subroutine it calls, you should 10597define this macro. Doing so allows the delay slot scheduler to move 10598instructions which copy arguments into the argument registers into the delay 10599slot of @var{insn}. 10600 10601You need not define this macro if it would always return zero. 10602@end defmac 10603 10604@defmac MULTIPLE_SYMBOL_SPACES 10605Define this macro as a C expression that is nonzero if, in some cases, 10606global symbols from one translation unit may not be bound to undefined 10607symbols in another translation unit without user intervention. For 10608instance, under Microsoft Windows symbols must be explicitly imported 10609from shared libraries (DLLs). 10610 10611You need not define this macro if it would always evaluate to zero. 10612@end defmac 10613 10614@hook TARGET_MD_ASM_CLOBBERS 10615This target hook should add to @var{clobbers} @code{STRING_CST} trees for 10616any hard regs the port wishes to automatically clobber for an asm. 10617It should return the result of the last @code{tree_cons} used to add a 10618clobber. The @var{outputs}, @var{inputs} and @var{clobber} lists are the 10619corresponding parameters to the asm and may be inspected to avoid 10620clobbering a register that is an input or output of the asm. You can use 10621@code{tree_overlaps_hard_reg_set}, declared in @file{tree.h}, to test 10622for overlap with regards to asm-declared registers. 10623@end deftypefn 10624 10625@defmac MATH_LIBRARY 10626Define this macro as a C string constant for the linker argument to link 10627in the system math library, minus the initial @samp{"-l"}, or 10628@samp{""} if the target does not have a 10629separate math library. 10630 10631You need only define this macro if the default of @samp{"m"} is wrong. 10632@end defmac 10633 10634@defmac LIBRARY_PATH_ENV 10635Define this macro as a C string constant for the environment variable that 10636specifies where the linker should look for libraries. 10637 10638You need only define this macro if the default of @samp{"LIBRARY_PATH"} 10639is wrong. 10640@end defmac 10641 10642@defmac TARGET_POSIX_IO 10643Define this macro if the target supports the following POSIX@ file 10644functions, access, mkdir and file locking with fcntl / F_SETLKW@. 10645Defining @code{TARGET_POSIX_IO} will enable the test coverage code 10646to use file locking when exiting a program, which avoids race conditions 10647if the program has forked. It will also create directories at run-time 10648for cross-profiling. 10649@end defmac 10650 10651@defmac MAX_CONDITIONAL_EXECUTE 10652 10653A C expression for the maximum number of instructions to execute via 10654conditional execution instructions instead of a branch. A value of 10655@code{BRANCH_COST}+1 is the default if the machine does not use cc0, and 106561 if it does use cc0. 10657@end defmac 10658 10659@defmac IFCVT_MODIFY_TESTS (@var{ce_info}, @var{true_expr}, @var{false_expr}) 10660Used if the target needs to perform machine-dependent modifications on the 10661conditionals used for turning basic blocks into conditionally executed code. 10662@var{ce_info} points to a data structure, @code{struct ce_if_block}, which 10663contains information about the currently processed blocks. @var{true_expr} 10664and @var{false_expr} are the tests that are used for converting the 10665then-block and the else-block, respectively. Set either @var{true_expr} or 10666@var{false_expr} to a null pointer if the tests cannot be converted. 10667@end defmac 10668 10669@defmac IFCVT_MODIFY_MULTIPLE_TESTS (@var{ce_info}, @var{bb}, @var{true_expr}, @var{false_expr}) 10670Like @code{IFCVT_MODIFY_TESTS}, but used when converting more complicated 10671if-statements into conditions combined by @code{and} and @code{or} operations. 10672@var{bb} contains the basic block that contains the test that is currently 10673being processed and about to be turned into a condition. 10674@end defmac 10675 10676@defmac IFCVT_MODIFY_INSN (@var{ce_info}, @var{pattern}, @var{insn}) 10677A C expression to modify the @var{PATTERN} of an @var{INSN} that is to 10678be converted to conditional execution format. @var{ce_info} points to 10679a data structure, @code{struct ce_if_block}, which contains information 10680about the currently processed blocks. 10681@end defmac 10682 10683@defmac IFCVT_MODIFY_FINAL (@var{ce_info}) 10684A C expression to perform any final machine dependent modifications in 10685converting code to conditional execution. The involved basic blocks 10686can be found in the @code{struct ce_if_block} structure that is pointed 10687to by @var{ce_info}. 10688@end defmac 10689 10690@defmac IFCVT_MODIFY_CANCEL (@var{ce_info}) 10691A C expression to cancel any machine dependent modifications in 10692converting code to conditional execution. The involved basic blocks 10693can be found in the @code{struct ce_if_block} structure that is pointed 10694to by @var{ce_info}. 10695@end defmac 10696 10697@defmac IFCVT_MACHDEP_INIT (@var{ce_info}) 10698A C expression to initialize any machine specific data for if-conversion 10699of the if-block in the @code{struct ce_if_block} structure that is pointed 10700to by @var{ce_info}. 10701@end defmac 10702 10703@hook TARGET_MACHINE_DEPENDENT_REORG 10704If non-null, this hook performs a target-specific pass over the 10705instruction stream. The compiler will run it at all optimization levels, 10706just before the point at which it normally does delayed-branch scheduling. 10707 10708The exact purpose of the hook varies from target to target. Some use 10709it to do transformations that are necessary for correctness, such as 10710laying out in-function constant pools or avoiding hardware hazards. 10711Others use it as an opportunity to do some machine-dependent optimizations. 10712 10713You need not implement the hook if it has nothing to do. The default 10714definition is null. 10715@end deftypefn 10716 10717@hook TARGET_INIT_BUILTINS 10718Define this hook if you have any machine-specific built-in functions 10719that need to be defined. It should be a function that performs the 10720necessary setup. 10721 10722Machine specific built-in functions can be useful to expand special machine 10723instructions that would otherwise not normally be generated because 10724they have no equivalent in the source language (for example, SIMD vector 10725instructions or prefetch instructions). 10726 10727To create a built-in function, call the function 10728@code{lang_hooks.builtin_function} 10729which is defined by the language front end. You can use any type nodes set 10730up by @code{build_common_tree_nodes}; 10731only language front ends that use those two functions will call 10732@samp{TARGET_INIT_BUILTINS}. 10733@end deftypefn 10734 10735@hook TARGET_BUILTIN_DECL 10736Define this hook if you have any machine-specific built-in functions 10737that need to be defined. It should be a function that returns the 10738builtin function declaration for the builtin function code @var{code}. 10739If there is no such builtin and it cannot be initialized at this time 10740if @var{initialize_p} is true the function should return @code{NULL_TREE}. 10741If @var{code} is out of range the function should return 10742@code{error_mark_node}. 10743@end deftypefn 10744 10745@hook TARGET_EXPAND_BUILTIN 10746 10747Expand a call to a machine specific built-in function that was set up by 10748@samp{TARGET_INIT_BUILTINS}. @var{exp} is the expression for the 10749function call; the result should go to @var{target} if that is 10750convenient, and have mode @var{mode} if that is convenient. 10751@var{subtarget} may be used as the target for computing one of 10752@var{exp}'s operands. @var{ignore} is nonzero if the value is to be 10753ignored. This function should return the result of the call to the 10754built-in function. 10755@end deftypefn 10756 10757@hook TARGET_RESOLVE_OVERLOADED_BUILTIN 10758Select a replacement for a machine specific built-in function that 10759was set up by @samp{TARGET_INIT_BUILTINS}. This is done 10760@emph{before} regular type checking, and so allows the target to 10761implement a crude form of function overloading. @var{fndecl} is the 10762declaration of the built-in function. @var{arglist} is the list of 10763arguments passed to the built-in function. The result is a 10764complete expression that implements the operation, usually 10765another @code{CALL_EXPR}. 10766@var{arglist} really has type @samp{VEC(tree,gc)*} 10767@end deftypefn 10768 10769@hook TARGET_FOLD_BUILTIN 10770Fold a call to a machine specific built-in function that was set up by 10771@samp{TARGET_INIT_BUILTINS}. @var{fndecl} is the declaration of the 10772built-in function. @var{n_args} is the number of arguments passed to 10773the function; the arguments themselves are pointed to by @var{argp}. 10774The result is another tree containing a simplified expression for the 10775call's result. If @var{ignore} is true the value will be ignored. 10776@end deftypefn 10777 10778@hook TARGET_COMPARE_VERSION_PRIORITY 10779This hook is used to compare the target attributes in two functions to 10780determine which function's features get higher priority. This is used 10781during function multi-versioning to figure out the order in which two 10782versions must be dispatched. A function version with a higher priority 10783is checked for dispatching earlier. @var{decl1} and @var{decl2} are 10784 the two function decls that will be compared. 10785@end deftypefn 10786 10787@hook TARGET_GET_FUNCTION_VERSIONS_DISPATCHER 10788This hook is used to get the dispatcher function for a set of function 10789versions. The dispatcher function is called to invoke the right function 10790version at run-time. @var{decl} is one version from a set of semantically 10791identical versions. 10792@end deftypefn 10793 10794@hook TARGET_GENERATE_VERSION_DISPATCHER_BODY 10795This hook is used to generate the dispatcher logic to invoke the right 10796function version at run-time for a given set of function versions. 10797@var{arg} points to the callgraph node of the dispatcher function whose 10798body must be generated. 10799@end deftypefn 10800 10801@hook TARGET_INVALID_WITHIN_DOLOOP 10802 10803Take an instruction in @var{insn} and return NULL if it is valid within a 10804low-overhead loop, otherwise return a string explaining why doloop 10805could not be applied. 10806 10807Many targets use special registers for low-overhead looping. For any 10808instruction that clobbers these this function should return a string indicating 10809the reason why the doloop could not be applied. 10810By default, the RTL loop optimizer does not use a present doloop pattern for 10811loops containing function calls or branch on table instructions. 10812@end deftypefn 10813 10814@hook TARGET_LEGITIMATE_COMBINED_INSN 10815 10816@defmac MD_CAN_REDIRECT_BRANCH (@var{branch1}, @var{branch2}) 10817 10818Take a branch insn in @var{branch1} and another in @var{branch2}. 10819Return true if redirecting @var{branch1} to the destination of 10820@var{branch2} is possible. 10821 10822On some targets, branches may have a limited range. Optimizing the 10823filling of delay slots can result in branches being redirected, and this 10824may in turn cause a branch offset to overflow. 10825@end defmac 10826 10827@hook TARGET_CAN_FOLLOW_JUMP 10828 10829@hook TARGET_COMMUTATIVE_P 10830This target hook returns @code{true} if @var{x} is considered to be commutative. 10831Usually, this is just COMMUTATIVE_P (@var{x}), but the HP PA doesn't consider 10832PLUS to be commutative inside a MEM@. @var{outer_code} is the rtx code 10833of the enclosing rtl, if known, otherwise it is UNKNOWN. 10834@end deftypefn 10835 10836@hook TARGET_ALLOCATE_INITIAL_VALUE 10837 10838When the initial value of a hard register has been copied in a pseudo 10839register, it is often not necessary to actually allocate another register 10840to this pseudo register, because the original hard register or a stack slot 10841it has been saved into can be used. @code{TARGET_ALLOCATE_INITIAL_VALUE} 10842is called at the start of register allocation once for each hard register 10843that had its initial value copied by using 10844@code{get_func_hard_reg_initial_val} or @code{get_hard_reg_initial_val}. 10845Possible values are @code{NULL_RTX}, if you don't want 10846to do any special allocation, a @code{REG} rtx---that would typically be 10847the hard register itself, if it is known not to be clobbered---or a 10848@code{MEM}. 10849If you are returning a @code{MEM}, this is only a hint for the allocator; 10850it might decide to use another register anyways. 10851You may use @code{current_function_is_leaf} or 10852@code{REG_N_SETS} in the hook to determine if the hard 10853register in question will not be clobbered. 10854The default value of this hook is @code{NULL}, which disables any special 10855allocation. 10856@end deftypefn 10857 10858@hook TARGET_UNSPEC_MAY_TRAP_P 10859This target hook returns nonzero if @var{x}, an @code{unspec} or 10860@code{unspec_volatile} operation, might cause a trap. Targets can use 10861this hook to enhance precision of analysis for @code{unspec} and 10862@code{unspec_volatile} operations. You may call @code{may_trap_p_1} 10863to analyze inner elements of @var{x} in which case @var{flags} should be 10864passed along. 10865@end deftypefn 10866 10867@hook TARGET_SET_CURRENT_FUNCTION 10868The compiler invokes this hook whenever it changes its current function 10869context (@code{cfun}). You can define this function if 10870the back end needs to perform any initialization or reset actions on a 10871per-function basis. For example, it may be used to implement function 10872attributes that affect register usage or code generation patterns. 10873The argument @var{decl} is the declaration for the new function context, 10874and may be null to indicate that the compiler has left a function context 10875and is returning to processing at the top level. 10876The default hook function does nothing. 10877 10878GCC sets @code{cfun} to a dummy function context during initialization of 10879some parts of the back end. The hook function is not invoked in this 10880situation; you need not worry about the hook being invoked recursively, 10881or when the back end is in a partially-initialized state. 10882@code{cfun} might be @code{NULL} to indicate processing at top level, 10883outside of any function scope. 10884@end deftypefn 10885 10886@defmac TARGET_OBJECT_SUFFIX 10887Define this macro to be a C string representing the suffix for object 10888files on your target machine. If you do not define this macro, GCC will 10889use @samp{.o} as the suffix for object files. 10890@end defmac 10891 10892@defmac TARGET_EXECUTABLE_SUFFIX 10893Define this macro to be a C string representing the suffix to be 10894automatically added to executable files on your target machine. If you 10895do not define this macro, GCC will use the null string as the suffix for 10896executable files. 10897@end defmac 10898 10899@defmac COLLECT_EXPORT_LIST 10900If defined, @code{collect2} will scan the individual object files 10901specified on its command line and create an export list for the linker. 10902Define this macro for systems like AIX, where the linker discards 10903object files that are not referenced from @code{main} and uses export 10904lists. 10905@end defmac 10906 10907@defmac MODIFY_JNI_METHOD_CALL (@var{mdecl}) 10908Define this macro to a C expression representing a variant of the 10909method call @var{mdecl}, if Java Native Interface (JNI) methods 10910must be invoked differently from other methods on your target. 10911For example, on 32-bit Microsoft Windows, JNI methods must be invoked using 10912the @code{stdcall} calling convention and this macro is then 10913defined as this expression: 10914 10915@smallexample 10916build_type_attribute_variant (@var{mdecl}, 10917 build_tree_list 10918 (get_identifier ("stdcall"), 10919 NULL)) 10920@end smallexample 10921@end defmac 10922 10923@hook TARGET_CANNOT_MODIFY_JUMPS_P 10924This target hook returns @code{true} past the point in which new jump 10925instructions could be created. On machines that require a register for 10926every jump such as the SHmedia ISA of SH5, this point would typically be 10927reload, so this target hook should be defined to a function such as: 10928 10929@smallexample 10930static bool 10931cannot_modify_jumps_past_reload_p () 10932@{ 10933 return (reload_completed || reload_in_progress); 10934@} 10935@end smallexample 10936@end deftypefn 10937 10938@hook TARGET_BRANCH_TARGET_REGISTER_CLASS 10939This target hook returns a register class for which branch target register 10940optimizations should be applied. All registers in this class should be 10941usable interchangeably. After reload, registers in this class will be 10942re-allocated and loads will be hoisted out of loops and be subjected 10943to inter-block scheduling. 10944@end deftypefn 10945 10946@hook TARGET_BRANCH_TARGET_REGISTER_CALLEE_SAVED 10947Branch target register optimization will by default exclude callee-saved 10948registers 10949that are not already live during the current function; if this target hook 10950returns true, they will be included. The target code must than make sure 10951that all target registers in the class returned by 10952@samp{TARGET_BRANCH_TARGET_REGISTER_CLASS} that might need saving are 10953saved. @var{after_prologue_epilogue_gen} indicates if prologues and 10954epilogues have already been generated. Note, even if you only return 10955true when @var{after_prologue_epilogue_gen} is false, you still are likely 10956to have to make special provisions in @code{INITIAL_ELIMINATION_OFFSET} 10957to reserve space for caller-saved target registers. 10958@end deftypefn 10959 10960@hook TARGET_HAVE_CONDITIONAL_EXECUTION 10961This target hook returns true if the target supports conditional execution. 10962This target hook is required only when the target has several different 10963modes and they have different conditional execution capability, such as ARM. 10964@end deftypefn 10965 10966@hook TARGET_LOOP_UNROLL_ADJUST 10967This target hook returns a new value for the number of times @var{loop} 10968should be unrolled. The parameter @var{nunroll} is the number of times 10969the loop is to be unrolled. The parameter @var{loop} is a pointer to 10970the loop, which is going to be checked for unrolling. This target hook 10971is required only when the target has special constraints like maximum 10972number of memory accesses. 10973@end deftypefn 10974 10975@defmac POWI_MAX_MULTS 10976If defined, this macro is interpreted as a signed integer C expression 10977that specifies the maximum number of floating point multiplications 10978that should be emitted when expanding exponentiation by an integer 10979constant inline. When this value is defined, exponentiation requiring 10980more than this number of multiplications is implemented by calling the 10981system library's @code{pow}, @code{powf} or @code{powl} routines. 10982The default value places no upper bound on the multiplication count. 10983@end defmac 10984 10985@deftypefn Macro void TARGET_EXTRA_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc}) 10986This target hook should register any extra include files for the 10987target. The parameter @var{stdinc} indicates if normal include files 10988are present. The parameter @var{sysroot} is the system root directory. 10989The parameter @var{iprefix} is the prefix for the gcc directory. 10990@end deftypefn 10991 10992@deftypefn Macro void TARGET_EXTRA_PRE_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc}) 10993This target hook should register any extra include files for the 10994target before any standard headers. The parameter @var{stdinc} 10995indicates if normal include files are present. The parameter 10996@var{sysroot} is the system root directory. The parameter 10997@var{iprefix} is the prefix for the gcc directory. 10998@end deftypefn 10999 11000@deftypefn Macro void TARGET_OPTF (char *@var{path}) 11001This target hook should register special include paths for the target. 11002The parameter @var{path} is the include to register. On Darwin 11003systems, this is used for Framework includes, which have semantics 11004that are different from @option{-I}. 11005@end deftypefn 11006 11007@defmac bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl}) 11008This target macro returns @code{true} if it is safe to use a local alias 11009for a virtual function @var{fndecl} when constructing thunks, 11010@code{false} otherwise. By default, the macro returns @code{true} for all 11011functions, if a target supports aliases (i.e.@: defines 11012@code{ASM_OUTPUT_DEF}), @code{false} otherwise, 11013@end defmac 11014 11015@defmac TARGET_FORMAT_TYPES 11016If defined, this macro is the name of a global variable containing 11017target-specific format checking information for the @option{-Wformat} 11018option. The default is to have no target-specific format checks. 11019@end defmac 11020 11021@defmac TARGET_N_FORMAT_TYPES 11022If defined, this macro is the number of entries in 11023@code{TARGET_FORMAT_TYPES}. 11024@end defmac 11025 11026@defmac TARGET_OVERRIDES_FORMAT_ATTRIBUTES 11027If defined, this macro is the name of a global variable containing 11028target-specific format overrides for the @option{-Wformat} option. The 11029default is to have no target-specific format overrides. If defined, 11030@code{TARGET_FORMAT_TYPES} must be defined, too. 11031@end defmac 11032 11033@defmac TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT 11034If defined, this macro specifies the number of entries in 11035@code{TARGET_OVERRIDES_FORMAT_ATTRIBUTES}. 11036@end defmac 11037 11038@defmac TARGET_OVERRIDES_FORMAT_INIT 11039If defined, this macro specifies the optional initialization 11040routine for target specific customizations of the system printf 11041and scanf formatter settings. 11042@end defmac 11043 11044@hook TARGET_RELAXED_ORDERING 11045If set to @code{true}, means that the target's memory model does not 11046guarantee that loads which do not depend on one another will access 11047main memory in the order of the instruction stream; if ordering is 11048important, an explicit memory barrier must be used. This is true of 11049many recent processors which implement a policy of ``relaxed,'' 11050``weak,'' or ``release'' memory consistency, such as Alpha, PowerPC, 11051and ia64. The default is @code{false}. 11052@end deftypevr 11053 11054@hook TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN 11055If defined, this macro returns the diagnostic message when it is 11056illegal to pass argument @var{val} to function @var{funcdecl} 11057with prototype @var{typelist}. 11058@end deftypefn 11059 11060@hook TARGET_INVALID_CONVERSION 11061If defined, this macro returns the diagnostic message when it is 11062invalid to convert from @var{fromtype} to @var{totype}, or @code{NULL} 11063if validity should be determined by the front end. 11064@end deftypefn 11065 11066@hook TARGET_INVALID_UNARY_OP 11067If defined, this macro returns the diagnostic message when it is 11068invalid to apply operation @var{op} (where unary plus is denoted by 11069@code{CONVERT_EXPR}) to an operand of type @var{type}, or @code{NULL} 11070if validity should be determined by the front end. 11071@end deftypefn 11072 11073@hook TARGET_INVALID_BINARY_OP 11074If defined, this macro returns the diagnostic message when it is 11075invalid to apply operation @var{op} to operands of types @var{type1} 11076and @var{type2}, or @code{NULL} if validity should be determined by 11077the front end. 11078@end deftypefn 11079 11080@hook TARGET_INVALID_PARAMETER_TYPE 11081If defined, this macro returns the diagnostic message when it is 11082invalid for functions to include parameters of type @var{type}, 11083or @code{NULL} if validity should be determined by 11084the front end. This is currently used only by the C and C++ front ends. 11085@end deftypefn 11086 11087@hook TARGET_INVALID_RETURN_TYPE 11088If defined, this macro returns the diagnostic message when it is 11089invalid for functions to have return type @var{type}, 11090or @code{NULL} if validity should be determined by 11091the front end. This is currently used only by the C and C++ front ends. 11092@end deftypefn 11093 11094@hook TARGET_PROMOTED_TYPE 11095If defined, this target hook returns the type to which values of 11096@var{type} should be promoted when they appear in expressions, 11097analogous to the integer promotions, or @code{NULL_TREE} to use the 11098front end's normal promotion rules. This hook is useful when there are 11099target-specific types with special promotion rules. 11100This is currently used only by the C and C++ front ends. 11101@end deftypefn 11102 11103@hook TARGET_CONVERT_TO_TYPE 11104If defined, this hook returns the result of converting @var{expr} to 11105@var{type}. It should return the converted expression, 11106or @code{NULL_TREE} to apply the front end's normal conversion rules. 11107This hook is useful when there are target-specific types with special 11108conversion rules. 11109This is currently used only by the C and C++ front ends. 11110@end deftypefn 11111 11112@defmac TARGET_USE_JCR_SECTION 11113This macro determines whether to use the JCR section to register Java 11114classes. By default, TARGET_USE_JCR_SECTION is defined to 1 if both 11115SUPPORTS_WEAK and TARGET_HAVE_NAMED_SECTIONS are true, else 0. 11116@end defmac 11117 11118@defmac OBJC_JBLEN 11119This macro determines the size of the objective C jump buffer for the 11120NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value. 11121@end defmac 11122 11123@defmac LIBGCC2_UNWIND_ATTRIBUTE 11124Define this macro if any target-specific attributes need to be attached 11125to the functions in @file{libgcc} that provide low-level support for 11126call stack unwinding. It is used in declarations in @file{unwind-generic.h} 11127and the associated definitions of those functions. 11128@end defmac 11129 11130@hook TARGET_UPDATE_STACK_BOUNDARY 11131Define this macro to update the current function stack boundary if 11132necessary. 11133@end deftypefn 11134 11135@hook TARGET_GET_DRAP_RTX 11136This hook should return an rtx for Dynamic Realign Argument Pointer (DRAP) if a 11137different argument pointer register is needed to access the function's 11138argument list due to stack realignment. Return @code{NULL} if no DRAP 11139is needed. 11140@end deftypefn 11141 11142@hook TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS 11143When optimization is disabled, this hook indicates whether or not 11144arguments should be allocated to stack slots. Normally, GCC allocates 11145stacks slots for arguments when not optimizing in order to make 11146debugging easier. However, when a function is declared with 11147@code{__attribute__((naked))}, there is no stack frame, and the compiler 11148cannot safely move arguments from the registers in which they are passed 11149to the stack. Therefore, this hook should return true in general, but 11150false for naked functions. The default implementation always returns true. 11151@end deftypefn 11152 11153@hook TARGET_CONST_ANCHOR 11154On some architectures it can take multiple instructions to synthesize 11155a constant. If there is another constant already in a register that 11156is close enough in value then it is preferable that the new constant 11157is computed from this register using immediate addition or 11158subtraction. We accomplish this through CSE. Besides the value of 11159the constant we also add a lower and an upper constant anchor to the 11160available expressions. These are then queried when encountering new 11161constants. The anchors are computed by rounding the constant up and 11162down to a multiple of the value of @code{TARGET_CONST_ANCHOR}. 11163@code{TARGET_CONST_ANCHOR} should be the maximum positive value 11164accepted by immediate-add plus one. We currently assume that the 11165value of @code{TARGET_CONST_ANCHOR} is a power of 2. For example, on 11166MIPS, where add-immediate takes a 16-bit signed value, 11167@code{TARGET_CONST_ANCHOR} is set to @samp{0x8000}. The default value 11168is zero, which disables this optimization. 11169@end deftypevr 11170 11171@hook TARGET_ASAN_SHADOW_OFFSET 11172 11173@hook TARGET_MEMMODEL_CHECK 11174Validate target specific memory model mask bits. When NULL no target specific 11175memory model bits are allowed. 11176@end deftypefn 11177 11178@hook TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 11179