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