1@c Copyright (C) 1988-2020 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* Stack and Calling:: Defining which way the stack grows and by how much. 36* Varargs:: Defining the varargs macros. 37* Trampolines:: Code set up at run time to enter a nested function. 38* Library Calls:: Controlling how library routines are implicitly called. 39* Addressing Modes:: Defining addressing modes valid for memory operands. 40* Anchored Addresses:: Defining how @option{-fsection-anchors} should work. 41* Condition Code:: Defining how insns update the condition code. 42* Costs:: Defining relative costs of different operations. 43* Scheduling:: Adjusting the behavior of the instruction scheduler. 44* Sections:: Dividing storage into text, data, and other sections. 45* PIC:: Macros for position independent code. 46* Assembler Format:: Defining how to write insns and pseudo-ops to output. 47* Debugging Info:: Defining the format of debugging output. 48* Floating Point:: Handling floating point for cross-compilers. 49* Mode Switching:: Insertion of mode-switching instructions. 50* Target Attributes:: Defining target-specific uses of @code{__attribute__}. 51* Emulated TLS:: Emulated TLS support. 52* MIPS Coprocessors:: MIPS coprocessor support and how to customize it. 53* PCH Target:: Validity checking for precompiled headers. 54* C++ ABI:: Controlling C++ ABI changes. 55* D Language and ABI:: Controlling D 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 110Similarly, there is a @code{targetdm} variable for hooks that are 111specific to the D language front end, documented as ``D Target Hook''. 112This is declared in @file{d/d-target.h}, the initializer 113@code{TARGETDM_INITIALIZER} in @file{d/d-target-def.h}. If targets 114initialize @code{targetdm} themselves, they should set 115@code{target_has_targetdm=yes} in @file{config.gcc}; otherwise a default 116definition is used. 117 118@node Driver 119@section Controlling the Compilation Driver, @file{gcc} 120@cindex driver 121@cindex controlling the compilation driver 122 123@c prevent bad page break with this line 124You can control the compilation driver. 125 126@defmac DRIVER_SELF_SPECS 127A list of specs for the driver itself. It should be a suitable 128initializer for an array of strings, with no surrounding braces. 129 130The driver applies these specs to its own command line between loading 131default @file{specs} files (but not command-line specified ones) and 132choosing the multilib directory or running any subcommands. It 133applies them in the order given, so each spec can depend on the 134options added by earlier ones. It is also possible to remove options 135using @samp{%<@var{option}} in the usual way. 136 137This macro can be useful when a port has several interdependent target 138options. It provides a way of standardizing the command line so 139that the other specs are easier to write. 140 141Do not define this macro if it does not need to do anything. 142@end defmac 143 144@defmac OPTION_DEFAULT_SPECS 145A list of specs used to support configure-time default options (i.e.@: 146@option{--with} options) in the driver. It should be a suitable initializer 147for an array of structures, each containing two strings, without the 148outermost pair of surrounding braces. 149 150The first item in the pair is the name of the default. This must match 151the code in @file{config.gcc} for the target. The second item is a spec 152to apply if a default with this name was specified. The string 153@samp{%(VALUE)} in the spec will be replaced by the value of the default 154everywhere it occurs. 155 156The driver will apply these specs to its own command line between loading 157default @file{specs} files and processing @code{DRIVER_SELF_SPECS}, using 158the same mechanism as @code{DRIVER_SELF_SPECS}. 159 160Do not define this macro if it does not need to do anything. 161@end defmac 162 163@defmac CPP_SPEC 164A C string constant that tells the GCC driver program options to 165pass to CPP@. It can also specify how to translate options you 166give to GCC into options for GCC to pass to the CPP@. 167 168Do not define this macro if it does not need to do anything. 169@end defmac 170 171@defmac CPLUSPLUS_CPP_SPEC 172This macro is just like @code{CPP_SPEC}, but is used for C++, rather 173than C@. If you do not define this macro, then the value of 174@code{CPP_SPEC} (if any) will be used instead. 175@end defmac 176 177@defmac CC1_SPEC 178A C string constant that tells the GCC driver program options to 179pass to @code{cc1}, @code{cc1plus}, @code{f771}, and the other language 180front ends. 181It can also specify how to translate options you give to GCC into options 182for GCC to pass to front ends. 183 184Do not define this macro if it does not need to do anything. 185@end defmac 186 187@defmac CC1PLUS_SPEC 188A C string constant that tells the GCC driver program options to 189pass to @code{cc1plus}. It can also specify how to translate options you 190give to GCC into options for GCC to pass to the @code{cc1plus}. 191 192Do not define this macro if it does not need to do anything. 193Note that everything defined in CC1_SPEC is already passed to 194@code{cc1plus} so there is no need to duplicate the contents of 195CC1_SPEC in CC1PLUS_SPEC@. 196@end defmac 197 198@defmac ASM_SPEC 199A C string constant that tells the GCC driver program options to 200pass to the assembler. It can also specify how to translate options 201you give to GCC into options for GCC to pass to the assembler. 202See the file @file{sun3.h} for an example of this. 203 204Do not define this macro if it does not need to do anything. 205@end defmac 206 207@defmac ASM_FINAL_SPEC 208A C string constant that tells the GCC driver program how to 209run any programs which cleanup after the normal assembler. 210Normally, this is not needed. See the file @file{mips.h} for 211an example of this. 212 213Do not define this macro if it does not need to do anything. 214@end defmac 215 216@defmac AS_NEEDS_DASH_FOR_PIPED_INPUT 217Define this macro, with no value, if the driver should give the assembler 218an argument consisting of a single dash, @option{-}, to instruct it to 219read from its standard input (which will be a pipe connected to the 220output of the compiler proper). This argument is given after any 221@option{-o} option specifying the name of the output file. 222 223If you do not define this macro, the assembler is assumed to read its 224standard input if given no non-option arguments. If your assembler 225cannot read standard input at all, use a @samp{%@{pipe:%e@}} construct; 226see @file{mips.h} for instance. 227@end defmac 228 229@defmac LINK_SPEC 230A C string constant that tells the GCC driver program options to 231pass to the linker. It can also specify how to translate options you 232give to GCC into options for GCC to pass to the linker. 233 234Do not define this macro if it does not need to do anything. 235@end defmac 236 237@defmac LIB_SPEC 238Another C string constant used much like @code{LINK_SPEC}. The difference 239between the two is that @code{LIB_SPEC} is used at the end of the 240command given to the linker. 241 242If this macro is not defined, a default is provided that 243loads the standard C library from the usual place. See @file{gcc.c}. 244@end defmac 245 246@defmac LIBGCC_SPEC 247Another C string constant that tells the GCC driver program 248how and when to place a reference to @file{libgcc.a} into the 249linker command line. This constant is placed both before and after 250the value of @code{LIB_SPEC}. 251 252If this macro is not defined, the GCC driver provides a default that 253passes the string @option{-lgcc} to the linker. 254@end defmac 255 256@defmac REAL_LIBGCC_SPEC 257By default, if @code{ENABLE_SHARED_LIBGCC} is defined, the 258@code{LIBGCC_SPEC} is not directly used by the driver program but is 259instead modified to refer to different versions of @file{libgcc.a} 260depending on the values of the command line flags @option{-static}, 261@option{-shared}, @option{-static-libgcc}, and @option{-shared-libgcc}. On 262targets where these modifications are inappropriate, define 263@code{REAL_LIBGCC_SPEC} instead. @code{REAL_LIBGCC_SPEC} tells the 264driver how to place a reference to @file{libgcc} on the link command 265line, but, unlike @code{LIBGCC_SPEC}, it is used unmodified. 266@end defmac 267 268@defmac USE_LD_AS_NEEDED 269A macro that controls the modifications to @code{LIBGCC_SPEC} 270mentioned in @code{REAL_LIBGCC_SPEC}. If nonzero, a spec will be 271generated that uses @option{--as-needed} or equivalent options and the 272shared @file{libgcc} in place of the 273static exception handler library, when linking without any of 274@code{-static}, @code{-static-libgcc}, or @code{-shared-libgcc}. 275@end defmac 276 277@defmac LINK_EH_SPEC 278If defined, this C string constant is added to @code{LINK_SPEC}. 279When @code{USE_LD_AS_NEEDED} is zero or undefined, it also affects 280the modifications to @code{LIBGCC_SPEC} mentioned in 281@code{REAL_LIBGCC_SPEC}. 282@end defmac 283 284@defmac STARTFILE_SPEC 285Another C string constant used much like @code{LINK_SPEC}. The 286difference between the two is that @code{STARTFILE_SPEC} is used at 287the very beginning of the command given to the linker. 288 289If this macro is not defined, a default is provided that loads the 290standard C startup file from the usual place. See @file{gcc.c}. 291@end defmac 292 293@defmac ENDFILE_SPEC 294Another C string constant used much like @code{LINK_SPEC}. The 295difference between the two is that @code{ENDFILE_SPEC} is used at 296the very end of the command given to the linker. 297 298Do not define this macro if it does not need to do anything. 299@end defmac 300 301@defmac THREAD_MODEL_SPEC 302GCC @code{-v} will print the thread model GCC was configured to use. 303However, this doesn't work on platforms that are multilibbed on thread 304models, such as AIX 4.3. On such platforms, define 305@code{THREAD_MODEL_SPEC} such that it evaluates to a string without 306blanks that names one of the recognized thread models. @code{%*}, the 307default value of this macro, will expand to the value of 308@code{thread_file} set in @file{config.gcc}. 309@end defmac 310 311@defmac SYSROOT_SUFFIX_SPEC 312Define this macro to add a suffix to the target sysroot when GCC is 313configured with a sysroot. This will cause GCC to search for usr/lib, 314et al, within sysroot+suffix. 315@end defmac 316 317@defmac SYSROOT_HEADERS_SUFFIX_SPEC 318Define this macro to add a headers_suffix to the target sysroot when 319GCC is configured with a sysroot. This will cause GCC to pass the 320updated sysroot+headers_suffix to CPP, causing it to search for 321usr/include, et al, within sysroot+headers_suffix. 322@end defmac 323 324@defmac EXTRA_SPECS 325Define this macro to provide additional specifications to put in the 326@file{specs} file that can be used in various specifications like 327@code{CC1_SPEC}. 328 329The definition should be an initializer for an array of structures, 330containing a string constant, that defines the specification name, and a 331string constant that provides the specification. 332 333Do not define this macro if it does not need to do anything. 334 335@code{EXTRA_SPECS} is useful when an architecture contains several 336related targets, which have various @code{@dots{}_SPECS} which are similar 337to each other, and the maintainer would like one central place to keep 338these definitions. 339 340For example, the PowerPC System V.4 targets use @code{EXTRA_SPECS} to 341define either @code{_CALL_SYSV} when the System V calling sequence is 342used or @code{_CALL_AIX} when the older AIX-based calling sequence is 343used. 344 345The @file{config/rs6000/rs6000.h} target file defines: 346 347@smallexample 348#define EXTRA_SPECS \ 349 @{ "cpp_sysv_default", CPP_SYSV_DEFAULT @}, 350 351#define CPP_SYS_DEFAULT "" 352@end smallexample 353 354The @file{config/rs6000/sysv.h} target file defines: 355@smallexample 356#undef CPP_SPEC 357#define CPP_SPEC \ 358"%@{posix: -D_POSIX_SOURCE @} \ 359%@{mcall-sysv: -D_CALL_SYSV @} \ 360%@{!mcall-sysv: %(cpp_sysv_default) @} \ 361%@{msoft-float: -D_SOFT_FLOAT@} %@{mcpu=403: -D_SOFT_FLOAT@}" 362 363#undef CPP_SYSV_DEFAULT 364#define CPP_SYSV_DEFAULT "-D_CALL_SYSV" 365@end smallexample 366 367while the @file{config/rs6000/eabiaix.h} target file defines 368@code{CPP_SYSV_DEFAULT} as: 369 370@smallexample 371#undef CPP_SYSV_DEFAULT 372#define CPP_SYSV_DEFAULT "-D_CALL_AIX" 373@end smallexample 374@end defmac 375 376@defmac LINK_LIBGCC_SPECIAL_1 377Define this macro if the driver program should find the library 378@file{libgcc.a}. If you do not define this macro, the driver program will pass 379the argument @option{-lgcc} to tell the linker to do the search. 380@end defmac 381 382@defmac LINK_GCC_C_SEQUENCE_SPEC 383The sequence in which libgcc and libc are specified to the linker. 384By default this is @code{%G %L %G}. 385@end defmac 386 387@defmac POST_LINK_SPEC 388Define this macro to add additional steps to be executed after linker. 389The default value of this macro is empty string. 390@end defmac 391 392@defmac LINK_COMMAND_SPEC 393A C string constant giving the complete command line need to execute the 394linker. When you do this, you will need to update your port each time a 395change is made to the link command line within @file{gcc.c}. Therefore, 396define this macro only if you need to completely redefine the command 397line for invoking the linker and there is no other way to accomplish 398the effect you need. Overriding this macro may be avoidable by overriding 399@code{LINK_GCC_C_SEQUENCE_SPEC} instead. 400@end defmac 401 402@hook TARGET_ALWAYS_STRIP_DOTDOT 403 404@defmac MULTILIB_DEFAULTS 405Define this macro as a C expression for the initializer of an array of 406string to tell the driver program which options are defaults for this 407target and thus do not need to be handled specially when using 408@code{MULTILIB_OPTIONS}. 409 410Do not define this macro if @code{MULTILIB_OPTIONS} is not defined in 411the target makefile fragment or if none of the options listed in 412@code{MULTILIB_OPTIONS} are set by default. 413@xref{Target Fragment}. 414@end defmac 415 416@defmac RELATIVE_PREFIX_NOT_LINKDIR 417Define this macro to tell @command{gcc} that it should only translate 418a @option{-B} prefix into a @option{-L} linker option if the prefix 419indicates an absolute file name. 420@end defmac 421 422@defmac MD_EXEC_PREFIX 423If defined, this macro is an additional prefix to try after 424@code{STANDARD_EXEC_PREFIX}. @code{MD_EXEC_PREFIX} is not searched 425when the compiler is built as a cross 426compiler. If you define @code{MD_EXEC_PREFIX}, then be sure to add it 427to the list of directories used to find the assembler in @file{configure.ac}. 428@end defmac 429 430@defmac STANDARD_STARTFILE_PREFIX 431Define this macro as a C string constant if you wish to override the 432standard choice of @code{libdir} as the default prefix to 433try when searching for startup files such as @file{crt0.o}. 434@code{STANDARD_STARTFILE_PREFIX} is not searched when the compiler 435is built as a cross compiler. 436@end defmac 437 438@defmac STANDARD_STARTFILE_PREFIX_1 439Define this macro as a C string constant if you wish to override the 440standard choice of @code{/lib} as a prefix to try after the default prefix 441when searching for startup files such as @file{crt0.o}. 442@code{STANDARD_STARTFILE_PREFIX_1} is not searched when the compiler 443is built as a cross compiler. 444@end defmac 445 446@defmac STANDARD_STARTFILE_PREFIX_2 447Define this macro as a C string constant if you wish to override the 448standard choice of @code{/lib} as yet another prefix to try after the 449default prefix when searching for startup files such as @file{crt0.o}. 450@code{STANDARD_STARTFILE_PREFIX_2} is not searched when the compiler 451is built as a cross compiler. 452@end defmac 453 454@defmac MD_STARTFILE_PREFIX 455If defined, this macro supplies an additional prefix to try after the 456standard prefixes. @code{MD_EXEC_PREFIX} is not searched when the 457compiler is built as a cross compiler. 458@end defmac 459 460@defmac MD_STARTFILE_PREFIX_1 461If defined, this macro supplies yet another prefix to try after the 462standard prefixes. It is not searched when the compiler is built as a 463cross compiler. 464@end defmac 465 466@defmac INIT_ENVIRONMENT 467Define this macro as a C string constant if you wish to set environment 468variables for programs called by the driver, such as the assembler and 469loader. The driver passes the value of this macro to @code{putenv} to 470initialize the necessary environment variables. 471@end defmac 472 473@defmac LOCAL_INCLUDE_DIR 474Define this macro as a C string constant if you wish to override the 475standard choice of @file{/usr/local/include} as the default prefix to 476try when searching for local header files. @code{LOCAL_INCLUDE_DIR} 477comes before @code{NATIVE_SYSTEM_HEADER_DIR} (set in 478@file{config.gcc}, normally @file{/usr/include}) in the search order. 479 480Cross compilers do not search either @file{/usr/local/include} or its 481replacement. 482@end defmac 483 484@defmac NATIVE_SYSTEM_HEADER_COMPONENT 485The ``component'' corresponding to @code{NATIVE_SYSTEM_HEADER_DIR}. 486See @code{INCLUDE_DEFAULTS}, below, for the description of components. 487If you do not define this macro, no component is used. 488@end defmac 489 490@defmac INCLUDE_DEFAULTS 491Define this macro if you wish to override the entire default search path 492for include files. For a native compiler, the default search path 493usually consists of @code{GCC_INCLUDE_DIR}, @code{LOCAL_INCLUDE_DIR}, 494@code{GPLUSPLUS_INCLUDE_DIR}, and 495@code{NATIVE_SYSTEM_HEADER_DIR}. In addition, @code{GPLUSPLUS_INCLUDE_DIR} 496and @code{GCC_INCLUDE_DIR} are defined automatically by @file{Makefile}, 497and specify private search areas for GCC@. The directory 498@code{GPLUSPLUS_INCLUDE_DIR} is used only for C++ programs. 499 500The definition should be an initializer for an array of structures. 501Each array element should have four elements: the directory name (a 502string constant), the component name (also a string constant), a flag 503for C++-only directories, 504and a flag showing that the includes in the directory don't need to be 505wrapped in @code{extern @samp{C}} when compiling C++. Mark the end of 506the array with a null element. 507 508The component name denotes what GNU package the include file is part of, 509if any, in all uppercase letters. For example, it might be @samp{GCC} 510or @samp{BINUTILS}. If the package is part of a vendor-supplied 511operating system, code the component name as @samp{0}. 512 513For example, here is the definition used for VAX/VMS: 514 515@smallexample 516#define INCLUDE_DEFAULTS \ 517@{ \ 518 @{ "GNU_GXX_INCLUDE:", "G++", 1, 1@}, \ 519 @{ "GNU_CC_INCLUDE:", "GCC", 0, 0@}, \ 520 @{ "SYS$SYSROOT:[SYSLIB.]", 0, 0, 0@}, \ 521 @{ ".", 0, 0, 0@}, \ 522 @{ 0, 0, 0, 0@} \ 523@} 524@end smallexample 525@end defmac 526 527Here is the order of prefixes tried for exec files: 528 529@enumerate 530@item 531Any prefixes specified by the user with @option{-B}. 532 533@item 534The environment variable @code{GCC_EXEC_PREFIX} or, if @code{GCC_EXEC_PREFIX} 535is not set and the compiler has not been installed in the configure-time 536@var{prefix}, the location in which the compiler has actually been installed. 537 538@item 539The directories specified by the environment variable @code{COMPILER_PATH}. 540 541@item 542The macro @code{STANDARD_EXEC_PREFIX}, if the compiler has been installed 543in the configured-time @var{prefix}. 544 545@item 546The location @file{/usr/libexec/gcc/}, but only if this is a native compiler. 547 548@item 549The location @file{/usr/lib/gcc/}, but only if this is a native compiler. 550 551@item 552The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native 553compiler. 554@end enumerate 555 556Here is the order of prefixes tried for startfiles: 557 558@enumerate 559@item 560Any prefixes specified by the user with @option{-B}. 561 562@item 563The environment variable @code{GCC_EXEC_PREFIX} or its automatically determined 564value based on the installed toolchain location. 565 566@item 567The directories specified by the environment variable @code{LIBRARY_PATH} 568(or port-specific name; native only, cross compilers do not use this). 569 570@item 571The macro @code{STANDARD_EXEC_PREFIX}, but only if the toolchain is installed 572in the configured @var{prefix} or this is a native compiler. 573 574@item 575The location @file{/usr/lib/gcc/}, but only if this is a native compiler. 576 577@item 578The macro @code{MD_EXEC_PREFIX}, if defined, but only if this is a native 579compiler. 580 581@item 582The macro @code{MD_STARTFILE_PREFIX}, if defined, but only if this is a 583native compiler, or we have a target system root. 584 585@item 586The macro @code{MD_STARTFILE_PREFIX_1}, if defined, but only if this is a 587native compiler, or we have a target system root. 588 589@item 590The macro @code{STANDARD_STARTFILE_PREFIX}, with any sysroot modifications. 591If this path is relative it will be prefixed by @code{GCC_EXEC_PREFIX} and 592the machine suffix or @code{STANDARD_EXEC_PREFIX} and the machine suffix. 593 594@item 595The macro @code{STANDARD_STARTFILE_PREFIX_1}, but only if this is a native 596compiler, or we have a target system root. The default for this macro is 597@file{/lib/}. 598 599@item 600The macro @code{STANDARD_STARTFILE_PREFIX_2}, but only if this is a native 601compiler, or we have a target system root. The default for this macro is 602@file{/usr/lib/}. 603@end enumerate 604 605@node Run-time Target 606@section Run-time Target Specification 607@cindex run-time target specification 608@cindex predefined macros 609@cindex target specifications 610 611@c prevent bad page break with this line 612Here are run-time target specifications. 613 614@defmac TARGET_CPU_CPP_BUILTINS () 615This function-like macro expands to a block of code that defines 616built-in preprocessor macros and assertions for the target CPU, using 617the functions @code{builtin_define}, @code{builtin_define_std} and 618@code{builtin_assert}. When the front end 619calls this macro it provides a trailing semicolon, and since it has 620finished command line option processing your code can use those 621results freely. 622 623@code{builtin_assert} takes a string in the form you pass to the 624command-line option @option{-A}, such as @code{cpu=mips}, and creates 625the assertion. @code{builtin_define} takes a string in the form 626accepted by option @option{-D} and unconditionally defines the macro. 627 628@code{builtin_define_std} takes a string representing the name of an 629object-like macro. If it doesn't lie in the user's namespace, 630@code{builtin_define_std} defines it unconditionally. Otherwise, it 631defines a version with two leading underscores, and another version 632with two leading and trailing underscores, and defines the original 633only if an ISO standard was not requested on the command line. For 634example, passing @code{unix} defines @code{__unix}, @code{__unix__} 635and possibly @code{unix}; passing @code{_mips} defines @code{__mips}, 636@code{__mips__} and possibly @code{_mips}, and passing @code{_ABI64} 637defines only @code{_ABI64}. 638 639You can also test for the C dialect being compiled. The variable 640@code{c_language} is set to one of @code{clk_c}, @code{clk_cplusplus} 641or @code{clk_objective_c}. Note that if we are preprocessing 642assembler, this variable will be @code{clk_c} but the function-like 643macro @code{preprocessing_asm_p()} will return true, so you might want 644to check for that first. If you need to check for strict ANSI, the 645variable @code{flag_iso} can be used. The function-like macro 646@code{preprocessing_trad_p()} can be used to check for traditional 647preprocessing. 648@end defmac 649 650@defmac TARGET_OS_CPP_BUILTINS () 651Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional 652and is used for the target operating system instead. 653@end defmac 654 655@defmac TARGET_OBJFMT_CPP_BUILTINS () 656Similarly to @code{TARGET_CPU_CPP_BUILTINS} but this macro is optional 657and is used for the target object format. @file{elfos.h} uses this 658macro to define @code{__ELF__}, so you probably do not need to define 659it yourself. 660@end defmac 661 662@deftypevar {extern int} target_flags 663This variable is declared in @file{options.h}, which is included before 664any target-specific headers. 665@end deftypevar 666 667@hook TARGET_DEFAULT_TARGET_FLAGS 668This variable specifies the initial value of @code{target_flags}. 669Its default setting is 0. 670@end deftypevr 671 672@cindex optional hardware or system features 673@cindex features, optional, in system conventions 674 675@hook TARGET_HANDLE_OPTION 676This hook is called whenever the user specifies one of the 677target-specific options described by the @file{.opt} definition files 678(@pxref{Options}). It has the opportunity to do some option-specific 679processing and should return true if the option is valid. The default 680definition does nothing but return true. 681 682@var{decoded} specifies the option and its arguments. @var{opts} and 683@var{opts_set} are the @code{gcc_options} structures to be used for 684storing option state, and @var{loc} is the location at which the 685option was passed (@code{UNKNOWN_LOCATION} except for options passed 686via attributes). 687@end deftypefn 688 689@hook TARGET_HANDLE_C_OPTION 690This target hook is called whenever the user specifies one of the 691target-specific C language family options described by the @file{.opt} 692definition files(@pxref{Options}). It has the opportunity to do some 693option-specific processing and should return true if the option is 694valid. The arguments are like for @code{TARGET_HANDLE_OPTION}. The 695default definition does nothing but return false. 696 697In general, you should use @code{TARGET_HANDLE_OPTION} to handle 698options. However, if processing an option requires routines that are 699only available in the C (and related language) front ends, then you 700should use @code{TARGET_HANDLE_C_OPTION} instead. 701@end deftypefn 702 703@hook TARGET_OBJC_CONSTRUCT_STRING_OBJECT 704 705@hook TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE 706 707@hook TARGET_OBJC_DECLARE_CLASS_DEFINITION 708 709@hook TARGET_STRING_OBJECT_REF_TYPE_P 710 711@hook TARGET_CHECK_STRING_OBJECT_FORMAT_ARG 712 713@hook TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE 714 715@defmac C_COMMON_OVERRIDE_OPTIONS 716This is similar to the @code{TARGET_OPTION_OVERRIDE} hook 717but is only used in the C 718language frontends (C, Objective-C, C++, Objective-C++) and so can be 719used to alter option flag variables which only exist in those 720frontends. 721@end defmac 722 723@hook TARGET_OPTION_OPTIMIZATION_TABLE 724Some machines may desire to change what optimizations are performed for 725various optimization levels. This variable, if defined, describes 726options to enable at particular sets of optimization levels. These 727options are processed once 728just after the optimization level is determined and before the remainder 729of the command options have been parsed, so may be overridden by other 730options passed explicitly. 731 732This processing is run once at program startup and when the optimization 733options are changed via @code{#pragma GCC optimize} or by using the 734@code{optimize} attribute. 735@end deftypevr 736 737@hook TARGET_OPTION_INIT_STRUCT 738 739@defmac SWITCHABLE_TARGET 740Some targets need to switch between substantially different subtargets 741during compilation. For example, the MIPS target has one subtarget for 742the traditional MIPS architecture and another for MIPS16. Source code 743can switch between these two subarchitectures using the @code{mips16} 744and @code{nomips16} attributes. 745 746Such subtargets can differ in things like the set of available 747registers, the set of available instructions, the costs of various 748operations, and so on. GCC caches a lot of this type of information 749in global variables, and recomputing them for each subtarget takes a 750significant amount of time. The compiler therefore provides a facility 751for maintaining several versions of the global variables and quickly 752switching between them; see @file{target-globals.h} for details. 753 754Define this macro to 1 if your target needs this facility. The default 755is 0. 756@end defmac 757 758@hook TARGET_FLOAT_EXCEPTIONS_ROUNDING_SUPPORTED_P 759 760@node Per-Function Data 761@section Defining data structures for per-function information. 762@cindex per-function data 763@cindex data structures 764 765If the target needs to store information on a per-function basis, GCC 766provides a macro and a couple of variables to allow this. Note, just 767using statics to store the information is a bad idea, since GCC supports 768nested functions, so you can be halfway through encoding one function 769when another one comes along. 770 771GCC defines a data structure called @code{struct function} which 772contains all of the data specific to an individual function. This 773structure contains a field called @code{machine} whose type is 774@code{struct machine_function *}, which can be used by targets to point 775to their own specific data. 776 777If a target needs per-function specific data it should define the type 778@code{struct machine_function} and also the macro @code{INIT_EXPANDERS}. 779This macro should be used to initialize the function pointer 780@code{init_machine_status}. This pointer is explained below. 781 782One typical use of per-function, target specific data is to create an 783RTX to hold the register containing the function's return address. This 784RTX can then be used to implement the @code{__builtin_return_address} 785function, for level 0. 786 787Note---earlier implementations of GCC used a single data area to hold 788all of the per-function information. Thus when processing of a nested 789function began the old per-function data had to be pushed onto a 790stack, and when the processing was finished, it had to be popped off the 791stack. GCC used to provide function pointers called 792@code{save_machine_status} and @code{restore_machine_status} to handle 793the saving and restoring of the target specific information. Since the 794single data area approach is no longer used, these pointers are no 795longer supported. 796 797@defmac INIT_EXPANDERS 798Macro called to initialize any target specific information. This macro 799is called once per function, before generation of any RTL has begun. 800The intention of this macro is to allow the initialization of the 801function pointer @code{init_machine_status}. 802@end defmac 803 804@deftypevar {void (*)(struct function *)} init_machine_status 805If this function pointer is non-@code{NULL} it will be called once per 806function, before function compilation starts, in order to allow the 807target to perform any target specific initialization of the 808@code{struct function} structure. It is intended that this would be 809used to initialize the @code{machine} of that structure. 810 811@code{struct machine_function} structures are expected to be freed by GC@. 812Generally, any memory that they reference must be allocated by using 813GC allocation, including the structure itself. 814@end deftypevar 815 816@node Storage Layout 817@section Storage Layout 818@cindex storage layout 819 820Note that the definitions of the macros in this table which are sizes or 821alignments measured in bits do not need to be constant. They can be C 822expressions that refer to static variables, such as the @code{target_flags}. 823@xref{Run-time Target}. 824 825@defmac BITS_BIG_ENDIAN 826Define this macro to have the value 1 if the most significant bit in a 827byte has the lowest number; otherwise define it to have the value zero. 828This means that bit-field instructions count from the most significant 829bit. If the machine has no bit-field instructions, then this must still 830be defined, but it doesn't matter which value it is defined to. This 831macro need not be a constant. 832 833This macro does not affect the way structure fields are packed into 834bytes or words; that is controlled by @code{BYTES_BIG_ENDIAN}. 835@end defmac 836 837@defmac BYTES_BIG_ENDIAN 838Define this macro to have the value 1 if the most significant byte in a 839word has the lowest number. This macro need not be a constant. 840@end defmac 841 842@defmac WORDS_BIG_ENDIAN 843Define this macro to have the value 1 if, in a multiword object, the 844most significant word has the lowest number. This applies to both 845memory locations and registers; see @code{REG_WORDS_BIG_ENDIAN} if the 846order of words in memory is not the same as the order in registers. This 847macro need not be a constant. 848@end defmac 849 850@defmac REG_WORDS_BIG_ENDIAN 851On some machines, the order of words in a multiword object differs between 852registers in memory. In such a situation, define this macro to describe 853the order of words in a register. The macro @code{WORDS_BIG_ENDIAN} controls 854the order of words in memory. 855@end defmac 856 857@defmac FLOAT_WORDS_BIG_ENDIAN 858Define this macro to have the value 1 if @code{DFmode}, @code{XFmode} or 859@code{TFmode} floating point numbers are stored in memory with the word 860containing the sign bit at the lowest address; otherwise define it to 861have the value 0. This macro need not be a constant. 862 863You need not define this macro if the ordering is the same as for 864multi-word integers. 865@end defmac 866 867@defmac BITS_PER_WORD 868Number of bits in a word. If you do not define this macro, the default 869is @code{BITS_PER_UNIT * UNITS_PER_WORD}. 870@end defmac 871 872@defmac MAX_BITS_PER_WORD 873Maximum number of bits in a word. If this is undefined, the default is 874@code{BITS_PER_WORD}. Otherwise, it is the constant value that is the 875largest value that @code{BITS_PER_WORD} can have at run-time. 876@end defmac 877 878@defmac UNITS_PER_WORD 879Number of storage units in a word; normally the size of a general-purpose 880register, a power of two from 1 or 8. 881@end defmac 882 883@defmac MIN_UNITS_PER_WORD 884Minimum number of units in a word. If this is undefined, the default is 885@code{UNITS_PER_WORD}. Otherwise, it is the constant value that is the 886smallest value that @code{UNITS_PER_WORD} can have at run-time. 887@end defmac 888 889@defmac POINTER_SIZE 890Width of a pointer, in bits. You must specify a value no wider than the 891width of @code{Pmode}. If it is not equal to the width of @code{Pmode}, 892you must define @code{POINTERS_EXTEND_UNSIGNED}. If you do not specify 893a value the default is @code{BITS_PER_WORD}. 894@end defmac 895 896@defmac POINTERS_EXTEND_UNSIGNED 897A C expression that determines how pointers should be extended from 898@code{ptr_mode} to either @code{Pmode} or @code{word_mode}. It is 899greater than zero if pointers should be zero-extended, zero if they 900should be sign-extended, and negative if some other sort of conversion 901is needed. In the last case, the extension is done by the target's 902@code{ptr_extend} instruction. 903 904You need not define this macro if the @code{ptr_mode}, @code{Pmode} 905and @code{word_mode} are all the same width. 906@end defmac 907 908@defmac PROMOTE_MODE (@var{m}, @var{unsignedp}, @var{type}) 909A macro to update @var{m} and @var{unsignedp} when an object whose type 910is @var{type} and which has the specified mode and signedness is to be 911stored in a register. This macro is only called when @var{type} is a 912scalar type. 913 914On most RISC machines, which only have operations that operate on a full 915register, define this macro to set @var{m} to @code{word_mode} if 916@var{m} is an integer mode narrower than @code{BITS_PER_WORD}. In most 917cases, only integer modes should be widened because wider-precision 918floating-point operations are usually more expensive than their narrower 919counterparts. 920 921For most machines, the macro definition does not change @var{unsignedp}. 922However, some machines, have instructions that preferentially handle 923either signed or unsigned quantities of certain modes. For example, on 924the DEC Alpha, 32-bit loads from memory and 32-bit add instructions 925sign-extend the result to 64 bits. On such machines, set 926@var{unsignedp} according to which kind of extension is more efficient. 927 928Do not define this macro if it would never modify @var{m}. 929@end defmac 930 931@hook TARGET_C_EXCESS_PRECISION 932 933@hook TARGET_PROMOTE_FUNCTION_MODE 934 935@defmac PARM_BOUNDARY 936Normal alignment required for function parameters on the stack, in 937bits. All stack parameters receive at least this much alignment 938regardless of data type. On most machines, this is the same as the 939size of an integer. 940@end defmac 941 942@defmac STACK_BOUNDARY 943Define this macro to the minimum alignment enforced by hardware for the 944stack pointer on this machine. The definition is a C expression for the 945desired alignment (measured in bits). This value is used as a default 946if @code{PREFERRED_STACK_BOUNDARY} is not defined. On most machines, 947this should be the same as @code{PARM_BOUNDARY}. 948@end defmac 949 950@defmac PREFERRED_STACK_BOUNDARY 951Define this macro if you wish to preserve a certain alignment for the 952stack pointer, greater than what the hardware enforces. The definition 953is a C expression for the desired alignment (measured in bits). This 954macro must evaluate to a value equal to or larger than 955@code{STACK_BOUNDARY}. 956@end defmac 957 958@defmac INCOMING_STACK_BOUNDARY 959Define this macro if the incoming stack boundary may be different 960from @code{PREFERRED_STACK_BOUNDARY}. This macro must evaluate 961to a value equal to or larger than @code{STACK_BOUNDARY}. 962@end defmac 963 964@defmac FUNCTION_BOUNDARY 965Alignment required for a function entry point, in bits. 966@end defmac 967 968@defmac BIGGEST_ALIGNMENT 969Biggest alignment that any data type can require on this machine, in 970bits. Note that this is not the biggest alignment that is supported, 971just the biggest alignment that, when violated, may cause a fault. 972@end defmac 973 974@hook TARGET_ABSOLUTE_BIGGEST_ALIGNMENT 975 976@defmac MALLOC_ABI_ALIGNMENT 977Alignment, in bits, a C conformant malloc implementation has to 978provide. If not defined, the default value is @code{BITS_PER_WORD}. 979@end defmac 980 981@defmac ATTRIBUTE_ALIGNED_VALUE 982Alignment used by the @code{__attribute__ ((aligned))} construct. If 983not defined, the default value is @code{BIGGEST_ALIGNMENT}. 984@end defmac 985 986@defmac MINIMUM_ATOMIC_ALIGNMENT 987If defined, the smallest alignment, in bits, that can be given to an 988object that can be referenced in one operation, without disturbing any 989nearby object. Normally, this is @code{BITS_PER_UNIT}, but may be larger 990on machines that don't have byte or half-word store operations. 991@end defmac 992 993@defmac BIGGEST_FIELD_ALIGNMENT 994Biggest alignment that any structure or union field can require on this 995machine, in bits. If defined, this overrides @code{BIGGEST_ALIGNMENT} for 996structure and union fields only, unless the field alignment has been set 997by the @code{__attribute__ ((aligned (@var{n})))} construct. 998@end defmac 999 1000@defmac ADJUST_FIELD_ALIGN (@var{field}, @var{type}, @var{computed}) 1001An expression for the alignment of a structure field @var{field} of 1002type @var{type} if the alignment computed in the usual way (including 1003applying of @code{BIGGEST_ALIGNMENT} and @code{BIGGEST_FIELD_ALIGNMENT} to the 1004alignment) is @var{computed}. It overrides alignment only if the 1005field alignment has not been set by the 1006@code{__attribute__ ((aligned (@var{n})))} construct. Note that @var{field} 1007may be @code{NULL_TREE} in case we just query for the minimum alignment 1008of a field of type @var{type} in structure context. 1009@end defmac 1010 1011@defmac MAX_STACK_ALIGNMENT 1012Biggest stack alignment guaranteed by the backend. Use this macro 1013to specify the maximum alignment of a variable on stack. 1014 1015If not defined, the default value is @code{STACK_BOUNDARY}. 1016 1017@c FIXME: The default should be @code{PREFERRED_STACK_BOUNDARY}. 1018@c But the fix for PR 32893 indicates that we can only guarantee 1019@c maximum stack alignment on stack up to @code{STACK_BOUNDARY}, not 1020@c @code{PREFERRED_STACK_BOUNDARY}, if stack alignment isn't supported. 1021@end defmac 1022 1023@defmac MAX_OFILE_ALIGNMENT 1024Biggest alignment supported by the object file format of this machine. 1025Use this macro to limit the alignment which can be specified using the 1026@code{__attribute__ ((aligned (@var{n})))} construct for functions and 1027objects with static storage duration. The alignment of automatic 1028objects may exceed the object file format maximum up to the maximum 1029supported by GCC. If not defined, the default value is 1030@code{BIGGEST_ALIGNMENT}. 1031 1032On systems that use ELF, the default (in @file{config/elfos.h}) is 1033the largest supported 32-bit ELF section alignment representable on 1034a 32-bit host e.g.@: @samp{(((uint64_t) 1 << 28) * 8)}. 1035On 32-bit ELF the largest supported section alignment in bits is 1036@samp{(0x80000000 * 8)}, but this is not representable on 32-bit hosts. 1037@end defmac 1038 1039@hook TARGET_STATIC_RTX_ALIGNMENT 1040 1041@defmac DATA_ALIGNMENT (@var{type}, @var{basic-align}) 1042If defined, a C expression to compute the alignment for a variable in 1043the static store. @var{type} is the data type, and @var{basic-align} is 1044the alignment that the object would ordinarily have. The value of this 1045macro is used instead of that alignment to align the object. 1046 1047If this macro is not defined, then @var{basic-align} is used. 1048 1049@findex strcpy 1050One use of this macro is to increase alignment of medium-size data to 1051make it all fit in fewer cache lines. Another is to cause character 1052arrays to be word-aligned so that @code{strcpy} calls that copy 1053constants to character arrays can be done inline. 1054@end defmac 1055 1056@defmac DATA_ABI_ALIGNMENT (@var{type}, @var{basic-align}) 1057Similar to @code{DATA_ALIGNMENT}, but for the cases where the ABI mandates 1058some alignment increase, instead of optimization only purposes. E.g.@ 1059AMD x86-64 psABI says that variables with array type larger than 15 bytes 1060must be aligned to 16 byte boundaries. 1061 1062If this macro is not defined, then @var{basic-align} is used. 1063@end defmac 1064 1065@hook TARGET_CONSTANT_ALIGNMENT 1066 1067@defmac LOCAL_ALIGNMENT (@var{type}, @var{basic-align}) 1068If defined, a C expression to compute the alignment for a variable in 1069the local store. @var{type} is the data type, and @var{basic-align} is 1070the alignment that the object would ordinarily have. The value of this 1071macro is used instead of that alignment to align the object. 1072 1073If this macro is not defined, then @var{basic-align} is used. 1074 1075One use of this macro is to increase alignment of medium-size data to 1076make it all fit in fewer cache lines. 1077 1078If the value of this macro has a type, it should be an unsigned type. 1079@end defmac 1080 1081@hook TARGET_VECTOR_ALIGNMENT 1082 1083@defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align}) 1084If defined, a C expression to compute the alignment for stack slot. 1085@var{type} is the data type, @var{mode} is the widest mode available, 1086and @var{basic-align} is the alignment that the slot would ordinarily 1087have. The value of this macro is used instead of that alignment to 1088align the slot. 1089 1090If this macro is not defined, then @var{basic-align} is used when 1091@var{type} is @code{NULL}. Otherwise, @code{LOCAL_ALIGNMENT} will 1092be used. 1093 1094This macro is to set alignment of stack slot to the maximum alignment 1095of all possible modes which the slot may have. 1096 1097If the value of this macro has a type, it should be an unsigned type. 1098@end defmac 1099 1100@defmac LOCAL_DECL_ALIGNMENT (@var{decl}) 1101If defined, a C expression to compute the alignment for a local 1102variable @var{decl}. 1103 1104If this macro is not defined, then 1105@code{LOCAL_ALIGNMENT (TREE_TYPE (@var{decl}), DECL_ALIGN (@var{decl}))} 1106is used. 1107 1108One use of this macro is to increase alignment of medium-size data to 1109make it all fit in fewer cache lines. 1110 1111If the value of this macro has a type, it should be an unsigned type. 1112@end defmac 1113 1114@defmac MINIMUM_ALIGNMENT (@var{exp}, @var{mode}, @var{align}) 1115If defined, a C expression to compute the minimum required alignment 1116for dynamic stack realignment purposes for @var{exp} (a type or decl), 1117@var{mode}, assuming normal alignment @var{align}. 1118 1119If this macro is not defined, then @var{align} will be used. 1120@end defmac 1121 1122@defmac EMPTY_FIELD_BOUNDARY 1123Alignment in bits to be given to a structure bit-field that follows an 1124empty field such as @code{int : 0;}. 1125 1126If @code{PCC_BITFIELD_TYPE_MATTERS} is true, it overrides this macro. 1127@end defmac 1128 1129@defmac STRUCTURE_SIZE_BOUNDARY 1130Number of bits which any structure or union's size must be a multiple of. 1131Each structure or union's size is rounded up to a multiple of this. 1132 1133If you do not define this macro, the default is the same as 1134@code{BITS_PER_UNIT}. 1135@end defmac 1136 1137@defmac STRICT_ALIGNMENT 1138Define this macro to be the value 1 if instructions will fail to work 1139if given data not on the nominal alignment. If instructions will merely 1140go slower in that case, define this macro as 0. 1141@end defmac 1142 1143@defmac PCC_BITFIELD_TYPE_MATTERS 1144Define this if you wish to imitate the way many other C compilers handle 1145alignment of bit-fields and the structures that contain them. 1146 1147The behavior is that the type written for a named bit-field (@code{int}, 1148@code{short}, or other integer type) imposes an alignment for the entire 1149structure, as if the structure really did contain an ordinary field of 1150that type. In addition, the bit-field is placed within the structure so 1151that it would fit within such a field, not crossing a boundary for it. 1152 1153Thus, on most machines, a named bit-field whose type is written as 1154@code{int} would not cross a four-byte boundary, and would force 1155four-byte alignment for the whole structure. (The alignment used may 1156not be four bytes; it is controlled by the other alignment parameters.) 1157 1158An unnamed bit-field will not affect the alignment of the containing 1159structure. 1160 1161If the macro is defined, its definition should be a C expression; 1162a nonzero value for the expression enables this behavior. 1163 1164Note that if this macro is not defined, or its value is zero, some 1165bit-fields may cross more than one alignment boundary. The compiler can 1166support such references if there are @samp{insv}, @samp{extv}, and 1167@samp{extzv} insns that can directly reference memory. 1168 1169The other known way of making bit-fields work is to define 1170@code{STRUCTURE_SIZE_BOUNDARY} as large as @code{BIGGEST_ALIGNMENT}. 1171Then every structure can be accessed with fullwords. 1172 1173Unless the machine has bit-field instructions or you define 1174@code{STRUCTURE_SIZE_BOUNDARY} that way, you must define 1175@code{PCC_BITFIELD_TYPE_MATTERS} to have a nonzero value. 1176 1177If your aim is to make GCC use the same conventions for laying out 1178bit-fields as are used by another compiler, here is how to investigate 1179what the other compiler does. Compile and run this program: 1180 1181@smallexample 1182struct foo1 1183@{ 1184 char x; 1185 char :0; 1186 char y; 1187@}; 1188 1189struct foo2 1190@{ 1191 char x; 1192 int :0; 1193 char y; 1194@}; 1195 1196main () 1197@{ 1198 printf ("Size of foo1 is %d\n", 1199 sizeof (struct foo1)); 1200 printf ("Size of foo2 is %d\n", 1201 sizeof (struct foo2)); 1202 exit (0); 1203@} 1204@end smallexample 1205 1206If this prints 2 and 5, then the compiler's behavior is what you would 1207get from @code{PCC_BITFIELD_TYPE_MATTERS}. 1208@end defmac 1209 1210@defmac BITFIELD_NBYTES_LIMITED 1211Like @code{PCC_BITFIELD_TYPE_MATTERS} except that its effect is limited 1212to aligning a bit-field within the structure. 1213@end defmac 1214 1215@hook TARGET_ALIGN_ANON_BITFIELD 1216 1217@hook TARGET_NARROW_VOLATILE_BITFIELD 1218 1219@hook TARGET_MEMBER_TYPE_FORCES_BLK 1220 1221@defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified}) 1222Define this macro as an expression for the alignment of a type (given 1223by @var{type} as a tree node) if the alignment computed in the usual 1224way is @var{computed} and the alignment explicitly specified was 1225@var{specified}. 1226 1227The default is to use @var{specified} if it is larger; otherwise, use 1228the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT} 1229@end defmac 1230 1231@defmac MAX_FIXED_MODE_SIZE 1232An integer expression for the size in bits of the largest integer 1233machine mode that should actually be used. All integer machine modes of 1234this size or smaller can be used for structures and unions with the 1235appropriate sizes. If this macro is undefined, @code{GET_MODE_BITSIZE 1236(DImode)} is assumed. 1237@end defmac 1238 1239@defmac STACK_SAVEAREA_MODE (@var{save_level}) 1240If defined, an expression of type @code{machine_mode} that 1241specifies the mode of the save area operand of a 1242@code{save_stack_@var{level}} named pattern (@pxref{Standard Names}). 1243@var{save_level} is one of @code{SAVE_BLOCK}, @code{SAVE_FUNCTION}, or 1244@code{SAVE_NONLOCAL} and selects which of the three named patterns is 1245having its mode specified. 1246 1247You need not define this macro if it always returns @code{Pmode}. You 1248would most commonly define this macro if the 1249@code{save_stack_@var{level}} patterns need to support both a 32- and a 125064-bit mode. 1251@end defmac 1252 1253@defmac STACK_SIZE_MODE 1254If defined, an expression of type @code{machine_mode} that 1255specifies the mode of the size increment operand of an 1256@code{allocate_stack} named pattern (@pxref{Standard Names}). 1257 1258You need not define this macro if it always returns @code{word_mode}. 1259You would most commonly define this macro if the @code{allocate_stack} 1260pattern needs to support both a 32- and a 64-bit mode. 1261@end defmac 1262 1263@hook TARGET_LIBGCC_CMP_RETURN_MODE 1264 1265@hook TARGET_LIBGCC_SHIFT_COUNT_MODE 1266 1267@hook TARGET_UNWIND_WORD_MODE 1268 1269@hook TARGET_MS_BITFIELD_LAYOUT_P 1270 1271@hook TARGET_DECIMAL_FLOAT_SUPPORTED_P 1272 1273@hook TARGET_FIXED_POINT_SUPPORTED_P 1274 1275@hook TARGET_EXPAND_TO_RTL_HOOK 1276 1277@hook TARGET_INSTANTIATE_DECLS 1278 1279@hook TARGET_MANGLE_TYPE 1280 1281@node Type Layout 1282@section Layout of Source Language Data Types 1283 1284These macros define the sizes and other characteristics of the standard 1285basic data types used in programs being compiled. Unlike the macros in 1286the previous section, these apply to specific features of C and related 1287languages, rather than to fundamental aspects of storage layout. 1288 1289@defmac INT_TYPE_SIZE 1290A C expression for the size in bits of the type @code{int} on the 1291target machine. If you don't define this, the default is one word. 1292@end defmac 1293 1294@defmac SHORT_TYPE_SIZE 1295A C expression for the size in bits of the type @code{short} on the 1296target machine. If you don't define this, the default is half a word. 1297(If this would be less than one storage unit, it is rounded up to one 1298unit.) 1299@end defmac 1300 1301@defmac LONG_TYPE_SIZE 1302A C expression for the size in bits of the type @code{long} on the 1303target machine. If you don't define this, the default is one word. 1304@end defmac 1305 1306@defmac ADA_LONG_TYPE_SIZE 1307On some machines, the size used for the Ada equivalent of the type 1308@code{long} by a native Ada compiler differs from that used by C@. In 1309that situation, define this macro to be a C expression to be used for 1310the size of that type. If you don't define this, the default is the 1311value of @code{LONG_TYPE_SIZE}. 1312@end defmac 1313 1314@defmac LONG_LONG_TYPE_SIZE 1315A C expression for the size in bits of the type @code{long long} on the 1316target machine. If you don't define this, the default is two 1317words. If you want to support GNU Ada on your machine, the value of this 1318macro must be at least 64. 1319@end defmac 1320 1321@defmac CHAR_TYPE_SIZE 1322A C expression for the size in bits of the type @code{char} on the 1323target machine. If you don't define this, the default is 1324@code{BITS_PER_UNIT}. 1325@end defmac 1326 1327@defmac BOOL_TYPE_SIZE 1328A C expression for the size in bits of the C++ type @code{bool} and 1329C99 type @code{_Bool} on the target machine. If you don't define 1330this, and you probably shouldn't, the default is @code{CHAR_TYPE_SIZE}. 1331@end defmac 1332 1333@defmac FLOAT_TYPE_SIZE 1334A C expression for the size in bits of the type @code{float} on the 1335target machine. If you don't define this, the default is one word. 1336@end defmac 1337 1338@defmac DOUBLE_TYPE_SIZE 1339A C expression for the size in bits of the type @code{double} on the 1340target machine. If you don't define this, the default is two 1341words. 1342@end defmac 1343 1344@defmac LONG_DOUBLE_TYPE_SIZE 1345A C expression for the size in bits of the type @code{long double} on 1346the target machine. If you don't define this, the default is two 1347words. 1348@end defmac 1349 1350@defmac SHORT_FRACT_TYPE_SIZE 1351A C expression for the size in bits of the type @code{short _Fract} on 1352the target machine. If you don't define this, the default is 1353@code{BITS_PER_UNIT}. 1354@end defmac 1355 1356@defmac FRACT_TYPE_SIZE 1357A C expression for the size in bits of the type @code{_Fract} on 1358the target machine. If you don't define this, the default is 1359@code{BITS_PER_UNIT * 2}. 1360@end defmac 1361 1362@defmac LONG_FRACT_TYPE_SIZE 1363A C expression for the size in bits of the type @code{long _Fract} on 1364the target machine. If you don't define this, the default is 1365@code{BITS_PER_UNIT * 4}. 1366@end defmac 1367 1368@defmac LONG_LONG_FRACT_TYPE_SIZE 1369A C expression for the size in bits of the type @code{long long _Fract} on 1370the target machine. If you don't define this, the default is 1371@code{BITS_PER_UNIT * 8}. 1372@end defmac 1373 1374@defmac SHORT_ACCUM_TYPE_SIZE 1375A C expression for the size in bits of the type @code{short _Accum} on 1376the target machine. If you don't define this, the default is 1377@code{BITS_PER_UNIT * 2}. 1378@end defmac 1379 1380@defmac ACCUM_TYPE_SIZE 1381A C expression for the size in bits of the type @code{_Accum} on 1382the target machine. If you don't define this, the default is 1383@code{BITS_PER_UNIT * 4}. 1384@end defmac 1385 1386@defmac LONG_ACCUM_TYPE_SIZE 1387A C expression for the size in bits of the type @code{long _Accum} on 1388the target machine. If you don't define this, the default is 1389@code{BITS_PER_UNIT * 8}. 1390@end defmac 1391 1392@defmac LONG_LONG_ACCUM_TYPE_SIZE 1393A C expression for the size in bits of the type @code{long long _Accum} on 1394the target machine. If you don't define this, the default is 1395@code{BITS_PER_UNIT * 16}. 1396@end defmac 1397 1398@defmac LIBGCC2_GNU_PREFIX 1399This macro corresponds to the @code{TARGET_LIBFUNC_GNU_PREFIX} target 1400hook and should be defined if that hook is overriden to be true. It 1401causes function names in libgcc to be changed to use a @code{__gnu_} 1402prefix for their name rather than the default @code{__}. A port which 1403uses this macro should also arrange to use @file{t-gnu-prefix} in 1404the libgcc @file{config.host}. 1405@end defmac 1406 1407@defmac WIDEST_HARDWARE_FP_SIZE 1408A C expression for the size in bits of the widest floating-point format 1409supported by the hardware. If you define this macro, you must specify a 1410value less than or equal to the value of @code{LONG_DOUBLE_TYPE_SIZE}. 1411If you do not define this macro, the value of @code{LONG_DOUBLE_TYPE_SIZE} 1412is the default. 1413@end defmac 1414 1415@defmac DEFAULT_SIGNED_CHAR 1416An expression whose value is 1 or 0, according to whether the type 1417@code{char} should be signed or unsigned by default. The user can 1418always override this default with the options @option{-fsigned-char} 1419and @option{-funsigned-char}. 1420@end defmac 1421 1422@hook TARGET_DEFAULT_SHORT_ENUMS 1423 1424@defmac SIZE_TYPE 1425A C expression for a string describing the name of the data type to use 1426for size values. The typedef name @code{size_t} is defined using the 1427contents of the string. 1428 1429The string can contain more than one keyword. If so, separate them with 1430spaces, and write first any length keyword, then @code{unsigned} if 1431appropriate, and finally @code{int}. The string must exactly match one 1432of the data type names defined in the function 1433@code{c_common_nodes_and_builtins} in the file @file{c-family/c-common.c}. 1434You may not omit @code{int} or change the order---that would cause the 1435compiler to crash on startup. 1436 1437If you don't define this macro, the default is @code{"long unsigned 1438int"}. 1439@end defmac 1440 1441@defmac SIZETYPE 1442GCC defines internal types (@code{sizetype}, @code{ssizetype}, 1443@code{bitsizetype} and @code{sbitsizetype}) for expressions 1444dealing with size. This macro is a C expression for a string describing 1445the name of the data type from which the precision of @code{sizetype} 1446is extracted. 1447 1448The string has the same restrictions as @code{SIZE_TYPE} string. 1449 1450If you don't define this macro, the default is @code{SIZE_TYPE}. 1451@end defmac 1452 1453@defmac PTRDIFF_TYPE 1454A C expression for a string describing the name of the data type to use 1455for the result of subtracting two pointers. The typedef name 1456@code{ptrdiff_t} is defined using the contents of the string. See 1457@code{SIZE_TYPE} above for more information. 1458 1459If you don't define this macro, the default is @code{"long int"}. 1460@end defmac 1461 1462@defmac WCHAR_TYPE 1463A C expression for a string describing the name of the data type to use 1464for wide characters. The typedef name @code{wchar_t} is defined using 1465the contents of the string. See @code{SIZE_TYPE} above for more 1466information. 1467 1468If you don't define this macro, the default is @code{"int"}. 1469@end defmac 1470 1471@defmac WCHAR_TYPE_SIZE 1472A C expression for the size in bits of the data type for wide 1473characters. This is used in @code{cpp}, which cannot make use of 1474@code{WCHAR_TYPE}. 1475@end defmac 1476 1477@defmac WINT_TYPE 1478A C expression for a string describing the name of the data type to 1479use for wide characters passed to @code{printf} and returned from 1480@code{getwc}. The typedef name @code{wint_t} is defined using the 1481contents of the string. See @code{SIZE_TYPE} above for more 1482information. 1483 1484If you don't define this macro, the default is @code{"unsigned int"}. 1485@end defmac 1486 1487@defmac INTMAX_TYPE 1488A C expression for a string describing the name of the data type that 1489can represent any value of any standard or extended signed integer type. 1490The typedef name @code{intmax_t} is defined using the contents of the 1491string. See @code{SIZE_TYPE} above for more information. 1492 1493If you don't define this macro, the default is the first of 1494@code{"int"}, @code{"long int"}, or @code{"long long int"} that has as 1495much precision as @code{long long int}. 1496@end defmac 1497 1498@defmac UINTMAX_TYPE 1499A C expression for a string describing the name of the data type that 1500can represent any value of any standard or extended unsigned integer 1501type. The typedef name @code{uintmax_t} is defined using the contents 1502of the string. See @code{SIZE_TYPE} above for more information. 1503 1504If you don't define this macro, the default is the first of 1505@code{"unsigned int"}, @code{"long unsigned int"}, or @code{"long long 1506unsigned int"} that has as much precision as @code{long long unsigned 1507int}. 1508@end defmac 1509 1510@defmac SIG_ATOMIC_TYPE 1511@defmacx INT8_TYPE 1512@defmacx INT16_TYPE 1513@defmacx INT32_TYPE 1514@defmacx INT64_TYPE 1515@defmacx UINT8_TYPE 1516@defmacx UINT16_TYPE 1517@defmacx UINT32_TYPE 1518@defmacx UINT64_TYPE 1519@defmacx INT_LEAST8_TYPE 1520@defmacx INT_LEAST16_TYPE 1521@defmacx INT_LEAST32_TYPE 1522@defmacx INT_LEAST64_TYPE 1523@defmacx UINT_LEAST8_TYPE 1524@defmacx UINT_LEAST16_TYPE 1525@defmacx UINT_LEAST32_TYPE 1526@defmacx UINT_LEAST64_TYPE 1527@defmacx INT_FAST8_TYPE 1528@defmacx INT_FAST16_TYPE 1529@defmacx INT_FAST32_TYPE 1530@defmacx INT_FAST64_TYPE 1531@defmacx UINT_FAST8_TYPE 1532@defmacx UINT_FAST16_TYPE 1533@defmacx UINT_FAST32_TYPE 1534@defmacx UINT_FAST64_TYPE 1535@defmacx INTPTR_TYPE 1536@defmacx UINTPTR_TYPE 1537C expressions for the standard types @code{sig_atomic_t}, 1538@code{int8_t}, @code{int16_t}, @code{int32_t}, @code{int64_t}, 1539@code{uint8_t}, @code{uint16_t}, @code{uint32_t}, @code{uint64_t}, 1540@code{int_least8_t}, @code{int_least16_t}, @code{int_least32_t}, 1541@code{int_least64_t}, @code{uint_least8_t}, @code{uint_least16_t}, 1542@code{uint_least32_t}, @code{uint_least64_t}, @code{int_fast8_t}, 1543@code{int_fast16_t}, @code{int_fast32_t}, @code{int_fast64_t}, 1544@code{uint_fast8_t}, @code{uint_fast16_t}, @code{uint_fast32_t}, 1545@code{uint_fast64_t}, @code{intptr_t}, and @code{uintptr_t}. See 1546@code{SIZE_TYPE} above for more information. 1547 1548If any of these macros evaluates to a null pointer, the corresponding 1549type is not supported; if GCC is configured to provide 1550@code{<stdint.h>} in such a case, the header provided may not conform 1551to C99, depending on the type in question. The defaults for all of 1552these macros are null pointers. 1553@end defmac 1554 1555@defmac TARGET_PTRMEMFUNC_VBIT_LOCATION 1556The C++ compiler represents a pointer-to-member-function with a struct 1557that looks like: 1558 1559@smallexample 1560 struct @{ 1561 union @{ 1562 void (*fn)(); 1563 ptrdiff_t vtable_index; 1564 @}; 1565 ptrdiff_t delta; 1566 @}; 1567@end smallexample 1568 1569@noindent 1570The C++ compiler must use one bit to indicate whether the function that 1571will be called through a pointer-to-member-function is virtual. 1572Normally, we assume that the low-order bit of a function pointer must 1573always be zero. Then, by ensuring that the vtable_index is odd, we can 1574distinguish which variant of the union is in use. But, on some 1575platforms function pointers can be odd, and so this doesn't work. In 1576that case, we use the low-order bit of the @code{delta} field, and shift 1577the remainder of the @code{delta} field to the left. 1578 1579GCC will automatically make the right selection about where to store 1580this bit using the @code{FUNCTION_BOUNDARY} setting for your platform. 1581However, some platforms such as ARM/Thumb have @code{FUNCTION_BOUNDARY} 1582set such that functions always start at even addresses, but the lowest 1583bit of pointers to functions indicate whether the function at that 1584address is in ARM or Thumb mode. If this is the case of your 1585architecture, you should define this macro to 1586@code{ptrmemfunc_vbit_in_delta}. 1587 1588In general, you should not have to define this macro. On architectures 1589in which function addresses are always even, according to 1590@code{FUNCTION_BOUNDARY}, GCC will automatically define this macro to 1591@code{ptrmemfunc_vbit_in_pfn}. 1592@end defmac 1593 1594@defmac TARGET_VTABLE_USES_DESCRIPTORS 1595Normally, the C++ compiler uses function pointers in vtables. This 1596macro allows the target to change to use ``function descriptors'' 1597instead. Function descriptors are found on targets for whom a 1598function pointer is actually a small data structure. Normally the 1599data structure consists of the actual code address plus a data 1600pointer to which the function's data is relative. 1601 1602If vtables are used, the value of this macro should be the number 1603of words that the function descriptor occupies. 1604@end defmac 1605 1606@defmac TARGET_VTABLE_ENTRY_ALIGN 1607By default, the vtable entries are void pointers, the so the alignment 1608is the same as pointer alignment. The value of this macro specifies 1609the alignment of the vtable entry in bits. It should be defined only 1610when special alignment is necessary. */ 1611@end defmac 1612 1613@defmac TARGET_VTABLE_DATA_ENTRY_DISTANCE 1614There are a few non-descriptor entries in the vtable at offsets below 1615zero. If these entries must be padded (say, to preserve the alignment 1616specified by @code{TARGET_VTABLE_ENTRY_ALIGN}), set this to the number 1617of words in each data entry. 1618@end defmac 1619 1620@node Registers 1621@section Register Usage 1622@cindex register usage 1623 1624This section explains how to describe what registers the target machine 1625has, and how (in general) they can be used. 1626 1627The description of which registers a specific instruction can use is 1628done with register classes; see @ref{Register Classes}. For information 1629on using registers to access a stack frame, see @ref{Frame Registers}. 1630For passing values in registers, see @ref{Register Arguments}. 1631For returning values in registers, see @ref{Scalar Return}. 1632 1633@menu 1634* Register Basics:: Number and kinds of registers. 1635* Allocation Order:: Order in which registers are allocated. 1636* Values in Registers:: What kinds of values each reg can hold. 1637* Leaf Functions:: Renumbering registers for leaf functions. 1638* Stack Registers:: Handling a register stack such as 80387. 1639@end menu 1640 1641@node Register Basics 1642@subsection Basic Characteristics of Registers 1643 1644@c prevent bad page break with this line 1645Registers have various characteristics. 1646 1647@defmac FIRST_PSEUDO_REGISTER 1648Number of hardware registers known to the compiler. They receive 1649numbers 0 through @code{FIRST_PSEUDO_REGISTER-1}; thus, the first 1650pseudo register's number really is assigned the number 1651@code{FIRST_PSEUDO_REGISTER}. 1652@end defmac 1653 1654@defmac FIXED_REGISTERS 1655@cindex fixed register 1656An initializer that says which registers are used for fixed purposes 1657all throughout the compiled code and are therefore not available for 1658general allocation. These would include the stack pointer, the frame 1659pointer (except on machines where that can be used as a general 1660register when no frame pointer is needed), the program counter on 1661machines where that is considered one of the addressable registers, 1662and any other numbered register with a standard use. 1663 1664This information is expressed as a sequence of numbers, separated by 1665commas and surrounded by braces. The @var{n}th number is 1 if 1666register @var{n} is fixed, 0 otherwise. 1667 1668The table initialized from this macro, and the table initialized by 1669the following one, may be overridden at run time either automatically, 1670by the actions of the macro @code{CONDITIONAL_REGISTER_USAGE}, or by 1671the user with the command options @option{-ffixed-@var{reg}}, 1672@option{-fcall-used-@var{reg}} and @option{-fcall-saved-@var{reg}}. 1673@end defmac 1674 1675@defmac CALL_USED_REGISTERS 1676@cindex call-used register 1677@cindex call-clobbered register 1678@cindex call-saved register 1679Like @code{FIXED_REGISTERS} but has 1 for each register that is 1680clobbered (in general) by function calls as well as for fixed 1681registers. This macro therefore identifies the registers that are not 1682available for general allocation of values that must live across 1683function calls. 1684 1685If a register has 0 in @code{CALL_USED_REGISTERS}, the compiler 1686automatically saves it on function entry and restores it on function 1687exit, if the register is used within the function. 1688 1689Exactly one of @code{CALL_USED_REGISTERS} and @code{CALL_REALLY_USED_REGISTERS} 1690must be defined. Modern ports should define @code{CALL_REALLY_USED_REGISTERS}. 1691@end defmac 1692 1693@defmac CALL_REALLY_USED_REGISTERS 1694@cindex call-used register 1695@cindex call-clobbered register 1696@cindex call-saved register 1697Like @code{CALL_USED_REGISTERS} except this macro doesn't require 1698that the entire set of @code{FIXED_REGISTERS} be included. 1699(@code{CALL_USED_REGISTERS} must be a superset of @code{FIXED_REGISTERS}). 1700 1701Exactly one of @code{CALL_USED_REGISTERS} and @code{CALL_REALLY_USED_REGISTERS} 1702must be defined. Modern ports should define @code{CALL_REALLY_USED_REGISTERS}. 1703@end defmac 1704 1705@cindex call-used register 1706@cindex call-clobbered register 1707@cindex call-saved register 1708@hook TARGET_FNTYPE_ABI 1709 1710@hook TARGET_INSN_CALLEE_ABI 1711 1712@cindex call-used register 1713@cindex call-clobbered register 1714@cindex call-saved register 1715@hook TARGET_HARD_REGNO_CALL_PART_CLOBBERED 1716 1717@hook TARGET_GET_MULTILIB_ABI_NAME 1718 1719@findex fixed_regs 1720@findex call_used_regs 1721@findex global_regs 1722@findex reg_names 1723@findex reg_class_contents 1724@hook TARGET_CONDITIONAL_REGISTER_USAGE 1725 1726@defmac INCOMING_REGNO (@var{out}) 1727Define this macro if the target machine has register windows. This C 1728expression returns the register number as seen by the called function 1729corresponding to the register number @var{out} as seen by the calling 1730function. Return @var{out} if register number @var{out} is not an 1731outbound register. 1732@end defmac 1733 1734@defmac OUTGOING_REGNO (@var{in}) 1735Define this macro if the target machine has register windows. This C 1736expression returns the register number as seen by the calling function 1737corresponding to the register number @var{in} as seen by the called 1738function. Return @var{in} if register number @var{in} is not an inbound 1739register. 1740@end defmac 1741 1742@defmac LOCAL_REGNO (@var{regno}) 1743Define this macro if the target machine has register windows. This C 1744expression returns true if the register is call-saved but is in the 1745register window. Unlike most call-saved registers, such registers 1746need not be explicitly restored on function exit or during non-local 1747gotos. 1748@end defmac 1749 1750@defmac PC_REGNUM 1751If the program counter has a register number, define this as that 1752register number. Otherwise, do not define it. 1753@end defmac 1754 1755@node Allocation Order 1756@subsection Order of Allocation of Registers 1757@cindex order of register allocation 1758@cindex register allocation order 1759 1760@c prevent bad page break with this line 1761Registers are allocated in order. 1762 1763@defmac REG_ALLOC_ORDER 1764If defined, an initializer for a vector of integers, containing the 1765numbers of hard registers in the order in which GCC should prefer 1766to use them (from most preferred to least). 1767 1768If this macro is not defined, registers are used lowest numbered first 1769(all else being equal). 1770 1771One use of this macro is on machines where the highest numbered 1772registers must always be saved and the save-multiple-registers 1773instruction supports only sequences of consecutive registers. On such 1774machines, define @code{REG_ALLOC_ORDER} to be an initializer that lists 1775the highest numbered allocable register first. 1776@end defmac 1777 1778@defmac ADJUST_REG_ALLOC_ORDER 1779A C statement (sans semicolon) to choose the order in which to allocate 1780hard registers for pseudo-registers local to a basic block. 1781 1782Store the desired register order in the array @code{reg_alloc_order}. 1783Element 0 should be the register to allocate first; element 1, the next 1784register; and so on. 1785 1786The macro body should not assume anything about the contents of 1787@code{reg_alloc_order} before execution of the macro. 1788 1789On most machines, it is not necessary to define this macro. 1790@end defmac 1791 1792@defmac HONOR_REG_ALLOC_ORDER 1793Normally, IRA tries to estimate the costs for saving a register in the 1794prologue and restoring it in the epilogue. This discourages it from 1795using call-saved registers. If a machine wants to ensure that IRA 1796allocates registers in the order given by REG_ALLOC_ORDER even if some 1797call-saved registers appear earlier than call-used ones, then define this 1798macro as a C expression to nonzero. Default is 0. 1799@end defmac 1800 1801@defmac IRA_HARD_REGNO_ADD_COST_MULTIPLIER (@var{regno}) 1802In some case register allocation order is not enough for the 1803Integrated Register Allocator (@acronym{IRA}) to generate a good code. 1804If this macro is defined, it should return a floating point value 1805based on @var{regno}. The cost of using @var{regno} for a pseudo will 1806be increased by approximately the pseudo's usage frequency times the 1807value returned by this macro. Not defining this macro is equivalent 1808to having it always return @code{0.0}. 1809 1810On most machines, it is not necessary to define this macro. 1811@end defmac 1812 1813@node Values in Registers 1814@subsection How Values Fit in Registers 1815 1816This section discusses the macros that describe which kinds of values 1817(specifically, which machine modes) each register can hold, and how many 1818consecutive registers are needed for a given mode. 1819 1820@hook TARGET_HARD_REGNO_NREGS 1821 1822@defmac HARD_REGNO_NREGS_HAS_PADDING (@var{regno}, @var{mode}) 1823A C expression that is nonzero if a value of mode @var{mode}, stored 1824in memory, ends with padding that causes it to take up more space than 1825in registers starting at register number @var{regno} (as determined by 1826multiplying GCC's notion of the size of the register when containing 1827this mode by the number of registers returned by 1828@code{TARGET_HARD_REGNO_NREGS}). By default this is zero. 1829 1830For example, if a floating-point value is stored in three 32-bit 1831registers but takes up 128 bits in memory, then this would be 1832nonzero. 1833 1834This macros only needs to be defined if there are cases where 1835@code{subreg_get_info} 1836would otherwise wrongly determine that a @code{subreg} can be 1837represented by an offset to the register number, when in fact such a 1838@code{subreg} would contain some of the padding not stored in 1839registers and so not be representable. 1840@end defmac 1841 1842@defmac HARD_REGNO_NREGS_WITH_PADDING (@var{regno}, @var{mode}) 1843For values of @var{regno} and @var{mode} for which 1844@code{HARD_REGNO_NREGS_HAS_PADDING} returns nonzero, a C expression 1845returning the greater number of registers required to hold the value 1846including any padding. In the example above, the value would be four. 1847@end defmac 1848 1849@defmac REGMODE_NATURAL_SIZE (@var{mode}) 1850Define this macro if the natural size of registers that hold values 1851of mode @var{mode} is not the word size. It is a C expression that 1852should give the natural size in bytes for the specified mode. It is 1853used by the register allocator to try to optimize its results. This 1854happens for example on SPARC 64-bit where the natural size of 1855floating-point registers is still 32-bit. 1856@end defmac 1857 1858@hook TARGET_HARD_REGNO_MODE_OK 1859 1860@defmac HARD_REGNO_RENAME_OK (@var{from}, @var{to}) 1861A C expression that is nonzero if it is OK to rename a hard register 1862@var{from} to another hard register @var{to}. 1863 1864One common use of this macro is to prevent renaming of a register to 1865another register that is not saved by a prologue in an interrupt 1866handler. 1867 1868The default is always nonzero. 1869@end defmac 1870 1871@hook TARGET_MODES_TIEABLE_P 1872 1873@hook TARGET_HARD_REGNO_SCRATCH_OK 1874 1875@defmac AVOID_CCMODE_COPIES 1876Define this macro if the compiler should avoid copies to/from @code{CCmode} 1877registers. You should only define this macro if support for copying to/from 1878@code{CCmode} is incomplete. 1879@end defmac 1880 1881@node Leaf Functions 1882@subsection Handling Leaf Functions 1883 1884@cindex leaf functions 1885@cindex functions, leaf 1886On some machines, a leaf function (i.e., one which makes no calls) can run 1887more efficiently if it does not make its own register window. Often this 1888means it is required to receive its arguments in the registers where they 1889are passed by the caller, instead of the registers where they would 1890normally arrive. 1891 1892The special treatment for leaf functions generally applies only when 1893other conditions are met; for example, often they may use only those 1894registers for its own variables and temporaries. We use the term ``leaf 1895function'' to mean a function that is suitable for this special 1896handling, so that functions with no calls are not necessarily ``leaf 1897functions''. 1898 1899GCC assigns register numbers before it knows whether the function is 1900suitable for leaf function treatment. So it needs to renumber the 1901registers in order to output a leaf function. The following macros 1902accomplish this. 1903 1904@defmac LEAF_REGISTERS 1905Name of a char vector, indexed by hard register number, which 1906contains 1 for a register that is allowable in a candidate for leaf 1907function treatment. 1908 1909If leaf function treatment involves renumbering the registers, then the 1910registers marked here should be the ones before renumbering---those that 1911GCC would ordinarily allocate. The registers which will actually be 1912used in the assembler code, after renumbering, should not be marked with 1 1913in this vector. 1914 1915Define this macro only if the target machine offers a way to optimize 1916the treatment of leaf functions. 1917@end defmac 1918 1919@defmac LEAF_REG_REMAP (@var{regno}) 1920A C expression whose value is the register number to which @var{regno} 1921should be renumbered, when a function is treated as a leaf function. 1922 1923If @var{regno} is a register number which should not appear in a leaf 1924function before renumbering, then the expression should yield @minus{}1, which 1925will cause the compiler to abort. 1926 1927Define this macro only if the target machine offers a way to optimize the 1928treatment of leaf functions, and registers need to be renumbered to do 1929this. 1930@end defmac 1931 1932@findex current_function_is_leaf 1933@findex current_function_uses_only_leaf_regs 1934@code{TARGET_ASM_FUNCTION_PROLOGUE} and 1935@code{TARGET_ASM_FUNCTION_EPILOGUE} must usually treat leaf functions 1936specially. They can test the C variable @code{current_function_is_leaf} 1937which is nonzero for leaf functions. @code{current_function_is_leaf} is 1938set prior to local register allocation and is valid for the remaining 1939compiler passes. They can also test the C variable 1940@code{current_function_uses_only_leaf_regs} which is nonzero for leaf 1941functions which only use leaf registers. 1942@code{current_function_uses_only_leaf_regs} is valid after all passes 1943that modify the instructions have been run and is only useful if 1944@code{LEAF_REGISTERS} is defined. 1945@c changed this to fix overfull. ALSO: why the "it" at the beginning 1946@c of the next paragraph?! --mew 2feb93 1947 1948@node Stack Registers 1949@subsection Registers That Form a Stack 1950 1951There are special features to handle computers where some of the 1952``registers'' form a stack. Stack registers are normally written by 1953pushing onto the stack, and are numbered relative to the top of the 1954stack. 1955 1956Currently, GCC can only handle one group of stack-like registers, and 1957they must be consecutively numbered. Furthermore, the existing 1958support for stack-like registers is specific to the 80387 floating 1959point coprocessor. If you have a new architecture that uses 1960stack-like registers, you will need to do substantial work on 1961@file{reg-stack.c} and write your machine description to cooperate 1962with it, as well as defining these macros. 1963 1964@defmac STACK_REGS 1965Define this if the machine has any stack-like registers. 1966@end defmac 1967 1968@defmac STACK_REG_COVER_CLASS 1969This is a cover class containing the stack registers. Define this if 1970the machine has any stack-like registers. 1971@end defmac 1972 1973@defmac FIRST_STACK_REG 1974The number of the first stack-like register. This one is the top 1975of the stack. 1976@end defmac 1977 1978@defmac LAST_STACK_REG 1979The number of the last stack-like register. This one is the bottom of 1980the stack. 1981@end defmac 1982 1983@node Register Classes 1984@section Register Classes 1985@cindex register class definitions 1986@cindex class definitions, register 1987 1988On many machines, the numbered registers are not all equivalent. 1989For example, certain registers may not be allowed for indexed addressing; 1990certain registers may not be allowed in some instructions. These machine 1991restrictions are described to the compiler using @dfn{register classes}. 1992 1993You define a number of register classes, giving each one a name and saying 1994which of the registers belong to it. Then you can specify register classes 1995that are allowed as operands to particular instruction patterns. 1996 1997@findex ALL_REGS 1998@findex NO_REGS 1999In general, each register will belong to several classes. In fact, one 2000class must be named @code{ALL_REGS} and contain all the registers. Another 2001class must be named @code{NO_REGS} and contain no registers. Often the 2002union of two classes will be another class; however, this is not required. 2003 2004@findex GENERAL_REGS 2005One of the classes must be named @code{GENERAL_REGS}. There is nothing 2006terribly special about the name, but the operand constraint letters 2007@samp{r} and @samp{g} specify this class. If @code{GENERAL_REGS} is 2008the same as @code{ALL_REGS}, just define it as a macro which expands 2009to @code{ALL_REGS}. 2010 2011Order the classes so that if class @var{x} is contained in class @var{y} 2012then @var{x} has a lower class number than @var{y}. 2013 2014The way classes other than @code{GENERAL_REGS} are specified in operand 2015constraints is through machine-dependent operand constraint letters. 2016You can define such letters to correspond to various classes, then use 2017them in operand constraints. 2018 2019You must define the narrowest register classes for allocatable 2020registers, so that each class either has no subclasses, or that for 2021some mode, the move cost between registers within the class is 2022cheaper than moving a register in the class to or from memory 2023(@pxref{Costs}). 2024 2025You should define a class for the union of two classes whenever some 2026instruction allows both classes. For example, if an instruction allows 2027either a floating point (coprocessor) register or a general register for a 2028certain operand, you should define a class @code{FLOAT_OR_GENERAL_REGS} 2029which includes both of them. Otherwise you will get suboptimal code, 2030or even internal compiler errors when reload cannot find a register in the 2031class computed via @code{reg_class_subunion}. 2032 2033You must also specify certain redundant information about the register 2034classes: for each class, which classes contain it and which ones are 2035contained in it; for each pair of classes, the largest class contained 2036in their union. 2037 2038When a value occupying several consecutive registers is expected in a 2039certain class, all the registers used must belong to that class. 2040Therefore, register classes cannot be used to enforce a requirement for 2041a register pair to start with an even-numbered register. The way to 2042specify this requirement is with @code{TARGET_HARD_REGNO_MODE_OK}. 2043 2044Register classes used for input-operands of bitwise-and or shift 2045instructions have a special requirement: each such class must have, for 2046each fixed-point machine mode, a subclass whose registers can transfer that 2047mode to or from memory. For example, on some machines, the operations for 2048single-byte values (@code{QImode}) are limited to certain registers. When 2049this is so, each register class that is used in a bitwise-and or shift 2050instruction must have a subclass consisting of registers from which 2051single-byte values can be loaded or stored. This is so that 2052@code{PREFERRED_RELOAD_CLASS} can always have a possible value to return. 2053 2054@deftp {Data type} {enum reg_class} 2055An enumerated type that must be defined with all the register class names 2056as enumerated values. @code{NO_REGS} must be first. @code{ALL_REGS} 2057must be the last register class, followed by one more enumerated value, 2058@code{LIM_REG_CLASSES}, which is not a register class but rather 2059tells how many classes there are. 2060 2061Each register class has a number, which is the value of casting 2062the class name to type @code{int}. The number serves as an index 2063in many of the tables described below. 2064@end deftp 2065 2066@defmac N_REG_CLASSES 2067The number of distinct register classes, defined as follows: 2068 2069@smallexample 2070#define N_REG_CLASSES (int) LIM_REG_CLASSES 2071@end smallexample 2072@end defmac 2073 2074@defmac REG_CLASS_NAMES 2075An initializer containing the names of the register classes as C string 2076constants. These names are used in writing some of the debugging dumps. 2077@end defmac 2078 2079@defmac REG_CLASS_CONTENTS 2080An initializer containing the contents of the register classes, as integers 2081which are bit masks. The @var{n}th integer specifies the contents of class 2082@var{n}. The way the integer @var{mask} is interpreted is that 2083register @var{r} is in the class if @code{@var{mask} & (1 << @var{r})} is 1. 2084 2085When the machine has more than 32 registers, an integer does not suffice. 2086Then the integers are replaced by sub-initializers, braced groupings containing 2087several integers. Each sub-initializer must be suitable as an initializer 2088for the type @code{HARD_REG_SET} which is defined in @file{hard-reg-set.h}. 2089In this situation, the first integer in each sub-initializer corresponds to 2090registers 0 through 31, the second integer to registers 32 through 63, and 2091so on. 2092@end defmac 2093 2094@defmac REGNO_REG_CLASS (@var{regno}) 2095A C expression whose value is a register class containing hard register 2096@var{regno}. In general there is more than one such class; choose a class 2097which is @dfn{minimal}, meaning that no smaller class also contains the 2098register. 2099@end defmac 2100 2101@defmac BASE_REG_CLASS 2102A macro whose definition is the name of the class to which a valid 2103base register must belong. A base register is one used in an address 2104which is the register value plus a displacement. 2105@end defmac 2106 2107@defmac MODE_BASE_REG_CLASS (@var{mode}) 2108This is a variation of the @code{BASE_REG_CLASS} macro which allows 2109the selection of a base register in a mode dependent manner. If 2110@var{mode} is VOIDmode then it should return the same value as 2111@code{BASE_REG_CLASS}. 2112@end defmac 2113 2114@defmac MODE_BASE_REG_REG_CLASS (@var{mode}) 2115A C expression whose value is the register class to which a valid 2116base register must belong in order to be used in a base plus index 2117register address. You should define this macro if base plus index 2118addresses have different requirements than other base register uses. 2119@end defmac 2120 2121@defmac MODE_CODE_BASE_REG_CLASS (@var{mode}, @var{address_space}, @var{outer_code}, @var{index_code}) 2122A C expression whose value is the register class to which a valid 2123base register for a memory reference in mode @var{mode} to address 2124space @var{address_space} must belong. @var{outer_code} and @var{index_code} 2125define the context in which the base register occurs. @var{outer_code} is 2126the code of the immediately enclosing expression (@code{MEM} for the top level 2127of an address, @code{ADDRESS} for something that occurs in an 2128@code{address_operand}). @var{index_code} is the code of the corresponding 2129index expression if @var{outer_code} is @code{PLUS}; @code{SCRATCH} otherwise. 2130@end defmac 2131 2132@defmac INDEX_REG_CLASS 2133A macro whose definition is the name of the class to which a valid 2134index register must belong. An index register is one used in an 2135address where its value is either multiplied by a scale factor or 2136added to another register (as well as added to a displacement). 2137@end defmac 2138 2139@defmac REGNO_OK_FOR_BASE_P (@var{num}) 2140A C expression which is nonzero if register number @var{num} is 2141suitable for use as a base register in operand addresses. 2142@end defmac 2143 2144@defmac REGNO_MODE_OK_FOR_BASE_P (@var{num}, @var{mode}) 2145A C expression that is just like @code{REGNO_OK_FOR_BASE_P}, except that 2146that expression may examine the mode of the memory reference in 2147@var{mode}. You should define this macro if the mode of the memory 2148reference affects whether a register may be used as a base register. If 2149you define this macro, the compiler will use it instead of 2150@code{REGNO_OK_FOR_BASE_P}. The mode may be @code{VOIDmode} for 2151addresses that appear outside a @code{MEM}, i.e., as an 2152@code{address_operand}. 2153@end defmac 2154 2155@defmac REGNO_MODE_OK_FOR_REG_BASE_P (@var{num}, @var{mode}) 2156A C expression which is nonzero if register number @var{num} is suitable for 2157use as a base register in base plus index operand addresses, accessing 2158memory in mode @var{mode}. It may be either a suitable hard register or a 2159pseudo register that has been allocated such a hard register. You should 2160define this macro if base plus index addresses have different requirements 2161than other base register uses. 2162 2163Use of this macro is deprecated; please use the more general 2164@code{REGNO_MODE_CODE_OK_FOR_BASE_P}. 2165@end defmac 2166 2167@defmac REGNO_MODE_CODE_OK_FOR_BASE_P (@var{num}, @var{mode}, @var{address_space}, @var{outer_code}, @var{index_code}) 2168A C expression which is nonzero if register number @var{num} is 2169suitable for use as a base register in operand addresses, accessing 2170memory in mode @var{mode} in address space @var{address_space}. 2171This is similar to @code{REGNO_MODE_OK_FOR_BASE_P}, except 2172that that expression may examine the context in which the register 2173appears in the memory reference. @var{outer_code} is the code of the 2174immediately enclosing expression (@code{MEM} if at the top level of the 2175address, @code{ADDRESS} for something that occurs in an 2176@code{address_operand}). @var{index_code} is the code of the 2177corresponding index expression if @var{outer_code} is @code{PLUS}; 2178@code{SCRATCH} otherwise. The mode may be @code{VOIDmode} for addresses 2179that appear outside a @code{MEM}, i.e., as an @code{address_operand}. 2180@end defmac 2181 2182@defmac REGNO_OK_FOR_INDEX_P (@var{num}) 2183A C expression which is nonzero if register number @var{num} is 2184suitable for use as an index register in operand addresses. It may be 2185either a suitable hard register or a pseudo register that has been 2186allocated such a hard register. 2187 2188The difference between an index register and a base register is that 2189the index register may be scaled. If an address involves the sum of 2190two registers, neither one of them scaled, then either one may be 2191labeled the ``base'' and the other the ``index''; but whichever 2192labeling is used must fit the machine's constraints of which registers 2193may serve in each capacity. The compiler will try both labelings, 2194looking for one that is valid, and will reload one or both registers 2195only if neither labeling works. 2196@end defmac 2197 2198@hook TARGET_PREFERRED_RENAME_CLASS 2199 2200@hook TARGET_PREFERRED_RELOAD_CLASS 2201 2202@defmac PREFERRED_RELOAD_CLASS (@var{x}, @var{class}) 2203A C expression that places additional restrictions on the register class 2204to use when it is necessary to copy value @var{x} into a register in class 2205@var{class}. The value is a register class; perhaps @var{class}, or perhaps 2206another, smaller class. On many machines, the following definition is 2207safe: 2208 2209@smallexample 2210#define PREFERRED_RELOAD_CLASS(X,CLASS) CLASS 2211@end smallexample 2212 2213Sometimes returning a more restrictive class makes better code. For 2214example, on the 68000, when @var{x} is an integer constant that is in range 2215for a @samp{moveq} instruction, the value of this macro is always 2216@code{DATA_REGS} as long as @var{class} includes the data registers. 2217Requiring a data register guarantees that a @samp{moveq} will be used. 2218 2219One case where @code{PREFERRED_RELOAD_CLASS} must not return 2220@var{class} is if @var{x} is a legitimate constant which cannot be 2221loaded into some register class. By returning @code{NO_REGS} you can 2222force @var{x} into a memory location. For example, rs6000 can load 2223immediate values into general-purpose registers, but does not have an 2224instruction for loading an immediate value into a floating-point 2225register, so @code{PREFERRED_RELOAD_CLASS} returns @code{NO_REGS} when 2226@var{x} is a floating-point constant. If the constant cannot be loaded 2227into any kind of register, code generation will be better if 2228@code{TARGET_LEGITIMATE_CONSTANT_P} makes the constant illegitimate instead 2229of using @code{TARGET_PREFERRED_RELOAD_CLASS}. 2230 2231If an insn has pseudos in it after register allocation, reload will go 2232through the alternatives and call repeatedly @code{PREFERRED_RELOAD_CLASS} 2233to find the best one. Returning @code{NO_REGS}, in this case, makes 2234reload add a @code{!} in front of the constraint: the x86 back-end uses 2235this feature to discourage usage of 387 registers when math is done in 2236the SSE registers (and vice versa). 2237@end defmac 2238 2239@hook TARGET_PREFERRED_OUTPUT_RELOAD_CLASS 2240 2241@defmac LIMIT_RELOAD_CLASS (@var{mode}, @var{class}) 2242A C expression that places additional restrictions on the register class 2243to use when it is necessary to be able to hold a value of mode 2244@var{mode} in a reload register for which class @var{class} would 2245ordinarily be used. 2246 2247Unlike @code{PREFERRED_RELOAD_CLASS}, this macro should be used when 2248there are certain modes that simply cannot go in certain reload classes. 2249 2250The value is a register class; perhaps @var{class}, or perhaps another, 2251smaller class. 2252 2253Don't define this macro unless the target machine has limitations which 2254require the macro to do something nontrivial. 2255@end defmac 2256 2257@hook TARGET_SECONDARY_RELOAD 2258 2259@defmac SECONDARY_RELOAD_CLASS (@var{class}, @var{mode}, @var{x}) 2260@defmacx SECONDARY_INPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x}) 2261@defmacx SECONDARY_OUTPUT_RELOAD_CLASS (@var{class}, @var{mode}, @var{x}) 2262These macros are obsolete, new ports should use the target hook 2263@code{TARGET_SECONDARY_RELOAD} instead. 2264 2265These are obsolete macros, replaced by the @code{TARGET_SECONDARY_RELOAD} 2266target hook. Older ports still define these macros to indicate to the 2267reload phase that it may 2268need to allocate at least one register for a reload in addition to the 2269register to contain the data. Specifically, if copying @var{x} to a 2270register @var{class} in @var{mode} requires an intermediate register, 2271you were supposed to define @code{SECONDARY_INPUT_RELOAD_CLASS} to return the 2272largest register class all of whose registers can be used as 2273intermediate registers or scratch registers. 2274 2275If copying a register @var{class} in @var{mode} to @var{x} requires an 2276intermediate or scratch register, @code{SECONDARY_OUTPUT_RELOAD_CLASS} 2277was supposed to be defined be defined to return the largest register 2278class required. If the 2279requirements for input and output reloads were the same, the macro 2280@code{SECONDARY_RELOAD_CLASS} should have been used instead of defining both 2281macros identically. 2282 2283The values returned by these macros are often @code{GENERAL_REGS}. 2284Return @code{NO_REGS} if no spare register is needed; i.e., if @var{x} 2285can be directly copied to or from a register of @var{class} in 2286@var{mode} without requiring a scratch register. Do not define this 2287macro if it would always return @code{NO_REGS}. 2288 2289If a scratch register is required (either with or without an 2290intermediate register), you were supposed to define patterns for 2291@samp{reload_in@var{m}} or @samp{reload_out@var{m}}, as required 2292(@pxref{Standard Names}. These patterns, which were normally 2293implemented with a @code{define_expand}, should be similar to the 2294@samp{mov@var{m}} patterns, except that operand 2 is the scratch 2295register. 2296 2297These patterns need constraints for the reload register and scratch 2298register that 2299contain a single register class. If the original reload register (whose 2300class is @var{class}) can meet the constraint given in the pattern, the 2301value returned by these macros is used for the class of the scratch 2302register. Otherwise, two additional reload registers are required. 2303Their classes are obtained from the constraints in the insn pattern. 2304 2305@var{x} might be a pseudo-register or a @code{subreg} of a 2306pseudo-register, which could either be in a hard register or in memory. 2307Use @code{true_regnum} to find out; it will return @minus{}1 if the pseudo is 2308in memory and the hard register number if it is in a register. 2309 2310These macros should not be used in the case where a particular class of 2311registers can only be copied to memory and not to another class of 2312registers. In that case, secondary reload registers are not needed and 2313would not be helpful. Instead, a stack location must be used to perform 2314the copy and the @code{mov@var{m}} pattern should use memory as an 2315intermediate storage. This case often occurs between floating-point and 2316general registers. 2317@end defmac 2318 2319@hook TARGET_SECONDARY_MEMORY_NEEDED 2320 2321@defmac SECONDARY_MEMORY_NEEDED_RTX (@var{mode}) 2322Normally when @code{TARGET_SECONDARY_MEMORY_NEEDED} is defined, the compiler 2323allocates a stack slot for a memory location needed for register copies. 2324If this macro is defined, the compiler instead uses the memory location 2325defined by this macro. 2326 2327Do not define this macro if you do not define 2328@code{TARGET_SECONDARY_MEMORY_NEEDED}. 2329@end defmac 2330 2331@hook TARGET_SECONDARY_MEMORY_NEEDED_MODE 2332 2333@hook TARGET_SELECT_EARLY_REMAT_MODES 2334 2335@hook TARGET_CLASS_LIKELY_SPILLED_P 2336 2337@hook TARGET_CLASS_MAX_NREGS 2338 2339@defmac CLASS_MAX_NREGS (@var{class}, @var{mode}) 2340A C expression for the maximum number of consecutive registers 2341of class @var{class} needed to hold a value of mode @var{mode}. 2342 2343This is closely related to the macro @code{TARGET_HARD_REGNO_NREGS}. In fact, 2344the value of the macro @code{CLASS_MAX_NREGS (@var{class}, @var{mode})} 2345should be the maximum value of @code{TARGET_HARD_REGNO_NREGS (@var{regno}, 2346@var{mode})} for all @var{regno} values in the class @var{class}. 2347 2348This macro helps control the handling of multiple-word values 2349in the reload pass. 2350@end defmac 2351 2352@hook TARGET_CAN_CHANGE_MODE_CLASS 2353 2354@hook TARGET_IRA_CHANGE_PSEUDO_ALLOCNO_CLASS 2355 2356@hook TARGET_LRA_P 2357 2358@hook TARGET_REGISTER_PRIORITY 2359 2360@hook TARGET_REGISTER_USAGE_LEVELING_P 2361 2362@hook TARGET_DIFFERENT_ADDR_DISPLACEMENT_P 2363 2364@hook TARGET_CANNOT_SUBSTITUTE_MEM_EQUIV_P 2365 2366@hook TARGET_LEGITIMIZE_ADDRESS_DISPLACEMENT 2367 2368@hook TARGET_SPILL_CLASS 2369 2370@hook TARGET_ADDITIONAL_ALLOCNO_CLASS_P 2371 2372@hook TARGET_CSTORE_MODE 2373 2374@hook TARGET_COMPUTE_PRESSURE_CLASSES 2375 2376@node Stack and Calling 2377@section Stack Layout and Calling Conventions 2378@cindex calling conventions 2379 2380@c prevent bad page break with this line 2381This describes the stack layout and calling conventions. 2382 2383@menu 2384* Frame Layout:: 2385* Exception Handling:: 2386* Stack Checking:: 2387* Frame Registers:: 2388* Elimination:: 2389* Stack Arguments:: 2390* Register Arguments:: 2391* Scalar Return:: 2392* Aggregate Return:: 2393* Caller Saves:: 2394* Function Entry:: 2395* Profiling:: 2396* Tail Calls:: 2397* Shrink-wrapping separate components:: 2398* Stack Smashing Protection:: 2399* Miscellaneous Register Hooks:: 2400@end menu 2401 2402@node Frame Layout 2403@subsection Basic Stack Layout 2404@cindex stack frame layout 2405@cindex frame layout 2406 2407@c prevent bad page break with this line 2408Here is the basic stack layout. 2409 2410@defmac STACK_GROWS_DOWNWARD 2411Define this macro to be true if pushing a word onto the stack moves the stack 2412pointer to a smaller address, and false otherwise. 2413@end defmac 2414 2415@defmac STACK_PUSH_CODE 2416This macro defines the operation used when something is pushed 2417on the stack. In RTL, a push operation will be 2418@code{(set (mem (STACK_PUSH_CODE (reg sp))) @dots{})} 2419 2420The choices are @code{PRE_DEC}, @code{POST_DEC}, @code{PRE_INC}, 2421and @code{POST_INC}. Which of these is correct depends on 2422the stack direction and on whether the stack pointer points 2423to the last item on the stack or whether it points to the 2424space for the next item on the stack. 2425 2426The default is @code{PRE_DEC} when @code{STACK_GROWS_DOWNWARD} is 2427true, which is almost always right, and @code{PRE_INC} otherwise, 2428which is often wrong. 2429@end defmac 2430 2431@defmac FRAME_GROWS_DOWNWARD 2432Define this macro to nonzero value if the addresses of local variable slots 2433are at negative offsets from the frame pointer. 2434@end defmac 2435 2436@defmac ARGS_GROW_DOWNWARD 2437Define this macro if successive arguments to a function occupy decreasing 2438addresses on the stack. 2439@end defmac 2440 2441@hook TARGET_STARTING_FRAME_OFFSET 2442 2443@defmac STACK_ALIGNMENT_NEEDED 2444Define to zero to disable final alignment of the stack during reload. 2445The nonzero default for this macro is suitable for most ports. 2446 2447On ports where @code{TARGET_STARTING_FRAME_OFFSET} is nonzero or where there 2448is a register save block following the local block that doesn't require 2449alignment to @code{STACK_BOUNDARY}, it may be beneficial to disable 2450stack alignment and do it in the backend. 2451@end defmac 2452 2453@defmac STACK_POINTER_OFFSET 2454Offset from the stack pointer register to the first location at which 2455outgoing arguments are placed. If not specified, the default value of 2456zero is used. This is the proper value for most machines. 2457 2458If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above 2459the first location at which outgoing arguments are placed. 2460@end defmac 2461 2462@defmac FIRST_PARM_OFFSET (@var{fundecl}) 2463Offset from the argument pointer register to the first argument's 2464address. On some machines it may depend on the data type of the 2465function. 2466 2467If @code{ARGS_GROW_DOWNWARD}, this is the offset to the location above 2468the first argument's address. 2469@end defmac 2470 2471@defmac STACK_DYNAMIC_OFFSET (@var{fundecl}) 2472Offset from the stack pointer register to an item dynamically allocated 2473on the stack, e.g., by @code{alloca}. 2474 2475The default value for this macro is @code{STACK_POINTER_OFFSET} plus the 2476length of the outgoing arguments. The default is correct for most 2477machines. See @file{function.c} for details. 2478@end defmac 2479 2480@defmac INITIAL_FRAME_ADDRESS_RTX 2481A C expression whose value is RTL representing the address of the initial 2482stack frame. This address is passed to @code{RETURN_ADDR_RTX} and 2483@code{DYNAMIC_CHAIN_ADDRESS}. If you don't define this macro, a reasonable 2484default value will be used. Define this macro in order to make frame pointer 2485elimination work in the presence of @code{__builtin_frame_address (count)} and 2486@code{__builtin_return_address (count)} for @code{count} not equal to zero. 2487@end defmac 2488 2489@defmac DYNAMIC_CHAIN_ADDRESS (@var{frameaddr}) 2490A C expression whose value is RTL representing the address in a stack 2491frame where the pointer to the caller's frame is stored. Assume that 2492@var{frameaddr} is an RTL expression for the address of the stack frame 2493itself. 2494 2495If you don't define this macro, the default is to return the value 2496of @var{frameaddr}---that is, the stack frame address is also the 2497address of the stack word that points to the previous frame. 2498@end defmac 2499 2500@defmac SETUP_FRAME_ADDRESSES 2501A C expression that produces the machine-specific code to 2502setup the stack so that arbitrary frames can be accessed. For example, 2503on the SPARC, we must flush all of the register windows to the stack 2504before we can access arbitrary stack frames. You will seldom need to 2505define this macro. The default is to do nothing. 2506@end defmac 2507 2508@hook TARGET_BUILTIN_SETJMP_FRAME_VALUE 2509 2510@defmac FRAME_ADDR_RTX (@var{frameaddr}) 2511A C expression whose value is RTL representing the value of the frame 2512address for the current frame. @var{frameaddr} is the frame pointer 2513of the current frame. This is used for __builtin_frame_address. 2514You need only define this macro if the frame address is not the same 2515as the frame pointer. Most machines do not need to define it. 2516@end defmac 2517 2518@defmac RETURN_ADDR_RTX (@var{count}, @var{frameaddr}) 2519A C expression whose value is RTL representing the value of the return 2520address for the frame @var{count} steps up from the current frame, after 2521the prologue. @var{frameaddr} is the frame pointer of the @var{count} 2522frame, or the frame pointer of the @var{count} @minus{} 1 frame if 2523@code{RETURN_ADDR_IN_PREVIOUS_FRAME} is nonzero. 2524 2525The value of the expression must always be the correct address when 2526@var{count} is zero, but may be @code{NULL_RTX} if there is no way to 2527determine the return address of other frames. 2528@end defmac 2529 2530@defmac RETURN_ADDR_IN_PREVIOUS_FRAME 2531Define this macro to nonzero value if the return address of a particular 2532stack frame is accessed from the frame pointer of the previous stack 2533frame. The zero default for this macro is suitable for most ports. 2534@end defmac 2535 2536@defmac INCOMING_RETURN_ADDR_RTX 2537A C expression whose value is RTL representing the location of the 2538incoming return address at the beginning of any function, before the 2539prologue. This RTL is either a @code{REG}, indicating that the return 2540value is saved in @samp{REG}, or a @code{MEM} representing a location in 2541the stack. 2542 2543You only need to define this macro if you want to support call frame 2544debugging information like that provided by DWARF 2. 2545 2546If this RTL is a @code{REG}, you should also define 2547@code{DWARF_FRAME_RETURN_COLUMN} to @code{DWARF_FRAME_REGNUM (REGNO)}. 2548@end defmac 2549 2550@defmac DWARF_ALT_FRAME_RETURN_COLUMN 2551A C expression whose value is an integer giving a DWARF 2 column 2552number that may be used as an alternative return column. The column 2553must not correspond to any gcc hard register (that is, it must not 2554be in the range of @code{DWARF_FRAME_REGNUM}). 2555 2556This macro can be useful if @code{DWARF_FRAME_RETURN_COLUMN} is set to a 2557general register, but an alternative column needs to be used for signal 2558frames. Some targets have also used different frame return columns 2559over time. 2560@end defmac 2561 2562@defmac DWARF_ZERO_REG 2563A C expression whose value is an integer giving a DWARF 2 register 2564number that is considered to always have the value zero. This should 2565only be defined if the target has an architected zero register, and 2566someone decided it was a good idea to use that register number to 2567terminate the stack backtrace. New ports should avoid this. 2568@end defmac 2569 2570@hook TARGET_DWARF_HANDLE_FRAME_UNSPEC 2571 2572@hook TARGET_DWARF_POLY_INDETERMINATE_VALUE 2573 2574@defmac INCOMING_FRAME_SP_OFFSET 2575A C expression whose value is an integer giving the offset, in bytes, 2576from the value of the stack pointer register to the top of the stack 2577frame at the beginning of any function, before the prologue. The top of 2578the frame is defined to be the value of the stack pointer in the 2579previous frame, just before the call instruction. 2580 2581You only need to define this macro if you want to support call frame 2582debugging information like that provided by DWARF 2. 2583@end defmac 2584 2585@defmac DEFAULT_INCOMING_FRAME_SP_OFFSET 2586Like @code{INCOMING_FRAME_SP_OFFSET}, but must be the same for all 2587functions of the same ABI, and when using GAS @code{.cfi_*} directives 2588must also agree with the default CFI GAS emits. Define this macro 2589only if @code{INCOMING_FRAME_SP_OFFSET} can have different values 2590between different functions of the same ABI or when 2591@code{INCOMING_FRAME_SP_OFFSET} does not agree with GAS default CFI. 2592@end defmac 2593 2594@defmac ARG_POINTER_CFA_OFFSET (@var{fundecl}) 2595A C expression whose value is an integer giving the offset, in bytes, 2596from the argument pointer to the canonical frame address (cfa). The 2597final value should coincide with that calculated by 2598@code{INCOMING_FRAME_SP_OFFSET}. Which is unfortunately not usable 2599during virtual register instantiation. 2600 2601The default value for this macro is 2602@code{FIRST_PARM_OFFSET (fundecl) + crtl->args.pretend_args_size}, 2603which is correct for most machines; in general, the arguments are found 2604immediately before the stack frame. Note that this is not the case on 2605some targets that save registers into the caller's frame, such as SPARC 2606and rs6000, and so such targets need to define this macro. 2607 2608You only need to define this macro if the default is incorrect, and you 2609want to support call frame debugging information like that provided by 2610DWARF 2. 2611@end defmac 2612 2613@defmac FRAME_POINTER_CFA_OFFSET (@var{fundecl}) 2614If defined, a C expression whose value is an integer giving the offset 2615in bytes from the frame pointer to the canonical frame address (cfa). 2616The final value should coincide with that calculated by 2617@code{INCOMING_FRAME_SP_OFFSET}. 2618 2619Normally the CFA is calculated as an offset from the argument pointer, 2620via @code{ARG_POINTER_CFA_OFFSET}, but if the argument pointer is 2621variable due to the ABI, this may not be possible. If this macro is 2622defined, it implies that the virtual register instantiation should be 2623based on the frame pointer instead of the argument pointer. Only one 2624of @code{FRAME_POINTER_CFA_OFFSET} and @code{ARG_POINTER_CFA_OFFSET} 2625should be defined. 2626@end defmac 2627 2628@defmac CFA_FRAME_BASE_OFFSET (@var{fundecl}) 2629If defined, a C expression whose value is an integer giving the offset 2630in bytes from the canonical frame address (cfa) to the frame base used 2631in DWARF 2 debug information. The default is zero. A different value 2632may reduce the size of debug information on some ports. 2633@end defmac 2634 2635@node Exception Handling 2636@subsection Exception Handling Support 2637@cindex exception handling 2638 2639@defmac EH_RETURN_DATA_REGNO (@var{N}) 2640A C expression whose value is the @var{N}th register number used for 2641data by exception handlers, or @code{INVALID_REGNUM} if fewer than 2642@var{N} registers are usable. 2643 2644The exception handling library routines communicate with the exception 2645handlers via a set of agreed upon registers. Ideally these registers 2646should be call-clobbered; it is possible to use call-saved registers, 2647but may negatively impact code size. The target must support at least 26482 data registers, but should define 4 if there are enough free registers. 2649 2650You must define this macro if you want to support call frame exception 2651handling like that provided by DWARF 2. 2652@end defmac 2653 2654@defmac EH_RETURN_STACKADJ_RTX 2655A C expression whose value is RTL representing a location in which 2656to store a stack adjustment to be applied before function return. 2657This is used to unwind the stack to an exception handler's call frame. 2658It will be assigned zero on code paths that return normally. 2659 2660Typically this is a call-clobbered hard register that is otherwise 2661untouched by the epilogue, but could also be a stack slot. 2662 2663Do not define this macro if the stack pointer is saved and restored 2664by the regular prolog and epilog code in the call frame itself; in 2665this case, the exception handling library routines will update the 2666stack location to be restored in place. Otherwise, you must define 2667this macro if you want to support call frame exception handling like 2668that provided by DWARF 2. 2669@end defmac 2670 2671@defmac EH_RETURN_HANDLER_RTX 2672A C expression whose value is RTL representing a location in which 2673to store the address of an exception handler to which we should 2674return. It will not be assigned on code paths that return normally. 2675 2676Typically this is the location in the call frame at which the normal 2677return address is stored. For targets that return by popping an 2678address off the stack, this might be a memory address just below 2679the @emph{target} call frame rather than inside the current call 2680frame. If defined, @code{EH_RETURN_STACKADJ_RTX} will have already 2681been assigned, so it may be used to calculate the location of the 2682target call frame. 2683 2684Some targets have more complex requirements than storing to an 2685address calculable during initial code generation. In that case 2686the @code{eh_return} instruction pattern should be used instead. 2687 2688If you want to support call frame exception handling, you must 2689define either this macro or the @code{eh_return} instruction pattern. 2690@end defmac 2691 2692@defmac RETURN_ADDR_OFFSET 2693If defined, an integer-valued C expression for which rtl will be generated 2694to add it to the exception handler address before it is searched in the 2695exception handling tables, and to subtract it again from the address before 2696using it to return to the exception handler. 2697@end defmac 2698 2699@defmac ASM_PREFERRED_EH_DATA_FORMAT (@var{code}, @var{global}) 2700This macro chooses the encoding of pointers embedded in the exception 2701handling sections. If at all possible, this should be defined such 2702that the exception handling section will not require dynamic relocations, 2703and so may be read-only. 2704 2705@var{code} is 0 for data, 1 for code labels, 2 for function pointers. 2706@var{global} is true if the symbol may be affected by dynamic relocations. 2707The macro should return a combination of the @code{DW_EH_PE_*} defines 2708as found in @file{dwarf2.h}. 2709 2710If this macro is not defined, pointers will not be encoded but 2711represented directly. 2712@end defmac 2713 2714@defmac ASM_MAYBE_OUTPUT_ENCODED_ADDR_RTX (@var{file}, @var{encoding}, @var{size}, @var{addr}, @var{done}) 2715This macro allows the target to emit whatever special magic is required 2716to represent the encoding chosen by @code{ASM_PREFERRED_EH_DATA_FORMAT}. 2717Generic code takes care of pc-relative and indirect encodings; this must 2718be defined if the target uses text-relative or data-relative encodings. 2719 2720This is a C statement that branches to @var{done} if the format was 2721handled. @var{encoding} is the format chosen, @var{size} is the number 2722of bytes that the format occupies, @var{addr} is the @code{SYMBOL_REF} 2723to be emitted. 2724@end defmac 2725 2726@defmac MD_FALLBACK_FRAME_STATE_FOR (@var{context}, @var{fs}) 2727This macro allows the target to add CPU and operating system specific 2728code to the call-frame unwinder for use when there is no unwind data 2729available. The most common reason to implement this macro is to unwind 2730through signal frames. 2731 2732This macro is called from @code{uw_frame_state_for} in 2733@file{unwind-dw2.c}, @file{unwind-dw2-xtensa.c} and 2734@file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context}; 2735@var{fs} is an @code{_Unwind_FrameState}. Examine @code{context->ra} 2736for the address of the code being executed and @code{context->cfa} for 2737the stack pointer value. If the frame can be decoded, the register 2738save addresses should be updated in @var{fs} and the macro should 2739evaluate to @code{_URC_NO_REASON}. If the frame cannot be decoded, 2740the macro should evaluate to @code{_URC_END_OF_STACK}. 2741 2742For proper signal handling in Java this macro is accompanied by 2743@code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers. 2744@end defmac 2745 2746@defmac MD_HANDLE_UNWABI (@var{context}, @var{fs}) 2747This macro allows the target to add operating system specific code to the 2748call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive, 2749usually used for signal or interrupt frames. 2750 2751This macro is called from @code{uw_update_context} in libgcc's 2752@file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context}; 2753@var{fs} is an @code{_Unwind_FrameState}. Examine @code{fs->unwabi} 2754for the abi and context in the @code{.unwabi} directive. If the 2755@code{.unwabi} directive can be handled, the register save addresses should 2756be updated in @var{fs}. 2757@end defmac 2758 2759@defmac TARGET_USES_WEAK_UNWIND_INFO 2760A C expression that evaluates to true if the target requires unwind 2761info to be given comdat linkage. Define it to be @code{1} if comdat 2762linkage is necessary. The default is @code{0}. 2763@end defmac 2764 2765@node Stack Checking 2766@subsection Specifying How Stack Checking is Done 2767 2768GCC will check that stack references are within the boundaries of the 2769stack, if the option @option{-fstack-check} is specified, in one of 2770three ways: 2771 2772@enumerate 2773@item 2774If the value of the @code{STACK_CHECK_BUILTIN} macro is nonzero, GCC 2775will assume that you have arranged for full stack checking to be done 2776at appropriate places in the configuration files. GCC will not do 2777other special processing. 2778 2779@item 2780If @code{STACK_CHECK_BUILTIN} is zero and the value of the 2781@code{STACK_CHECK_STATIC_BUILTIN} macro is nonzero, GCC will assume 2782that you have arranged for static stack checking (checking of the 2783static stack frame of functions) to be done at appropriate places 2784in the configuration files. GCC will only emit code to do dynamic 2785stack checking (checking on dynamic stack allocations) using the third 2786approach below. 2787 2788@item 2789If neither of the above are true, GCC will generate code to periodically 2790``probe'' the stack pointer using the values of the macros defined below. 2791@end enumerate 2792 2793If neither STACK_CHECK_BUILTIN nor STACK_CHECK_STATIC_BUILTIN is defined, 2794GCC will change its allocation strategy for large objects if the option 2795@option{-fstack-check} is specified: they will always be allocated 2796dynamically if their size exceeds @code{STACK_CHECK_MAX_VAR_SIZE} bytes. 2797 2798@defmac STACK_CHECK_BUILTIN 2799A nonzero value if stack checking is done by the configuration files in a 2800machine-dependent manner. You should define this macro if stack checking 2801is required by the ABI of your machine or if you would like to do stack 2802checking in some more efficient way than the generic approach. The default 2803value of this macro is zero. 2804@end defmac 2805 2806@defmac STACK_CHECK_STATIC_BUILTIN 2807A nonzero value if static stack checking is done by the configuration files 2808in a machine-dependent manner. You should define this macro if you would 2809like to do static stack checking in some more efficient way than the generic 2810approach. The default value of this macro is zero. 2811@end defmac 2812 2813@defmac STACK_CHECK_PROBE_INTERVAL_EXP 2814An integer specifying the interval at which GCC must generate stack probe 2815instructions, defined as 2 raised to this integer. You will normally 2816define this macro so that the interval be no larger than the size of 2817the ``guard pages'' at the end of a stack area. The default value 2818of 12 (4096-byte interval) is suitable for most systems. 2819@end defmac 2820 2821@defmac STACK_CHECK_MOVING_SP 2822An integer which is nonzero if GCC should move the stack pointer page by page 2823when doing probes. This can be necessary on systems where the stack pointer 2824contains the bottom address of the memory area accessible to the executing 2825thread at any point in time. In this situation an alternate signal stack 2826is required in order to be able to recover from a stack overflow. The 2827default value of this macro is zero. 2828@end defmac 2829 2830@defmac STACK_CHECK_PROTECT 2831The number of bytes of stack needed to recover from a stack overflow, for 2832languages where such a recovery is supported. The default value of 4KB/8KB 2833with the @code{setjmp}/@code{longjmp}-based exception handling mechanism and 28348KB/12KB with other exception handling mechanisms should be adequate for most 2835architectures and operating systems. 2836@end defmac 2837 2838The following macros are relevant only if neither STACK_CHECK_BUILTIN 2839nor STACK_CHECK_STATIC_BUILTIN is defined; you can omit them altogether 2840in the opposite case. 2841 2842@defmac STACK_CHECK_MAX_FRAME_SIZE 2843The maximum size of a stack frame, in bytes. GCC will generate probe 2844instructions in non-leaf functions to ensure at least this many bytes of 2845stack are available. If a stack frame is larger than this size, stack 2846checking will not be reliable and GCC will issue a warning. The 2847default is chosen so that GCC only generates one instruction on most 2848systems. You should normally not change the default value of this macro. 2849@end defmac 2850 2851@defmac STACK_CHECK_FIXED_FRAME_SIZE 2852GCC uses this value to generate the above warning message. It 2853represents the amount of fixed frame used by a function, not including 2854space for any callee-saved registers, temporaries and user variables. 2855You need only specify an upper bound for this amount and will normally 2856use the default of four words. 2857@end defmac 2858 2859@defmac STACK_CHECK_MAX_VAR_SIZE 2860The maximum size, in bytes, of an object that GCC will place in the 2861fixed area of the stack frame when the user specifies 2862@option{-fstack-check}. 2863GCC computed the default from the values of the above macros and you will 2864normally not need to override that default. 2865@end defmac 2866 2867@hook TARGET_STACK_CLASH_PROTECTION_ALLOCA_PROBE_RANGE 2868 2869@need 2000 2870@node Frame Registers 2871@subsection Registers That Address the Stack Frame 2872 2873@c prevent bad page break with this line 2874This discusses registers that address the stack frame. 2875 2876@defmac STACK_POINTER_REGNUM 2877The register number of the stack pointer register, which must also be a 2878fixed register according to @code{FIXED_REGISTERS}. On most machines, 2879the hardware determines which register this is. 2880@end defmac 2881 2882@defmac FRAME_POINTER_REGNUM 2883The register number of the frame pointer register, which is used to 2884access automatic variables in the stack frame. On some machines, the 2885hardware determines which register this is. On other machines, you can 2886choose any register you wish for this purpose. 2887@end defmac 2888 2889@defmac HARD_FRAME_POINTER_REGNUM 2890On some machines the offset between the frame pointer and starting 2891offset of the automatic variables is not known until after register 2892allocation has been done (for example, because the saved registers are 2893between these two locations). On those machines, define 2894@code{FRAME_POINTER_REGNUM} the number of a special, fixed register to 2895be used internally until the offset is known, and define 2896@code{HARD_FRAME_POINTER_REGNUM} to be the actual hard register number 2897used for the frame pointer. 2898 2899You should define this macro only in the very rare circumstances when it 2900is not possible to calculate the offset between the frame pointer and 2901the automatic variables until after register allocation has been 2902completed. When this macro is defined, you must also indicate in your 2903definition of @code{ELIMINABLE_REGS} how to eliminate 2904@code{FRAME_POINTER_REGNUM} into either @code{HARD_FRAME_POINTER_REGNUM} 2905or @code{STACK_POINTER_REGNUM}. 2906 2907Do not define this macro if it would be the same as 2908@code{FRAME_POINTER_REGNUM}. 2909@end defmac 2910 2911@defmac ARG_POINTER_REGNUM 2912The register number of the arg pointer register, which is used to access 2913the function's argument list. On some machines, this is the same as the 2914frame pointer register. On some machines, the hardware determines which 2915register this is. On other machines, you can choose any register you 2916wish for this purpose. If this is not the same register as the frame 2917pointer register, then you must mark it as a fixed register according to 2918@code{FIXED_REGISTERS}, or arrange to be able to eliminate it 2919(@pxref{Elimination}). 2920@end defmac 2921 2922@defmac HARD_FRAME_POINTER_IS_FRAME_POINTER 2923Define this to a preprocessor constant that is nonzero if 2924@code{hard_frame_pointer_rtx} and @code{frame_pointer_rtx} should be 2925the same. The default definition is @samp{(HARD_FRAME_POINTER_REGNUM 2926== FRAME_POINTER_REGNUM)}; you only need to define this macro if that 2927definition is not suitable for use in preprocessor conditionals. 2928@end defmac 2929 2930@defmac HARD_FRAME_POINTER_IS_ARG_POINTER 2931Define this to a preprocessor constant that is nonzero if 2932@code{hard_frame_pointer_rtx} and @code{arg_pointer_rtx} should be the 2933same. The default definition is @samp{(HARD_FRAME_POINTER_REGNUM == 2934ARG_POINTER_REGNUM)}; you only need to define this macro if that 2935definition is not suitable for use in preprocessor conditionals. 2936@end defmac 2937 2938@defmac RETURN_ADDRESS_POINTER_REGNUM 2939The register number of the return address pointer register, which is used to 2940access the current function's return address from the stack. On some 2941machines, the return address is not at a fixed offset from the frame 2942pointer or stack pointer or argument pointer. This register can be defined 2943to point to the return address on the stack, and then be converted by 2944@code{ELIMINABLE_REGS} into either the frame pointer or stack pointer. 2945 2946Do not define this macro unless there is no other way to get the return 2947address from the stack. 2948@end defmac 2949 2950@defmac STATIC_CHAIN_REGNUM 2951@defmacx STATIC_CHAIN_INCOMING_REGNUM 2952Register numbers used for passing a function's static chain pointer. If 2953register windows are used, the register number as seen by the called 2954function is @code{STATIC_CHAIN_INCOMING_REGNUM}, while the register 2955number as seen by the calling function is @code{STATIC_CHAIN_REGNUM}. If 2956these registers are the same, @code{STATIC_CHAIN_INCOMING_REGNUM} need 2957not be defined. 2958 2959The static chain register need not be a fixed register. 2960 2961If the static chain is passed in memory, these macros should not be 2962defined; instead, the @code{TARGET_STATIC_CHAIN} hook should be used. 2963@end defmac 2964 2965@hook TARGET_STATIC_CHAIN 2966 2967@defmac DWARF_FRAME_REGISTERS 2968This macro specifies the maximum number of hard registers that can be 2969saved in a call frame. This is used to size data structures used in 2970DWARF2 exception handling. 2971 2972Prior to GCC 3.0, this macro was needed in order to establish a stable 2973exception handling ABI in the face of adding new hard registers for ISA 2974extensions. In GCC 3.0 and later, the EH ABI is insulated from changes 2975in the number of hard registers. Nevertheless, this macro can still be 2976used to reduce the runtime memory requirements of the exception handling 2977routines, which can be substantial if the ISA contains a lot of 2978registers that are not call-saved. 2979 2980If this macro is not defined, it defaults to 2981@code{FIRST_PSEUDO_REGISTER}. 2982@end defmac 2983 2984@defmac PRE_GCC3_DWARF_FRAME_REGISTERS 2985 2986This macro is similar to @code{DWARF_FRAME_REGISTERS}, but is provided 2987for backward compatibility in pre GCC 3.0 compiled code. 2988 2989If this macro is not defined, it defaults to 2990@code{DWARF_FRAME_REGISTERS}. 2991@end defmac 2992 2993@defmac DWARF_REG_TO_UNWIND_COLUMN (@var{regno}) 2994 2995Define this macro if the target's representation for dwarf registers 2996is different than the internal representation for unwind column. 2997Given a dwarf register, this macro should return the internal unwind 2998column number to use instead. 2999@end defmac 3000 3001@defmac DWARF_FRAME_REGNUM (@var{regno}) 3002 3003Define this macro if the target's representation for dwarf registers 3004used in .eh_frame or .debug_frame is different from that used in other 3005debug info sections. Given a GCC hard register number, this macro 3006should return the .eh_frame register number. The default is 3007@code{DBX_REGISTER_NUMBER (@var{regno})}. 3008 3009@end defmac 3010 3011@defmac DWARF2_FRAME_REG_OUT (@var{regno}, @var{for_eh}) 3012 3013Define this macro to map register numbers held in the call frame info 3014that GCC has collected using @code{DWARF_FRAME_REGNUM} to those that 3015should be output in .debug_frame (@code{@var{for_eh}} is zero) and 3016.eh_frame (@code{@var{for_eh}} is nonzero). The default is to 3017return @code{@var{regno}}. 3018 3019@end defmac 3020 3021@defmac REG_VALUE_IN_UNWIND_CONTEXT 3022 3023Define this macro if the target stores register values as 3024@code{_Unwind_Word} type in unwind context. It should be defined if 3025target register size is larger than the size of @code{void *}. The 3026default is to store register values as @code{void *} type. 3027 3028@end defmac 3029 3030@defmac ASSUME_EXTENDED_UNWIND_CONTEXT 3031 3032Define this macro to be 1 if the target always uses extended unwind 3033context with version, args_size and by_value fields. If it is undefined, 3034it will be defined to 1 when @code{REG_VALUE_IN_UNWIND_CONTEXT} is 3035defined and 0 otherwise. 3036 3037@end defmac 3038 3039@defmac DWARF_LAZY_REGISTER_VALUE (@var{regno}, @var{value}) 3040Define this macro if the target has pseudo DWARF registers whose 3041values need to be computed lazily on demand by the unwinder (such as when 3042referenced in a CFA expression). The macro returns true if @var{regno} 3043is such a register and stores its value in @samp{*@var{value}} if so. 3044@end defmac 3045 3046@node Elimination 3047@subsection Eliminating Frame Pointer and Arg Pointer 3048 3049@c prevent bad page break with this line 3050This is about eliminating the frame pointer and arg pointer. 3051 3052@hook TARGET_FRAME_POINTER_REQUIRED 3053 3054@defmac ELIMINABLE_REGS 3055This macro specifies a table of register pairs used to eliminate 3056unneeded registers that point into the stack frame. 3057 3058The definition of this macro is a list of structure initializations, each 3059of which specifies an original and replacement register. 3060 3061On some machines, the position of the argument pointer is not known until 3062the compilation is completed. In such a case, a separate hard register 3063must be used for the argument pointer. This register can be eliminated by 3064replacing it with either the frame pointer or the argument pointer, 3065depending on whether or not the frame pointer has been eliminated. 3066 3067In this case, you might specify: 3068@smallexample 3069#define ELIMINABLE_REGS \ 3070@{@{ARG_POINTER_REGNUM, STACK_POINTER_REGNUM@}, \ 3071 @{ARG_POINTER_REGNUM, FRAME_POINTER_REGNUM@}, \ 3072 @{FRAME_POINTER_REGNUM, STACK_POINTER_REGNUM@}@} 3073@end smallexample 3074 3075Note that the elimination of the argument pointer with the stack pointer is 3076specified first since that is the preferred elimination. 3077@end defmac 3078 3079@hook TARGET_CAN_ELIMINATE 3080 3081@defmac INITIAL_ELIMINATION_OFFSET (@var{from-reg}, @var{to-reg}, @var{offset-var}) 3082This macro returns the initial difference between the specified pair 3083of registers. The value would be computed from information 3084such as the result of @code{get_frame_size ()} and the tables of 3085registers @code{df_regs_ever_live_p} and @code{call_used_regs}. 3086@end defmac 3087 3088@hook TARGET_COMPUTE_FRAME_LAYOUT 3089 3090@node Stack Arguments 3091@subsection Passing Function Arguments on the Stack 3092@cindex arguments on stack 3093@cindex stack arguments 3094 3095The macros in this section control how arguments are passed 3096on the stack. See the following section for other macros that 3097control passing certain arguments in registers. 3098 3099@hook TARGET_PROMOTE_PROTOTYPES 3100 3101@defmac PUSH_ARGS 3102A C expression. If nonzero, push insns will be used to pass 3103outgoing arguments. 3104If the target machine does not have a push instruction, set it to zero. 3105That directs GCC to use an alternate strategy: to 3106allocate the entire argument block and then store the arguments into 3107it. When @code{PUSH_ARGS} is nonzero, @code{PUSH_ROUNDING} must be defined too. 3108@end defmac 3109 3110@defmac PUSH_ARGS_REVERSED 3111A C expression. If nonzero, function arguments will be evaluated from 3112last to first, rather than from first to last. If this macro is not 3113defined, it defaults to @code{PUSH_ARGS} on targets where the stack 3114and args grow in opposite directions, and 0 otherwise. 3115@end defmac 3116 3117@defmac PUSH_ROUNDING (@var{npushed}) 3118A C expression that is the number of bytes actually pushed onto the 3119stack when an instruction attempts to push @var{npushed} bytes. 3120 3121On some machines, the definition 3122 3123@smallexample 3124#define PUSH_ROUNDING(BYTES) (BYTES) 3125@end smallexample 3126 3127@noindent 3128will suffice. But on other machines, instructions that appear 3129to push one byte actually push two bytes in an attempt to maintain 3130alignment. Then the definition should be 3131 3132@smallexample 3133#define PUSH_ROUNDING(BYTES) (((BYTES) + 1) & ~1) 3134@end smallexample 3135 3136If the value of this macro has a type, it should be an unsigned type. 3137@end defmac 3138 3139@findex outgoing_args_size 3140@findex crtl->outgoing_args_size 3141@defmac ACCUMULATE_OUTGOING_ARGS 3142A C expression. If nonzero, the maximum amount of space required for outgoing arguments 3143will be computed and placed into 3144@code{crtl->outgoing_args_size}. No space will be pushed 3145onto the stack for each call; instead, the function prologue should 3146increase the stack frame size by this amount. 3147 3148Setting both @code{PUSH_ARGS} and @code{ACCUMULATE_OUTGOING_ARGS} 3149is not proper. 3150@end defmac 3151 3152@defmac REG_PARM_STACK_SPACE (@var{fndecl}) 3153Define this macro if functions should assume that stack space has been 3154allocated for arguments even when their values are passed in 3155registers. 3156 3157The value of this macro is the size, in bytes, of the area reserved for 3158arguments passed in registers for the function represented by @var{fndecl}, 3159which can be zero if GCC is calling a library function. 3160The argument @var{fndecl} can be the FUNCTION_DECL, or the type itself 3161of the function. 3162 3163This space can be allocated by the caller, or be a part of the 3164machine-dependent stack frame: @code{OUTGOING_REG_PARM_STACK_SPACE} says 3165which. 3166@end defmac 3167@c above is overfull. not sure what to do. --mew 5feb93 did 3168@c something, not sure if it looks good. --mew 10feb93 3169 3170@defmac INCOMING_REG_PARM_STACK_SPACE (@var{fndecl}) 3171Like @code{REG_PARM_STACK_SPACE}, but for incoming register arguments. 3172Define this macro if space guaranteed when compiling a function body 3173is different to space required when making a call, a situation that 3174can arise with K&R style function definitions. 3175@end defmac 3176 3177@defmac OUTGOING_REG_PARM_STACK_SPACE (@var{fntype}) 3178Define this to a nonzero value if it is the responsibility of the 3179caller to allocate the area reserved for arguments passed in registers 3180when calling a function of @var{fntype}. @var{fntype} may be NULL 3181if the function called is a library function. 3182 3183If @code{ACCUMULATE_OUTGOING_ARGS} is defined, this macro controls 3184whether the space for these arguments counts in the value of 3185@code{crtl->outgoing_args_size}. 3186@end defmac 3187 3188@defmac STACK_PARMS_IN_REG_PARM_AREA 3189Define this macro if @code{REG_PARM_STACK_SPACE} is defined, but the 3190stack parameters don't skip the area specified by it. 3191@c i changed this, makes more sens and it should have taken care of the 3192@c overfull.. not as specific, tho. --mew 5feb93 3193 3194Normally, when a parameter is not passed in registers, it is placed on the 3195stack beyond the @code{REG_PARM_STACK_SPACE} area. Defining this macro 3196suppresses this behavior and causes the parameter to be passed on the 3197stack in its natural location. 3198@end defmac 3199 3200@hook TARGET_RETURN_POPS_ARGS 3201 3202@defmac CALL_POPS_ARGS (@var{cum}) 3203A C expression that should indicate the number of bytes a call sequence 3204pops off the stack. It is added to the value of @code{RETURN_POPS_ARGS} 3205when compiling a function call. 3206 3207@var{cum} is the variable in which all arguments to the called function 3208have been accumulated. 3209 3210On certain architectures, such as the SH5, a call trampoline is used 3211that pops certain registers off the stack, depending on the arguments 3212that have been passed to the function. Since this is a property of the 3213call site, not of the called function, @code{RETURN_POPS_ARGS} is not 3214appropriate. 3215@end defmac 3216 3217@node Register Arguments 3218@subsection Passing Arguments in Registers 3219@cindex arguments in registers 3220@cindex registers arguments 3221 3222This section describes the macros which let you control how various 3223types of arguments are passed in registers or how they are arranged in 3224the stack. 3225 3226@hook TARGET_FUNCTION_ARG 3227 3228@hook TARGET_MUST_PASS_IN_STACK 3229 3230@hook TARGET_FUNCTION_INCOMING_ARG 3231 3232@hook TARGET_USE_PSEUDO_PIC_REG 3233 3234@hook TARGET_INIT_PIC_REG 3235 3236@hook TARGET_ARG_PARTIAL_BYTES 3237 3238@hook TARGET_PASS_BY_REFERENCE 3239 3240@hook TARGET_CALLEE_COPIES 3241 3242@defmac CUMULATIVE_ARGS 3243A C type for declaring a variable that is used as the first argument 3244of @code{TARGET_FUNCTION_ARG} and other related values. For some 3245target machines, the type @code{int} suffices and can hold the number 3246of bytes of argument so far. 3247 3248There is no need to record in @code{CUMULATIVE_ARGS} anything about the 3249arguments that have been passed on the stack. The compiler has other 3250variables to keep track of that. For target machines on which all 3251arguments are passed on the stack, there is no need to store anything in 3252@code{CUMULATIVE_ARGS}; however, the data structure must exist and 3253should not be empty, so use @code{int}. 3254@end defmac 3255 3256@defmac OVERRIDE_ABI_FORMAT (@var{fndecl}) 3257If defined, this macro is called before generating any code for a 3258function, but after the @var{cfun} descriptor for the function has been 3259created. The back end may use this macro to update @var{cfun} to 3260reflect an ABI other than that which would normally be used by default. 3261If the compiler is generating code for a compiler-generated function, 3262@var{fndecl} may be @code{NULL}. 3263@end defmac 3264 3265@defmac INIT_CUMULATIVE_ARGS (@var{cum}, @var{fntype}, @var{libname}, @var{fndecl}, @var{n_named_args}) 3266A C statement (sans semicolon) for initializing the variable 3267@var{cum} for the state at the beginning of the argument list. The 3268variable has type @code{CUMULATIVE_ARGS}. The value of @var{fntype} 3269is the tree node for the data type of the function which will receive 3270the args, or 0 if the args are to a compiler support library function. 3271For direct calls that are not libcalls, @var{fndecl} contain the 3272declaration node of the function. @var{fndecl} is also set when 3273@code{INIT_CUMULATIVE_ARGS} is used to find arguments for the function 3274being compiled. @var{n_named_args} is set to the number of named 3275arguments, including a structure return address if it is passed as a 3276parameter, when making a call. When processing incoming arguments, 3277@var{n_named_args} is set to @minus{}1. 3278 3279When processing a call to a compiler support library function, 3280@var{libname} identifies which one. It is a @code{symbol_ref} rtx which 3281contains the name of the function, as a string. @var{libname} is 0 when 3282an ordinary C function call is being processed. Thus, each time this 3283macro is called, either @var{libname} or @var{fntype} is nonzero, but 3284never both of them at once. 3285@end defmac 3286 3287@defmac INIT_CUMULATIVE_LIBCALL_ARGS (@var{cum}, @var{mode}, @var{libname}) 3288Like @code{INIT_CUMULATIVE_ARGS} but only used for outgoing libcalls, 3289it gets a @code{MODE} argument instead of @var{fntype}, that would be 3290@code{NULL}. @var{indirect} would always be zero, too. If this macro 3291is not defined, @code{INIT_CUMULATIVE_ARGS (cum, NULL_RTX, libname, 32920)} is used instead. 3293@end defmac 3294 3295@defmac INIT_CUMULATIVE_INCOMING_ARGS (@var{cum}, @var{fntype}, @var{libname}) 3296Like @code{INIT_CUMULATIVE_ARGS} but overrides it for the purposes of 3297finding the arguments for the function being compiled. If this macro is 3298undefined, @code{INIT_CUMULATIVE_ARGS} is used instead. 3299 3300The value passed for @var{libname} is always 0, since library routines 3301with special calling conventions are never compiled with GCC@. The 3302argument @var{libname} exists for symmetry with 3303@code{INIT_CUMULATIVE_ARGS}. 3304@c could use "this macro" in place of @code{INIT_CUMULATIVE_ARGS}, maybe. 3305@c --mew 5feb93 i switched the order of the sentences. --mew 10feb93 3306@end defmac 3307 3308@hook TARGET_FUNCTION_ARG_ADVANCE 3309 3310@hook TARGET_FUNCTION_ARG_OFFSET 3311 3312@hook TARGET_FUNCTION_ARG_PADDING 3313 3314@defmac PAD_VARARGS_DOWN 3315If defined, a C expression which determines whether the default 3316implementation of va_arg will attempt to pad down before reading the 3317next argument, if that argument is smaller than its aligned space as 3318controlled by @code{PARM_BOUNDARY}. If this macro is not defined, all such 3319arguments are padded down if @code{BYTES_BIG_ENDIAN} is true. 3320@end defmac 3321 3322@defmac BLOCK_REG_PADDING (@var{mode}, @var{type}, @var{first}) 3323Specify padding for the last element of a block move between registers and 3324memory. @var{first} is nonzero if this is the only element. Defining this 3325macro allows better control of register function parameters on big-endian 3326machines, without using @code{PARALLEL} rtl. In particular, 3327@code{MUST_PASS_IN_STACK} need not test padding and mode of types in 3328registers, as there is no longer a "wrong" part of a register; For example, 3329a three byte aggregate may be passed in the high part of a register if so 3330required. 3331@end defmac 3332 3333@hook TARGET_FUNCTION_ARG_BOUNDARY 3334 3335@hook TARGET_FUNCTION_ARG_ROUND_BOUNDARY 3336 3337@defmac FUNCTION_ARG_REGNO_P (@var{regno}) 3338A C expression that is nonzero if @var{regno} is the number of a hard 3339register in which function arguments are sometimes passed. This does 3340@emph{not} include implicit arguments such as the static chain and 3341the structure-value address. On many machines, no registers can be 3342used for this purpose since all function arguments are pushed on the 3343stack. 3344@end defmac 3345 3346@hook TARGET_SPLIT_COMPLEX_ARG 3347 3348@hook TARGET_BUILD_BUILTIN_VA_LIST 3349 3350@hook TARGET_ENUM_VA_LIST_P 3351 3352@hook TARGET_FN_ABI_VA_LIST 3353 3354@hook TARGET_CANONICAL_VA_LIST_TYPE 3355 3356@hook TARGET_GIMPLIFY_VA_ARG_EXPR 3357 3358@hook TARGET_VALID_POINTER_MODE 3359 3360@hook TARGET_REF_MAY_ALIAS_ERRNO 3361 3362@hook TARGET_TRANSLATE_MODE_ATTRIBUTE 3363 3364@hook TARGET_SCALAR_MODE_SUPPORTED_P 3365 3366@hook TARGET_VECTOR_MODE_SUPPORTED_P 3367 3368@hook TARGET_COMPATIBLE_VECTOR_TYPES_P 3369 3370@hook TARGET_ARRAY_MODE 3371 3372@hook TARGET_ARRAY_MODE_SUPPORTED_P 3373 3374@hook TARGET_LIBGCC_FLOATING_MODE_SUPPORTED_P 3375 3376@hook TARGET_FLOATN_MODE 3377 3378@hook TARGET_FLOATN_BUILTIN_P 3379 3380@hook TARGET_SMALL_REGISTER_CLASSES_FOR_MODE_P 3381 3382@node Scalar Return 3383@subsection How Scalar Function Values Are Returned 3384@cindex return values in registers 3385@cindex values, returned by functions 3386@cindex scalars, returned as values 3387 3388This section discusses the macros that control returning scalars as 3389values---values that can fit in registers. 3390 3391@hook TARGET_FUNCTION_VALUE 3392 3393@defmac FUNCTION_VALUE (@var{valtype}, @var{func}) 3394This macro has been deprecated. Use @code{TARGET_FUNCTION_VALUE} for 3395a new target instead. 3396@end defmac 3397 3398@defmac LIBCALL_VALUE (@var{mode}) 3399A C expression to create an RTX representing the place where a library 3400function returns a value of mode @var{mode}. 3401 3402Note that ``library function'' in this context means a compiler 3403support routine, used to perform arithmetic, whose name is known 3404specially by the compiler and was not mentioned in the C code being 3405compiled. 3406@end defmac 3407 3408@hook TARGET_LIBCALL_VALUE 3409 3410@defmac FUNCTION_VALUE_REGNO_P (@var{regno}) 3411A C expression that is nonzero if @var{regno} is the number of a hard 3412register in which the values of called function may come back. 3413 3414A register whose use for returning values is limited to serving as the 3415second of a pair (for a value of type @code{double}, say) need not be 3416recognized by this macro. So for most machines, this definition 3417suffices: 3418 3419@smallexample 3420#define FUNCTION_VALUE_REGNO_P(N) ((N) == 0) 3421@end smallexample 3422 3423If the machine has register windows, so that the caller and the called 3424function use different registers for the return value, this macro 3425should recognize only the caller's register numbers. 3426 3427This macro has been deprecated. Use @code{TARGET_FUNCTION_VALUE_REGNO_P} 3428for a new target instead. 3429@end defmac 3430 3431@hook TARGET_FUNCTION_VALUE_REGNO_P 3432 3433@defmac APPLY_RESULT_SIZE 3434Define this macro if @samp{untyped_call} and @samp{untyped_return} 3435need more space than is implied by @code{FUNCTION_VALUE_REGNO_P} for 3436saving and restoring an arbitrary return value. 3437@end defmac 3438 3439@hook TARGET_OMIT_STRUCT_RETURN_REG 3440 3441@hook TARGET_RETURN_IN_MSB 3442 3443@node Aggregate Return 3444@subsection How Large Values Are Returned 3445@cindex aggregates as return values 3446@cindex large return values 3447@cindex returning aggregate values 3448@cindex structure value address 3449 3450When a function value's mode is @code{BLKmode} (and in some other 3451cases), the value is not returned according to 3452@code{TARGET_FUNCTION_VALUE} (@pxref{Scalar Return}). Instead, the 3453caller passes the address of a block of memory in which the value 3454should be stored. This address is called the @dfn{structure value 3455address}. 3456 3457This section describes how to control returning structure values in 3458memory. 3459 3460@hook TARGET_RETURN_IN_MEMORY 3461 3462@defmac DEFAULT_PCC_STRUCT_RETURN 3463Define this macro to be 1 if all structure and union return values must be 3464in memory. Since this results in slower code, this should be defined 3465only if needed for compatibility with other compilers or with an ABI@. 3466If you define this macro to be 0, then the conventions used for structure 3467and union return values are decided by the @code{TARGET_RETURN_IN_MEMORY} 3468target hook. 3469 3470If not defined, this defaults to the value 1. 3471@end defmac 3472 3473@hook TARGET_STRUCT_VALUE_RTX 3474 3475@defmac PCC_STATIC_STRUCT_RETURN 3476Define this macro if the usual system convention on the target machine 3477for returning structures and unions is for the called function to return 3478the address of a static variable containing the value. 3479 3480Do not define this if the usual system convention is for the caller to 3481pass an address to the subroutine. 3482 3483This macro has effect in @option{-fpcc-struct-return} mode, but it does 3484nothing when you use @option{-freg-struct-return} mode. 3485@end defmac 3486 3487@hook TARGET_GET_RAW_RESULT_MODE 3488 3489@hook TARGET_GET_RAW_ARG_MODE 3490 3491@hook TARGET_EMPTY_RECORD_P 3492 3493@hook TARGET_WARN_PARAMETER_PASSING_ABI 3494 3495@node Caller Saves 3496@subsection Caller-Saves Register Allocation 3497 3498If you enable it, GCC can save registers around function calls. This 3499makes it possible to use call-clobbered registers to hold variables that 3500must live across calls. 3501 3502@defmac HARD_REGNO_CALLER_SAVE_MODE (@var{regno}, @var{nregs}) 3503A C expression specifying which mode is required for saving @var{nregs} 3504of a pseudo-register in call-clobbered hard register @var{regno}. If 3505@var{regno} is unsuitable for caller save, @code{VOIDmode} should be 3506returned. For most machines this macro need not be defined since GCC 3507will select the smallest suitable mode. 3508@end defmac 3509 3510@node Function Entry 3511@subsection Function Entry and Exit 3512@cindex function entry and exit 3513@cindex prologue 3514@cindex epilogue 3515 3516This section describes the macros that output function entry 3517(@dfn{prologue}) and exit (@dfn{epilogue}) code. 3518 3519@hook TARGET_ASM_PRINT_PATCHABLE_FUNCTION_ENTRY 3520 3521@hook TARGET_ASM_FUNCTION_PROLOGUE 3522 3523@hook TARGET_ASM_FUNCTION_END_PROLOGUE 3524 3525@hook TARGET_ASM_FUNCTION_BEGIN_EPILOGUE 3526 3527@hook TARGET_ASM_FUNCTION_EPILOGUE 3528 3529@itemize @bullet 3530@item 3531@findex pretend_args_size 3532@findex crtl->args.pretend_args_size 3533A region of @code{crtl->args.pretend_args_size} bytes of 3534uninitialized space just underneath the first argument arriving on the 3535stack. (This may not be at the very start of the allocated stack region 3536if the calling sequence has pushed anything else since pushing the stack 3537arguments. But usually, on such machines, nothing else has been pushed 3538yet, because the function prologue itself does all the pushing.) This 3539region is used on machines where an argument may be passed partly in 3540registers and partly in memory, and, in some cases to support the 3541features in @code{<stdarg.h>}. 3542 3543@item 3544An area of memory used to save certain registers used by the function. 3545The size of this area, which may also include space for such things as 3546the return address and pointers to previous stack frames, is 3547machine-specific and usually depends on which registers have been used 3548in the function. Machines with register windows often do not require 3549a save area. 3550 3551@item 3552A region of at least @var{size} bytes, possibly rounded up to an allocation 3553boundary, to contain the local variables of the function. On some machines, 3554this region and the save area may occur in the opposite order, with the 3555save area closer to the top of the stack. 3556 3557@item 3558@cindex @code{ACCUMULATE_OUTGOING_ARGS} and stack frames 3559Optionally, when @code{ACCUMULATE_OUTGOING_ARGS} is defined, a region of 3560@code{crtl->outgoing_args_size} bytes to be used for outgoing 3561argument lists of the function. @xref{Stack Arguments}. 3562@end itemize 3563 3564@defmac EXIT_IGNORE_STACK 3565Define this macro as a C expression that is nonzero if the return 3566instruction or the function epilogue ignores the value of the stack 3567pointer; in other words, if it is safe to delete an instruction to 3568adjust the stack pointer before a return from the function. The 3569default is 0. 3570 3571Note that this macro's value is relevant only for functions for which 3572frame pointers are maintained. It is never safe to delete a final 3573stack adjustment in a function that has no frame pointer, and the 3574compiler knows this regardless of @code{EXIT_IGNORE_STACK}. 3575@end defmac 3576 3577@defmac EPILOGUE_USES (@var{regno}) 3578Define this macro as a C expression that is nonzero for registers that are 3579used by the epilogue or the @samp{return} pattern. The stack and frame 3580pointer registers are already assumed to be used as needed. 3581@end defmac 3582 3583@defmac EH_USES (@var{regno}) 3584Define this macro as a C expression that is nonzero for registers that are 3585used by the exception handling mechanism, and so should be considered live 3586on entry to an exception edge. 3587@end defmac 3588 3589@hook TARGET_ASM_OUTPUT_MI_THUNK 3590 3591@hook TARGET_ASM_CAN_OUTPUT_MI_THUNK 3592 3593@node Profiling 3594@subsection Generating Code for Profiling 3595@cindex profiling, code generation 3596 3597These macros will help you generate code for profiling. 3598 3599@defmac FUNCTION_PROFILER (@var{file}, @var{labelno}) 3600A C statement or compound statement to output to @var{file} some 3601assembler code to call the profiling subroutine @code{mcount}. 3602 3603@findex mcount 3604The details of how @code{mcount} expects to be called are determined by 3605your operating system environment, not by GCC@. To figure them out, 3606compile a small program for profiling using the system's installed C 3607compiler and look at the assembler code that results. 3608 3609Older implementations of @code{mcount} expect the address of a counter 3610variable to be loaded into some register. The name of this variable is 3611@samp{LP} followed by the number @var{labelno}, so you would generate 3612the name using @samp{LP%d} in a @code{fprintf}. 3613@end defmac 3614 3615@defmac PROFILE_HOOK 3616A C statement or compound statement to output to @var{file} some assembly 3617code to call the profiling subroutine @code{mcount} even the target does 3618not support profiling. 3619@end defmac 3620 3621@defmac NO_PROFILE_COUNTERS 3622Define this macro to be an expression with a nonzero value if the 3623@code{mcount} subroutine on your system does not need a counter variable 3624allocated for each function. This is true for almost all modern 3625implementations. If you define this macro, you must not use the 3626@var{labelno} argument to @code{FUNCTION_PROFILER}. 3627@end defmac 3628 3629@defmac PROFILE_BEFORE_PROLOGUE 3630Define this macro if the code for function profiling should come before 3631the function prologue. Normally, the profiling code comes after. 3632@end defmac 3633 3634@hook TARGET_KEEP_LEAF_WHEN_PROFILED 3635 3636@node Tail Calls 3637@subsection Permitting tail calls 3638@cindex tail calls 3639 3640@hook TARGET_FUNCTION_OK_FOR_SIBCALL 3641 3642@hook TARGET_EXTRA_LIVE_ON_ENTRY 3643 3644@hook TARGET_SET_UP_BY_PROLOGUE 3645 3646@hook TARGET_WARN_FUNC_RETURN 3647 3648@node Shrink-wrapping separate components 3649@subsection Shrink-wrapping separate components 3650@cindex shrink-wrapping separate components 3651 3652The prologue may perform a variety of target dependent tasks such as 3653saving callee-saved registers, saving the return address, aligning the 3654stack, creating a stack frame, initializing the PIC register, setting 3655up the static chain, etc. 3656 3657On some targets some of these tasks may be independent of others and 3658thus may be shrink-wrapped separately. These independent tasks are 3659referred to as components and are handled generically by the target 3660independent parts of GCC. 3661 3662Using the following hooks those prologue or epilogue components can be 3663shrink-wrapped separately, so that the initialization (and possibly 3664teardown) those components do is not done as frequently on execution 3665paths where this would unnecessary. 3666 3667What exactly those components are is up to the target code; the generic 3668code treats them abstractly, as a bit in an @code{sbitmap}. These 3669@code{sbitmap}s are allocated by the @code{shrink_wrap.get_separate_components} 3670and @code{shrink_wrap.components_for_bb} hooks, and deallocated by the 3671generic code. 3672 3673@hook TARGET_SHRINK_WRAP_GET_SEPARATE_COMPONENTS 3674 3675@hook TARGET_SHRINK_WRAP_COMPONENTS_FOR_BB 3676 3677@hook TARGET_SHRINK_WRAP_DISQUALIFY_COMPONENTS 3678 3679@hook TARGET_SHRINK_WRAP_EMIT_PROLOGUE_COMPONENTS 3680 3681@hook TARGET_SHRINK_WRAP_EMIT_EPILOGUE_COMPONENTS 3682 3683@hook TARGET_SHRINK_WRAP_SET_HANDLED_COMPONENTS 3684 3685@node Stack Smashing Protection 3686@subsection Stack smashing protection 3687@cindex stack smashing protection 3688 3689@hook TARGET_STACK_PROTECT_GUARD 3690 3691@hook TARGET_STACK_PROTECT_FAIL 3692 3693@hook TARGET_STACK_PROTECT_RUNTIME_ENABLED_P 3694 3695@hook TARGET_SUPPORTS_SPLIT_STACK 3696 3697@hook TARGET_GET_VALID_OPTION_VALUES 3698 3699@node Miscellaneous Register Hooks 3700@subsection Miscellaneous register hooks 3701@cindex miscellaneous register hooks 3702 3703@hook TARGET_CALL_FUSAGE_CONTAINS_NON_CALLEE_CLOBBERS 3704 3705@node Varargs 3706@section Implementing the Varargs Macros 3707@cindex varargs implementation 3708 3709GCC comes with an implementation of @code{<varargs.h>} and 3710@code{<stdarg.h>} that work without change on machines that pass arguments 3711on the stack. Other machines require their own implementations of 3712varargs, and the two machine independent header files must have 3713conditionals to include it. 3714 3715ISO @code{<stdarg.h>} differs from traditional @code{<varargs.h>} mainly in 3716the calling convention for @code{va_start}. The traditional 3717implementation takes just one argument, which is the variable in which 3718to store the argument pointer. The ISO implementation of 3719@code{va_start} takes an additional second argument. The user is 3720supposed to write the last named argument of the function here. 3721 3722However, @code{va_start} should not use this argument. The way to find 3723the end of the named arguments is with the built-in functions described 3724below. 3725 3726@defmac __builtin_saveregs () 3727Use this built-in function to save the argument registers in memory so 3728that the varargs mechanism can access them. Both ISO and traditional 3729versions of @code{va_start} must use @code{__builtin_saveregs}, unless 3730you use @code{TARGET_SETUP_INCOMING_VARARGS} (see below) instead. 3731 3732On some machines, @code{__builtin_saveregs} is open-coded under the 3733control of the target hook @code{TARGET_EXPAND_BUILTIN_SAVEREGS}. On 3734other machines, it calls a routine written in assembler language, 3735found in @file{libgcc2.c}. 3736 3737Code generated for the call to @code{__builtin_saveregs} appears at the 3738beginning of the function, as opposed to where the call to 3739@code{__builtin_saveregs} is written, regardless of what the code is. 3740This is because the registers must be saved before the function starts 3741to use them for its own purposes. 3742@c i rewrote the first sentence above to fix an overfull hbox. --mew 3743@c 10feb93 3744@end defmac 3745 3746@defmac __builtin_next_arg (@var{lastarg}) 3747This builtin returns the address of the first anonymous stack 3748argument, as type @code{void *}. If @code{ARGS_GROW_DOWNWARD}, it 3749returns the address of the location above the first anonymous stack 3750argument. Use it in @code{va_start} to initialize the pointer for 3751fetching arguments from the stack. Also use it in @code{va_start} to 3752verify that the second parameter @var{lastarg} is the last named argument 3753of the current function. 3754@end defmac 3755 3756@defmac __builtin_classify_type (@var{object}) 3757Since each machine has its own conventions for which data types are 3758passed in which kind of register, your implementation of @code{va_arg} 3759has to embody these conventions. The easiest way to categorize the 3760specified data type is to use @code{__builtin_classify_type} together 3761with @code{sizeof} and @code{__alignof__}. 3762 3763@code{__builtin_classify_type} ignores the value of @var{object}, 3764considering only its data type. It returns an integer describing what 3765kind of type that is---integer, floating, pointer, structure, and so on. 3766 3767The file @file{typeclass.h} defines an enumeration that you can use to 3768interpret the values of @code{__builtin_classify_type}. 3769@end defmac 3770 3771These machine description macros help implement varargs: 3772 3773@hook TARGET_EXPAND_BUILTIN_SAVEREGS 3774 3775@hook TARGET_SETUP_INCOMING_VARARGS 3776 3777@hook TARGET_STRICT_ARGUMENT_NAMING 3778 3779@hook TARGET_CALL_ARGS 3780 3781@hook TARGET_END_CALL_ARGS 3782 3783@hook TARGET_PRETEND_OUTGOING_VARARGS_NAMED 3784 3785@hook TARGET_LOAD_BOUNDS_FOR_ARG 3786 3787@hook TARGET_STORE_BOUNDS_FOR_ARG 3788 3789@hook TARGET_LOAD_RETURNED_BOUNDS 3790 3791@hook TARGET_STORE_RETURNED_BOUNDS 3792 3793@node Trampolines 3794@section Support for Nested Functions 3795@cindex support for nested functions 3796@cindex trampolines for nested functions 3797@cindex descriptors for nested functions 3798@cindex nested functions, support for 3799 3800Taking the address of a nested function requires special compiler 3801handling to ensure that the static chain register is loaded when 3802the function is invoked via an indirect call. 3803 3804GCC has traditionally supported nested functions by creating an 3805executable @dfn{trampoline} at run time when the address of a nested 3806function is taken. This is a small piece of code which normally 3807resides on the stack, in the stack frame of the containing function. 3808The trampoline loads the static chain register and then jumps to the 3809real address of the nested function. 3810 3811The use of trampolines requires an executable stack, which is a 3812security risk. To avoid this problem, GCC also supports another 3813strategy: using descriptors for nested functions. Under this model, 3814taking the address of a nested function results in a pointer to a 3815non-executable function descriptor object. Initializing the static chain 3816from the descriptor is handled at indirect call sites. 3817 3818On some targets, including HPPA and IA-64, function descriptors may be 3819mandated by the ABI or be otherwise handled in a target-specific way 3820by the back end in its code generation strategy for indirect calls. 3821GCC also provides its own generic descriptor implementation to support the 3822@option{-fno-trampolines} option. In this case runtime detection of 3823function descriptors at indirect call sites relies on descriptor 3824pointers being tagged with a bit that is never set in bare function 3825addresses. Since GCC's generic function descriptors are 3826not ABI-compliant, this option is typically used only on a 3827per-language basis (notably by Ada) or when it can otherwise be 3828applied to the whole program. 3829 3830Define the following hook if your backend either implements ABI-specified 3831descriptor support, or can use GCC's generic descriptor implementation 3832for nested functions. 3833 3834@hook TARGET_CUSTOM_FUNCTION_DESCRIPTORS 3835 3836The following macros tell GCC how to generate code to allocate and 3837initialize an executable trampoline. You can also use this interface 3838if your back end needs to create ABI-specified non-executable descriptors; in 3839this case the "trampoline" created is the descriptor containing data only. 3840 3841The instructions in an executable trampoline must do two things: load 3842a constant address into the static chain register, and jump to the real 3843address of the nested function. On CISC machines such as the m68k, 3844this requires two instructions, a move immediate and a jump. Then the 3845two addresses exist in the trampoline as word-long immediate operands. 3846On RISC machines, it is often necessary to load each address into a 3847register in two parts. Then pieces of each address form separate 3848immediate operands. 3849 3850The code generated to initialize the trampoline must store the variable 3851parts---the static chain value and the function address---into the 3852immediate operands of the instructions. On a CISC machine, this is 3853simply a matter of copying each address to a memory reference at the 3854proper offset from the start of the trampoline. On a RISC machine, it 3855may be necessary to take out pieces of the address and store them 3856separately. 3857 3858@hook TARGET_ASM_TRAMPOLINE_TEMPLATE 3859 3860@defmac TRAMPOLINE_SECTION 3861Return the section into which the trampoline template is to be placed 3862(@pxref{Sections}). The default value is @code{readonly_data_section}. 3863@end defmac 3864 3865@defmac TRAMPOLINE_SIZE 3866A C expression for the size in bytes of the trampoline, as an integer. 3867@end defmac 3868 3869@defmac TRAMPOLINE_ALIGNMENT 3870Alignment required for trampolines, in bits. 3871 3872If you don't define this macro, the value of @code{FUNCTION_ALIGNMENT} 3873is used for aligning trampolines. 3874@end defmac 3875 3876@hook TARGET_TRAMPOLINE_INIT 3877 3878@hook TARGET_TRAMPOLINE_ADJUST_ADDRESS 3879 3880Implementing trampolines is difficult on many machines because they have 3881separate instruction and data caches. Writing into a stack location 3882fails to clear the memory in the instruction cache, so when the program 3883jumps to that location, it executes the old contents. 3884 3885Here are two possible solutions. One is to clear the relevant parts of 3886the instruction cache whenever a trampoline is set up. The other is to 3887make all trampolines identical, by having them jump to a standard 3888subroutine. The former technique makes trampoline execution faster; the 3889latter makes initialization faster. 3890 3891To clear the instruction cache when a trampoline is initialized, define 3892the following macro. 3893 3894@defmac CLEAR_INSN_CACHE (@var{beg}, @var{end}) 3895If defined, expands to a C expression clearing the @emph{instruction 3896cache} in the specified interval. The definition of this macro would 3897typically be a series of @code{asm} statements. Both @var{beg} and 3898@var{end} are both pointer expressions. 3899@end defmac 3900 3901To use a standard subroutine, define the following macro. In addition, 3902you must make sure that the instructions in a trampoline fill an entire 3903cache line with identical instructions, or else ensure that the 3904beginning of the trampoline code is always aligned at the same point in 3905its cache line. Look in @file{m68k.h} as a guide. 3906 3907@defmac TRANSFER_FROM_TRAMPOLINE 3908Define this macro if trampolines need a special subroutine to do their 3909work. The macro should expand to a series of @code{asm} statements 3910which will be compiled with GCC@. They go in a library function named 3911@code{__transfer_from_trampoline}. 3912 3913If you need to avoid executing the ordinary prologue code of a compiled 3914C function when you jump to the subroutine, you can do so by placing a 3915special label of your own in the assembler code. Use one @code{asm} 3916statement to generate an assembler label, and another to make the label 3917global. Then trampolines can use that label to jump directly to your 3918special assembler code. 3919@end defmac 3920 3921@node Library Calls 3922@section Implicit Calls to Library Routines 3923@cindex library subroutine names 3924@cindex @file{libgcc.a} 3925 3926@c prevent bad page break with this line 3927Here is an explanation of implicit calls to library routines. 3928 3929@defmac DECLARE_LIBRARY_RENAMES 3930This macro, if defined, should expand to a piece of C code that will get 3931expanded when compiling functions for libgcc.a. It can be used to 3932provide alternate names for GCC's internal library functions if there 3933are ABI-mandated names that the compiler should provide. 3934@end defmac 3935 3936@findex set_optab_libfunc 3937@findex init_one_libfunc 3938@hook TARGET_INIT_LIBFUNCS 3939 3940@hook TARGET_LIBFUNC_GNU_PREFIX 3941 3942@defmac FLOAT_LIB_COMPARE_RETURNS_BOOL (@var{mode}, @var{comparison}) 3943This macro should return @code{true} if the library routine that 3944implements the floating point comparison operator @var{comparison} in 3945mode @var{mode} will return a boolean, and @var{false} if it will 3946return a tristate. 3947 3948GCC's own floating point libraries return tristates from the 3949comparison operators, so the default returns false always. Most ports 3950don't need to define this macro. 3951@end defmac 3952 3953@defmac TARGET_LIB_INT_CMP_BIASED 3954This macro should evaluate to @code{true} if the integer comparison 3955functions (like @code{__cmpdi2}) return 0 to indicate that the first 3956operand is smaller than the second, 1 to indicate that they are equal, 3957and 2 to indicate that the first operand is greater than the second. 3958If this macro evaluates to @code{false} the comparison functions return 3959@minus{}1, 0, and 1 instead of 0, 1, and 2. If the target uses the routines 3960in @file{libgcc.a}, you do not need to define this macro. 3961@end defmac 3962 3963@defmac TARGET_HAS_NO_HW_DIVIDE 3964This macro should be defined if the target has no hardware divide 3965instructions. If this macro is defined, GCC will use an algorithm which 3966make use of simple logical and arithmetic operations for 64-bit 3967division. If the macro is not defined, GCC will use an algorithm which 3968make use of a 64-bit by 32-bit divide primitive. 3969@end defmac 3970 3971@cindex @code{EDOM}, implicit usage 3972@findex matherr 3973@defmac TARGET_EDOM 3974The value of @code{EDOM} on the target machine, as a C integer constant 3975expression. If you don't define this macro, GCC does not attempt to 3976deposit the value of @code{EDOM} into @code{errno} directly. Look in 3977@file{/usr/include/errno.h} to find the value of @code{EDOM} on your 3978system. 3979 3980If you do not define @code{TARGET_EDOM}, then compiled code reports 3981domain errors by calling the library function and letting it report the 3982error. If mathematical functions on your system use @code{matherr} when 3983there is an error, then you should leave @code{TARGET_EDOM} undefined so 3984that @code{matherr} is used normally. 3985@end defmac 3986 3987@cindex @code{errno}, implicit usage 3988@defmac GEN_ERRNO_RTX 3989Define this macro as a C expression to create an rtl expression that 3990refers to the global ``variable'' @code{errno}. (On certain systems, 3991@code{errno} may not actually be a variable.) If you don't define this 3992macro, a reasonable default is used. 3993@end defmac 3994 3995@hook TARGET_LIBC_HAS_FUNCTION 3996 3997@hook TARGET_LIBC_HAS_FAST_FUNCTION 3998 3999@defmac NEXT_OBJC_RUNTIME 4000Set this macro to 1 to use the "NeXT" Objective-C message sending conventions 4001by default. This calling convention involves passing the object, the selector 4002and the method arguments all at once to the method-lookup library function. 4003This is the usual setting when targeting Darwin/Mac OS X systems, which have 4004the NeXT runtime installed. 4005 4006If the macro is set to 0, the "GNU" Objective-C message sending convention 4007will be used by default. This convention passes just the object and the 4008selector to the method-lookup function, which returns a pointer to the method. 4009 4010In either case, it remains possible to select code-generation for the alternate 4011scheme, by means of compiler command line switches. 4012@end defmac 4013 4014@node Addressing Modes 4015@section Addressing Modes 4016@cindex addressing modes 4017 4018@c prevent bad page break with this line 4019This is about addressing modes. 4020 4021@defmac HAVE_PRE_INCREMENT 4022@defmacx HAVE_PRE_DECREMENT 4023@defmacx HAVE_POST_INCREMENT 4024@defmacx HAVE_POST_DECREMENT 4025A C expression that is nonzero if the machine supports pre-increment, 4026pre-decrement, post-increment, or post-decrement addressing respectively. 4027@end defmac 4028 4029@defmac HAVE_PRE_MODIFY_DISP 4030@defmacx HAVE_POST_MODIFY_DISP 4031A C expression that is nonzero if the machine supports pre- or 4032post-address side-effect generation involving constants other than 4033the size of the memory operand. 4034@end defmac 4035 4036@defmac HAVE_PRE_MODIFY_REG 4037@defmacx HAVE_POST_MODIFY_REG 4038A C expression that is nonzero if the machine supports pre- or 4039post-address side-effect generation involving a register displacement. 4040@end defmac 4041 4042@defmac CONSTANT_ADDRESS_P (@var{x}) 4043A C expression that is 1 if the RTX @var{x} is a constant which 4044is a valid address. On most machines the default definition of 4045@code{(CONSTANT_P (@var{x}) && GET_CODE (@var{x}) != CONST_DOUBLE)} 4046is acceptable, but a few machines are more restrictive as to which 4047constant addresses are supported. 4048@end defmac 4049 4050@defmac CONSTANT_P (@var{x}) 4051@code{CONSTANT_P}, which is defined by target-independent code, 4052accepts integer-values expressions whose values are not explicitly 4053known, such as @code{symbol_ref}, @code{label_ref}, and @code{high} 4054expressions and @code{const} arithmetic expressions, in addition to 4055@code{const_int} and @code{const_double} expressions. 4056@end defmac 4057 4058@defmac MAX_REGS_PER_ADDRESS 4059A number, the maximum number of registers that can appear in a valid 4060memory address. Note that it is up to you to specify a value equal to 4061the maximum number that @code{TARGET_LEGITIMATE_ADDRESS_P} would ever 4062accept. 4063@end defmac 4064 4065@hook TARGET_LEGITIMATE_ADDRESS_P 4066 4067@defmac TARGET_MEM_CONSTRAINT 4068A single character to be used instead of the default @code{'m'} 4069character for general memory addresses. This defines the constraint 4070letter which matches the memory addresses accepted by 4071@code{TARGET_LEGITIMATE_ADDRESS_P}. Define this macro if you want to 4072support new address formats in your back end without changing the 4073semantics of the @code{'m'} constraint. This is necessary in order to 4074preserve functionality of inline assembly constructs using the 4075@code{'m'} constraint. 4076@end defmac 4077 4078@defmac FIND_BASE_TERM (@var{x}) 4079A C expression to determine the base term of address @var{x}, 4080or to provide a simplified version of @var{x} from which @file{alias.c} 4081can easily find the base term. This macro is used in only two places: 4082@code{find_base_value} and @code{find_base_term} in @file{alias.c}. 4083 4084It is always safe for this macro to not be defined. It exists so 4085that alias analysis can understand machine-dependent addresses. 4086 4087The typical use of this macro is to handle addresses containing 4088a label_ref or symbol_ref within an UNSPEC@. 4089@end defmac 4090 4091@hook TARGET_LEGITIMIZE_ADDRESS 4092 4093@defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type}, @var{ind_levels}, @var{win}) 4094A C compound statement that attempts to replace @var{x}, which is an address 4095that needs reloading, with a valid memory address for an operand of mode 4096@var{mode}. @var{win} will be a C statement label elsewhere in the code. 4097It is not necessary to define this macro, but it might be useful for 4098performance reasons. 4099 4100For example, on the i386, it is sometimes possible to use a single 4101reload register instead of two by reloading a sum of two pseudo 4102registers into a register. On the other hand, for number of RISC 4103processors offsets are limited so that often an intermediate address 4104needs to be generated in order to address a stack slot. By defining 4105@code{LEGITIMIZE_RELOAD_ADDRESS} appropriately, the intermediate addresses 4106generated for adjacent some stack slots can be made identical, and thus 4107be shared. 4108 4109@emph{Note}: This macro should be used with caution. It is necessary 4110to know something of how reload works in order to effectively use this, 4111and it is quite easy to produce macros that build in too much knowledge 4112of reload internals. 4113 4114@emph{Note}: This macro must be able to reload an address created by a 4115previous invocation of this macro. If it fails to handle such addresses 4116then the compiler may generate incorrect code or abort. 4117 4118@findex push_reload 4119The macro definition should use @code{push_reload} to indicate parts that 4120need reloading; @var{opnum}, @var{type} and @var{ind_levels} are usually 4121suitable to be passed unaltered to @code{push_reload}. 4122 4123The code generated by this macro must not alter the substructure of 4124@var{x}. If it transforms @var{x} into a more legitimate form, it 4125should assign @var{x} (which will always be a C variable) a new value. 4126This also applies to parts that you change indirectly by calling 4127@code{push_reload}. 4128 4129@findex strict_memory_address_p 4130The macro definition may use @code{strict_memory_address_p} to test if 4131the address has become legitimate. 4132 4133@findex copy_rtx 4134If you want to change only a part of @var{x}, one standard way of doing 4135this is to use @code{copy_rtx}. Note, however, that it unshares only a 4136single level of rtl. Thus, if the part to be changed is not at the 4137top level, you'll need to replace first the top level. 4138It is not necessary for this macro to come up with a legitimate 4139address; but often a machine-dependent strategy can generate better code. 4140@end defmac 4141 4142@hook TARGET_MODE_DEPENDENT_ADDRESS_P 4143 4144@hook TARGET_LEGITIMATE_CONSTANT_P 4145 4146@hook TARGET_DELEGITIMIZE_ADDRESS 4147 4148@hook TARGET_CONST_NOT_OK_FOR_DEBUG_P 4149 4150@hook TARGET_CANNOT_FORCE_CONST_MEM 4151 4152@hook TARGET_USE_BLOCKS_FOR_CONSTANT_P 4153 4154@hook TARGET_USE_BLOCKS_FOR_DECL_P 4155 4156@hook TARGET_BUILTIN_RECIPROCAL 4157 4158@hook TARGET_VECTORIZE_BUILTIN_MASK_FOR_LOAD 4159 4160@hook TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST 4161 4162@hook TARGET_VECTORIZE_PREFERRED_VECTOR_ALIGNMENT 4163 4164@hook TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE 4165 4166@hook TARGET_VECTORIZE_VEC_PERM_CONST 4167 4168@hook TARGET_VECTORIZE_BUILTIN_VECTORIZED_FUNCTION 4169 4170@hook TARGET_VECTORIZE_BUILTIN_MD_VECTORIZED_FUNCTION 4171 4172@hook TARGET_VECTORIZE_SUPPORT_VECTOR_MISALIGNMENT 4173 4174@hook TARGET_VECTORIZE_PREFERRED_SIMD_MODE 4175 4176@hook TARGET_VECTORIZE_SPLIT_REDUCTION 4177 4178@hook TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_MODES 4179 4180@hook TARGET_VECTORIZE_RELATED_MODE 4181 4182@hook TARGET_VECTORIZE_GET_MASK_MODE 4183 4184@hook TARGET_VECTORIZE_EMPTY_MASK_IS_EXPENSIVE 4185 4186@hook TARGET_VECTORIZE_INIT_COST 4187 4188@hook TARGET_VECTORIZE_ADD_STMT_COST 4189 4190@hook TARGET_VECTORIZE_FINISH_COST 4191 4192@hook TARGET_VECTORIZE_DESTROY_COST_DATA 4193 4194@hook TARGET_VECTORIZE_BUILTIN_GATHER 4195 4196@hook TARGET_VECTORIZE_BUILTIN_SCATTER 4197 4198@hook TARGET_SIMD_CLONE_COMPUTE_VECSIZE_AND_SIMDLEN 4199 4200@hook TARGET_SIMD_CLONE_ADJUST 4201 4202@hook TARGET_SIMD_CLONE_USABLE 4203 4204@hook TARGET_SIMT_VF 4205 4206@hook TARGET_OMP_DEVICE_KIND_ARCH_ISA 4207 4208@hook TARGET_GOACC_VALIDATE_DIMS 4209 4210@hook TARGET_GOACC_DIM_LIMIT 4211 4212@hook TARGET_GOACC_FORK_JOIN 4213 4214@hook TARGET_GOACC_REDUCTION 4215 4216@hook TARGET_PREFERRED_ELSE_VALUE 4217 4218@node Anchored Addresses 4219@section Anchored Addresses 4220@cindex anchored addresses 4221@cindex @option{-fsection-anchors} 4222 4223GCC usually addresses every static object as a separate entity. 4224For example, if we have: 4225 4226@smallexample 4227static int a, b, c; 4228int foo (void) @{ return a + b + c; @} 4229@end smallexample 4230 4231the code for @code{foo} will usually calculate three separate symbolic 4232addresses: those of @code{a}, @code{b} and @code{c}. On some targets, 4233it would be better to calculate just one symbolic address and access 4234the three variables relative to it. The equivalent pseudocode would 4235be something like: 4236 4237@smallexample 4238int foo (void) 4239@{ 4240 register int *xr = &x; 4241 return xr[&a - &x] + xr[&b - &x] + xr[&c - &x]; 4242@} 4243@end smallexample 4244 4245(which isn't valid C). We refer to shared addresses like @code{x} as 4246``section anchors''. Their use is controlled by @option{-fsection-anchors}. 4247 4248The hooks below describe the target properties that GCC needs to know 4249in order to make effective use of section anchors. It won't use 4250section anchors at all unless either @code{TARGET_MIN_ANCHOR_OFFSET} 4251or @code{TARGET_MAX_ANCHOR_OFFSET} is set to a nonzero value. 4252 4253@hook TARGET_MIN_ANCHOR_OFFSET 4254 4255@hook TARGET_MAX_ANCHOR_OFFSET 4256 4257@hook TARGET_ASM_OUTPUT_ANCHOR 4258 4259@hook TARGET_USE_ANCHORS_FOR_SYMBOL_P 4260 4261@node Condition Code 4262@section Condition Code Status 4263@cindex condition code status 4264 4265The macros in this section can be split in two families, according to the 4266two ways of representing condition codes in GCC. 4267 4268The first representation is the so called @code{(cc0)} representation 4269(@pxref{Jump Patterns}), where all instructions can have an implicit 4270clobber of the condition codes. The second is the condition code 4271register representation, which provides better schedulability for 4272architectures that do have a condition code register, but on which 4273most instructions do not affect it. The latter category includes 4274most RISC machines. 4275 4276The implicit clobbering poses a strong restriction on the placement of 4277the definition and use of the condition code. In the past the definition 4278and use were always adjacent. However, recent changes to support trapping 4279arithmatic may result in the definition and user being in different blocks. 4280Thus, there may be a @code{NOTE_INSN_BASIC_BLOCK} between them. Additionally, 4281the definition may be the source of exception handling edges. 4282 4283These restrictions can prevent important 4284optimizations on some machines. For example, on the IBM RS/6000, there 4285is a delay for taken branches unless the condition code register is set 4286three instructions earlier than the conditional branch. The instruction 4287scheduler cannot perform this optimization if it is not permitted to 4288separate the definition and use of the condition code register. 4289 4290For this reason, it is possible and suggested to use a register to 4291represent the condition code for new ports. If there is a specific 4292condition code register in the machine, use a hard register. If the 4293condition code or comparison result can be placed in any general register, 4294or if there are multiple condition registers, use a pseudo register. 4295Registers used to store the condition code value will usually have a mode 4296that is in class @code{MODE_CC}. 4297 4298Alternatively, you can use @code{BImode} if the comparison operator is 4299specified already in the compare instruction. In this case, you are not 4300interested in most macros in this section. 4301 4302@menu 4303* CC0 Condition Codes:: Old style representation of condition codes. 4304* MODE_CC Condition Codes:: Modern representation of condition codes. 4305@end menu 4306 4307@node CC0 Condition Codes 4308@subsection Representation of condition codes using @code{(cc0)} 4309@findex cc0 4310 4311@findex cc_status 4312The file @file{conditions.h} defines a variable @code{cc_status} to 4313describe how the condition code was computed (in case the interpretation of 4314the condition code depends on the instruction that it was set by). This 4315variable contains the RTL expressions on which the condition code is 4316currently based, and several standard flags. 4317 4318Sometimes additional machine-specific flags must be defined in the machine 4319description header file. It can also add additional machine-specific 4320information by defining @code{CC_STATUS_MDEP}. 4321 4322@defmac CC_STATUS_MDEP 4323C code for a data type which is used for declaring the @code{mdep} 4324component of @code{cc_status}. It defaults to @code{int}. 4325 4326This macro is not used on machines that do not use @code{cc0}. 4327@end defmac 4328 4329@defmac CC_STATUS_MDEP_INIT 4330A C expression to initialize the @code{mdep} field to ``empty''. 4331The default definition does nothing, since most machines don't use 4332the field anyway. If you want to use the field, you should probably 4333define this macro to initialize it. 4334 4335This macro is not used on machines that do not use @code{cc0}. 4336@end defmac 4337 4338@defmac NOTICE_UPDATE_CC (@var{exp}, @var{insn}) 4339A C compound statement to set the components of @code{cc_status} 4340appropriately for an insn @var{insn} whose body is @var{exp}. It is 4341this macro's responsibility to recognize insns that set the condition 4342code as a byproduct of other activity as well as those that explicitly 4343set @code{(cc0)}. 4344 4345This macro is not used on machines that do not use @code{cc0}. 4346 4347If there are insns that do not set the condition code but do alter 4348other machine registers, this macro must check to see whether they 4349invalidate the expressions that the condition code is recorded as 4350reflecting. For example, on the 68000, insns that store in address 4351registers do not set the condition code, which means that usually 4352@code{NOTICE_UPDATE_CC} can leave @code{cc_status} unaltered for such 4353insns. But suppose that the previous insn set the condition code 4354based on location @samp{a4@@(102)} and the current insn stores a new 4355value in @samp{a4}. Although the condition code is not changed by 4356this, it will no longer be true that it reflects the contents of 4357@samp{a4@@(102)}. Therefore, @code{NOTICE_UPDATE_CC} must alter 4358@code{cc_status} in this case to say that nothing is known about the 4359condition code value. 4360 4361The definition of @code{NOTICE_UPDATE_CC} must be prepared to deal 4362with the results of peephole optimization: insns whose patterns are 4363@code{parallel} RTXs containing various @code{reg}, @code{mem} or 4364constants which are just the operands. The RTL structure of these 4365insns is not sufficient to indicate what the insns actually do. What 4366@code{NOTICE_UPDATE_CC} should do when it sees one is just to run 4367@code{CC_STATUS_INIT}. 4368 4369A possible definition of @code{NOTICE_UPDATE_CC} is to call a function 4370that looks at an attribute (@pxref{Insn Attributes}) named, for example, 4371@samp{cc}. This avoids having detailed information about patterns in 4372two places, the @file{md} file and in @code{NOTICE_UPDATE_CC}. 4373@end defmac 4374 4375@node MODE_CC Condition Codes 4376@subsection Representation of condition codes using registers 4377@findex CCmode 4378@findex MODE_CC 4379 4380@defmac SELECT_CC_MODE (@var{op}, @var{x}, @var{y}) 4381On many machines, the condition code may be produced by other instructions 4382than compares, for example the branch can use directly the condition 4383code set by a subtract instruction. However, on some machines 4384when the condition code is set this way some bits (such as the overflow 4385bit) are not set in the same way as a test instruction, so that a different 4386branch instruction must be used for some conditional branches. When 4387this happens, use the machine mode of the condition code register to 4388record different formats of the condition code register. Modes can 4389also be used to record which compare instruction (e.g.@: a signed or an 4390unsigned comparison) produced the condition codes. 4391 4392If other modes than @code{CCmode} are required, add them to 4393@file{@var{machine}-modes.def} and define @code{SELECT_CC_MODE} to choose 4394a mode given an operand of a compare. This is needed because the modes 4395have to be chosen not only during RTL generation but also, for example, 4396by instruction combination. The result of @code{SELECT_CC_MODE} should 4397be consistent with the mode used in the patterns; for example to support 4398the case of the add on the SPARC discussed above, we have the pattern 4399 4400@smallexample 4401(define_insn "" 4402 [(set (reg:CCNZ 0) 4403 (compare:CCNZ 4404 (plus:SI (match_operand:SI 0 "register_operand" "%r") 4405 (match_operand:SI 1 "arith_operand" "rI")) 4406 (const_int 0)))] 4407 "" 4408 "@dots{}") 4409@end smallexample 4410 4411@noindent 4412together with a @code{SELECT_CC_MODE} that returns @code{CCNZmode} 4413for comparisons whose argument is a @code{plus}: 4414 4415@smallexample 4416#define SELECT_CC_MODE(OP,X,Y) \ 4417 (GET_MODE_CLASS (GET_MODE (X)) == MODE_FLOAT \ 4418 ? ((OP == LT || OP == LE || OP == GT || OP == GE) \ 4419 ? CCFPEmode : CCFPmode) \ 4420 : ((GET_CODE (X) == PLUS || GET_CODE (X) == MINUS \ 4421 || GET_CODE (X) == NEG || GET_CODE (x) == ASHIFT) \ 4422 ? CCNZmode : CCmode)) 4423@end smallexample 4424 4425Another reason to use modes is to retain information on which operands 4426were used by the comparison; see @code{REVERSIBLE_CC_MODE} later in 4427this section. 4428 4429You should define this macro if and only if you define extra CC modes 4430in @file{@var{machine}-modes.def}. 4431@end defmac 4432 4433@hook TARGET_CANONICALIZE_COMPARISON 4434 4435@defmac REVERSIBLE_CC_MODE (@var{mode}) 4436A C expression whose value is one if it is always safe to reverse a 4437comparison whose mode is @var{mode}. If @code{SELECT_CC_MODE} 4438can ever return @var{mode} for a floating-point inequality comparison, 4439then @code{REVERSIBLE_CC_MODE (@var{mode})} must be zero. 4440 4441You need not define this macro if it would always returns zero or if the 4442floating-point format is anything other than @code{IEEE_FLOAT_FORMAT}. 4443For example, here is the definition used on the SPARC, where floating-point 4444inequality comparisons are given either @code{CCFPEmode} or @code{CCFPmode}: 4445 4446@smallexample 4447#define REVERSIBLE_CC_MODE(MODE) \ 4448 ((MODE) != CCFPEmode && (MODE) != CCFPmode) 4449@end smallexample 4450@end defmac 4451 4452@defmac REVERSE_CONDITION (@var{code}, @var{mode}) 4453A C expression whose value is reversed condition code of the @var{code} for 4454comparison done in CC_MODE @var{mode}. The macro is used only in case 4455@code{REVERSIBLE_CC_MODE (@var{mode})} is nonzero. Define this macro in case 4456machine has some non-standard way how to reverse certain conditionals. For 4457instance in case all floating point conditions are non-trapping, compiler may 4458freely convert unordered compares to ordered ones. Then definition may look 4459like: 4460 4461@smallexample 4462#define REVERSE_CONDITION(CODE, MODE) \ 4463 ((MODE) != CCFPmode ? reverse_condition (CODE) \ 4464 : reverse_condition_maybe_unordered (CODE)) 4465@end smallexample 4466@end defmac 4467 4468@hook TARGET_FIXED_CONDITION_CODE_REGS 4469 4470@hook TARGET_CC_MODES_COMPATIBLE 4471 4472@hook TARGET_FLAGS_REGNUM 4473 4474@node Costs 4475@section Describing Relative Costs of Operations 4476@cindex costs of instructions 4477@cindex relative costs 4478@cindex speed of instructions 4479 4480These macros let you describe the relative speed of various operations 4481on the target machine. 4482 4483@defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to}) 4484A C expression for the cost of moving data of mode @var{mode} from a 4485register in class @var{from} to one in class @var{to}. The classes are 4486expressed using the enumeration values such as @code{GENERAL_REGS}. A 4487value of 2 is the default; other values are interpreted relative to 4488that. 4489 4490It is not required that the cost always equal 2 when @var{from} is the 4491same as @var{to}; on some machines it is expensive to move between 4492registers if they are not general registers. 4493 4494If reload sees an insn consisting of a single @code{set} between two 4495hard registers, and if @code{REGISTER_MOVE_COST} applied to their 4496classes returns a value of 2, reload does not check to ensure that the 4497constraints of the insn are met. Setting a cost of other than 2 will 4498allow reload to verify that the constraints are met. You should do this 4499if the @samp{mov@var{m}} pattern's constraints do not allow such copying. 4500 4501These macros are obsolete, new ports should use the target hook 4502@code{TARGET_REGISTER_MOVE_COST} instead. 4503@end defmac 4504 4505@hook TARGET_REGISTER_MOVE_COST 4506 4507@defmac MEMORY_MOVE_COST (@var{mode}, @var{class}, @var{in}) 4508A C expression for the cost of moving data of mode @var{mode} between a 4509register of class @var{class} and memory; @var{in} is zero if the value 4510is to be written to memory, nonzero if it is to be read in. This cost 4511is relative to those in @code{REGISTER_MOVE_COST}. If moving between 4512registers and memory is more expensive than between two registers, you 4513should define this macro to express the relative cost. 4514 4515If you do not define this macro, GCC uses a default cost of 4 plus 4516the cost of copying via a secondary reload register, if one is 4517needed. If your machine requires a secondary reload register to copy 4518between memory and a register of @var{class} but the reload mechanism is 4519more complex than copying via an intermediate, define this macro to 4520reflect the actual cost of the move. 4521 4522GCC defines the function @code{memory_move_secondary_cost} if 4523secondary reloads are needed. It computes the costs due to copying via 4524a secondary register. If your machine copies from memory using a 4525secondary register in the conventional way but the default base value of 45264 is not correct for your machine, define this macro to add some other 4527value to the result of that function. The arguments to that function 4528are the same as to this macro. 4529 4530These macros are obsolete, new ports should use the target hook 4531@code{TARGET_MEMORY_MOVE_COST} instead. 4532@end defmac 4533 4534@hook TARGET_MEMORY_MOVE_COST 4535 4536@defmac BRANCH_COST (@var{speed_p}, @var{predictable_p}) 4537A C expression for the cost of a branch instruction. A value of 1 is 4538the default; other values are interpreted relative to that. Parameter 4539@var{speed_p} is true when the branch in question should be optimized 4540for speed. When it is false, @code{BRANCH_COST} should return a value 4541optimal for code size rather than performance. @var{predictable_p} is 4542true for well-predicted branches. On many architectures the 4543@code{BRANCH_COST} can be reduced then. 4544@end defmac 4545 4546Here are additional macros which do not specify precise relative costs, 4547but only that certain actions are more expensive than GCC would 4548ordinarily expect. 4549 4550@defmac SLOW_BYTE_ACCESS 4551Define this macro as a C expression which is nonzero if accessing less 4552than a word of memory (i.e.@: a @code{char} or a @code{short}) is no 4553faster than accessing a word of memory, i.e., if such access 4554require more than one instruction or if there is no difference in cost 4555between byte and (aligned) word loads. 4556 4557When this macro is not defined, the compiler will access a field by 4558finding the smallest containing object; when it is defined, a fullword 4559load will be used if alignment permits. Unless bytes accesses are 4560faster than word accesses, using word accesses is preferable since it 4561may eliminate subsequent memory access if subsequent accesses occur to 4562other fields in the same word of the structure, but to different bytes. 4563@end defmac 4564 4565@hook TARGET_SLOW_UNALIGNED_ACCESS 4566 4567@defmac MOVE_RATIO (@var{speed}) 4568The threshold of number of scalar memory-to-memory move insns, @emph{below} 4569which a sequence of insns should be generated instead of a 4570string move insn or a library call. Increasing the value will always 4571make code faster, but eventually incurs high cost in increased code size. 4572 4573Note that on machines where the corresponding move insn is a 4574@code{define_expand} that emits a sequence of insns, this macro counts 4575the number of such sequences. 4576 4577The parameter @var{speed} is true if the code is currently being 4578optimized for speed rather than size. 4579 4580If you don't define this, a reasonable default is used. 4581@end defmac 4582 4583@hook TARGET_USE_BY_PIECES_INFRASTRUCTURE_P 4584 4585@hook TARGET_COMPARE_BY_PIECES_BRANCH_RATIO 4586 4587@defmac MOVE_MAX_PIECES 4588A C expression used by @code{move_by_pieces} to determine the largest unit 4589a load or store used to copy memory is. Defaults to @code{MOVE_MAX}. 4590@end defmac 4591 4592@defmac STORE_MAX_PIECES 4593A C expression used by @code{store_by_pieces} to determine the largest unit 4594a store used to memory is. Defaults to @code{MOVE_MAX_PIECES}, or two times 4595the size of @code{HOST_WIDE_INT}, whichever is smaller. 4596@end defmac 4597 4598@defmac COMPARE_MAX_PIECES 4599A C expression used by @code{compare_by_pieces} to determine the largest unit 4600a load or store used to compare memory is. Defaults to 4601@code{MOVE_MAX_PIECES}. 4602@end defmac 4603 4604@defmac CLEAR_RATIO (@var{speed}) 4605The threshold of number of scalar move insns, @emph{below} which a sequence 4606of insns should be generated to clear memory instead of a string clear insn 4607or a library call. Increasing the value will always make code faster, but 4608eventually incurs high cost in increased code size. 4609 4610The parameter @var{speed} is true if the code is currently being 4611optimized for speed rather than size. 4612 4613If you don't define this, a reasonable default is used. 4614@end defmac 4615 4616@defmac SET_RATIO (@var{speed}) 4617The threshold of number of scalar move insns, @emph{below} which a sequence 4618of insns should be generated to set memory to a constant value, instead of 4619a block set insn or a library call. 4620Increasing the value will always make code faster, but 4621eventually incurs high cost in increased code size. 4622 4623The parameter @var{speed} is true if the code is currently being 4624optimized for speed rather than size. 4625 4626If you don't define this, it defaults to the value of @code{MOVE_RATIO}. 4627@end defmac 4628 4629@defmac USE_LOAD_POST_INCREMENT (@var{mode}) 4630A C expression used to determine whether a load postincrement is a good 4631thing to use for a given mode. Defaults to the value of 4632@code{HAVE_POST_INCREMENT}. 4633@end defmac 4634 4635@defmac USE_LOAD_POST_DECREMENT (@var{mode}) 4636A C expression used to determine whether a load postdecrement is a good 4637thing to use for a given mode. Defaults to the value of 4638@code{HAVE_POST_DECREMENT}. 4639@end defmac 4640 4641@defmac USE_LOAD_PRE_INCREMENT (@var{mode}) 4642A C expression used to determine whether a load preincrement is a good 4643thing to use for a given mode. Defaults to the value of 4644@code{HAVE_PRE_INCREMENT}. 4645@end defmac 4646 4647@defmac USE_LOAD_PRE_DECREMENT (@var{mode}) 4648A C expression used to determine whether a load predecrement is a good 4649thing to use for a given mode. Defaults to the value of 4650@code{HAVE_PRE_DECREMENT}. 4651@end defmac 4652 4653@defmac USE_STORE_POST_INCREMENT (@var{mode}) 4654A C expression used to determine whether a store postincrement is a good 4655thing to use for a given mode. Defaults to the value of 4656@code{HAVE_POST_INCREMENT}. 4657@end defmac 4658 4659@defmac USE_STORE_POST_DECREMENT (@var{mode}) 4660A C expression used to determine whether a store postdecrement is a good 4661thing to use for a given mode. Defaults to the value of 4662@code{HAVE_POST_DECREMENT}. 4663@end defmac 4664 4665@defmac USE_STORE_PRE_INCREMENT (@var{mode}) 4666This macro is used to determine whether a store preincrement is a good 4667thing to use for a given mode. Defaults to the value of 4668@code{HAVE_PRE_INCREMENT}. 4669@end defmac 4670 4671@defmac USE_STORE_PRE_DECREMENT (@var{mode}) 4672This macro is used to determine whether a store predecrement is a good 4673thing to use for a given mode. Defaults to the value of 4674@code{HAVE_PRE_DECREMENT}. 4675@end defmac 4676 4677@defmac NO_FUNCTION_CSE 4678Define this macro to be true if it is as good or better to call a constant 4679function address than to call an address kept in a register. 4680@end defmac 4681 4682@defmac LOGICAL_OP_NON_SHORT_CIRCUIT 4683Define this macro if a non-short-circuit operation produced by 4684@samp{fold_range_test ()} is optimal. This macro defaults to true if 4685@code{BRANCH_COST} is greater than or equal to the value 2. 4686@end defmac 4687 4688@hook TARGET_OPTAB_SUPPORTED_P 4689 4690@hook TARGET_RTX_COSTS 4691 4692@hook TARGET_ADDRESS_COST 4693 4694@hook TARGET_INSN_COST 4695 4696@hook TARGET_MAX_NOCE_IFCVT_SEQ_COST 4697 4698@hook TARGET_NOCE_CONVERSION_PROFITABLE_P 4699 4700@hook TARGET_NO_SPECULATION_IN_DELAY_SLOTS_P 4701 4702@hook TARGET_ESTIMATED_POLY_VALUE 4703 4704@node Scheduling 4705@section Adjusting the Instruction Scheduler 4706 4707The instruction scheduler may need a fair amount of machine-specific 4708adjustment in order to produce good code. GCC provides several target 4709hooks for this purpose. It is usually enough to define just a few of 4710them: try the first ones in this list first. 4711 4712@hook TARGET_SCHED_ISSUE_RATE 4713 4714@hook TARGET_SCHED_VARIABLE_ISSUE 4715 4716@hook TARGET_SCHED_ADJUST_COST 4717 4718@hook TARGET_SCHED_ADJUST_PRIORITY 4719 4720@hook TARGET_SCHED_REORDER 4721 4722@hook TARGET_SCHED_REORDER2 4723 4724@hook TARGET_SCHED_MACRO_FUSION_P 4725 4726@hook TARGET_SCHED_MACRO_FUSION_PAIR_P 4727 4728@hook TARGET_SCHED_DEPENDENCIES_EVALUATION_HOOK 4729 4730@hook TARGET_SCHED_INIT 4731 4732@hook TARGET_SCHED_FINISH 4733 4734@hook TARGET_SCHED_INIT_GLOBAL 4735 4736@hook TARGET_SCHED_FINISH_GLOBAL 4737 4738@hook TARGET_SCHED_DFA_PRE_CYCLE_INSN 4739 4740@hook TARGET_SCHED_INIT_DFA_PRE_CYCLE_INSN 4741 4742@hook TARGET_SCHED_DFA_POST_CYCLE_INSN 4743 4744@hook TARGET_SCHED_INIT_DFA_POST_CYCLE_INSN 4745 4746@hook TARGET_SCHED_DFA_PRE_ADVANCE_CYCLE 4747 4748@hook TARGET_SCHED_DFA_POST_ADVANCE_CYCLE 4749 4750@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD 4751 4752@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_DFA_LOOKAHEAD_GUARD 4753 4754@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BEGIN 4755 4756@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_ISSUE 4757 4758@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_BACKTRACK 4759 4760@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_END 4761 4762@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_INIT 4763 4764@hook TARGET_SCHED_FIRST_CYCLE_MULTIPASS_FINI 4765 4766@hook TARGET_SCHED_DFA_NEW_CYCLE 4767 4768@hook TARGET_SCHED_IS_COSTLY_DEPENDENCE 4769 4770@hook TARGET_SCHED_H_I_D_EXTENDED 4771 4772@hook TARGET_SCHED_ALLOC_SCHED_CONTEXT 4773 4774@hook TARGET_SCHED_INIT_SCHED_CONTEXT 4775 4776@hook TARGET_SCHED_SET_SCHED_CONTEXT 4777 4778@hook TARGET_SCHED_CLEAR_SCHED_CONTEXT 4779 4780@hook TARGET_SCHED_FREE_SCHED_CONTEXT 4781 4782@hook TARGET_SCHED_SPECULATE_INSN 4783 4784@hook TARGET_SCHED_NEEDS_BLOCK_P 4785 4786@hook TARGET_SCHED_GEN_SPEC_CHECK 4787 4788@hook TARGET_SCHED_SET_SCHED_FLAGS 4789 4790@hook TARGET_SCHED_CAN_SPECULATE_INSN 4791 4792@hook TARGET_SCHED_SMS_RES_MII 4793 4794@hook TARGET_SCHED_DISPATCH 4795 4796@hook TARGET_SCHED_DISPATCH_DO 4797 4798@hook TARGET_SCHED_EXPOSED_PIPELINE 4799 4800@hook TARGET_SCHED_REASSOCIATION_WIDTH 4801 4802@hook TARGET_SCHED_FUSION_PRIORITY 4803 4804@hook TARGET_EXPAND_DIVMOD_LIBFUNC 4805 4806@node Sections 4807@section Dividing the Output into Sections (Texts, Data, @dots{}) 4808@c the above section title is WAY too long. maybe cut the part between 4809@c the (...)? --mew 10feb93 4810 4811An object file is divided into sections containing different types of 4812data. In the most common case, there are three sections: the @dfn{text 4813section}, which holds instructions and read-only data; the @dfn{data 4814section}, which holds initialized writable data; and the @dfn{bss 4815section}, which holds uninitialized data. Some systems have other kinds 4816of sections. 4817 4818@file{varasm.c} provides several well-known sections, such as 4819@code{text_section}, @code{data_section} and @code{bss_section}. 4820The normal way of controlling a @code{@var{foo}_section} variable 4821is to define the associated @code{@var{FOO}_SECTION_ASM_OP} macro, 4822as described below. The macros are only read once, when @file{varasm.c} 4823initializes itself, so their values must be run-time constants. 4824They may however depend on command-line flags. 4825 4826@emph{Note:} Some run-time files, such @file{crtstuff.c}, also make 4827use of the @code{@var{FOO}_SECTION_ASM_OP} macros, and expect them 4828to be string literals. 4829 4830Some assemblers require a different string to be written every time a 4831section is selected. If your assembler falls into this category, you 4832should define the @code{TARGET_ASM_INIT_SECTIONS} hook and use 4833@code{get_unnamed_section} to set up the sections. 4834 4835You must always create a @code{text_section}, either by defining 4836@code{TEXT_SECTION_ASM_OP} or by initializing @code{text_section} 4837in @code{TARGET_ASM_INIT_SECTIONS}. The same is true of 4838@code{data_section} and @code{DATA_SECTION_ASM_OP}. If you do not 4839create a distinct @code{readonly_data_section}, the default is to 4840reuse @code{text_section}. 4841 4842All the other @file{varasm.c} sections are optional, and are null 4843if the target does not provide them. 4844 4845@defmac TEXT_SECTION_ASM_OP 4846A C expression whose value is a string, including spacing, containing the 4847assembler operation that should precede instructions and read-only data. 4848Normally @code{"\t.text"} is right. 4849@end defmac 4850 4851@defmac HOT_TEXT_SECTION_NAME 4852If defined, a C string constant for the name of the section containing most 4853frequently executed functions of the program. If not defined, GCC will provide 4854a default definition if the target supports named sections. 4855@end defmac 4856 4857@defmac UNLIKELY_EXECUTED_TEXT_SECTION_NAME 4858If defined, a C string constant for the name of the section containing unlikely 4859executed functions in the program. 4860@end defmac 4861 4862@defmac DATA_SECTION_ASM_OP 4863A C expression whose value is a string, including spacing, containing the 4864assembler operation to identify the following data as writable initialized 4865data. Normally @code{"\t.data"} is right. 4866@end defmac 4867 4868@defmac SDATA_SECTION_ASM_OP 4869If defined, a C expression whose value is a string, including spacing, 4870containing the assembler operation to identify the following data as 4871initialized, writable small data. 4872@end defmac 4873 4874@defmac READONLY_DATA_SECTION_ASM_OP 4875A C expression whose value is a string, including spacing, containing the 4876assembler operation to identify the following data as read-only initialized 4877data. 4878@end defmac 4879 4880@defmac BSS_SECTION_ASM_OP 4881If defined, a C expression whose value is a string, including spacing, 4882containing the assembler operation to identify the following data as 4883uninitialized global data. If not defined, and 4884@code{ASM_OUTPUT_ALIGNED_BSS} not defined, 4885uninitialized global data will be output in the data section if 4886@option{-fno-common} is passed, otherwise @code{ASM_OUTPUT_COMMON} will be 4887used. 4888@end defmac 4889 4890@defmac SBSS_SECTION_ASM_OP 4891If defined, a C expression whose value is a string, including spacing, 4892containing the assembler operation to identify the following data as 4893uninitialized, writable small data. 4894@end defmac 4895 4896@defmac TLS_COMMON_ASM_OP 4897If defined, a C expression whose value is a string containing the 4898assembler operation to identify the following data as thread-local 4899common data. The default is @code{".tls_common"}. 4900@end defmac 4901 4902@defmac TLS_SECTION_ASM_FLAG 4903If defined, a C expression whose value is a character constant 4904containing the flag used to mark a section as a TLS section. The 4905default is @code{'T'}. 4906@end defmac 4907 4908@defmac INIT_SECTION_ASM_OP 4909If defined, a C expression whose value is a string, including spacing, 4910containing the assembler operation to identify the following data as 4911initialization code. If not defined, GCC will assume such a section does 4912not exist. This section has no corresponding @code{init_section} 4913variable; it is used entirely in runtime code. 4914@end defmac 4915 4916@defmac FINI_SECTION_ASM_OP 4917If defined, a C expression whose value is a string, including spacing, 4918containing the assembler operation to identify the following data as 4919finalization code. If not defined, GCC will assume such a section does 4920not exist. This section has no corresponding @code{fini_section} 4921variable; it is used entirely in runtime code. 4922@end defmac 4923 4924@defmac INIT_ARRAY_SECTION_ASM_OP 4925If defined, a C expression whose value is a string, including spacing, 4926containing the assembler operation to identify the following data as 4927part of the @code{.init_array} (or equivalent) section. If not 4928defined, GCC will assume such a section does not exist. Do not define 4929both this macro and @code{INIT_SECTION_ASM_OP}. 4930@end defmac 4931 4932@defmac FINI_ARRAY_SECTION_ASM_OP 4933If defined, a C expression whose value is a string, including spacing, 4934containing the assembler operation to identify the following data as 4935part of the @code{.fini_array} (or equivalent) section. If not 4936defined, GCC will assume such a section does not exist. Do not define 4937both this macro and @code{FINI_SECTION_ASM_OP}. 4938@end defmac 4939 4940@defmac MACH_DEP_SECTION_ASM_FLAG 4941If defined, a C expression whose value is a character constant 4942containing the flag used to mark a machine-dependent section. This 4943corresponds to the @code{SECTION_MACH_DEP} section flag. 4944@end defmac 4945 4946@defmac CRT_CALL_STATIC_FUNCTION (@var{section_op}, @var{function}) 4947If defined, an ASM statement that switches to a different section 4948via @var{section_op}, calls @var{function}, and switches back to 4949the text section. This is used in @file{crtstuff.c} if 4950@code{INIT_SECTION_ASM_OP} or @code{FINI_SECTION_ASM_OP} to calls 4951to initialization and finalization functions from the init and fini 4952sections. By default, this macro uses a simple function call. Some 4953ports need hand-crafted assembly code to avoid dependencies on 4954registers initialized in the function prologue or to ensure that 4955constant pools don't end up too far way in the text section. 4956@end defmac 4957 4958@defmac TARGET_LIBGCC_SDATA_SECTION 4959If defined, a string which names the section into which small 4960variables defined in crtstuff and libgcc should go. This is useful 4961when the target has options for optimizing access to small data, and 4962you want the crtstuff and libgcc routines to be conservative in what 4963they expect of your application yet liberal in what your application 4964expects. For example, for targets with a @code{.sdata} section (like 4965MIPS), you could compile crtstuff with @code{-G 0} so that it doesn't 4966require small data support from your application, but use this macro 4967to put small data into @code{.sdata} so that your application can 4968access these variables whether it uses small data or not. 4969@end defmac 4970 4971@defmac FORCE_CODE_SECTION_ALIGN 4972If defined, an ASM statement that aligns a code section to some 4973arbitrary boundary. This is used to force all fragments of the 4974@code{.init} and @code{.fini} sections to have to same alignment 4975and thus prevent the linker from having to add any padding. 4976@end defmac 4977 4978@defmac JUMP_TABLES_IN_TEXT_SECTION 4979Define this macro to be an expression with a nonzero value if jump 4980tables (for @code{tablejump} insns) should be output in the text 4981section, along with the assembler instructions. Otherwise, the 4982readonly data section is used. 4983 4984This macro is irrelevant if there is no separate readonly data section. 4985@end defmac 4986 4987@hook TARGET_ASM_INIT_SECTIONS 4988 4989@hook TARGET_ASM_RELOC_RW_MASK 4990 4991@hook TARGET_ASM_GENERATE_PIC_ADDR_DIFF_VEC 4992 4993@hook TARGET_ASM_SELECT_SECTION 4994 4995@defmac USE_SELECT_SECTION_FOR_FUNCTIONS 4996Define this macro if you wish TARGET_ASM_SELECT_SECTION to be called 4997for @code{FUNCTION_DECL}s as well as for variables and constants. 4998 4999In the case of a @code{FUNCTION_DECL}, @var{reloc} will be zero if the 5000function has been determined to be likely to be called, and nonzero if 5001it is unlikely to be called. 5002@end defmac 5003 5004@hook TARGET_ASM_UNIQUE_SECTION 5005 5006@hook TARGET_ASM_FUNCTION_RODATA_SECTION 5007 5008@hook TARGET_ASM_MERGEABLE_RODATA_PREFIX 5009 5010@hook TARGET_ASM_TM_CLONE_TABLE_SECTION 5011 5012@hook TARGET_ASM_SELECT_RTX_SECTION 5013 5014@hook TARGET_MANGLE_DECL_ASSEMBLER_NAME 5015 5016@hook TARGET_ENCODE_SECTION_INFO 5017 5018@hook TARGET_STRIP_NAME_ENCODING 5019 5020@hook TARGET_IN_SMALL_DATA_P 5021 5022@hook TARGET_HAVE_SRODATA_SECTION 5023 5024@hook TARGET_PROFILE_BEFORE_PROLOGUE 5025 5026@hook TARGET_BINDS_LOCAL_P 5027 5028@hook TARGET_HAVE_TLS 5029 5030 5031@node PIC 5032@section Position Independent Code 5033@cindex position independent code 5034@cindex PIC 5035 5036This section describes macros that help implement generation of position 5037independent code. Simply defining these macros is not enough to 5038generate valid PIC; you must also add support to the hook 5039@code{TARGET_LEGITIMATE_ADDRESS_P} and to the macro 5040@code{PRINT_OPERAND_ADDRESS}, as well as @code{LEGITIMIZE_ADDRESS}. You 5041must modify the definition of @samp{movsi} to do something appropriate 5042when the source operand contains a symbolic address. You may also 5043need to alter the handling of switch statements so that they use 5044relative addresses. 5045@c i rearranged the order of the macros above to try to force one of 5046@c them to the next line, to eliminate an overfull hbox. --mew 10feb93 5047 5048@defmac PIC_OFFSET_TABLE_REGNUM 5049The register number of the register used to address a table of static 5050data addresses in memory. In some cases this register is defined by a 5051processor's ``application binary interface'' (ABI)@. When this macro 5052is defined, RTL is generated for this register once, as with the stack 5053pointer and frame pointer registers. If this macro is not defined, it 5054is up to the machine-dependent files to allocate such a register (if 5055necessary). Note that this register must be fixed when in use (e.g.@: 5056when @code{flag_pic} is true). 5057@end defmac 5058 5059@defmac PIC_OFFSET_TABLE_REG_CALL_CLOBBERED 5060A C expression that is nonzero if the register defined by 5061@code{PIC_OFFSET_TABLE_REGNUM} is clobbered by calls. If not defined, 5062the default is zero. Do not define 5063this macro if @code{PIC_OFFSET_TABLE_REGNUM} is not defined. 5064@end defmac 5065 5066@defmac LEGITIMATE_PIC_OPERAND_P (@var{x}) 5067A C expression that is nonzero if @var{x} is a legitimate immediate 5068operand on the target machine when generating position independent code. 5069You can assume that @var{x} satisfies @code{CONSTANT_P}, so you need not 5070check this. You can also assume @var{flag_pic} is true, so you need not 5071check it either. You need not define this macro if all constants 5072(including @code{SYMBOL_REF}) can be immediate operands when generating 5073position independent code. 5074@end defmac 5075 5076@node Assembler Format 5077@section Defining the Output Assembler Language 5078 5079This section describes macros whose principal purpose is to describe how 5080to write instructions in assembler language---rather than what the 5081instructions do. 5082 5083@menu 5084* File Framework:: Structural information for the assembler file. 5085* Data Output:: Output of constants (numbers, strings, addresses). 5086* Uninitialized Data:: Output of uninitialized variables. 5087* Label Output:: Output and generation of labels. 5088* Initialization:: General principles of initialization 5089 and termination routines. 5090* Macros for Initialization:: 5091 Specific macros that control the handling of 5092 initialization and termination routines. 5093* Instruction Output:: Output of actual instructions. 5094* Dispatch Tables:: Output of jump tables. 5095* Exception Region Output:: Output of exception region code. 5096* Alignment Output:: Pseudo ops for alignment and skipping data. 5097@end menu 5098 5099@node File Framework 5100@subsection The Overall Framework of an Assembler File 5101@cindex assembler format 5102@cindex output of assembler code 5103 5104@c prevent bad page break with this line 5105This describes the overall framework of an assembly file. 5106 5107@findex default_file_start 5108@hook TARGET_ASM_FILE_START 5109 5110@hook TARGET_ASM_FILE_START_APP_OFF 5111 5112@hook TARGET_ASM_FILE_START_FILE_DIRECTIVE 5113 5114@hook TARGET_ASM_FILE_END 5115 5116@deftypefun void file_end_indicate_exec_stack () 5117Some systems use a common convention, the @samp{.note.GNU-stack} 5118special section, to indicate whether or not an object file relies on 5119the stack being executable. If your system uses this convention, you 5120should define @code{TARGET_ASM_FILE_END} to this function. If you 5121need to do other things in that hook, have your hook function call 5122this function. 5123@end deftypefun 5124 5125@hook TARGET_ASM_LTO_START 5126 5127@hook TARGET_ASM_LTO_END 5128 5129@hook TARGET_ASM_CODE_END 5130 5131@defmac ASM_COMMENT_START 5132A C string constant describing how to begin a comment in the target 5133assembler language. The compiler assumes that the comment will end at 5134the end of the line. 5135@end defmac 5136 5137@defmac ASM_APP_ON 5138A C string constant for text to be output before each @code{asm} 5139statement or group of consecutive ones. Normally this is 5140@code{"#APP"}, which is a comment that has no effect on most 5141assemblers but tells the GNU assembler that it must check the lines 5142that follow for all valid assembler constructs. 5143@end defmac 5144 5145@defmac ASM_APP_OFF 5146A C string constant for text to be output after each @code{asm} 5147statement or group of consecutive ones. Normally this is 5148@code{"#NO_APP"}, which tells the GNU assembler to resume making the 5149time-saving assumptions that are valid for ordinary compiler output. 5150@end defmac 5151 5152@defmac ASM_OUTPUT_SOURCE_FILENAME (@var{stream}, @var{name}) 5153A C statement to output COFF information or DWARF debugging information 5154which indicates that filename @var{name} is the current source file to 5155the stdio stream @var{stream}. 5156 5157This macro need not be defined if the standard form of output 5158for the file format in use is appropriate. 5159@end defmac 5160 5161@hook TARGET_ASM_OUTPUT_SOURCE_FILENAME 5162 5163@hook TARGET_ASM_OUTPUT_IDENT 5164 5165@defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string}) 5166A C statement to output the string @var{string} to the stdio stream 5167@var{stream}. If you do not call the function @code{output_quoted_string} 5168in your config files, GCC will only call it to output filenames to 5169the assembler source. So you can use it to canonicalize the format 5170of the filename using this macro. 5171@end defmac 5172 5173@hook TARGET_ASM_NAMED_SECTION 5174 5175@hook TARGET_ASM_ELF_FLAGS_NUMERIC 5176 5177@hook TARGET_ASM_FUNCTION_SECTION 5178 5179@hook TARGET_ASM_FUNCTION_SWITCHED_TEXT_SECTIONS 5180 5181@hook TARGET_HAVE_NAMED_SECTIONS 5182This flag is true if the target supports @code{TARGET_ASM_NAMED_SECTION}. 5183It must not be modified by command-line option processing. 5184@end deftypevr 5185 5186@anchor{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS} 5187@hook TARGET_HAVE_SWITCHABLE_BSS_SECTIONS 5188 5189@hook TARGET_SECTION_TYPE_FLAGS 5190 5191@hook TARGET_ASM_RECORD_GCC_SWITCHES 5192 5193@hook TARGET_ASM_RECORD_GCC_SWITCHES_SECTION 5194 5195@need 2000 5196@node Data Output 5197@subsection Output of Data 5198 5199 5200@hook TARGET_ASM_BYTE_OP 5201 5202@hook TARGET_ASM_INTEGER 5203 5204@hook TARGET_ASM_DECL_END 5205 5206@hook TARGET_ASM_OUTPUT_ADDR_CONST_EXTRA 5207 5208@defmac ASM_OUTPUT_ASCII (@var{stream}, @var{ptr}, @var{len}) 5209A C statement to output to the stdio stream @var{stream} an assembler 5210instruction to assemble a string constant containing the @var{len} 5211bytes at @var{ptr}. @var{ptr} will be a C expression of type 5212@code{char *} and @var{len} a C expression of type @code{int}. 5213 5214If the assembler has a @code{.ascii} pseudo-op as found in the 5215Berkeley Unix assembler, do not define the macro 5216@code{ASM_OUTPUT_ASCII}. 5217@end defmac 5218 5219@defmac ASM_OUTPUT_FDESC (@var{stream}, @var{decl}, @var{n}) 5220A C statement to output word @var{n} of a function descriptor for 5221@var{decl}. This must be defined if @code{TARGET_VTABLE_USES_DESCRIPTORS} 5222is defined, and is otherwise unused. 5223@end defmac 5224 5225@defmac CONSTANT_POOL_BEFORE_FUNCTION 5226You may define this macro as a C expression. You should define the 5227expression to have a nonzero value if GCC should output the constant 5228pool for a function before the code for the function, or a zero value if 5229GCC should output the constant pool after the function. If you do 5230not define this macro, the usual case, GCC will output the constant 5231pool before the function. 5232@end defmac 5233 5234@defmac ASM_OUTPUT_POOL_PROLOGUE (@var{file}, @var{funname}, @var{fundecl}, @var{size}) 5235A C statement to output assembler commands to define the start of the 5236constant pool for a function. @var{funname} is a string giving 5237the name of the function. Should the return type of the function 5238be required, it can be obtained via @var{fundecl}. @var{size} 5239is the size, in bytes, of the constant pool that will be written 5240immediately after this call. 5241 5242If no constant-pool prefix is required, the usual case, this macro need 5243not be defined. 5244@end defmac 5245 5246@defmac ASM_OUTPUT_SPECIAL_POOL_ENTRY (@var{file}, @var{x}, @var{mode}, @var{align}, @var{labelno}, @var{jumpto}) 5247A C statement (with or without semicolon) to output a constant in the 5248constant pool, if it needs special treatment. (This macro need not do 5249anything for RTL expressions that can be output normally.) 5250 5251The argument @var{file} is the standard I/O stream to output the 5252assembler code on. @var{x} is the RTL expression for the constant to 5253output, and @var{mode} is the machine mode (in case @var{x} is a 5254@samp{const_int}). @var{align} is the required alignment for the value 5255@var{x}; you should output an assembler directive to force this much 5256alignment. 5257 5258The argument @var{labelno} is a number to use in an internal label for 5259the address of this pool entry. The definition of this macro is 5260responsible for outputting the label definition at the proper place. 5261Here is how to do this: 5262 5263@smallexample 5264@code{(*targetm.asm_out.internal_label)} (@var{file}, "LC", @var{labelno}); 5265@end smallexample 5266 5267When you output a pool entry specially, you should end with a 5268@code{goto} to the label @var{jumpto}. This will prevent the same pool 5269entry from being output a second time in the usual manner. 5270 5271You need not define this macro if it would do nothing. 5272@end defmac 5273 5274@defmac ASM_OUTPUT_POOL_EPILOGUE (@var{file} @var{funname} @var{fundecl} @var{size}) 5275A C statement to output assembler commands to at the end of the constant 5276pool for a function. @var{funname} is a string giving the name of the 5277function. Should the return type of the function be required, you can 5278obtain it via @var{fundecl}. @var{size} is the size, in bytes, of the 5279constant pool that GCC wrote immediately before this call. 5280 5281If no constant-pool epilogue is required, the usual case, you need not 5282define this macro. 5283@end defmac 5284 5285@defmac IS_ASM_LOGICAL_LINE_SEPARATOR (@var{C}, @var{STR}) 5286Define this macro as a C expression which is nonzero if @var{C} is 5287used as a logical line separator by the assembler. @var{STR} points 5288to the position in the string where @var{C} was found; this can be used if 5289a line separator uses multiple characters. 5290 5291If you do not define this macro, the default is that only 5292the character @samp{;} is treated as a logical line separator. 5293@end defmac 5294 5295@hook TARGET_ASM_OPEN_PAREN 5296 5297These macros are provided by @file{real.h} for writing the definitions 5298of @code{ASM_OUTPUT_DOUBLE} and the like: 5299 5300@defmac REAL_VALUE_TO_TARGET_SINGLE (@var{x}, @var{l}) 5301@defmacx REAL_VALUE_TO_TARGET_DOUBLE (@var{x}, @var{l}) 5302@defmacx REAL_VALUE_TO_TARGET_LONG_DOUBLE (@var{x}, @var{l}) 5303@defmacx REAL_VALUE_TO_TARGET_DECIMAL32 (@var{x}, @var{l}) 5304@defmacx REAL_VALUE_TO_TARGET_DECIMAL64 (@var{x}, @var{l}) 5305@defmacx REAL_VALUE_TO_TARGET_DECIMAL128 (@var{x}, @var{l}) 5306These translate @var{x}, of type @code{REAL_VALUE_TYPE}, to the 5307target's floating point representation, and store its bit pattern in 5308the variable @var{l}. For @code{REAL_VALUE_TO_TARGET_SINGLE} and 5309@code{REAL_VALUE_TO_TARGET_DECIMAL32}, this variable should be a 5310simple @code{long int}. For the others, it should be an array of 5311@code{long int}. The number of elements in this array is determined 5312by the size of the desired target floating point data type: 32 bits of 5313it go in each @code{long int} array element. Each array element holds 531432 bits of the result, even if @code{long int} is wider than 32 bits 5315on the host machine. 5316 5317The array element values are designed so that you can print them out 5318using @code{fprintf} in the order they should appear in the target 5319machine's memory. 5320@end defmac 5321 5322@node Uninitialized Data 5323@subsection Output of Uninitialized Variables 5324 5325Each of the macros in this section is used to do the whole job of 5326outputting a single uninitialized variable. 5327 5328@defmac ASM_OUTPUT_COMMON (@var{stream}, @var{name}, @var{size}, @var{rounded}) 5329A C statement (sans semicolon) to output to the stdio stream 5330@var{stream} the assembler definition of a common-label named 5331@var{name} whose size is @var{size} bytes. The variable @var{rounded} 5332is the size rounded up to whatever alignment the caller wants. It is 5333possible that @var{size} may be zero, for instance if a struct with no 5334other member than a zero-length array is defined. In this case, the 5335backend must output a symbol definition that allocates at least one 5336byte, both so that the address of the resulting object does not compare 5337equal to any other, and because some object formats cannot even express 5338the concept of a zero-sized common symbol, as that is how they represent 5339an ordinary undefined external. 5340 5341Use the expression @code{assemble_name (@var{stream}, @var{name})} to 5342output the name itself; before and after that, output the additional 5343assembler syntax for defining the name, and a newline. 5344 5345This macro controls how the assembler definitions of uninitialized 5346common global variables are output. 5347@end defmac 5348 5349@defmac ASM_OUTPUT_ALIGNED_COMMON (@var{stream}, @var{name}, @var{size}, @var{alignment}) 5350Like @code{ASM_OUTPUT_COMMON} except takes the required alignment as a 5351separate, explicit argument. If you define this macro, it is used in 5352place of @code{ASM_OUTPUT_COMMON}, and gives you more flexibility in 5353handling the required alignment of the variable. The alignment is specified 5354as the number of bits. 5355@end defmac 5356 5357@defmac ASM_OUTPUT_ALIGNED_DECL_COMMON (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment}) 5358Like @code{ASM_OUTPUT_ALIGNED_COMMON} except that @var{decl} of the 5359variable to be output, if there is one, or @code{NULL_TREE} if there 5360is no corresponding variable. If you define this macro, GCC will use it 5361in place of both @code{ASM_OUTPUT_COMMON} and 5362@code{ASM_OUTPUT_ALIGNED_COMMON}. Define this macro when you need to see 5363the variable's decl in order to chose what to output. 5364@end defmac 5365 5366@defmac ASM_OUTPUT_ALIGNED_BSS (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment}) 5367A C statement (sans semicolon) to output to the stdio stream 5368@var{stream} the assembler definition of uninitialized global @var{decl} named 5369@var{name} whose size is @var{size} bytes. The variable @var{alignment} 5370is the alignment specified as the number of bits. 5371 5372Try to use function @code{asm_output_aligned_bss} defined in file 5373@file{varasm.c} when defining this macro. If unable, use the expression 5374@code{assemble_name (@var{stream}, @var{name})} to output the name itself; 5375before and after that, output the additional assembler syntax for defining 5376the name, and a newline. 5377 5378There are two ways of handling global BSS@. One is to define this macro. 5379The other is to have @code{TARGET_ASM_SELECT_SECTION} return a 5380switchable BSS section (@pxref{TARGET_HAVE_SWITCHABLE_BSS_SECTIONS}). 5381You do not need to do both. 5382 5383Some languages do not have @code{common} data, and require a 5384non-common form of global BSS in order to handle uninitialized globals 5385efficiently. C++ is one example of this. However, if the target does 5386not support global BSS, the front end may choose to make globals 5387common in order to save space in the object file. 5388@end defmac 5389 5390@defmac ASM_OUTPUT_LOCAL (@var{stream}, @var{name}, @var{size}, @var{rounded}) 5391A C statement (sans semicolon) to output to the stdio stream 5392@var{stream} the assembler definition of a local-common-label named 5393@var{name} whose size is @var{size} bytes. The variable @var{rounded} 5394is the size rounded up to whatever alignment the caller wants. 5395 5396Use the expression @code{assemble_name (@var{stream}, @var{name})} to 5397output the name itself; before and after that, output the additional 5398assembler syntax for defining the name, and a newline. 5399 5400This macro controls how the assembler definitions of uninitialized 5401static variables are output. 5402@end defmac 5403 5404@defmac ASM_OUTPUT_ALIGNED_LOCAL (@var{stream}, @var{name}, @var{size}, @var{alignment}) 5405Like @code{ASM_OUTPUT_LOCAL} except takes the required alignment as a 5406separate, explicit argument. If you define this macro, it is used in 5407place of @code{ASM_OUTPUT_LOCAL}, and gives you more flexibility in 5408handling the required alignment of the variable. The alignment is specified 5409as the number of bits. 5410@end defmac 5411 5412@defmac ASM_OUTPUT_ALIGNED_DECL_LOCAL (@var{stream}, @var{decl}, @var{name}, @var{size}, @var{alignment}) 5413Like @code{ASM_OUTPUT_ALIGNED_LOCAL} except that @var{decl} of the 5414variable to be output, if there is one, or @code{NULL_TREE} if there 5415is no corresponding variable. If you define this macro, GCC will use it 5416in place of both @code{ASM_OUTPUT_LOCAL} and 5417@code{ASM_OUTPUT_ALIGNED_LOCAL}. Define this macro when you need to see 5418the variable's decl in order to chose what to output. 5419@end defmac 5420 5421@node Label Output 5422@subsection Output and Generation of Labels 5423 5424@c prevent bad page break with this line 5425This is about outputting labels. 5426 5427@findex assemble_name 5428@defmac ASM_OUTPUT_LABEL (@var{stream}, @var{name}) 5429A C statement (sans semicolon) to output to the stdio stream 5430@var{stream} the assembler definition of a label named @var{name}. 5431Use the expression @code{assemble_name (@var{stream}, @var{name})} to 5432output the name itself; before and after that, output the additional 5433assembler syntax for defining the name, and a newline. A default 5434definition of this macro is provided which is correct for most systems. 5435@end defmac 5436 5437@defmac ASM_OUTPUT_FUNCTION_LABEL (@var{stream}, @var{name}, @var{decl}) 5438A C statement (sans semicolon) to output to the stdio stream 5439@var{stream} the assembler definition of a label named @var{name} of 5440a function. 5441Use the expression @code{assemble_name (@var{stream}, @var{name})} to 5442output the name itself; before and after that, output the additional 5443assembler syntax for defining the name, and a newline. A default 5444definition of this macro is provided which is correct for most systems. 5445 5446If this macro is not defined, then the function name is defined in the 5447usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}). 5448@end defmac 5449 5450@findex assemble_name_raw 5451@defmac ASM_OUTPUT_INTERNAL_LABEL (@var{stream}, @var{name}) 5452Identical to @code{ASM_OUTPUT_LABEL}, except that @var{name} is known 5453to refer to a compiler-generated label. The default definition uses 5454@code{assemble_name_raw}, which is like @code{assemble_name} except 5455that it is more efficient. 5456@end defmac 5457 5458@defmac SIZE_ASM_OP 5459A C string containing the appropriate assembler directive to specify the 5460size of a symbol, without any arguments. On systems that use ELF, the 5461default (in @file{config/elfos.h}) is @samp{"\t.size\t"}; on other 5462systems, the default is not to define this macro. 5463 5464Define this macro only if it is correct to use the default definitions 5465of @code{ASM_OUTPUT_SIZE_DIRECTIVE} and @code{ASM_OUTPUT_MEASURED_SIZE} 5466for your system. If you need your own custom definitions of those 5467macros, or if you do not need explicit symbol sizes at all, do not 5468define this macro. 5469@end defmac 5470 5471@defmac ASM_OUTPUT_SIZE_DIRECTIVE (@var{stream}, @var{name}, @var{size}) 5472A C statement (sans semicolon) to output to the stdio stream 5473@var{stream} a directive telling the assembler that the size of the 5474symbol @var{name} is @var{size}. @var{size} is a @code{HOST_WIDE_INT}. 5475If you define @code{SIZE_ASM_OP}, a default definition of this macro is 5476provided. 5477@end defmac 5478 5479@defmac ASM_OUTPUT_MEASURED_SIZE (@var{stream}, @var{name}) 5480A C statement (sans semicolon) to output to the stdio stream 5481@var{stream} a directive telling the assembler to calculate the size of 5482the symbol @var{name} by subtracting its address from the current 5483address. 5484 5485If you define @code{SIZE_ASM_OP}, a default definition of this macro is 5486provided. The default assumes that the assembler recognizes a special 5487@samp{.} symbol as referring to the current address, and can calculate 5488the difference between this and another symbol. If your assembler does 5489not recognize @samp{.} or cannot do calculations with it, you will need 5490to redefine @code{ASM_OUTPUT_MEASURED_SIZE} to use some other technique. 5491@end defmac 5492 5493@defmac NO_DOLLAR_IN_LABEL 5494Define this macro if the assembler does not accept the character 5495@samp{$} in label names. By default constructors and destructors in 5496G++ have @samp{$} in the identifiers. If this macro is defined, 5497@samp{.} is used instead. 5498@end defmac 5499 5500@defmac NO_DOT_IN_LABEL 5501Define this macro if the assembler does not accept the character 5502@samp{.} in label names. By default constructors and destructors in G++ 5503have names that use @samp{.}. If this macro is defined, these names 5504are rewritten to avoid @samp{.}. 5505@end defmac 5506 5507@defmac TYPE_ASM_OP 5508A C string containing the appropriate assembler directive to specify the 5509type of a symbol, without any arguments. On systems that use ELF, the 5510default (in @file{config/elfos.h}) is @samp{"\t.type\t"}; on other 5511systems, the default is not to define this macro. 5512 5513Define this macro only if it is correct to use the default definition of 5514@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own 5515custom definition of this macro, or if you do not need explicit symbol 5516types at all, do not define this macro. 5517@end defmac 5518 5519@defmac TYPE_OPERAND_FMT 5520A C string which specifies (using @code{printf} syntax) the format of 5521the second operand to @code{TYPE_ASM_OP}. On systems that use ELF, the 5522default (in @file{config/elfos.h}) is @samp{"@@%s"}; on other systems, 5523the default is not to define this macro. 5524 5525Define this macro only if it is correct to use the default definition of 5526@code{ASM_OUTPUT_TYPE_DIRECTIVE} for your system. If you need your own 5527custom definition of this macro, or if you do not need explicit symbol 5528types at all, do not define this macro. 5529@end defmac 5530 5531@defmac ASM_OUTPUT_TYPE_DIRECTIVE (@var{stream}, @var{type}) 5532A C statement (sans semicolon) to output to the stdio stream 5533@var{stream} a directive telling the assembler that the type of the 5534symbol @var{name} is @var{type}. @var{type} is a C string; currently, 5535that string is always either @samp{"function"} or @samp{"object"}, but 5536you should not count on this. 5537 5538If you define @code{TYPE_ASM_OP} and @code{TYPE_OPERAND_FMT}, a default 5539definition of this macro is provided. 5540@end defmac 5541 5542@defmac ASM_DECLARE_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl}) 5543A C statement (sans semicolon) to output to the stdio stream 5544@var{stream} any text necessary for declaring the name @var{name} of a 5545function which is being defined. This macro is responsible for 5546outputting the label definition (perhaps using 5547@code{ASM_OUTPUT_FUNCTION_LABEL}). The argument @var{decl} is the 5548@code{FUNCTION_DECL} tree node representing the function. 5549 5550If this macro is not defined, then the function name is defined in the 5551usual manner as a label (by means of @code{ASM_OUTPUT_FUNCTION_LABEL}). 5552 5553You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition 5554of this macro. 5555@end defmac 5556 5557@defmac ASM_DECLARE_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl}) 5558A C statement (sans semicolon) to output to the stdio stream 5559@var{stream} any text necessary for declaring the size of a function 5560which is being defined. The argument @var{name} is the name of the 5561function. The argument @var{decl} is the @code{FUNCTION_DECL} tree node 5562representing the function. 5563 5564If this macro is not defined, then the function size is not defined. 5565 5566You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition 5567of this macro. 5568@end defmac 5569 5570@defmac ASM_DECLARE_COLD_FUNCTION_NAME (@var{stream}, @var{name}, @var{decl}) 5571A C statement (sans semicolon) to output to the stdio stream 5572@var{stream} any text necessary for declaring the name @var{name} of a 5573cold function partition which is being defined. This macro is responsible 5574for outputting the label definition (perhaps using 5575@code{ASM_OUTPUT_FUNCTION_LABEL}). The argument @var{decl} is the 5576@code{FUNCTION_DECL} tree node representing the function. 5577 5578If this macro is not defined, then the cold partition name is defined in the 5579usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}). 5580 5581You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} in the definition 5582of this macro. 5583@end defmac 5584 5585@defmac ASM_DECLARE_COLD_FUNCTION_SIZE (@var{stream}, @var{name}, @var{decl}) 5586A C statement (sans semicolon) to output to the stdio stream 5587@var{stream} any text necessary for declaring the size of a cold function 5588partition which is being defined. The argument @var{name} is the name of the 5589cold partition of the function. The argument @var{decl} is the 5590@code{FUNCTION_DECL} tree node representing the function. 5591 5592If this macro is not defined, then the partition size is not defined. 5593 5594You may wish to use @code{ASM_OUTPUT_MEASURED_SIZE} in the definition 5595of this macro. 5596@end defmac 5597 5598@defmac ASM_DECLARE_OBJECT_NAME (@var{stream}, @var{name}, @var{decl}) 5599A C statement (sans semicolon) to output to the stdio stream 5600@var{stream} any text necessary for declaring the name @var{name} of an 5601initialized variable which is being defined. This macro must output the 5602label definition (perhaps using @code{ASM_OUTPUT_LABEL}). The argument 5603@var{decl} is the @code{VAR_DECL} tree node representing the variable. 5604 5605If this macro is not defined, then the variable name is defined in the 5606usual manner as a label (by means of @code{ASM_OUTPUT_LABEL}). 5607 5608You may wish to use @code{ASM_OUTPUT_TYPE_DIRECTIVE} and/or 5609@code{ASM_OUTPUT_SIZE_DIRECTIVE} in the definition of this macro. 5610@end defmac 5611 5612@hook TARGET_ASM_DECLARE_CONSTANT_NAME 5613 5614@defmac ASM_DECLARE_REGISTER_GLOBAL (@var{stream}, @var{decl}, @var{regno}, @var{name}) 5615A C statement (sans semicolon) to output to the stdio stream 5616@var{stream} any text necessary for claiming a register @var{regno} 5617for a global variable @var{decl} with name @var{name}. 5618 5619If you don't define this macro, that is equivalent to defining it to do 5620nothing. 5621@end defmac 5622 5623@defmac ASM_FINISH_DECLARE_OBJECT (@var{stream}, @var{decl}, @var{toplevel}, @var{atend}) 5624A C statement (sans semicolon) to finish up declaring a variable name 5625once the compiler has processed its initializer fully and thus has had a 5626chance to determine the size of an array when controlled by an 5627initializer. This is used on systems where it's necessary to declare 5628something about the size of the object. 5629 5630If you don't define this macro, that is equivalent to defining it to do 5631nothing. 5632 5633You may wish to use @code{ASM_OUTPUT_SIZE_DIRECTIVE} and/or 5634@code{ASM_OUTPUT_MEASURED_SIZE} in the definition of this macro. 5635@end defmac 5636 5637@hook TARGET_ASM_GLOBALIZE_LABEL 5638 5639@hook TARGET_ASM_GLOBALIZE_DECL_NAME 5640 5641@hook TARGET_ASM_ASSEMBLE_UNDEFINED_DECL 5642 5643@defmac ASM_WEAKEN_LABEL (@var{stream}, @var{name}) 5644A C statement (sans semicolon) to output to the stdio stream 5645@var{stream} some commands that will make the label @var{name} weak; 5646that is, available for reference from other files but only used if 5647no other definition is available. Use the expression 5648@code{assemble_name (@var{stream}, @var{name})} to output the name 5649itself; before and after that, output the additional assembler syntax 5650for making that name weak, and a newline. 5651 5652If you don't define this macro or @code{ASM_WEAKEN_DECL}, GCC will not 5653support weak symbols and you should not define the @code{SUPPORTS_WEAK} 5654macro. 5655@end defmac 5656 5657@defmac ASM_WEAKEN_DECL (@var{stream}, @var{decl}, @var{name}, @var{value}) 5658Combines (and replaces) the function of @code{ASM_WEAKEN_LABEL} and 5659@code{ASM_OUTPUT_WEAK_ALIAS}, allowing access to the associated function 5660or variable decl. If @var{value} is not @code{NULL}, this C statement 5661should output to the stdio stream @var{stream} assembler code which 5662defines (equates) the weak symbol @var{name} to have the value 5663@var{value}. If @var{value} is @code{NULL}, it should output commands 5664to make @var{name} weak. 5665@end defmac 5666 5667@defmac ASM_OUTPUT_WEAKREF (@var{stream}, @var{decl}, @var{name}, @var{value}) 5668Outputs a directive that enables @var{name} to be used to refer to 5669symbol @var{value} with weak-symbol semantics. @code{decl} is the 5670declaration of @code{name}. 5671@end defmac 5672 5673@defmac SUPPORTS_WEAK 5674A preprocessor constant expression which evaluates to true if the target 5675supports weak symbols. 5676 5677If you don't define this macro, @file{defaults.h} provides a default 5678definition. If either @code{ASM_WEAKEN_LABEL} or @code{ASM_WEAKEN_DECL} 5679is defined, the default definition is @samp{1}; otherwise, it is @samp{0}. 5680@end defmac 5681 5682@defmac TARGET_SUPPORTS_WEAK 5683A C expression which evaluates to true if the target supports weak symbols. 5684 5685If you don't define this macro, @file{defaults.h} provides a default 5686definition. The default definition is @samp{(SUPPORTS_WEAK)}. Define 5687this macro if you want to control weak symbol support with a compiler 5688flag such as @option{-melf}. 5689@end defmac 5690 5691@defmac MAKE_DECL_ONE_ONLY (@var{decl}) 5692A C statement (sans semicolon) to mark @var{decl} to be emitted as a 5693public symbol such that extra copies in multiple translation units will 5694be discarded by the linker. Define this macro if your object file 5695format provides support for this concept, such as the @samp{COMDAT} 5696section flags in the Microsoft Windows PE/COFF format, and this support 5697requires changes to @var{decl}, such as putting it in a separate section. 5698@end defmac 5699 5700@defmac SUPPORTS_ONE_ONLY 5701A C expression which evaluates to true if the target supports one-only 5702semantics. 5703 5704If you don't define this macro, @file{varasm.c} provides a default 5705definition. If @code{MAKE_DECL_ONE_ONLY} is defined, the default 5706definition is @samp{1}; otherwise, it is @samp{0}. Define this macro if 5707you want to control one-only symbol support with a compiler flag, or if 5708setting the @code{DECL_ONE_ONLY} flag is enough to mark a declaration to 5709be emitted as one-only. 5710@end defmac 5711 5712@hook TARGET_ASM_ASSEMBLE_VISIBILITY 5713 5714@defmac TARGET_WEAK_NOT_IN_ARCHIVE_TOC 5715A C expression that evaluates to true if the target's linker expects 5716that weak symbols do not appear in a static archive's table of contents. 5717The default is @code{0}. 5718 5719Leaving weak symbols out of an archive's table of contents means that, 5720if a symbol will only have a definition in one translation unit and 5721will have undefined references from other translation units, that 5722symbol should not be weak. Defining this macro to be nonzero will 5723thus have the effect that certain symbols that would normally be weak 5724(explicit template instantiations, and vtables for polymorphic classes 5725with noninline key methods) will instead be nonweak. 5726 5727The C++ ABI requires this macro to be zero. Define this macro for 5728targets where full C++ ABI compliance is impossible and where linker 5729restrictions require weak symbols to be left out of a static archive's 5730table of contents. 5731@end defmac 5732 5733@defmac ASM_OUTPUT_EXTERNAL (@var{stream}, @var{decl}, @var{name}) 5734A C statement (sans semicolon) to output to the stdio stream 5735@var{stream} any text necessary for declaring the name of an external 5736symbol named @var{name} which is referenced in this compilation but 5737not defined. The value of @var{decl} is the tree node for the 5738declaration. 5739 5740This macro need not be defined if it does not need to output anything. 5741The GNU assembler and most Unix assemblers don't require anything. 5742@end defmac 5743 5744@hook TARGET_ASM_EXTERNAL_LIBCALL 5745 5746@hook TARGET_ASM_MARK_DECL_PRESERVED 5747 5748@defmac ASM_OUTPUT_LABELREF (@var{stream}, @var{name}) 5749A C statement (sans semicolon) to output to the stdio stream 5750@var{stream} a reference in assembler syntax to a label named 5751@var{name}. This should add @samp{_} to the front of the name, if that 5752is customary on your operating system, as it is in most Berkeley Unix 5753systems. This macro is used in @code{assemble_name}. 5754@end defmac 5755 5756@hook TARGET_MANGLE_ASSEMBLER_NAME 5757 5758@defmac ASM_OUTPUT_SYMBOL_REF (@var{stream}, @var{sym}) 5759A C statement (sans semicolon) to output a reference to 5760@code{SYMBOL_REF} @var{sym}. If not defined, @code{assemble_name} 5761will be used to output the name of the symbol. This macro may be used 5762to modify the way a symbol is referenced depending on information 5763encoded by @code{TARGET_ENCODE_SECTION_INFO}. 5764@end defmac 5765 5766@defmac ASM_OUTPUT_LABEL_REF (@var{stream}, @var{buf}) 5767A C statement (sans semicolon) to output a reference to @var{buf}, the 5768result of @code{ASM_GENERATE_INTERNAL_LABEL}. If not defined, 5769@code{assemble_name} will be used to output the name of the symbol. 5770This macro is not used by @code{output_asm_label}, or the @code{%l} 5771specifier that calls it; the intention is that this macro should be set 5772when it is necessary to output a label differently when its address is 5773being taken. 5774@end defmac 5775 5776@hook TARGET_ASM_INTERNAL_LABEL 5777 5778@defmac ASM_OUTPUT_DEBUG_LABEL (@var{stream}, @var{prefix}, @var{num}) 5779A C statement to output to the stdio stream @var{stream} a debug info 5780label whose name is made from the string @var{prefix} and the number 5781@var{num}. This is useful for VLIW targets, where debug info labels 5782may need to be treated differently than branch target labels. On some 5783systems, branch target labels must be at the beginning of instruction 5784bundles, but debug info labels can occur in the middle of instruction 5785bundles. 5786 5787If this macro is not defined, then @code{(*targetm.asm_out.internal_label)} will be 5788used. 5789@end defmac 5790 5791@defmac ASM_GENERATE_INTERNAL_LABEL (@var{string}, @var{prefix}, @var{num}) 5792A C statement to store into the string @var{string} a label whose name 5793is made from the string @var{prefix} and the number @var{num}. 5794 5795This string, when output subsequently by @code{assemble_name}, should 5796produce the output that @code{(*targetm.asm_out.internal_label)} would produce 5797with the same @var{prefix} and @var{num}. 5798 5799If the string begins with @samp{*}, then @code{assemble_name} will 5800output the rest of the string unchanged. It is often convenient for 5801@code{ASM_GENERATE_INTERNAL_LABEL} to use @samp{*} in this way. If the 5802string doesn't start with @samp{*}, then @code{ASM_OUTPUT_LABELREF} gets 5803to output the string, and may change it. (Of course, 5804@code{ASM_OUTPUT_LABELREF} is also part of your machine description, so 5805you should know what it does on your machine.) 5806@end defmac 5807 5808@defmac ASM_FORMAT_PRIVATE_NAME (@var{outvar}, @var{name}, @var{number}) 5809A C expression to assign to @var{outvar} (which is a variable of type 5810@code{char *}) a newly allocated string made from the string 5811@var{name} and the number @var{number}, with some suitable punctuation 5812added. Use @code{alloca} to get space for the string. 5813 5814The string will be used as an argument to @code{ASM_OUTPUT_LABELREF} to 5815produce an assembler label for an internal static variable whose name is 5816@var{name}. Therefore, the string must be such as to result in valid 5817assembler code. The argument @var{number} is different each time this 5818macro is executed; it prevents conflicts between similarly-named 5819internal static variables in different scopes. 5820 5821Ideally this string should not be a valid C identifier, to prevent any 5822conflict with the user's own symbols. Most assemblers allow periods 5823or percent signs in assembler symbols; putting at least one of these 5824between the name and the number will suffice. 5825 5826If this macro is not defined, a default definition will be provided 5827which is correct for most systems. 5828@end defmac 5829 5830@defmac ASM_OUTPUT_DEF (@var{stream}, @var{name}, @var{value}) 5831A C statement to output to the stdio stream @var{stream} assembler code 5832which defines (equates) the symbol @var{name} to have the value @var{value}. 5833 5834@findex SET_ASM_OP 5835If @code{SET_ASM_OP} is defined, a default definition is provided which is 5836correct for most systems. 5837@end defmac 5838 5839@defmac ASM_OUTPUT_DEF_FROM_DECLS (@var{stream}, @var{decl_of_name}, @var{decl_of_value}) 5840A C statement to output to the stdio stream @var{stream} assembler code 5841which defines (equates) the symbol whose tree node is @var{decl_of_name} 5842to have the value of the tree node @var{decl_of_value}. This macro will 5843be used in preference to @samp{ASM_OUTPUT_DEF} if it is defined and if 5844the tree nodes are available. 5845 5846@findex SET_ASM_OP 5847If @code{SET_ASM_OP} is defined, a default definition is provided which is 5848correct for most systems. 5849@end defmac 5850 5851@defmac TARGET_DEFERRED_OUTPUT_DEFS (@var{decl_of_name}, @var{decl_of_value}) 5852A C statement that evaluates to true if the assembler code which defines 5853(equates) the symbol whose tree node is @var{decl_of_name} to have the value 5854of the tree node @var{decl_of_value} should be emitted near the end of the 5855current compilation unit. The default is to not defer output of defines. 5856This macro affects defines output by @samp{ASM_OUTPUT_DEF} and 5857@samp{ASM_OUTPUT_DEF_FROM_DECLS}. 5858@end defmac 5859 5860@defmac ASM_OUTPUT_WEAK_ALIAS (@var{stream}, @var{name}, @var{value}) 5861A C statement to output to the stdio stream @var{stream} assembler code 5862which defines (equates) the weak symbol @var{name} to have the value 5863@var{value}. If @var{value} is @code{NULL}, it defines @var{name} as 5864an undefined weak symbol. 5865 5866Define this macro if the target only supports weak aliases; define 5867@code{ASM_OUTPUT_DEF} instead if possible. 5868@end defmac 5869 5870@defmac OBJC_GEN_METHOD_LABEL (@var{buf}, @var{is_inst}, @var{class_name}, @var{cat_name}, @var{sel_name}) 5871Define this macro to override the default assembler names used for 5872Objective-C methods. 5873 5874The default name is a unique method number followed by the name of the 5875class (e.g.@: @samp{_1_Foo}). For methods in categories, the name of 5876the category is also included in the assembler name (e.g.@: 5877@samp{_1_Foo_Bar}). 5878 5879These names are safe on most systems, but make debugging difficult since 5880the method's selector is not present in the name. Therefore, particular 5881systems define other ways of computing names. 5882 5883@var{buf} is an expression of type @code{char *} which gives you a 5884buffer in which to store the name; its length is as long as 5885@var{class_name}, @var{cat_name} and @var{sel_name} put together, plus 588650 characters extra. 5887 5888The argument @var{is_inst} specifies whether the method is an instance 5889method or a class method; @var{class_name} is the name of the class; 5890@var{cat_name} is the name of the category (or @code{NULL} if the method is not 5891in a category); and @var{sel_name} is the name of the selector. 5892 5893On systems where the assembler can handle quoted names, you can use this 5894macro to provide more human-readable names. 5895@end defmac 5896 5897@node Initialization 5898@subsection How Initialization Functions Are Handled 5899@cindex initialization routines 5900@cindex termination routines 5901@cindex constructors, output of 5902@cindex destructors, output of 5903 5904The compiled code for certain languages includes @dfn{constructors} 5905(also called @dfn{initialization routines})---functions to initialize 5906data in the program when the program is started. These functions need 5907to be called before the program is ``started''---that is to say, before 5908@code{main} is called. 5909 5910Compiling some languages generates @dfn{destructors} (also called 5911@dfn{termination routines}) that should be called when the program 5912terminates. 5913 5914To make the initialization and termination functions work, the compiler 5915must output something in the assembler code to cause those functions to 5916be called at the appropriate time. When you port the compiler to a new 5917system, you need to specify how to do this. 5918 5919There are two major ways that GCC currently supports the execution of 5920initialization and termination functions. Each way has two variants. 5921Much of the structure is common to all four variations. 5922 5923@findex __CTOR_LIST__ 5924@findex __DTOR_LIST__ 5925The linker must build two lists of these functions---a list of 5926initialization functions, called @code{__CTOR_LIST__}, and a list of 5927termination functions, called @code{__DTOR_LIST__}. 5928 5929Each list always begins with an ignored function pointer (which may hold 59300, @minus{}1, or a count of the function pointers after it, depending on 5931the environment). This is followed by a series of zero or more function 5932pointers to constructors (or destructors), followed by a function 5933pointer containing zero. 5934 5935Depending on the operating system and its executable file format, either 5936@file{crtstuff.c} or @file{libgcc2.c} traverses these lists at startup 5937time and exit time. Constructors are called in reverse order of the 5938list; destructors in forward order. 5939 5940The best way to handle static constructors works only for object file 5941formats which provide arbitrarily-named sections. A section is set 5942aside for a list of constructors, and another for a list of destructors. 5943Traditionally these are called @samp{.ctors} and @samp{.dtors}. Each 5944object file that defines an initialization function also puts a word in 5945the constructor section to point to that function. The linker 5946accumulates all these words into one contiguous @samp{.ctors} section. 5947Termination functions are handled similarly. 5948 5949This method will be chosen as the default by @file{target-def.h} if 5950@code{TARGET_ASM_NAMED_SECTION} is defined. A target that does not 5951support arbitrary sections, but does support special designated 5952constructor and destructor sections may define @code{CTORS_SECTION_ASM_OP} 5953and @code{DTORS_SECTION_ASM_OP} to achieve the same effect. 5954 5955When arbitrary sections are available, there are two variants, depending 5956upon how the code in @file{crtstuff.c} is called. On systems that 5957support a @dfn{.init} section which is executed at program startup, 5958parts of @file{crtstuff.c} are compiled into that section. The 5959program is linked by the @command{gcc} driver like this: 5960 5961@smallexample 5962ld -o @var{output_file} crti.o crtbegin.o @dots{} -lgcc crtend.o crtn.o 5963@end smallexample 5964 5965The prologue of a function (@code{__init}) appears in the @code{.init} 5966section of @file{crti.o}; the epilogue appears in @file{crtn.o}. Likewise 5967for the function @code{__fini} in the @dfn{.fini} section. Normally these 5968files are provided by the operating system or by the GNU C library, but 5969are provided by GCC for a few targets. 5970 5971The objects @file{crtbegin.o} and @file{crtend.o} are (for most targets) 5972compiled from @file{crtstuff.c}. They contain, among other things, code 5973fragments within the @code{.init} and @code{.fini} sections that branch 5974to routines in the @code{.text} section. The linker will pull all parts 5975of a section together, which results in a complete @code{__init} function 5976that invokes the routines we need at startup. 5977 5978To use this variant, you must define the @code{INIT_SECTION_ASM_OP} 5979macro properly. 5980 5981If no init section is available, when GCC compiles any function called 5982@code{main} (or more accurately, any function designated as a program 5983entry point by the language front end calling @code{expand_main_function}), 5984it inserts a procedure call to @code{__main} as the first executable code 5985after the function prologue. The @code{__main} function is defined 5986in @file{libgcc2.c} and runs the global constructors. 5987 5988In file formats that don't support arbitrary sections, there are again 5989two variants. In the simplest variant, the GNU linker (GNU @code{ld}) 5990and an `a.out' format must be used. In this case, 5991@code{TARGET_ASM_CONSTRUCTOR} is defined to produce a @code{.stabs} 5992entry of type @samp{N_SETT}, referencing the name @code{__CTOR_LIST__}, 5993and with the address of the void function containing the initialization 5994code as its value. The GNU linker recognizes this as a request to add 5995the value to a @dfn{set}; the values are accumulated, and are eventually 5996placed in the executable as a vector in the format described above, with 5997a leading (ignored) count and a trailing zero element. 5998@code{TARGET_ASM_DESTRUCTOR} is handled similarly. Since no init 5999section is available, the absence of @code{INIT_SECTION_ASM_OP} causes 6000the compilation of @code{main} to call @code{__main} as above, starting 6001the initialization process. 6002 6003The last variant uses neither arbitrary sections nor the GNU linker. 6004This is preferable when you want to do dynamic linking and when using 6005file formats which the GNU linker does not support, such as `ECOFF'@. In 6006this case, @code{TARGET_HAVE_CTORS_DTORS} is false, initialization and 6007termination functions are recognized simply by their names. This requires 6008an extra program in the linkage step, called @command{collect2}. This program 6009pretends to be the linker, for use with GCC; it does its job by running 6010the ordinary linker, but also arranges to include the vectors of 6011initialization and termination functions. These functions are called 6012via @code{__main} as described above. In order to use this method, 6013@code{use_collect2} must be defined in the target in @file{config.gcc}. 6014 6015@ifinfo 6016The following section describes the specific macros that control and 6017customize the handling of initialization and termination functions. 6018@end ifinfo 6019 6020@node Macros for Initialization 6021@subsection Macros Controlling Initialization Routines 6022 6023Here are the macros that control how the compiler handles initialization 6024and termination functions: 6025 6026@defmac INIT_SECTION_ASM_OP 6027If defined, a C string constant, including spacing, for the assembler 6028operation to identify the following data as initialization code. If not 6029defined, GCC will assume such a section does not exist. When you are 6030using special sections for initialization and termination functions, this 6031macro also controls how @file{crtstuff.c} and @file{libgcc2.c} arrange to 6032run the initialization functions. 6033@end defmac 6034 6035@defmac HAS_INIT_SECTION 6036If defined, @code{main} will not call @code{__main} as described above. 6037This macro should be defined for systems that control start-up code 6038on a symbol-by-symbol basis, such as OSF/1, and should not 6039be defined explicitly for systems that support @code{INIT_SECTION_ASM_OP}. 6040@end defmac 6041 6042@defmac LD_INIT_SWITCH 6043If defined, a C string constant for a switch that tells the linker that 6044the following symbol is an initialization routine. 6045@end defmac 6046 6047@defmac LD_FINI_SWITCH 6048If defined, a C string constant for a switch that tells the linker that 6049the following symbol is a finalization routine. 6050@end defmac 6051 6052@defmac COLLECT_SHARED_INIT_FUNC (@var{stream}, @var{func}) 6053If defined, a C statement that will write a function that can be 6054automatically called when a shared library is loaded. The function 6055should call @var{func}, which takes no arguments. If not defined, and 6056the object format requires an explicit initialization function, then a 6057function called @code{_GLOBAL__DI} will be generated. 6058 6059This function and the following one are used by collect2 when linking a 6060shared library that needs constructors or destructors, or has DWARF2 6061exception tables embedded in the code. 6062@end defmac 6063 6064@defmac COLLECT_SHARED_FINI_FUNC (@var{stream}, @var{func}) 6065If defined, a C statement that will write a function that can be 6066automatically called when a shared library is unloaded. The function 6067should call @var{func}, which takes no arguments. If not defined, and 6068the object format requires an explicit finalization function, then a 6069function called @code{_GLOBAL__DD} will be generated. 6070@end defmac 6071 6072@defmac INVOKE__main 6073If defined, @code{main} will call @code{__main} despite the presence of 6074@code{INIT_SECTION_ASM_OP}. This macro should be defined for systems 6075where the init section is not actually run automatically, but is still 6076useful for collecting the lists of constructors and destructors. 6077@end defmac 6078 6079@defmac SUPPORTS_INIT_PRIORITY 6080If nonzero, the C++ @code{init_priority} attribute is supported and the 6081compiler should emit instructions to control the order of initialization 6082of objects. If zero, the compiler will issue an error message upon 6083encountering an @code{init_priority} attribute. 6084@end defmac 6085 6086@hook TARGET_HAVE_CTORS_DTORS 6087 6088@hook TARGET_ASM_CONSTRUCTOR 6089 6090@hook TARGET_ASM_DESTRUCTOR 6091 6092If @code{TARGET_HAVE_CTORS_DTORS} is true, the initialization routine 6093generated for the generated object file will have static linkage. 6094 6095If your system uses @command{collect2} as the means of processing 6096constructors, then that program normally uses @command{nm} to scan 6097an object file for constructor functions to be called. 6098 6099On certain kinds of systems, you can define this macro to make 6100@command{collect2} work faster (and, in some cases, make it work at all): 6101 6102@defmac OBJECT_FORMAT_COFF 6103Define this macro if the system uses COFF (Common Object File Format) 6104object files, so that @command{collect2} can assume this format and scan 6105object files directly for dynamic constructor/destructor functions. 6106 6107This macro is effective only in a native compiler; @command{collect2} as 6108part of a cross compiler always uses @command{nm} for the target machine. 6109@end defmac 6110 6111@defmac REAL_NM_FILE_NAME 6112Define this macro as a C string constant containing the file name to use 6113to execute @command{nm}. The default is to search the path normally for 6114@command{nm}. 6115@end defmac 6116 6117@defmac NM_FLAGS 6118@command{collect2} calls @command{nm} to scan object files for static 6119constructors and destructors and LTO info. By default, @option{-n} is 6120passed. Define @code{NM_FLAGS} to a C string constant if other options 6121are needed to get the same output format as GNU @command{nm -n} 6122produces. 6123@end defmac 6124 6125If your system supports shared libraries and has a program to list the 6126dynamic dependencies of a given library or executable, you can define 6127these macros to enable support for running initialization and 6128termination functions in shared libraries: 6129 6130@defmac LDD_SUFFIX 6131Define this macro to a C string constant containing the name of the program 6132which lists dynamic dependencies, like @command{ldd} under SunOS 4. 6133@end defmac 6134 6135@defmac PARSE_LDD_OUTPUT (@var{ptr}) 6136Define this macro to be C code that extracts filenames from the output 6137of the program denoted by @code{LDD_SUFFIX}. @var{ptr} is a variable 6138of type @code{char *} that points to the beginning of a line of output 6139from @code{LDD_SUFFIX}. If the line lists a dynamic dependency, the 6140code must advance @var{ptr} to the beginning of the filename on that 6141line. Otherwise, it must set @var{ptr} to @code{NULL}. 6142@end defmac 6143 6144@defmac SHLIB_SUFFIX 6145Define this macro to a C string constant containing the default shared 6146library extension of the target (e.g., @samp{".so"}). @command{collect2} 6147strips version information after this suffix when generating global 6148constructor and destructor names. This define is only needed on targets 6149that use @command{collect2} to process constructors and destructors. 6150@end defmac 6151 6152@node Instruction Output 6153@subsection Output of Assembler Instructions 6154 6155@c prevent bad page break with this line 6156This describes assembler instruction output. 6157 6158@defmac REGISTER_NAMES 6159A C initializer containing the assembler's names for the machine 6160registers, each one as a C string constant. This is what translates 6161register numbers in the compiler into assembler language. 6162@end defmac 6163 6164@defmac ADDITIONAL_REGISTER_NAMES 6165If defined, a C initializer for an array of structures containing a name 6166and a register number. This macro defines additional names for hard 6167registers, thus allowing the @code{asm} option in declarations to refer 6168to registers using alternate names. 6169@end defmac 6170 6171@defmac OVERLAPPING_REGISTER_NAMES 6172If defined, a C initializer for an array of structures containing a 6173name, a register number and a count of the number of consecutive 6174machine registers the name overlaps. This macro defines additional 6175names for hard registers, thus allowing the @code{asm} option in 6176declarations to refer to registers using alternate names. Unlike 6177@code{ADDITIONAL_REGISTER_NAMES}, this macro should be used when the 6178register name implies multiple underlying registers. 6179 6180This macro should be used when it is important that a clobber in an 6181@code{asm} statement clobbers all the underlying values implied by the 6182register name. For example, on ARM, clobbering the double-precision 6183VFP register ``d0'' implies clobbering both single-precision registers 6184``s0'' and ``s1''. 6185@end defmac 6186 6187@defmac ASM_OUTPUT_OPCODE (@var{stream}, @var{ptr}) 6188Define this macro if you are using an unusual assembler that 6189requires different names for the machine instructions. 6190 6191The definition is a C statement or statements which output an 6192assembler instruction opcode to the stdio stream @var{stream}. The 6193macro-operand @var{ptr} is a variable of type @code{char *} which 6194points to the opcode name in its ``internal'' form---the form that is 6195written in the machine description. The definition should output the 6196opcode name to @var{stream}, performing any translation you desire, and 6197increment the variable @var{ptr} to point at the end of the opcode 6198so that it will not be output twice. 6199 6200In fact, your macro definition may process less than the entire opcode 6201name, or more than the opcode name; but if you want to process text 6202that includes @samp{%}-sequences to substitute operands, you must take 6203care of the substitution yourself. Just be sure to increment 6204@var{ptr} over whatever text should not be output normally. 6205 6206@findex recog_data.operand 6207If you need to look at the operand values, they can be found as the 6208elements of @code{recog_data.operand}. 6209 6210If the macro definition does nothing, the instruction is output 6211in the usual way. 6212@end defmac 6213 6214@defmac FINAL_PRESCAN_INSN (@var{insn}, @var{opvec}, @var{noperands}) 6215If defined, a C statement to be executed just prior to the output of 6216assembler code for @var{insn}, to modify the extracted operands so 6217they will be output differently. 6218 6219Here the argument @var{opvec} is the vector containing the operands 6220extracted from @var{insn}, and @var{noperands} is the number of 6221elements of the vector which contain meaningful data for this insn. 6222The contents of this vector are what will be used to convert the insn 6223template into assembler code, so you can change the assembler output 6224by changing the contents of the vector. 6225 6226This macro is useful when various assembler syntaxes share a single 6227file of instruction patterns; by defining this macro differently, you 6228can cause a large class of instructions to be output differently (such 6229as with rearranged operands). Naturally, variations in assembler 6230syntax affecting individual insn patterns ought to be handled by 6231writing conditional output routines in those patterns. 6232 6233If this macro is not defined, it is equivalent to a null statement. 6234@end defmac 6235 6236@hook TARGET_ASM_FINAL_POSTSCAN_INSN 6237 6238@defmac PRINT_OPERAND (@var{stream}, @var{x}, @var{code}) 6239A C compound statement to output to stdio stream @var{stream} the 6240assembler syntax for an instruction operand @var{x}. @var{x} is an 6241RTL expression. 6242 6243@var{code} is a value that can be used to specify one of several ways 6244of printing the operand. It is used when identical operands must be 6245printed differently depending on the context. @var{code} comes from 6246the @samp{%} specification that was used to request printing of the 6247operand. If the specification was just @samp{%@var{digit}} then 6248@var{code} is 0; if the specification was @samp{%@var{ltr} 6249@var{digit}} then @var{code} is the ASCII code for @var{ltr}. 6250 6251@findex reg_names 6252If @var{x} is a register, this macro should print the register's name. 6253The names can be found in an array @code{reg_names} whose type is 6254@code{char *[]}. @code{reg_names} is initialized from 6255@code{REGISTER_NAMES}. 6256 6257When the machine description has a specification @samp{%@var{punct}} 6258(a @samp{%} followed by a punctuation character), this macro is called 6259with a null pointer for @var{x} and the punctuation character for 6260@var{code}. 6261@end defmac 6262 6263@defmac PRINT_OPERAND_PUNCT_VALID_P (@var{code}) 6264A C expression which evaluates to true if @var{code} is a valid 6265punctuation character for use in the @code{PRINT_OPERAND} macro. If 6266@code{PRINT_OPERAND_PUNCT_VALID_P} is not defined, it means that no 6267punctuation characters (except for the standard one, @samp{%}) are used 6268in this way. 6269@end defmac 6270 6271@defmac PRINT_OPERAND_ADDRESS (@var{stream}, @var{x}) 6272A C compound statement to output to stdio stream @var{stream} the 6273assembler syntax for an instruction operand that is a memory reference 6274whose address is @var{x}. @var{x} is an RTL expression. 6275 6276@cindex @code{TARGET_ENCODE_SECTION_INFO} usage 6277On some machines, the syntax for a symbolic address depends on the 6278section that the address refers to. On these machines, define the hook 6279@code{TARGET_ENCODE_SECTION_INFO} to store the information into the 6280@code{symbol_ref}, and then check for it here. @xref{Assembler 6281Format}. 6282@end defmac 6283 6284@findex dbr_sequence_length 6285@defmac DBR_OUTPUT_SEQEND (@var{file}) 6286A C statement, to be executed after all slot-filler instructions have 6287been output. If necessary, call @code{dbr_sequence_length} to 6288determine the number of slots filled in a sequence (zero if not 6289currently outputting a sequence), to decide how many no-ops to output, 6290or whatever. 6291 6292Don't define this macro if it has nothing to do, but it is helpful in 6293reading assembly output if the extent of the delay sequence is made 6294explicit (e.g.@: with white space). 6295@end defmac 6296 6297@findex final_sequence 6298Note that output routines for instructions with delay slots must be 6299prepared to deal with not being output as part of a sequence 6300(i.e.@: when the scheduling pass is not run, or when no slot fillers could be 6301found.) The variable @code{final_sequence} is null when not 6302processing a sequence, otherwise it contains the @code{sequence} rtx 6303being output. 6304 6305@findex asm_fprintf 6306@defmac REGISTER_PREFIX 6307@defmacx LOCAL_LABEL_PREFIX 6308@defmacx USER_LABEL_PREFIX 6309@defmacx IMMEDIATE_PREFIX 6310If defined, C string expressions to be used for the @samp{%R}, @samp{%L}, 6311@samp{%U}, and @samp{%I} options of @code{asm_fprintf} (see 6312@file{final.c}). These are useful when a single @file{md} file must 6313support multiple assembler formats. In that case, the various @file{tm.h} 6314files can define these macros differently. 6315@end defmac 6316 6317@defmac ASM_FPRINTF_EXTENSIONS (@var{file}, @var{argptr}, @var{format}) 6318If defined this macro should expand to a series of @code{case} 6319statements which will be parsed inside the @code{switch} statement of 6320the @code{asm_fprintf} function. This allows targets to define extra 6321printf formats which may useful when generating their assembler 6322statements. Note that uppercase letters are reserved for future 6323generic extensions to asm_fprintf, and so are not available to target 6324specific code. The output file is given by the parameter @var{file}. 6325The varargs input pointer is @var{argptr} and the rest of the format 6326string, starting the character after the one that is being switched 6327upon, is pointed to by @var{format}. 6328@end defmac 6329 6330@defmac ASSEMBLER_DIALECT 6331If your target supports multiple dialects of assembler language (such as 6332different opcodes), define this macro as a C expression that gives the 6333numeric index of the assembler language dialect to use, with zero as the 6334first variant. 6335 6336If this macro is defined, you may use constructs of the form 6337@smallexample 6338@samp{@{option0|option1|option2@dots{}@}} 6339@end smallexample 6340@noindent 6341in the output templates of patterns (@pxref{Output Template}) or in the 6342first argument of @code{asm_fprintf}. This construct outputs 6343@samp{option0}, @samp{option1}, @samp{option2}, etc., if the value of 6344@code{ASSEMBLER_DIALECT} is zero, one, two, etc. Any special characters 6345within these strings retain their usual meaning. If there are fewer 6346alternatives within the braces than the value of 6347@code{ASSEMBLER_DIALECT}, the construct outputs nothing. If it's needed 6348to print curly braces or @samp{|} character in assembler output directly, 6349@samp{%@{}, @samp{%@}} and @samp{%|} can be used. 6350 6351If you do not define this macro, the characters @samp{@{}, @samp{|} and 6352@samp{@}} do not have any special meaning when used in templates or 6353operands to @code{asm_fprintf}. 6354 6355Define the macros @code{REGISTER_PREFIX}, @code{LOCAL_LABEL_PREFIX}, 6356@code{USER_LABEL_PREFIX} and @code{IMMEDIATE_PREFIX} if you can express 6357the variations in assembler language syntax with that mechanism. Define 6358@code{ASSEMBLER_DIALECT} and use the @samp{@{option0|option1@}} syntax 6359if the syntax variant are larger and involve such things as different 6360opcodes or operand order. 6361@end defmac 6362 6363@defmac ASM_OUTPUT_REG_PUSH (@var{stream}, @var{regno}) 6364A C expression to output to @var{stream} some assembler code 6365which will push hard register number @var{regno} onto the stack. 6366The code need not be optimal, since this macro is used only when 6367profiling. 6368@end defmac 6369 6370@defmac ASM_OUTPUT_REG_POP (@var{stream}, @var{regno}) 6371A C expression to output to @var{stream} some assembler code 6372which will pop hard register number @var{regno} off of the stack. 6373The code need not be optimal, since this macro is used only when 6374profiling. 6375@end defmac 6376 6377@node Dispatch Tables 6378@subsection Output of Dispatch Tables 6379 6380@c prevent bad page break with this line 6381This concerns dispatch tables. 6382 6383@cindex dispatch table 6384@defmac ASM_OUTPUT_ADDR_DIFF_ELT (@var{stream}, @var{body}, @var{value}, @var{rel}) 6385A C statement to output to the stdio stream @var{stream} an assembler 6386pseudo-instruction to generate a difference between two labels. 6387@var{value} and @var{rel} are the numbers of two internal labels. The 6388definitions of these labels are output using 6389@code{(*targetm.asm_out.internal_label)}, and they must be printed in the same 6390way here. For example, 6391 6392@smallexample 6393fprintf (@var{stream}, "\t.word L%d-L%d\n", 6394 @var{value}, @var{rel}) 6395@end smallexample 6396 6397You must provide this macro on machines where the addresses in a 6398dispatch table are relative to the table's own address. If defined, GCC 6399will also use this macro on all machines when producing PIC@. 6400@var{body} is the body of the @code{ADDR_DIFF_VEC}; it is provided so that the 6401mode and flags can be read. 6402@end defmac 6403 6404@defmac ASM_OUTPUT_ADDR_VEC_ELT (@var{stream}, @var{value}) 6405This macro should be provided on machines where the addresses 6406in a dispatch table are absolute. 6407 6408The definition should be a C statement to output to the stdio stream 6409@var{stream} an assembler pseudo-instruction to generate a reference to 6410a label. @var{value} is the number of an internal label whose 6411definition is output using @code{(*targetm.asm_out.internal_label)}. 6412For example, 6413 6414@smallexample 6415fprintf (@var{stream}, "\t.word L%d\n", @var{value}) 6416@end smallexample 6417@end defmac 6418 6419@defmac ASM_OUTPUT_CASE_LABEL (@var{stream}, @var{prefix}, @var{num}, @var{table}) 6420Define this if the label before a jump-table needs to be output 6421specially. The first three arguments are the same as for 6422@code{(*targetm.asm_out.internal_label)}; the fourth argument is the 6423jump-table which follows (a @code{jump_table_data} containing an 6424@code{addr_vec} or @code{addr_diff_vec}). 6425 6426This feature is used on system V to output a @code{swbeg} statement 6427for the table. 6428 6429If this macro is not defined, these labels are output with 6430@code{(*targetm.asm_out.internal_label)}. 6431@end defmac 6432 6433@defmac ASM_OUTPUT_CASE_END (@var{stream}, @var{num}, @var{table}) 6434Define this if something special must be output at the end of a 6435jump-table. The definition should be a C statement to be executed 6436after the assembler code for the table is written. It should write 6437the appropriate code to stdio stream @var{stream}. The argument 6438@var{table} is the jump-table insn, and @var{num} is the label-number 6439of the preceding label. 6440 6441If this macro is not defined, nothing special is output at the end of 6442the jump-table. 6443@end defmac 6444 6445@hook TARGET_ASM_POST_CFI_STARTPROC 6446 6447@hook TARGET_ASM_EMIT_UNWIND_LABEL 6448 6449@hook TARGET_ASM_EMIT_EXCEPT_TABLE_LABEL 6450 6451@hook TARGET_ASM_EMIT_EXCEPT_PERSONALITY 6452 6453@hook TARGET_ASM_UNWIND_EMIT 6454 6455@hook TARGET_ASM_UNWIND_EMIT_BEFORE_INSN 6456 6457@hook TARGET_ASM_SHOULD_RESTORE_CFA_STATE 6458 6459@node Exception Region Output 6460@subsection Assembler Commands for Exception Regions 6461 6462@c prevent bad page break with this line 6463 6464This describes commands marking the start and the end of an exception 6465region. 6466 6467@defmac EH_FRAME_SECTION_NAME 6468If defined, a C string constant for the name of the section containing 6469exception handling frame unwind information. If not defined, GCC will 6470provide a default definition if the target supports named sections. 6471@file{crtstuff.c} uses this macro to switch to the appropriate section. 6472 6473You should define this symbol if your target supports DWARF 2 frame 6474unwind information and the default definition does not work. 6475@end defmac 6476 6477@defmac EH_FRAME_THROUGH_COLLECT2 6478If defined, DWARF 2 frame unwind information will identified by 6479specially named labels. The collect2 process will locate these 6480labels and generate code to register the frames. 6481 6482This might be necessary, for instance, if the system linker will not 6483place the eh_frames in-between the sentinals from @file{crtstuff.c}, 6484or if the system linker does garbage collection and sections cannot 6485be marked as not to be collected. 6486@end defmac 6487 6488@defmac EH_TABLES_CAN_BE_READ_ONLY 6489Define this macro to 1 if your target is such that no frame unwind 6490information encoding used with non-PIC code will ever require a 6491runtime relocation, but the linker may not support merging read-only 6492and read-write sections into a single read-write section. 6493@end defmac 6494 6495@defmac MASK_RETURN_ADDR 6496An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so 6497that it does not contain any extraneous set bits in it. 6498@end defmac 6499 6500@defmac DWARF2_UNWIND_INFO 6501Define this macro to 0 if your target supports DWARF 2 frame unwind 6502information, but it does not yet work with exception handling. 6503Otherwise, if your target supports this information (if it defines 6504@code{INCOMING_RETURN_ADDR_RTX} and @code{OBJECT_FORMAT_ELF}), 6505GCC will provide a default definition of 1. 6506@end defmac 6507 6508@hook TARGET_EXCEPT_UNWIND_INFO 6509This hook defines the mechanism that will be used for exception handling 6510by the target. If the target has ABI specified unwind tables, the hook 6511should return @code{UI_TARGET}. If the target is to use the 6512@code{setjmp}/@code{longjmp}-based exception handling scheme, the hook 6513should return @code{UI_SJLJ}. If the target supports DWARF 2 frame unwind 6514information, the hook should return @code{UI_DWARF2}. 6515 6516A target may, if exceptions are disabled, choose to return @code{UI_NONE}. 6517This may end up simplifying other parts of target-specific code. The 6518default implementation of this hook never returns @code{UI_NONE}. 6519 6520Note that the value returned by this hook should be constant. It should 6521not depend on anything except the command-line switches described by 6522@var{opts}. In particular, the 6523setting @code{UI_SJLJ} must be fixed at compiler start-up as C pre-processor 6524macros and builtin functions related to exception handling are set up 6525depending on this setting. 6526 6527The default implementation of the hook first honors the 6528@option{--enable-sjlj-exceptions} configure option, then 6529@code{DWARF2_UNWIND_INFO}, and finally defaults to @code{UI_SJLJ}. If 6530@code{DWARF2_UNWIND_INFO} depends on command-line options, the target 6531must define this hook so that @var{opts} is used correctly. 6532@end deftypefn 6533 6534@hook TARGET_UNWIND_TABLES_DEFAULT 6535This variable should be set to @code{true} if the target ABI requires unwinding 6536tables even when exceptions are not used. It must not be modified by 6537command-line option processing. 6538@end deftypevr 6539 6540@defmac DONT_USE_BUILTIN_SETJMP 6541Define this macro to 1 if the @code{setjmp}/@code{longjmp}-based scheme 6542should use the @code{setjmp}/@code{longjmp} functions from the C library 6543instead of the @code{__builtin_setjmp}/@code{__builtin_longjmp} machinery. 6544@end defmac 6545 6546@defmac JMP_BUF_SIZE 6547This macro has no effect unless @code{DONT_USE_BUILTIN_SETJMP} is also 6548defined. Define this macro if the default size of @code{jmp_buf} buffer 6549for the @code{setjmp}/@code{longjmp}-based exception handling mechanism 6550is not large enough, or if it is much too large. 6551The default size is @code{FIRST_PSEUDO_REGISTER * sizeof(void *)}. 6552@end defmac 6553 6554@defmac DWARF_CIE_DATA_ALIGNMENT 6555This macro need only be defined if the target might save registers in the 6556function prologue at an offset to the stack pointer that is not aligned to 6557@code{UNITS_PER_WORD}. The definition should be the negative minimum 6558alignment if @code{STACK_GROWS_DOWNWARD} is true, and the positive 6559minimum alignment otherwise. @xref{DWARF}. Only applicable if 6560the target supports DWARF 2 frame unwind information. 6561@end defmac 6562 6563@hook TARGET_TERMINATE_DW2_EH_FRAME_INFO 6564 6565@hook TARGET_DWARF_REGISTER_SPAN 6566 6567@hook TARGET_DWARF_FRAME_REG_MODE 6568 6569@hook TARGET_INIT_DWARF_REG_SIZES_EXTRA 6570 6571@hook TARGET_ASM_TTYPE 6572 6573@hook TARGET_ARM_EABI_UNWINDER 6574 6575@node Alignment Output 6576@subsection Assembler Commands for Alignment 6577 6578@c prevent bad page break with this line 6579This describes commands for alignment. 6580 6581@defmac JUMP_ALIGN (@var{label}) 6582The alignment (log base 2) to put in front of @var{label}, which is 6583a common destination of jumps and has no fallthru incoming edge. 6584 6585This macro need not be defined if you don't want any special alignment 6586to be done at such a time. Most machine descriptions do not currently 6587define the macro. 6588 6589Unless it's necessary to inspect the @var{label} parameter, it is better 6590to set the variable @var{align_jumps} in the target's 6591@code{TARGET_OPTION_OVERRIDE}. Otherwise, you should try to honor the user's 6592selection in @var{align_jumps} in a @code{JUMP_ALIGN} implementation. 6593@end defmac 6594 6595@defmac LABEL_ALIGN_AFTER_BARRIER (@var{label}) 6596The alignment (log base 2) to put in front of @var{label}, which follows 6597a @code{BARRIER}. 6598 6599This macro need not be defined if you don't want any special alignment 6600to be done at such a time. Most machine descriptions do not currently 6601define the macro. 6602@end defmac 6603 6604@defmac LOOP_ALIGN (@var{label}) 6605The alignment (log base 2) to put in front of @var{label} that heads 6606a frequently executed basic block (usually the header of a loop). 6607 6608This macro need not be defined if you don't want any special alignment 6609to be done at such a time. Most machine descriptions do not currently 6610define the macro. 6611 6612Unless it's necessary to inspect the @var{label} parameter, it is better 6613to set the variable @code{align_loops} in the target's 6614@code{TARGET_OPTION_OVERRIDE}. Otherwise, you should try to honor the user's 6615selection in @code{align_loops} in a @code{LOOP_ALIGN} implementation. 6616@end defmac 6617 6618@defmac LABEL_ALIGN (@var{label}) 6619The alignment (log base 2) to put in front of @var{label}. 6620If @code{LABEL_ALIGN_AFTER_BARRIER} / @code{LOOP_ALIGN} specify a different alignment, 6621the maximum of the specified values is used. 6622 6623Unless it's necessary to inspect the @var{label} parameter, it is better 6624to set the variable @code{align_labels} in the target's 6625@code{TARGET_OPTION_OVERRIDE}. Otherwise, you should try to honor the user's 6626selection in @code{align_labels} in a @code{LABEL_ALIGN} implementation. 6627@end defmac 6628 6629@defmac ASM_OUTPUT_SKIP (@var{stream}, @var{nbytes}) 6630A C statement to output to the stdio stream @var{stream} an assembler 6631instruction to advance the location counter by @var{nbytes} bytes. 6632Those bytes should be zero when loaded. @var{nbytes} will be a C 6633expression of type @code{unsigned HOST_WIDE_INT}. 6634@end defmac 6635 6636@defmac ASM_NO_SKIP_IN_TEXT 6637Define this macro if @code{ASM_OUTPUT_SKIP} should not be used in the 6638text section because it fails to put zeros in the bytes that are skipped. 6639This is true on many Unix systems, where the pseudo--op to skip bytes 6640produces no-op instructions rather than zeros when used in the text 6641section. 6642@end defmac 6643 6644@defmac ASM_OUTPUT_ALIGN (@var{stream}, @var{power}) 6645A C statement to output to the stdio stream @var{stream} an assembler 6646command to advance the location counter to a multiple of 2 to the 6647@var{power} bytes. @var{power} will be a C expression of type @code{int}. 6648@end defmac 6649 6650@defmac ASM_OUTPUT_ALIGN_WITH_NOP (@var{stream}, @var{power}) 6651Like @code{ASM_OUTPUT_ALIGN}, except that the ``nop'' instruction is used 6652for padding, if necessary. 6653@end defmac 6654 6655@defmac ASM_OUTPUT_MAX_SKIP_ALIGN (@var{stream}, @var{power}, @var{max_skip}) 6656A C statement to output to the stdio stream @var{stream} an assembler 6657command to advance the location counter to a multiple of 2 to the 6658@var{power} bytes, but only if @var{max_skip} or fewer bytes are needed to 6659satisfy the alignment request. @var{power} and @var{max_skip} will be 6660a C expression of type @code{int}. 6661@end defmac 6662 6663@need 3000 6664@node Debugging Info 6665@section Controlling Debugging Information Format 6666 6667@c prevent bad page break with this line 6668This describes how to specify debugging information. 6669 6670@menu 6671* All Debuggers:: Macros that affect all debugging formats uniformly. 6672* DBX Options:: Macros enabling specific options in DBX format. 6673* DBX Hooks:: Hook macros for varying DBX format. 6674* File Names and DBX:: Macros controlling output of file names in DBX format. 6675* DWARF:: Macros for DWARF format. 6676* VMS Debug:: Macros for VMS debug format. 6677@end menu 6678 6679@node All Debuggers 6680@subsection Macros Affecting All Debugging Formats 6681 6682@c prevent bad page break with this line 6683These macros affect all debugging formats. 6684 6685@defmac DBX_REGISTER_NUMBER (@var{regno}) 6686A C expression that returns the DBX register number for the compiler 6687register number @var{regno}. In the default macro provided, the value 6688of this expression will be @var{regno} itself. But sometimes there are 6689some registers that the compiler knows about and DBX does not, or vice 6690versa. In such cases, some register may need to have one number in the 6691compiler and another for DBX@. 6692 6693If two registers have consecutive numbers inside GCC, and they can be 6694used as a pair to hold a multiword value, then they @emph{must} have 6695consecutive numbers after renumbering with @code{DBX_REGISTER_NUMBER}. 6696Otherwise, debuggers will be unable to access such a pair, because they 6697expect register pairs to be consecutive in their own numbering scheme. 6698 6699If you find yourself defining @code{DBX_REGISTER_NUMBER} in way that 6700does not preserve register pairs, then what you must do instead is 6701redefine the actual register numbering scheme. 6702@end defmac 6703 6704@defmac DEBUGGER_AUTO_OFFSET (@var{x}) 6705A C expression that returns the integer offset value for an automatic 6706variable having address @var{x} (an RTL expression). The default 6707computation assumes that @var{x} is based on the frame-pointer and 6708gives the offset from the frame-pointer. This is required for targets 6709that produce debugging output for DBX and allow the frame-pointer to be 6710eliminated when the @option{-g} option is used. 6711@end defmac 6712 6713@defmac DEBUGGER_ARG_OFFSET (@var{offset}, @var{x}) 6714A C expression that returns the integer offset value for an argument 6715having address @var{x} (an RTL expression). The nominal offset is 6716@var{offset}. 6717@end defmac 6718 6719@defmac PREFERRED_DEBUGGING_TYPE 6720A C expression that returns the type of debugging output GCC should 6721produce when the user specifies just @option{-g}. Define 6722this if you have arranged for GCC to support more than one format of 6723debugging output. Currently, the allowable values are @code{DBX_DEBUG}, 6724@code{DWARF2_DEBUG}, @code{XCOFF_DEBUG}, @code{VMS_DEBUG}, 6725and @code{VMS_AND_DWARF2_DEBUG}. 6726 6727When the user specifies @option{-ggdb}, GCC normally also uses the 6728value of this macro to select the debugging output format, but with two 6729exceptions. If @code{DWARF2_DEBUGGING_INFO} is defined, GCC uses the 6730value @code{DWARF2_DEBUG}. Otherwise, if @code{DBX_DEBUGGING_INFO} is 6731defined, GCC uses @code{DBX_DEBUG}. 6732 6733The value of this macro only affects the default debugging output; the 6734user can always get a specific type of output by using @option{-gstabs}, 6735@option{-gdwarf-2}, @option{-gxcoff}, or @option{-gvms}. 6736@end defmac 6737 6738@node DBX Options 6739@subsection Specific Options for DBX Output 6740 6741@c prevent bad page break with this line 6742These are specific options for DBX output. 6743 6744@defmac DBX_DEBUGGING_INFO 6745Define this macro if GCC should produce debugging output for DBX 6746in response to the @option{-g} option. 6747@end defmac 6748 6749@defmac XCOFF_DEBUGGING_INFO 6750Define this macro if GCC should produce XCOFF format debugging output 6751in response to the @option{-g} option. This is a variant of DBX format. 6752@end defmac 6753 6754@defmac DEFAULT_GDB_EXTENSIONS 6755Define this macro to control whether GCC should by default generate 6756GDB's extended version of DBX debugging information (assuming DBX-format 6757debugging information is enabled at all). If you don't define the 6758macro, the default is 1: always generate the extended information 6759if there is any occasion to. 6760@end defmac 6761 6762@defmac DEBUG_SYMS_TEXT 6763Define this macro if all @code{.stabs} commands should be output while 6764in the text section. 6765@end defmac 6766 6767@defmac ASM_STABS_OP 6768A C string constant, including spacing, naming the assembler pseudo op to 6769use instead of @code{"\t.stabs\t"} to define an ordinary debugging symbol. 6770If you don't define this macro, @code{"\t.stabs\t"} is used. This macro 6771applies only to DBX debugging information format. 6772@end defmac 6773 6774@defmac ASM_STABD_OP 6775A C string constant, including spacing, naming the assembler pseudo op to 6776use instead of @code{"\t.stabd\t"} to define a debugging symbol whose 6777value is the current location. If you don't define this macro, 6778@code{"\t.stabd\t"} is used. This macro applies only to DBX debugging 6779information format. 6780@end defmac 6781 6782@defmac ASM_STABN_OP 6783A C string constant, including spacing, naming the assembler pseudo op to 6784use instead of @code{"\t.stabn\t"} to define a debugging symbol with no 6785name. If you don't define this macro, @code{"\t.stabn\t"} is used. This 6786macro applies only to DBX debugging information format. 6787@end defmac 6788 6789@defmac DBX_NO_XREFS 6790Define this macro if DBX on your system does not support the construct 6791@samp{xs@var{tagname}}. On some systems, this construct is used to 6792describe a forward reference to a structure named @var{tagname}. 6793On other systems, this construct is not supported at all. 6794@end defmac 6795 6796@defmac DBX_CONTIN_LENGTH 6797A symbol name in DBX-format debugging information is normally 6798continued (split into two separate @code{.stabs} directives) when it 6799exceeds a certain length (by default, 80 characters). On some 6800operating systems, DBX requires this splitting; on others, splitting 6801must not be done. You can inhibit splitting by defining this macro 6802with the value zero. You can override the default splitting-length by 6803defining this macro as an expression for the length you desire. 6804@end defmac 6805 6806@defmac DBX_CONTIN_CHAR 6807Normally continuation is indicated by adding a @samp{\} character to 6808the end of a @code{.stabs} string when a continuation follows. To use 6809a different character instead, define this macro as a character 6810constant for the character you want to use. Do not define this macro 6811if backslash is correct for your system. 6812@end defmac 6813 6814@defmac DBX_STATIC_STAB_DATA_SECTION 6815Define this macro if it is necessary to go to the data section before 6816outputting the @samp{.stabs} pseudo-op for a non-global static 6817variable. 6818@end defmac 6819 6820@defmac DBX_TYPE_DECL_STABS_CODE 6821The value to use in the ``code'' field of the @code{.stabs} directive 6822for a typedef. The default is @code{N_LSYM}. 6823@end defmac 6824 6825@defmac DBX_STATIC_CONST_VAR_CODE 6826The value to use in the ``code'' field of the @code{.stabs} directive 6827for a static variable located in the text section. DBX format does not 6828provide any ``right'' way to do this. The default is @code{N_FUN}. 6829@end defmac 6830 6831@defmac DBX_REGPARM_STABS_CODE 6832The value to use in the ``code'' field of the @code{.stabs} directive 6833for a parameter passed in registers. DBX format does not provide any 6834``right'' way to do this. The default is @code{N_RSYM}. 6835@end defmac 6836 6837@defmac DBX_REGPARM_STABS_LETTER 6838The letter to use in DBX symbol data to identify a symbol as a parameter 6839passed in registers. DBX format does not customarily provide any way to 6840do this. The default is @code{'P'}. 6841@end defmac 6842 6843@defmac DBX_FUNCTION_FIRST 6844Define this macro if the DBX information for a function and its 6845arguments should precede the assembler code for the function. Normally, 6846in DBX format, the debugging information entirely follows the assembler 6847code. 6848@end defmac 6849 6850@defmac DBX_BLOCKS_FUNCTION_RELATIVE 6851Define this macro, with value 1, if the value of a symbol describing 6852the scope of a block (@code{N_LBRAC} or @code{N_RBRAC}) should be 6853relative to the start of the enclosing function. Normally, GCC uses 6854an absolute address. 6855@end defmac 6856 6857@defmac DBX_LINES_FUNCTION_RELATIVE 6858Define this macro, with value 1, if the value of a symbol indicating 6859the current line number (@code{N_SLINE}) should be relative to the 6860start of the enclosing function. Normally, GCC uses an absolute address. 6861@end defmac 6862 6863@defmac DBX_USE_BINCL 6864Define this macro if GCC should generate @code{N_BINCL} and 6865@code{N_EINCL} stabs for included header files, as on Sun systems. This 6866macro also directs GCC to output a type number as a pair of a file 6867number and a type number within the file. Normally, GCC does not 6868generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single 6869number for a type number. 6870@end defmac 6871 6872@node DBX Hooks 6873@subsection Open-Ended Hooks for DBX Format 6874 6875@c prevent bad page break with this line 6876These are hooks for DBX format. 6877 6878@defmac DBX_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter}) 6879A C statement to output DBX debugging information before code for line 6880number @var{line} of the current source file to the stdio stream 6881@var{stream}. @var{counter} is the number of time the macro was 6882invoked, including the current invocation; it is intended to generate 6883unique labels in the assembly output. 6884 6885This macro should not be defined if the default output is correct, or 6886if it can be made correct by defining @code{DBX_LINES_FUNCTION_RELATIVE}. 6887@end defmac 6888 6889@defmac NO_DBX_FUNCTION_END 6890Some stabs encapsulation formats (in particular ECOFF), cannot handle the 6891@code{.stabs "",N_FUN,,0,0,Lscope-function-1} gdb dbx extension construct. 6892On those machines, define this macro to turn this feature off without 6893disturbing the rest of the gdb extensions. 6894@end defmac 6895 6896@defmac NO_DBX_BNSYM_ENSYM 6897Some assemblers cannot handle the @code{.stabd BNSYM/ENSYM,0,0} gdb dbx 6898extension construct. On those machines, define this macro to turn this 6899feature off without disturbing the rest of the gdb extensions. 6900@end defmac 6901 6902@node File Names and DBX 6903@subsection File Names in DBX Format 6904 6905@c prevent bad page break with this line 6906This describes file names in DBX format. 6907 6908@defmac DBX_OUTPUT_MAIN_SOURCE_FILENAME (@var{stream}, @var{name}) 6909A C statement to output DBX debugging information to the stdio stream 6910@var{stream}, which indicates that file @var{name} is the main source 6911file---the file specified as the input file for compilation. 6912This macro is called only once, at the beginning of compilation. 6913 6914This macro need not be defined if the standard form of output 6915for DBX debugging information is appropriate. 6916 6917It may be necessary to refer to a label equal to the beginning of the 6918text section. You can use @samp{assemble_name (stream, ltext_label_name)} 6919to do so. If you do this, you must also set the variable 6920@var{used_ltext_label_name} to @code{true}. 6921@end defmac 6922 6923@defmac NO_DBX_MAIN_SOURCE_DIRECTORY 6924Define this macro, with value 1, if GCC should not emit an indication 6925of the current directory for compilation and current source language at 6926the beginning of the file. 6927@end defmac 6928 6929@defmac NO_DBX_GCC_MARKER 6930Define this macro, with value 1, if GCC should not emit an indication 6931that this object file was compiled by GCC@. The default is to emit 6932an @code{N_OPT} stab at the beginning of every source file, with 6933@samp{gcc2_compiled.} for the string and value 0. 6934@end defmac 6935 6936@defmac DBX_OUTPUT_MAIN_SOURCE_FILE_END (@var{stream}, @var{name}) 6937A C statement to output DBX debugging information at the end of 6938compilation of the main source file @var{name}. Output should be 6939written to the stdio stream @var{stream}. 6940 6941If you don't define this macro, nothing special is output at the end 6942of compilation, which is correct for most machines. 6943@end defmac 6944 6945@defmac DBX_OUTPUT_NULL_N_SO_AT_MAIN_SOURCE_FILE_END 6946Define this macro @emph{instead of} defining 6947@code{DBX_OUTPUT_MAIN_SOURCE_FILE_END}, if what needs to be output at 6948the end of compilation is an @code{N_SO} stab with an empty string, 6949whose value is the highest absolute text address in the file. 6950@end defmac 6951 6952@need 2000 6953@node DWARF 6954@subsection Macros for DWARF Output 6955 6956@c prevent bad page break with this line 6957Here are macros for DWARF output. 6958 6959@defmac DWARF2_DEBUGGING_INFO 6960Define this macro if GCC should produce dwarf version 2 format 6961debugging output in response to the @option{-g} option. 6962 6963@hook TARGET_DWARF_CALLING_CONVENTION 6964 6965To support optional call frame debugging information, you must also 6966define @code{INCOMING_RETURN_ADDR_RTX} and either set 6967@code{RTX_FRAME_RELATED_P} on the prologue insns if you use RTL for the 6968prologue, or call @code{dwarf2out_def_cfa} and @code{dwarf2out_reg_save} 6969as appropriate from @code{TARGET_ASM_FUNCTION_PROLOGUE} if you don't. 6970@end defmac 6971 6972@defmac DWARF2_FRAME_INFO 6973Define this macro to a nonzero value if GCC should always output 6974Dwarf 2 frame information. If @code{TARGET_EXCEPT_UNWIND_INFO} 6975(@pxref{Exception Region Output}) returns @code{UI_DWARF2}, and 6976exceptions are enabled, GCC will output this information not matter 6977how you define @code{DWARF2_FRAME_INFO}. 6978@end defmac 6979 6980@hook TARGET_DEBUG_UNWIND_INFO 6981 6982@defmac DWARF2_ASM_LINE_DEBUG_INFO 6983Define this macro to be a nonzero value if the assembler can generate Dwarf 2 6984line debug info sections. This will result in much more compact line number 6985tables, and hence is desirable if it works. 6986@end defmac 6987 6988@defmac DWARF2_ASM_VIEW_DEBUG_INFO 6989Define this macro to be a nonzero value if the assembler supports view 6990assignment and verification in @code{.loc}. If it does not, but the 6991user enables location views, the compiler may have to fallback to 6992internal line number tables. 6993@end defmac 6994 6995@hook TARGET_RESET_LOCATION_VIEW 6996 6997@hook TARGET_WANT_DEBUG_PUB_SECTIONS 6998 6999@hook TARGET_DELAY_SCHED2 7000 7001@hook TARGET_DELAY_VARTRACK 7002 7003@hook TARGET_NO_REGISTER_ALLOCATION 7004 7005@defmac ASM_OUTPUT_DWARF_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) 7006A C statement to issue assembly directives that create a difference 7007@var{lab1} minus @var{lab2}, using an integer of the given @var{size}. 7008@end defmac 7009 7010@defmac ASM_OUTPUT_DWARF_VMS_DELTA (@var{stream}, @var{size}, @var{label1}, @var{label2}) 7011A C statement to issue assembly directives that create a difference 7012between the two given labels in system defined units, e.g.@: instruction 7013slots on IA64 VMS, using an integer of the given size. 7014@end defmac 7015 7016@defmac ASM_OUTPUT_DWARF_OFFSET (@var{stream}, @var{size}, @var{label}, @var{offset}, @var{section}) 7017A C statement to issue assembly directives that create a 7018section-relative reference to the given @var{label} plus @var{offset}, using 7019an integer of the given @var{size}. The label is known to be defined in the 7020given @var{section}. 7021@end defmac 7022 7023@defmac ASM_OUTPUT_DWARF_PCREL (@var{stream}, @var{size}, @var{label}) 7024A C statement to issue assembly directives that create a self-relative 7025reference to the given @var{label}, using an integer of the given @var{size}. 7026@end defmac 7027 7028@defmac ASM_OUTPUT_DWARF_DATAREL (@var{stream}, @var{size}, @var{label}) 7029A C statement to issue assembly directives that create a reference to the 7030given @var{label} relative to the dbase, using an integer of the given @var{size}. 7031@end defmac 7032 7033@defmac ASM_OUTPUT_DWARF_TABLE_REF (@var{label}) 7034A C statement to issue assembly directives that create a reference to 7035the DWARF table identifier @var{label} from the current section. This 7036is used on some systems to avoid garbage collecting a DWARF table which 7037is referenced by a function. 7038@end defmac 7039 7040@hook TARGET_ASM_OUTPUT_DWARF_DTPREL 7041 7042@need 2000 7043@node VMS Debug 7044@subsection Macros for VMS Debug Format 7045 7046@c prevent bad page break with this line 7047Here are macros for VMS debug format. 7048 7049@defmac VMS_DEBUGGING_INFO 7050Define this macro if GCC should produce debugging output for VMS 7051in response to the @option{-g} option. The default behavior for VMS 7052is to generate minimal debug info for a traceback in the absence of 7053@option{-g} unless explicitly overridden with @option{-g0}. This 7054behavior is controlled by @code{TARGET_OPTION_OPTIMIZATION} and 7055@code{TARGET_OPTION_OVERRIDE}. 7056@end defmac 7057 7058@node Floating Point 7059@section Cross Compilation and Floating Point 7060@cindex cross compilation and floating point 7061@cindex floating point and cross compilation 7062 7063While all modern machines use twos-complement representation for integers, 7064there are a variety of representations for floating point numbers. This 7065means that in a cross-compiler the representation of floating point numbers 7066in the compiled program may be different from that used in the machine 7067doing the compilation. 7068 7069Because different representation systems may offer different amounts of 7070range and precision, all floating point constants must be represented in 7071the target machine's format. Therefore, the cross compiler cannot 7072safely use the host machine's floating point arithmetic; it must emulate 7073the target's arithmetic. To ensure consistency, GCC always uses 7074emulation to work with floating point values, even when the host and 7075target floating point formats are identical. 7076 7077The following macros are provided by @file{real.h} for the compiler to 7078use. All parts of the compiler which generate or optimize 7079floating-point calculations must use these macros. They may evaluate 7080their operands more than once, so operands must not have side effects. 7081 7082@defmac REAL_VALUE_TYPE 7083The C data type to be used to hold a floating point value in the target 7084machine's format. Typically this is a @code{struct} containing an 7085array of @code{HOST_WIDE_INT}, but all code should treat it as an opaque 7086quantity. 7087@end defmac 7088 7089@deftypefn Macro HOST_WIDE_INT REAL_VALUE_FIX (REAL_VALUE_TYPE @var{x}) 7090Truncates @var{x} to a signed integer, rounding toward zero. 7091@end deftypefn 7092 7093@deftypefn Macro {unsigned HOST_WIDE_INT} REAL_VALUE_UNSIGNED_FIX (REAL_VALUE_TYPE @var{x}) 7094Truncates @var{x} to an unsigned integer, rounding toward zero. If 7095@var{x} is negative, returns zero. 7096@end deftypefn 7097 7098@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ATOF (const char *@var{string}, machine_mode @var{mode}) 7099Converts @var{string} into a floating point number in the target machine's 7100representation for mode @var{mode}. This routine can handle both 7101decimal and hexadecimal floating point constants, using the syntax 7102defined by the C language for both. 7103@end deftypefn 7104 7105@deftypefn Macro int REAL_VALUE_NEGATIVE (REAL_VALUE_TYPE @var{x}) 7106Returns 1 if @var{x} is negative (including negative zero), 0 otherwise. 7107@end deftypefn 7108 7109@deftypefn Macro int REAL_VALUE_ISINF (REAL_VALUE_TYPE @var{x}) 7110Determines whether @var{x} represents infinity (positive or negative). 7111@end deftypefn 7112 7113@deftypefn Macro int REAL_VALUE_ISNAN (REAL_VALUE_TYPE @var{x}) 7114Determines whether @var{x} represents a ``NaN'' (not-a-number). 7115@end deftypefn 7116 7117@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x}) 7118Returns the negative of the floating point value @var{x}. 7119@end deftypefn 7120 7121@deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x}) 7122Returns the absolute value of @var{x}. 7123@end deftypefn 7124 7125@node Mode Switching 7126@section Mode Switching Instructions 7127@cindex mode switching 7128The following macros control mode switching optimizations: 7129 7130@defmac OPTIMIZE_MODE_SWITCHING (@var{entity}) 7131Define this macro if the port needs extra instructions inserted for mode 7132switching in an optimizing compilation. 7133 7134For an example, the SH4 can perform both single and double precision 7135floating point operations, but to perform a single precision operation, 7136the FPSCR PR bit has to be cleared, while for a double precision 7137operation, this bit has to be set. Changing the PR bit requires a general 7138purpose register as a scratch register, hence these FPSCR sets have to 7139be inserted before reload, i.e.@: you cannot put this into instruction emitting 7140or @code{TARGET_MACHINE_DEPENDENT_REORG}. 7141 7142You can have multiple entities that are mode-switched, and select at run time 7143which entities actually need it. @code{OPTIMIZE_MODE_SWITCHING} should 7144return nonzero for any @var{entity} that needs mode-switching. 7145If you define this macro, you also have to define 7146@code{NUM_MODES_FOR_MODE_SWITCHING}, @code{TARGET_MODE_NEEDED}, 7147@code{TARGET_MODE_PRIORITY} and @code{TARGET_MODE_EMIT}. 7148@code{TARGET_MODE_AFTER}, @code{TARGET_MODE_ENTRY}, and @code{TARGET_MODE_EXIT} 7149are optional. 7150@end defmac 7151 7152@defmac NUM_MODES_FOR_MODE_SWITCHING 7153If you define @code{OPTIMIZE_MODE_SWITCHING}, you have to define this as 7154initializer for an array of integers. Each initializer element 7155N refers to an entity that needs mode switching, and specifies the number 7156of different modes that might need to be set for this entity. 7157The position of the initializer in the initializer---starting counting at 7158zero---determines the integer that is used to refer to the mode-switched 7159entity in question. 7160In macros that take mode arguments / yield a mode result, modes are 7161represented as numbers 0 @dots{} N @minus{} 1. N is used to specify that no mode 7162switch is needed / supplied. 7163@end defmac 7164 7165@hook TARGET_MODE_EMIT 7166 7167@hook TARGET_MODE_NEEDED 7168 7169@hook TARGET_MODE_AFTER 7170 7171@hook TARGET_MODE_ENTRY 7172 7173@hook TARGET_MODE_EXIT 7174 7175@hook TARGET_MODE_PRIORITY 7176 7177@node Target Attributes 7178@section Defining target-specific uses of @code{__attribute__} 7179@cindex target attributes 7180@cindex machine attributes 7181@cindex attributes, target-specific 7182 7183Target-specific attributes may be defined for functions, data and types. 7184These are described using the following target hooks; they also need to 7185be documented in @file{extend.texi}. 7186 7187@hook TARGET_ATTRIBUTE_TABLE 7188 7189@hook TARGET_ATTRIBUTE_TAKES_IDENTIFIER_P 7190 7191@hook TARGET_COMP_TYPE_ATTRIBUTES 7192 7193@hook TARGET_SET_DEFAULT_TYPE_ATTRIBUTES 7194 7195@hook TARGET_MERGE_TYPE_ATTRIBUTES 7196 7197@hook TARGET_MERGE_DECL_ATTRIBUTES 7198 7199@hook TARGET_VALID_DLLIMPORT_ATTRIBUTE_P 7200 7201@defmac TARGET_DECLSPEC 7202Define this macro to a nonzero value if you want to treat 7203@code{__declspec(X)} as equivalent to @code{__attribute((X))}. By 7204default, this behavior is enabled only for targets that define 7205@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}. The current implementation 7206of @code{__declspec} is via a built-in macro, but you should not rely 7207on this implementation detail. 7208@end defmac 7209 7210@hook TARGET_INSERT_ATTRIBUTES 7211 7212@hook TARGET_HANDLE_GENERIC_ATTRIBUTE 7213 7214@hook TARGET_FUNCTION_ATTRIBUTE_INLINABLE_P 7215 7216@hook TARGET_OPTION_VALID_ATTRIBUTE_P 7217 7218@hook TARGET_OPTION_SAVE 7219 7220@hook TARGET_OPTION_RESTORE 7221 7222@hook TARGET_OPTION_POST_STREAM_IN 7223 7224@hook TARGET_OPTION_PRINT 7225 7226@hook TARGET_OPTION_PRAGMA_PARSE 7227 7228@hook TARGET_OPTION_OVERRIDE 7229 7230@hook TARGET_OPTION_FUNCTION_VERSIONS 7231 7232@hook TARGET_CAN_INLINE_P 7233 7234@hook TARGET_RELAYOUT_FUNCTION 7235 7236@node Emulated TLS 7237@section Emulating TLS 7238@cindex Emulated TLS 7239 7240For targets whose psABI does not provide Thread Local Storage via 7241specific relocations and instruction sequences, an emulation layer is 7242used. A set of target hooks allows this emulation layer to be 7243configured for the requirements of a particular target. For instance 7244the psABI may in fact specify TLS support in terms of an emulation 7245layer. 7246 7247The emulation layer works by creating a control object for every TLS 7248object. To access the TLS object, a lookup function is provided 7249which, when given the address of the control object, will return the 7250address of the current thread's instance of the TLS object. 7251 7252@hook TARGET_EMUTLS_GET_ADDRESS 7253 7254@hook TARGET_EMUTLS_REGISTER_COMMON 7255 7256@hook TARGET_EMUTLS_VAR_SECTION 7257 7258@hook TARGET_EMUTLS_TMPL_SECTION 7259 7260@hook TARGET_EMUTLS_VAR_PREFIX 7261 7262@hook TARGET_EMUTLS_TMPL_PREFIX 7263 7264@hook TARGET_EMUTLS_VAR_FIELDS 7265 7266@hook TARGET_EMUTLS_VAR_INIT 7267 7268@hook TARGET_EMUTLS_VAR_ALIGN_FIXED 7269 7270@hook TARGET_EMUTLS_DEBUG_FORM_TLS_ADDRESS 7271 7272@node MIPS Coprocessors 7273@section Defining coprocessor specifics for MIPS targets. 7274@cindex MIPS coprocessor-definition macros 7275 7276The MIPS specification allows MIPS implementations to have as many as 4 7277coprocessors, each with as many as 32 private registers. GCC supports 7278accessing these registers and transferring values between the registers 7279and memory using asm-ized variables. For example: 7280 7281@smallexample 7282 register unsigned int cp0count asm ("c0r1"); 7283 unsigned int d; 7284 7285 d = cp0count + 3; 7286@end smallexample 7287 7288(``c0r1'' is the default name of register 1 in coprocessor 0; alternate 7289names may be added as described below, or the default names may be 7290overridden entirely in @code{SUBTARGET_CONDITIONAL_REGISTER_USAGE}.) 7291 7292Coprocessor registers are assumed to be epilogue-used; sets to them will 7293be preserved even if it does not appear that the register is used again 7294later in the function. 7295 7296Another note: according to the MIPS spec, coprocessor 1 (if present) is 7297the FPU@. One accesses COP1 registers through standard mips 7298floating-point support; they are not included in this mechanism. 7299 7300@node PCH Target 7301@section Parameters for Precompiled Header Validity Checking 7302@cindex parameters, precompiled headers 7303 7304@hook TARGET_GET_PCH_VALIDITY 7305 7306@hook TARGET_PCH_VALID_P 7307 7308@hook TARGET_CHECK_PCH_TARGET_FLAGS 7309 7310@hook TARGET_PREPARE_PCH_SAVE 7311 7312@node C++ ABI 7313@section C++ ABI parameters 7314@cindex parameters, c++ abi 7315 7316@hook TARGET_CXX_GUARD_TYPE 7317 7318@hook TARGET_CXX_GUARD_MASK_BIT 7319 7320@hook TARGET_CXX_GET_COOKIE_SIZE 7321 7322@hook TARGET_CXX_COOKIE_HAS_SIZE 7323 7324@hook TARGET_CXX_IMPORT_EXPORT_CLASS 7325 7326@hook TARGET_CXX_CDTOR_RETURNS_THIS 7327 7328@hook TARGET_CXX_KEY_METHOD_MAY_BE_INLINE 7329 7330@hook TARGET_CXX_DETERMINE_CLASS_DATA_VISIBILITY 7331 7332@hook TARGET_CXX_CLASS_DATA_ALWAYS_COMDAT 7333 7334@hook TARGET_CXX_LIBRARY_RTTI_COMDAT 7335 7336@hook TARGET_CXX_USE_AEABI_ATEXIT 7337 7338@hook TARGET_CXX_USE_ATEXIT_FOR_CXA_ATEXIT 7339 7340@hook TARGET_CXX_ADJUST_CLASS_AT_DEFINITION 7341 7342@hook TARGET_CXX_DECL_MANGLING_CONTEXT 7343 7344@node D Language and ABI 7345@section D ABI parameters 7346@cindex parameters, d abi 7347 7348@hook TARGET_D_CPU_VERSIONS 7349 7350@hook TARGET_D_OS_VERSIONS 7351 7352@hook TARGET_D_CRITSEC_SIZE 7353 7354@node Named Address Spaces 7355@section Adding support for named address spaces 7356@cindex named address spaces 7357 7358The draft technical report of the ISO/IEC JTC1 S22 WG14 N1275 7359standards committee, @cite{Programming Languages - C - Extensions to 7360support embedded processors}, specifies a syntax for embedded 7361processors to specify alternate address spaces. You can configure a 7362GCC port to support section 5.1 of the draft report to add support for 7363address spaces other than the default address space. These address 7364spaces are new keywords that are similar to the @code{volatile} and 7365@code{const} type attributes. 7366 7367Pointers to named address spaces can have a different size than 7368pointers to the generic address space. 7369 7370For example, the SPU port uses the @code{__ea} address space to refer 7371to memory in the host processor, rather than memory local to the SPU 7372processor. Access to memory in the @code{__ea} address space involves 7373issuing DMA operations to move data between the host processor and the 7374local processor memory address space. Pointers in the @code{__ea} 7375address space are either 32 bits or 64 bits based on the 7376@option{-mea32} or @option{-mea64} switches (native SPU pointers are 7377always 32 bits). 7378 7379Internally, address spaces are represented as a small integer in the 7380range 0 to 15 with address space 0 being reserved for the generic 7381address space. 7382 7383To register a named address space qualifier keyword with the C front end, 7384the target may call the @code{c_register_addr_space} routine. For example, 7385the SPU port uses the following to declare @code{__ea} as the keyword for 7386named address space #1: 7387@smallexample 7388#define ADDR_SPACE_EA 1 7389c_register_addr_space ("__ea", ADDR_SPACE_EA); 7390@end smallexample 7391 7392@hook TARGET_ADDR_SPACE_POINTER_MODE 7393 7394@hook TARGET_ADDR_SPACE_ADDRESS_MODE 7395 7396@hook TARGET_ADDR_SPACE_VALID_POINTER_MODE 7397 7398@hook TARGET_ADDR_SPACE_LEGITIMATE_ADDRESS_P 7399 7400@hook TARGET_ADDR_SPACE_LEGITIMIZE_ADDRESS 7401 7402@hook TARGET_ADDR_SPACE_SUBSET_P 7403 7404@hook TARGET_ADDR_SPACE_ZERO_ADDRESS_VALID 7405 7406@hook TARGET_ADDR_SPACE_CONVERT 7407 7408@hook TARGET_ADDR_SPACE_DEBUG 7409 7410@hook TARGET_ADDR_SPACE_DIAGNOSE_USAGE 7411 7412@node Misc 7413@section Miscellaneous Parameters 7414@cindex parameters, miscellaneous 7415 7416@c prevent bad page break with this line 7417Here are several miscellaneous parameters. 7418 7419@defmac HAS_LONG_COND_BRANCH 7420Define this boolean macro to indicate whether or not your architecture 7421has conditional branches that can span all of memory. It is used in 7422conjunction with an optimization that partitions hot and cold basic 7423blocks into separate sections of the executable. If this macro is 7424set to false, gcc will convert any conditional branches that attempt 7425to cross between sections into unconditional branches or indirect jumps. 7426@end defmac 7427 7428@defmac HAS_LONG_UNCOND_BRANCH 7429Define this boolean macro to indicate whether or not your architecture 7430has unconditional branches that can span all of memory. It is used in 7431conjunction with an optimization that partitions hot and cold basic 7432blocks into separate sections of the executable. If this macro is 7433set to false, gcc will convert any unconditional branches that attempt 7434to cross between sections into indirect jumps. 7435@end defmac 7436 7437@defmac CASE_VECTOR_MODE 7438An alias for a machine mode name. This is the machine mode that 7439elements of a jump-table should have. 7440@end defmac 7441 7442@defmac CASE_VECTOR_SHORTEN_MODE (@var{min_offset}, @var{max_offset}, @var{body}) 7443Optional: return the preferred mode for an @code{addr_diff_vec} 7444when the minimum and maximum offset are known. If you define this, 7445it enables extra code in branch shortening to deal with @code{addr_diff_vec}. 7446To make this work, you also have to define @code{INSN_ALIGN} and 7447make the alignment for @code{addr_diff_vec} explicit. 7448The @var{body} argument is provided so that the offset_unsigned and scale 7449flags can be updated. 7450@end defmac 7451 7452@defmac CASE_VECTOR_PC_RELATIVE 7453Define this macro to be a C expression to indicate when jump-tables 7454should contain relative addresses. You need not define this macro if 7455jump-tables never contain relative addresses, or jump-tables should 7456contain relative addresses only when @option{-fPIC} or @option{-fPIC} 7457is in effect. 7458@end defmac 7459 7460@hook TARGET_CASE_VALUES_THRESHOLD 7461 7462@defmac WORD_REGISTER_OPERATIONS 7463Define this macro to 1 if operations between registers with integral mode 7464smaller than a word are always performed on the entire register. To be 7465more explicit, if you start with a pair of @code{word_mode} registers with 7466known values and you do a subword, for example @code{QImode}, addition on 7467the low part of the registers, then the compiler may consider that the 7468result has a known value in @code{word_mode} too if the macro is defined 7469to 1. Most RISC machines have this property and most CISC machines do not. 7470@end defmac 7471 7472@hook TARGET_MIN_ARITHMETIC_PRECISION 7473 7474@defmac LOAD_EXTEND_OP (@var{mem_mode}) 7475Define this macro to be a C expression indicating when insns that read 7476memory in @var{mem_mode}, an integral mode narrower than a word, set the 7477bits outside of @var{mem_mode} to be either the sign-extension or the 7478zero-extension of the data read. Return @code{SIGN_EXTEND} for values 7479of @var{mem_mode} for which the 7480insn sign-extends, @code{ZERO_EXTEND} for which it zero-extends, and 7481@code{UNKNOWN} for other modes. 7482 7483This macro is not called with @var{mem_mode} non-integral or with a width 7484greater than or equal to @code{BITS_PER_WORD}, so you may return any 7485value in this case. Do not define this macro if it would always return 7486@code{UNKNOWN}. On machines where this macro is defined, you will normally 7487define it as the constant @code{SIGN_EXTEND} or @code{ZERO_EXTEND}. 7488 7489You may return a non-@code{UNKNOWN} value even if for some hard registers 7490the sign extension is not performed, if for the @code{REGNO_REG_CLASS} 7491of these hard registers @code{TARGET_CAN_CHANGE_MODE_CLASS} returns false 7492when the @var{from} mode is @var{mem_mode} and the @var{to} mode is any 7493integral mode larger than this but not larger than @code{word_mode}. 7494 7495You must return @code{UNKNOWN} if for some hard registers that allow this 7496mode, @code{TARGET_CAN_CHANGE_MODE_CLASS} says that they cannot change to 7497@code{word_mode}, but that they can change to another integral mode that 7498is larger then @var{mem_mode} but still smaller than @code{word_mode}. 7499@end defmac 7500 7501@defmac SHORT_IMMEDIATES_SIGN_EXTEND 7502Define this macro to 1 if loading short immediate values into registers sign 7503extends. 7504@end defmac 7505 7506@hook TARGET_MIN_DIVISIONS_FOR_RECIP_MUL 7507 7508@defmac MOVE_MAX 7509The maximum number of bytes that a single instruction can move quickly 7510between memory and registers or between two memory locations. 7511@end defmac 7512 7513@defmac MAX_MOVE_MAX 7514The maximum number of bytes that a single instruction can move quickly 7515between memory and registers or between two memory locations. If this 7516is undefined, the default is @code{MOVE_MAX}. Otherwise, it is the 7517constant value that is the largest value that @code{MOVE_MAX} can have 7518at run-time. 7519@end defmac 7520 7521@defmac SHIFT_COUNT_TRUNCATED 7522A C expression that is nonzero if on this machine the number of bits 7523actually used for the count of a shift operation is equal to the number 7524of bits needed to represent the size of the object being shifted. When 7525this macro is nonzero, the compiler will assume that it is safe to omit 7526a sign-extend, zero-extend, and certain bitwise `and' instructions that 7527truncates the count of a shift operation. On machines that have 7528instructions that act on bit-fields at variable positions, which may 7529include `bit test' instructions, a nonzero @code{SHIFT_COUNT_TRUNCATED} 7530also enables deletion of truncations of the values that serve as 7531arguments to bit-field instructions. 7532 7533If both types of instructions truncate the count (for shifts) and 7534position (for bit-field operations), or if no variable-position bit-field 7535instructions exist, you should define this macro. 7536 7537However, on some machines, such as the 80386 and the 680x0, truncation 7538only applies to shift operations and not the (real or pretended) 7539bit-field operations. Define @code{SHIFT_COUNT_TRUNCATED} to be zero on 7540such machines. Instead, add patterns to the @file{md} file that include 7541the implied truncation of the shift instructions. 7542 7543You need not define this macro if it would always have the value of zero. 7544@end defmac 7545 7546@anchor{TARGET_SHIFT_TRUNCATION_MASK} 7547@hook TARGET_SHIFT_TRUNCATION_MASK 7548 7549@hook TARGET_TRULY_NOOP_TRUNCATION 7550 7551@hook TARGET_MODE_REP_EXTENDED 7552 7553@hook TARGET_SETJMP_PRESERVES_NONVOLATILE_REGS_P 7554 7555@defmac STORE_FLAG_VALUE 7556A C expression describing the value returned by a comparison operator 7557with an integral mode and stored by a store-flag instruction 7558(@samp{cstore@var{mode}4}) when the condition is true. This description must 7559apply to @emph{all} the @samp{cstore@var{mode}4} patterns and all the 7560comparison operators whose results have a @code{MODE_INT} mode. 7561 7562A value of 1 or @minus{}1 means that the instruction implementing the 7563comparison operator returns exactly 1 or @minus{}1 when the comparison is true 7564and 0 when the comparison is false. Otherwise, the value indicates 7565which bits of the result are guaranteed to be 1 when the comparison is 7566true. This value is interpreted in the mode of the comparison 7567operation, which is given by the mode of the first operand in the 7568@samp{cstore@var{mode}4} pattern. Either the low bit or the sign bit of 7569@code{STORE_FLAG_VALUE} be on. Presently, only those bits are used by 7570the compiler. 7571 7572If @code{STORE_FLAG_VALUE} is neither 1 or @minus{}1, the compiler will 7573generate code that depends only on the specified bits. It can also 7574replace comparison operators with equivalent operations if they cause 7575the required bits to be set, even if the remaining bits are undefined. 7576For example, on a machine whose comparison operators return an 7577@code{SImode} value and where @code{STORE_FLAG_VALUE} is defined as 7578@samp{0x80000000}, saying that just the sign bit is relevant, the 7579expression 7580 7581@smallexample 7582(ne:SI (and:SI @var{x} (const_int @var{power-of-2})) (const_int 0)) 7583@end smallexample 7584 7585@noindent 7586can be converted to 7587 7588@smallexample 7589(ashift:SI @var{x} (const_int @var{n})) 7590@end smallexample 7591 7592@noindent 7593where @var{n} is the appropriate shift count to move the bit being 7594tested into the sign bit. 7595 7596There is no way to describe a machine that always sets the low-order bit 7597for a true value, but does not guarantee the value of any other bits, 7598but we do not know of any machine that has such an instruction. If you 7599are trying to port GCC to such a machine, include an instruction to 7600perform a logical-and of the result with 1 in the pattern for the 7601comparison operators and let us know at @email{gcc@@gcc.gnu.org}. 7602 7603Often, a machine will have multiple instructions that obtain a value 7604from a comparison (or the condition codes). Here are rules to guide the 7605choice of value for @code{STORE_FLAG_VALUE}, and hence the instructions 7606to be used: 7607 7608@itemize @bullet 7609@item 7610Use the shortest sequence that yields a valid definition for 7611@code{STORE_FLAG_VALUE}. It is more efficient for the compiler to 7612``normalize'' the value (convert it to, e.g., 1 or 0) than for the 7613comparison operators to do so because there may be opportunities to 7614combine the normalization with other operations. 7615 7616@item 7617For equal-length sequences, use a value of 1 or @minus{}1, with @minus{}1 being 7618slightly preferred on machines with expensive jumps and 1 preferred on 7619other machines. 7620 7621@item 7622As a second choice, choose a value of @samp{0x80000001} if instructions 7623exist that set both the sign and low-order bits but do not define the 7624others. 7625 7626@item 7627Otherwise, use a value of @samp{0x80000000}. 7628@end itemize 7629 7630Many machines can produce both the value chosen for 7631@code{STORE_FLAG_VALUE} and its negation in the same number of 7632instructions. On those machines, you should also define a pattern for 7633those cases, e.g., one matching 7634 7635@smallexample 7636(set @var{A} (neg:@var{m} (ne:@var{m} @var{B} @var{C}))) 7637@end smallexample 7638 7639Some machines can also perform @code{and} or @code{plus} operations on 7640condition code values with less instructions than the corresponding 7641@samp{cstore@var{mode}4} insn followed by @code{and} or @code{plus}. On those 7642machines, define the appropriate patterns. Use the names @code{incscc} 7643and @code{decscc}, respectively, for the patterns which perform 7644@code{plus} or @code{minus} operations on condition code values. See 7645@file{rs6000.md} for some examples. The GNU Superoptimizer can be used to 7646find such instruction sequences on other machines. 7647 7648If this macro is not defined, the default value, 1, is used. You need 7649not define @code{STORE_FLAG_VALUE} if the machine has no store-flag 7650instructions, or if the value generated by these instructions is 1. 7651@end defmac 7652 7653@defmac FLOAT_STORE_FLAG_VALUE (@var{mode}) 7654A C expression that gives a nonzero @code{REAL_VALUE_TYPE} value that is 7655returned when comparison operators with floating-point results are true. 7656Define this macro on machines that have comparison operations that return 7657floating-point values. If there are no such operations, do not define 7658this macro. 7659@end defmac 7660 7661@defmac VECTOR_STORE_FLAG_VALUE (@var{mode}) 7662A C expression that gives a rtx representing the nonzero true element 7663for vector comparisons. The returned rtx should be valid for the inner 7664mode of @var{mode} which is guaranteed to be a vector mode. Define 7665this macro on machines that have vector comparison operations that 7666return a vector result. If there are no such operations, do not define 7667this macro. Typically, this macro is defined as @code{const1_rtx} or 7668@code{constm1_rtx}. This macro may return @code{NULL_RTX} to prevent 7669the compiler optimizing such vector comparison operations for the 7670given mode. 7671@end defmac 7672 7673@defmac CLZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value}) 7674@defmacx CTZ_DEFINED_VALUE_AT_ZERO (@var{mode}, @var{value}) 7675A C expression that indicates whether the architecture defines a value 7676for @code{clz} or @code{ctz} with a zero operand. 7677A result of @code{0} indicates the value is undefined. 7678If the value is defined for only the RTL expression, the macro should 7679evaluate to @code{1}; if the value applies also to the corresponding optab 7680entry (which is normally the case if it expands directly into 7681the corresponding RTL), then the macro should evaluate to @code{2}. 7682In the cases where the value is defined, @var{value} should be set to 7683this value. 7684 7685If this macro is not defined, the value of @code{clz} or 7686@code{ctz} at zero is assumed to be undefined. 7687 7688This macro must be defined if the target's expansion for @code{ffs} 7689relies on a particular value to get correct results. Otherwise it 7690is not necessary, though it may be used to optimize some corner cases, and 7691to provide a default expansion for the @code{ffs} optab. 7692 7693Note that regardless of this macro the ``definedness'' of @code{clz} 7694and @code{ctz} at zero do @emph{not} extend to the builtin functions 7695visible to the user. Thus one may be free to adjust the value at will 7696to match the target expansion of these operations without fear of 7697breaking the API@. 7698@end defmac 7699 7700@defmac Pmode 7701An alias for the machine mode for pointers. On most machines, define 7702this to be the integer mode corresponding to the width of a hardware 7703pointer; @code{SImode} on 32-bit machine or @code{DImode} on 64-bit machines. 7704On some machines you must define this to be one of the partial integer 7705modes, such as @code{PSImode}. 7706 7707The width of @code{Pmode} must be at least as large as the value of 7708@code{POINTER_SIZE}. If it is not equal, you must define the macro 7709@code{POINTERS_EXTEND_UNSIGNED} to specify how pointers are extended 7710to @code{Pmode}. 7711@end defmac 7712 7713@defmac FUNCTION_MODE 7714An alias for the machine mode used for memory references to functions 7715being called, in @code{call} RTL expressions. On most CISC machines, 7716where an instruction can begin at any byte address, this should be 7717@code{QImode}. On most RISC machines, where all instructions have fixed 7718size and alignment, this should be a mode with the same size and alignment 7719as the machine instruction words - typically @code{SImode} or @code{HImode}. 7720@end defmac 7721 7722@defmac STDC_0_IN_SYSTEM_HEADERS 7723In normal operation, the preprocessor expands @code{__STDC__} to the 7724constant 1, to signify that GCC conforms to ISO Standard C@. On some 7725hosts, like Solaris, the system compiler uses a different convention, 7726where @code{__STDC__} is normally 0, but is 1 if the user specifies 7727strict conformance to the C Standard. 7728 7729Defining @code{STDC_0_IN_SYSTEM_HEADERS} makes GNU CPP follows the host 7730convention when processing system header files, but when processing user 7731files @code{__STDC__} will always expand to 1. 7732@end defmac 7733 7734@hook TARGET_C_PREINCLUDE 7735 7736@hook TARGET_CXX_IMPLICIT_EXTERN_C 7737 7738@defmac SYSTEM_IMPLICIT_EXTERN_C 7739Define this macro if the system header files do not support C++@. 7740This macro handles system header files by pretending that system 7741header files are enclosed in @samp{extern "C" @{@dots{}@}}. 7742@end defmac 7743 7744@findex #pragma 7745@findex pragma 7746@defmac REGISTER_TARGET_PRAGMAS () 7747Define this macro if you want to implement any target-specific pragmas. 7748If defined, it is a C expression which makes a series of calls to 7749@code{c_register_pragma} or @code{c_register_pragma_with_expansion} 7750for each pragma. The macro may also do any 7751setup required for the pragmas. 7752 7753The primary reason to define this macro is to provide compatibility with 7754other compilers for the same target. In general, we discourage 7755definition of target-specific pragmas for GCC@. 7756 7757If the pragma can be implemented by attributes then you should consider 7758defining the target hook @samp{TARGET_INSERT_ATTRIBUTES} as well. 7759 7760Preprocessor macros that appear on pragma lines are not expanded. All 7761@samp{#pragma} directives that do not match any registered pragma are 7762silently ignored, unless the user specifies @option{-Wunknown-pragmas}. 7763@end defmac 7764 7765@deftypefun void c_register_pragma (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *)) 7766@deftypefunx void c_register_pragma_with_expansion (const char *@var{space}, const char *@var{name}, void (*@var{callback}) (struct cpp_reader *)) 7767 7768Each call to @code{c_register_pragma} or 7769@code{c_register_pragma_with_expansion} establishes one pragma. The 7770@var{callback} routine will be called when the preprocessor encounters a 7771pragma of the form 7772 7773@smallexample 7774#pragma [@var{space}] @var{name} @dots{} 7775@end smallexample 7776 7777@var{space} is the case-sensitive namespace of the pragma, or 7778@code{NULL} to put the pragma in the global namespace. The callback 7779routine receives @var{pfile} as its first argument, which can be passed 7780on to cpplib's functions if necessary. You can lex tokens after the 7781@var{name} by calling @code{pragma_lex}. Tokens that are not read by the 7782callback will be silently ignored. The end of the line is indicated by 7783a token of type @code{CPP_EOF}. Macro expansion occurs on the 7784arguments of pragmas registered with 7785@code{c_register_pragma_with_expansion} but not on the arguments of 7786pragmas registered with @code{c_register_pragma}. 7787 7788Note that the use of @code{pragma_lex} is specific to the C and C++ 7789compilers. It will not work in the Java or Fortran compilers, or any 7790other language compilers for that matter. Thus if @code{pragma_lex} is going 7791to be called from target-specific code, it must only be done so when 7792building the C and C++ compilers. This can be done by defining the 7793variables @code{c_target_objs} and @code{cxx_target_objs} in the 7794target entry in the @file{config.gcc} file. These variables should name 7795the target-specific, language-specific object file which contains the 7796code that uses @code{pragma_lex}. Note it will also be necessary to add a 7797rule to the makefile fragment pointed to by @code{tmake_file} that shows 7798how to build this object file. 7799@end deftypefun 7800 7801@defmac HANDLE_PRAGMA_PACK_WITH_EXPANSION 7802Define this macro if macros should be expanded in the 7803arguments of @samp{#pragma pack}. 7804@end defmac 7805 7806@defmac TARGET_DEFAULT_PACK_STRUCT 7807If your target requires a structure packing default other than 0 (meaning 7808the machine default), define this macro to the necessary value (in bytes). 7809This must be a value that would also be valid to use with 7810@samp{#pragma pack()} (that is, a small power of two). 7811@end defmac 7812 7813@defmac DOLLARS_IN_IDENTIFIERS 7814Define this macro to control use of the character @samp{$} in 7815identifier names for the C family of languages. 0 means @samp{$} is 7816not allowed by default; 1 means it is allowed. 1 is the default; 7817there is no need to define this macro in that case. 7818@end defmac 7819 7820@defmac INSN_SETS_ARE_DELAYED (@var{insn}) 7821Define this macro as a C expression that is nonzero if it is safe for the 7822delay slot scheduler to place instructions in the delay slot of @var{insn}, 7823even if they appear to use a resource set or clobbered in @var{insn}. 7824@var{insn} is always a @code{jump_insn} or an @code{insn}; GCC knows that 7825every @code{call_insn} has this behavior. On machines where some @code{insn} 7826or @code{jump_insn} is really a function call and hence has this behavior, 7827you should define this macro. 7828 7829You need not define this macro if it would always return zero. 7830@end defmac 7831 7832@defmac INSN_REFERENCES_ARE_DELAYED (@var{insn}) 7833Define this macro as a C expression that is nonzero if it is safe for the 7834delay slot scheduler to place instructions in the delay slot of @var{insn}, 7835even if they appear to set or clobber a resource referenced in @var{insn}. 7836@var{insn} is always a @code{jump_insn} or an @code{insn}. On machines where 7837some @code{insn} or @code{jump_insn} is really a function call and its operands 7838are registers whose use is actually in the subroutine it calls, you should 7839define this macro. Doing so allows the delay slot scheduler to move 7840instructions which copy arguments into the argument registers into the delay 7841slot of @var{insn}. 7842 7843You need not define this macro if it would always return zero. 7844@end defmac 7845 7846@defmac MULTIPLE_SYMBOL_SPACES 7847Define this macro as a C expression that is nonzero if, in some cases, 7848global symbols from one translation unit may not be bound to undefined 7849symbols in another translation unit without user intervention. For 7850instance, under Microsoft Windows symbols must be explicitly imported 7851from shared libraries (DLLs). 7852 7853You need not define this macro if it would always evaluate to zero. 7854@end defmac 7855 7856@hook TARGET_MD_ASM_ADJUST 7857 7858@defmac MATH_LIBRARY 7859Define this macro as a C string constant for the linker argument to link 7860in the system math library, minus the initial @samp{"-l"}, or 7861@samp{""} if the target does not have a 7862separate math library. 7863 7864You need only define this macro if the default of @samp{"m"} is wrong. 7865@end defmac 7866 7867@defmac LIBRARY_PATH_ENV 7868Define this macro as a C string constant for the environment variable that 7869specifies where the linker should look for libraries. 7870 7871You need only define this macro if the default of @samp{"LIBRARY_PATH"} 7872is wrong. 7873@end defmac 7874 7875@defmac TARGET_POSIX_IO 7876Define this macro if the target supports the following POSIX@ file 7877functions, access, mkdir and file locking with fcntl / F_SETLKW@. 7878Defining @code{TARGET_POSIX_IO} will enable the test coverage code 7879to use file locking when exiting a program, which avoids race conditions 7880if the program has forked. It will also create directories at run-time 7881for cross-profiling. 7882@end defmac 7883 7884@defmac MAX_CONDITIONAL_EXECUTE 7885 7886A C expression for the maximum number of instructions to execute via 7887conditional execution instructions instead of a branch. A value of 7888@code{BRANCH_COST}+1 is the default if the machine does not use cc0, and 78891 if it does use cc0. 7890@end defmac 7891 7892@defmac IFCVT_MODIFY_TESTS (@var{ce_info}, @var{true_expr}, @var{false_expr}) 7893Used if the target needs to perform machine-dependent modifications on the 7894conditionals used for turning basic blocks into conditionally executed code. 7895@var{ce_info} points to a data structure, @code{struct ce_if_block}, which 7896contains information about the currently processed blocks. @var{true_expr} 7897and @var{false_expr} are the tests that are used for converting the 7898then-block and the else-block, respectively. Set either @var{true_expr} or 7899@var{false_expr} to a null pointer if the tests cannot be converted. 7900@end defmac 7901 7902@defmac IFCVT_MODIFY_MULTIPLE_TESTS (@var{ce_info}, @var{bb}, @var{true_expr}, @var{false_expr}) 7903Like @code{IFCVT_MODIFY_TESTS}, but used when converting more complicated 7904if-statements into conditions combined by @code{and} and @code{or} operations. 7905@var{bb} contains the basic block that contains the test that is currently 7906being processed and about to be turned into a condition. 7907@end defmac 7908 7909@defmac IFCVT_MODIFY_INSN (@var{ce_info}, @var{pattern}, @var{insn}) 7910A C expression to modify the @var{PATTERN} of an @var{INSN} that is to 7911be converted to conditional execution format. @var{ce_info} points to 7912a data structure, @code{struct ce_if_block}, which contains information 7913about the currently processed blocks. 7914@end defmac 7915 7916@defmac IFCVT_MODIFY_FINAL (@var{ce_info}) 7917A C expression to perform any final machine dependent modifications in 7918converting code to conditional execution. The involved basic blocks 7919can be found in the @code{struct ce_if_block} structure that is pointed 7920to by @var{ce_info}. 7921@end defmac 7922 7923@defmac IFCVT_MODIFY_CANCEL (@var{ce_info}) 7924A C expression to cancel any machine dependent modifications in 7925converting code to conditional execution. The involved basic blocks 7926can be found in the @code{struct ce_if_block} structure that is pointed 7927to by @var{ce_info}. 7928@end defmac 7929 7930@defmac IFCVT_MACHDEP_INIT (@var{ce_info}) 7931A C expression to initialize any machine specific data for if-conversion 7932of the if-block in the @code{struct ce_if_block} structure that is pointed 7933to by @var{ce_info}. 7934@end defmac 7935 7936@hook TARGET_MACHINE_DEPENDENT_REORG 7937 7938@hook TARGET_INIT_BUILTINS 7939 7940@hook TARGET_BUILTIN_DECL 7941 7942@hook TARGET_EXPAND_BUILTIN 7943 7944@hook TARGET_RESOLVE_OVERLOADED_BUILTIN 7945 7946@hook TARGET_CHECK_BUILTIN_CALL 7947 7948@hook TARGET_FOLD_BUILTIN 7949 7950@hook TARGET_GIMPLE_FOLD_BUILTIN 7951 7952@hook TARGET_COMPARE_VERSION_PRIORITY 7953 7954@hook TARGET_GET_FUNCTION_VERSIONS_DISPATCHER 7955 7956@hook TARGET_GENERATE_VERSION_DISPATCHER_BODY 7957 7958@hook TARGET_PREDICT_DOLOOP_P 7959 7960@hook TARGET_HAVE_COUNT_REG_DECR_P 7961 7962@hook TARGET_DOLOOP_COST_FOR_GENERIC 7963 7964@hook TARGET_DOLOOP_COST_FOR_ADDRESS 7965 7966@hook TARGET_CAN_USE_DOLOOP_P 7967 7968@hook TARGET_INVALID_WITHIN_DOLOOP 7969 7970@hook TARGET_LEGITIMATE_COMBINED_INSN 7971 7972@hook TARGET_CAN_FOLLOW_JUMP 7973 7974@hook TARGET_COMMUTATIVE_P 7975 7976@hook TARGET_ALLOCATE_INITIAL_VALUE 7977 7978@hook TARGET_UNSPEC_MAY_TRAP_P 7979 7980@hook TARGET_SET_CURRENT_FUNCTION 7981 7982@defmac TARGET_OBJECT_SUFFIX 7983Define this macro to be a C string representing the suffix for object 7984files on your target machine. If you do not define this macro, GCC will 7985use @samp{.o} as the suffix for object files. 7986@end defmac 7987 7988@defmac TARGET_EXECUTABLE_SUFFIX 7989Define this macro to be a C string representing the suffix to be 7990automatically added to executable files on your target machine. If you 7991do not define this macro, GCC will use the null string as the suffix for 7992executable files. 7993@end defmac 7994 7995@defmac COLLECT_EXPORT_LIST 7996If defined, @code{collect2} will scan the individual object files 7997specified on its command line and create an export list for the linker. 7998Define this macro for systems like AIX, where the linker discards 7999object files that are not referenced from @code{main} and uses export 8000lists. 8001@end defmac 8002 8003@hook TARGET_CANNOT_MODIFY_JUMPS_P 8004 8005@hook TARGET_HAVE_CONDITIONAL_EXECUTION 8006 8007@hook TARGET_GEN_CCMP_FIRST 8008 8009@hook TARGET_GEN_CCMP_NEXT 8010 8011@hook TARGET_LOOP_UNROLL_ADJUST 8012 8013@defmac POWI_MAX_MULTS 8014If defined, this macro is interpreted as a signed integer C expression 8015that specifies the maximum number of floating point multiplications 8016that should be emitted when expanding exponentiation by an integer 8017constant inline. When this value is defined, exponentiation requiring 8018more than this number of multiplications is implemented by calling the 8019system library's @code{pow}, @code{powf} or @code{powl} routines. 8020The default value places no upper bound on the multiplication count. 8021@end defmac 8022 8023@deftypefn Macro void TARGET_EXTRA_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc}) 8024This target hook should register any extra include files for the 8025target. The parameter @var{stdinc} indicates if normal include files 8026are present. The parameter @var{sysroot} is the system root directory. 8027The parameter @var{iprefix} is the prefix for the gcc directory. 8028@end deftypefn 8029 8030@deftypefn Macro void TARGET_EXTRA_PRE_INCLUDES (const char *@var{sysroot}, const char *@var{iprefix}, int @var{stdinc}) 8031This target hook should register any extra include files for the 8032target before any standard headers. The parameter @var{stdinc} 8033indicates if normal include files are present. The parameter 8034@var{sysroot} is the system root directory. The parameter 8035@var{iprefix} is the prefix for the gcc directory. 8036@end deftypefn 8037 8038@deftypefn Macro void TARGET_OPTF (char *@var{path}) 8039This target hook should register special include paths for the target. 8040The parameter @var{path} is the include to register. On Darwin 8041systems, this is used for Framework includes, which have semantics 8042that are different from @option{-I}. 8043@end deftypefn 8044 8045@defmac bool TARGET_USE_LOCAL_THUNK_ALIAS_P (tree @var{fndecl}) 8046This target macro returns @code{true} if it is safe to use a local alias 8047for a virtual function @var{fndecl} when constructing thunks, 8048@code{false} otherwise. By default, the macro returns @code{true} for all 8049functions, if a target supports aliases (i.e.@: defines 8050@code{ASM_OUTPUT_DEF}), @code{false} otherwise, 8051@end defmac 8052 8053@defmac TARGET_FORMAT_TYPES 8054If defined, this macro is the name of a global variable containing 8055target-specific format checking information for the @option{-Wformat} 8056option. The default is to have no target-specific format checks. 8057@end defmac 8058 8059@defmac TARGET_N_FORMAT_TYPES 8060If defined, this macro is the number of entries in 8061@code{TARGET_FORMAT_TYPES}. 8062@end defmac 8063 8064@defmac TARGET_OVERRIDES_FORMAT_ATTRIBUTES 8065If defined, this macro is the name of a global variable containing 8066target-specific format overrides for the @option{-Wformat} option. The 8067default is to have no target-specific format overrides. If defined, 8068@code{TARGET_FORMAT_TYPES} must be defined, too. 8069@end defmac 8070 8071@defmac TARGET_OVERRIDES_FORMAT_ATTRIBUTES_COUNT 8072If defined, this macro specifies the number of entries in 8073@code{TARGET_OVERRIDES_FORMAT_ATTRIBUTES}. 8074@end defmac 8075 8076@defmac TARGET_OVERRIDES_FORMAT_INIT 8077If defined, this macro specifies the optional initialization 8078routine for target specific customizations of the system printf 8079and scanf formatter settings. 8080@end defmac 8081 8082@hook TARGET_INVALID_ARG_FOR_UNPROTOTYPED_FN 8083 8084@hook TARGET_INVALID_CONVERSION 8085 8086@hook TARGET_INVALID_UNARY_OP 8087 8088@hook TARGET_INVALID_BINARY_OP 8089 8090@hook TARGET_PROMOTED_TYPE 8091 8092@hook TARGET_CONVERT_TO_TYPE 8093 8094@hook TARGET_VERIFY_TYPE_CONTEXT 8095 8096@defmac OBJC_JBLEN 8097This macro determines the size of the objective C jump buffer for the 8098NeXT runtime. By default, OBJC_JBLEN is defined to an innocuous value. 8099@end defmac 8100 8101@defmac LIBGCC2_UNWIND_ATTRIBUTE 8102Define this macro if any target-specific attributes need to be attached 8103to the functions in @file{libgcc} that provide low-level support for 8104call stack unwinding. It is used in declarations in @file{unwind-generic.h} 8105and the associated definitions of those functions. 8106@end defmac 8107 8108@hook TARGET_UPDATE_STACK_BOUNDARY 8109 8110@hook TARGET_GET_DRAP_RTX 8111 8112@hook TARGET_ALLOCATE_STACK_SLOTS_FOR_ARGS 8113 8114@hook TARGET_CONST_ANCHOR 8115 8116@hook TARGET_ASAN_SHADOW_OFFSET 8117 8118@hook TARGET_MEMMODEL_CHECK 8119 8120@hook TARGET_ATOMIC_TEST_AND_SET_TRUEVAL 8121 8122@hook TARGET_HAS_IFUNC_P 8123 8124@hook TARGET_ATOMIC_ALIGN_FOR_MODE 8125 8126@hook TARGET_ATOMIC_ASSIGN_EXPAND_FENV 8127 8128@hook TARGET_RECORD_OFFLOAD_SYMBOL 8129 8130@hook TARGET_OFFLOAD_OPTIONS 8131 8132@defmac TARGET_SUPPORTS_WIDE_INT 8133 8134On older ports, large integers are stored in @code{CONST_DOUBLE} rtl 8135objects. Newer ports define @code{TARGET_SUPPORTS_WIDE_INT} to be nonzero 8136to indicate that large integers are stored in 8137@code{CONST_WIDE_INT} rtl objects. The @code{CONST_WIDE_INT} allows 8138very large integer constants to be represented. @code{CONST_DOUBLE} 8139is limited to twice the size of the host's @code{HOST_WIDE_INT} 8140representation. 8141 8142Converting a port mostly requires looking for the places where 8143@code{CONST_DOUBLE}s are used with @code{VOIDmode} and replacing that 8144code with code that accesses @code{CONST_WIDE_INT}s. @samp{"grep -i 8145const_double"} at the port level gets you to 95% of the changes that 8146need to be made. There are a few places that require a deeper look. 8147 8148@itemize @bullet 8149@item 8150There is no equivalent to @code{hval} and @code{lval} for 8151@code{CONST_WIDE_INT}s. This would be difficult to express in the md 8152language since there are a variable number of elements. 8153 8154Most ports only check that @code{hval} is either 0 or -1 to see if the 8155value is small. As mentioned above, this will no longer be necessary 8156since small constants are always @code{CONST_INT}. Of course there 8157are still a few exceptions, the alpha's constraint used by the zap 8158instruction certainly requires careful examination by C code. 8159However, all the current code does is pass the hval and lval to C 8160code, so evolving the c code to look at the @code{CONST_WIDE_INT} is 8161not really a large change. 8162 8163@item 8164Because there is no standard template that ports use to materialize 8165constants, there is likely to be some futzing that is unique to each 8166port in this code. 8167 8168@item 8169The rtx costs may have to be adjusted to properly account for larger 8170constants that are represented as @code{CONST_WIDE_INT}. 8171@end itemize 8172 8173All and all it does not take long to convert ports that the 8174maintainer is familiar with. 8175 8176@end defmac 8177 8178@hook TARGET_HAVE_SPECULATION_SAFE_VALUE 8179 8180@hook TARGET_SPECULATION_SAFE_VALUE 8181 8182@hook TARGET_RUN_TARGET_SELFTESTS 8183