LEFT | RIGHT |
1 @c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001, | 1 @c Copyright (C) 1988,1989,1992,1993,1994,1995,1996,1997,1998,1999,2000,2001, |
2 @c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 | 2 @c 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012 |
3 @c Free Software Foundation, Inc. | 3 @c Free Software Foundation, Inc. |
4 @c This is part of the GCC manual. | 4 @c This is part of the GCC manual. |
5 @c For copying conditions, see the file gcc.texi. | 5 @c For copying conditions, see the file gcc.texi. |
6 | 6 |
7 @node Target Macros | 7 @node Target Macros |
8 @chapter Target Description Macros and Functions | 8 @chapter Target Description Macros and Functions |
9 @cindex machine description macros | 9 @cindex machine description macros |
10 @cindex target description macros | 10 @cindex target description macros |
(...skipping 676 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
687 In general, you should use @code{TARGET_HANDLE_OPTION} to handle | 687 In general, you should use @code{TARGET_HANDLE_OPTION} to handle |
688 options. However, if processing an option requires routines that are | 688 options. However, if processing an option requires routines that are |
689 only available in the C (and related language) front ends, then you | 689 only available in the C (and related language) front ends, then you |
690 should use @code{TARGET_HANDLE_C_OPTION} instead. | 690 should use @code{TARGET_HANDLE_C_OPTION} instead. |
691 @end deftypefn | 691 @end deftypefn |
692 | 692 |
693 @deftypefn {C Target Hook} tree TARGET_OBJC_CONSTRUCT_STRING_OBJECT (tree @var{s
tring}) | 693 @deftypefn {C Target Hook} tree TARGET_OBJC_CONSTRUCT_STRING_OBJECT (tree @var{s
tring}) |
694 Targets may provide a string object type that can be used within and between C,
C++ and their respective Objective-C dialects. A string object might, for exampl
e, embed encoding and length information. These objects are considered opaque to
the compiler and handled as references. An ideal implementation makes the compo
sition of the string object match that of the Objective-C @code{NSString} (@code
{NXString} for GNUStep), allowing efficient interworking between C-only and Obje
ctive-C code. If a target implements string objects then this hook should return
a reference to such an object constructed from the normal `C' string representa
tion provided in @var{string}. At present, the hook is used by Objective-C only,
to obtain a common-format string object when the target provides one. | 694 Targets may provide a string object type that can be used within and between C,
C++ and their respective Objective-C dialects. A string object might, for exampl
e, embed encoding and length information. These objects are considered opaque to
the compiler and handled as references. An ideal implementation makes the compo
sition of the string object match that of the Objective-C @code{NSString} (@code
{NXString} for GNUStep), allowing efficient interworking between C-only and Obje
ctive-C code. If a target implements string objects then this hook should return
a reference to such an object constructed from the normal `C' string representa
tion provided in @var{string}. At present, the hook is used by Objective-C only,
to obtain a common-format string object when the target provides one. |
695 @end deftypefn | 695 @end deftypefn |
696 | 696 |
| 697 @deftypefn {C Target Hook} void TARGET_OBJC_DECLARE_UNRESOLVED_CLASS_REFERENCE (
const char *@var{classname}) |
| 698 Declare that Objective C class @var{classname} is referenced by the current TU. |
| 699 @end deftypefn |
| 700 |
| 701 @deftypefn {C Target Hook} void TARGET_OBJC_DECLARE_CLASS_DEFINITION (const char
*@var{classname}) |
| 702 Declare that Objective C class @var{classname} is defined by the current TU. |
| 703 @end deftypefn |
| 704 |
697 @deftypefn {C Target Hook} bool TARGET_STRING_OBJECT_REF_TYPE_P (const_tree @var
{stringref}) | 705 @deftypefn {C Target Hook} bool TARGET_STRING_OBJECT_REF_TYPE_P (const_tree @var
{stringref}) |
698 If a target implements string objects then this hook should return @code{true} i
f @var{stringref} is a valid reference to such an object. | 706 If a target implements string objects then this hook should return @code{true} i
f @var{stringref} is a valid reference to such an object. |
699 @end deftypefn | 707 @end deftypefn |
700 | 708 |
701 @deftypefn {C Target Hook} void TARGET_CHECK_STRING_OBJECT_FORMAT_ARG (tree @var
{format_arg}, tree @var{args_list}) | 709 @deftypefn {C Target Hook} void TARGET_CHECK_STRING_OBJECT_FORMAT_ARG (tree @var
{format_arg}, tree @var{args_list}) |
702 If a target implements string objects then this hook should should provide a fa
cility to check the function arguments in @var{args_list} against the format sp
ecifiers in @var{format_arg} where the type of @var{format_arg} is one recogniz
ed as a valid string reference type. | 710 If a target implements string objects then this hook should should provide a fa
cility to check the function arguments in @var{args_list} against the format sp
ecifiers in @var{format_arg} where the type of @var{format_arg} is one recogniz
ed as a valid string reference type. |
703 @end deftypefn | 711 @end deftypefn |
704 | 712 |
705 @deftypefn {Target Hook} void TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE (void) | 713 @deftypefn {Target Hook} void TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE (void) |
706 This target function is similar to the hook @code{TARGET_OPTION_OVERRIDE} | 714 This target function is similar to the hook @code{TARGET_OPTION_OVERRIDE} |
(...skipping 385 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1092 macro is used instead of that alignment to align the object. | 1100 macro is used instead of that alignment to align the object. |
1093 | 1101 |
1094 If this macro is not defined, then @var{basic-align} is used. | 1102 If this macro is not defined, then @var{basic-align} is used. |
1095 | 1103 |
1096 One use of this macro is to increase alignment of medium-size data to | 1104 One use of this macro is to increase alignment of medium-size data to |
1097 make it all fit in fewer cache lines. | 1105 make it all fit in fewer cache lines. |
1098 | 1106 |
1099 If the value of this macro has a type, it should be an unsigned type. | 1107 If the value of this macro has a type, it should be an unsigned type. |
1100 @end defmac | 1108 @end defmac |
1101 | 1109 |
| 1110 @deftypefn {Target Hook} HOST_WIDE_INT TARGET_VECTOR_ALIGNMENT (const_tree @var{
type}) |
| 1111 This hook can be used to define the alignment for a vector of type |
| 1112 @var{type}, in order to comply with a platform ABI. The default is to |
| 1113 require natural alignment for vector types. The alignment returned by |
| 1114 this hook must be a power-of-two multiple of the default alignment of |
| 1115 the vector element type. |
| 1116 @end deftypefn |
| 1117 |
1102 @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align}) | 1118 @defmac STACK_SLOT_ALIGNMENT (@var{type}, @var{mode}, @var{basic-align}) |
1103 If defined, a C expression to compute the alignment for stack slot. | 1119 If defined, a C expression to compute the alignment for stack slot. |
1104 @var{type} is the data type, @var{mode} is the widest mode available, | 1120 @var{type} is the data type, @var{mode} is the widest mode available, |
1105 and @var{basic-align} is the alignment that the slot would ordinarily | 1121 and @var{basic-align} is the alignment that the slot would ordinarily |
1106 have. The value of this macro is used instead of that alignment to | 1122 have. The value of this macro is used instead of that alignment to |
1107 align the slot. | 1123 align the slot. |
1108 | 1124 |
1109 If this macro is not defined, then @var{basic-align} is used when | 1125 If this macro is not defined, then @var{basic-align} is used when |
1110 @var{type} is @code{NULL}. Otherwise, @code{LOCAL_ALIGNMENT} will | 1126 @var{type} is @code{NULL}. Otherwise, @code{LOCAL_ALIGNMENT} will |
1111 be used. | 1127 be used. |
(...skipping 127 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1239 @end deftypefn | 1255 @end deftypefn |
1240 | 1256 |
1241 @deftypefn {Target Hook} bool TARGET_NARROW_VOLATILE_BITFIELD (void) | 1257 @deftypefn {Target Hook} bool TARGET_NARROW_VOLATILE_BITFIELD (void) |
1242 This target hook should return @code{true} if accesses to volatile bitfields | 1258 This target hook should return @code{true} if accesses to volatile bitfields |
1243 should use the narrowest mode possible. It should return @code{false} if | 1259 should use the narrowest mode possible. It should return @code{false} if |
1244 these accesses should use the bitfield container type. | 1260 these accesses should use the bitfield container type. |
1245 | 1261 |
1246 The default is @code{!TARGET_STRICT_ALIGN}. | 1262 The default is @code{!TARGET_STRICT_ALIGN}. |
1247 @end deftypefn | 1263 @end deftypefn |
1248 | 1264 |
1249 @defmac MEMBER_TYPE_FORCES_BLK (@var{field}, @var{mode}) | 1265 @deftypefn {Target Hook} bool TARGET_MEMBER_TYPE_FORCES_BLK (const_tree @var{fie
ld}, enum machine_mode @var{mode}) |
1250 Return 1 if a structure or array containing @var{field} should be accessed using | 1266 Return true if a structure, union or array containing @var{field} should |
1251 @code{BLKMODE}. | 1267 be accessed using @code{BLKMODE}. |
1252 | 1268 |
1253 If @var{field} is the only field in the structure, @var{mode} is its | 1269 If @var{field} is the only field in the structure, @var{mode} is its |
1254 mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the | 1270 mode, otherwise @var{mode} is VOIDmode. @var{mode} is provided in the |
1255 case where structures of one field would require the structure's mode to | 1271 case where structures of one field would require the structure's mode to |
1256 retain the field's mode. | 1272 retain the field's mode. |
1257 | 1273 |
1258 Normally, this is not needed. | 1274 Normally, this is not needed. |
1259 @end defmac | 1275 @end deftypefn |
1260 | 1276 |
1261 @defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified}) | 1277 @defmac ROUND_TYPE_ALIGN (@var{type}, @var{computed}, @var{specified}) |
1262 Define this macro as an expression for the alignment of a type (given | 1278 Define this macro as an expression for the alignment of a type (given |
1263 by @var{type} as a tree node) if the alignment computed in the usual | 1279 by @var{type} as a tree node) if the alignment computed in the usual |
1264 way is @var{computed} and the alignment explicitly specified was | 1280 way is @var{computed} and the alignment explicitly specified was |
1265 @var{specified}. | 1281 @var{specified}. |
1266 | 1282 |
1267 The default is to use @var{specified} if it is larger; otherwise, use | 1283 The default is to use @var{specified} if it is larger; otherwise, use |
1268 the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT} | 1284 the smaller of @var{computed} and @code{BIGGEST_ALIGNMENT} |
1269 @end defmac | 1285 @end defmac |
(...skipping 357 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1627 | 1643 |
1628 @defmac SIZE_TYPE | 1644 @defmac SIZE_TYPE |
1629 A C expression for a string describing the name of the data type to use | 1645 A C expression for a string describing the name of the data type to use |
1630 for size values. The typedef name @code{size_t} is defined using the | 1646 for size values. The typedef name @code{size_t} is defined using the |
1631 contents of the string. | 1647 contents of the string. |
1632 | 1648 |
1633 The string can contain more than one keyword. If so, separate them with | 1649 The string can contain more than one keyword. If so, separate them with |
1634 spaces, and write first any length keyword, then @code{unsigned} if | 1650 spaces, and write first any length keyword, then @code{unsigned} if |
1635 appropriate, and finally @code{int}. The string must exactly match one | 1651 appropriate, and finally @code{int}. The string must exactly match one |
1636 of the data type names defined in the function | 1652 of the data type names defined in the function |
1637 @code{init_decl_processing} in the file @file{c-decl.c}. You may not | 1653 @code{c_common_nodes_and_builtins} in the file @file{c-family/c-common.c}. |
1638 omit @code{int} or change the order---that would cause the compiler to | 1654 You may not omit @code{int} or change the order---that would cause the |
1639 crash on startup. | 1655 compiler to crash on startup. |
1640 | 1656 |
1641 If you don't define this macro, the default is @code{"long unsigned | 1657 If you don't define this macro, the default is @code{"long unsigned |
1642 int"}. | 1658 int"}. |
1643 @end defmac | 1659 @end defmac |
1644 | 1660 |
1645 @defmac SIZETYPE | 1661 @defmac SIZETYPE |
1646 GCC defines internal types (@code{sizetype}, @code{ssizetype}, | 1662 GCC defines internal types (@code{sizetype}, @code{ssizetype}, |
1647 @code{bitsizetype} and @code{sbitsizetype}) for expressions | 1663 @code{bitsizetype} and @code{sbitsizetype}) for expressions |
1648 dealing with size. This macro is a C expression for a string describing | 1664 dealing with size. This macro is a C expression for a string describing |
1649 the name of the data type from which the precision of @code{sizetype} | 1665 the name of the data type from which the precision of @code{sizetype} |
(...skipping 1761 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
3411 | 3427 |
3412 For proper signal handling in Java this macro is accompanied by | 3428 For proper signal handling in Java this macro is accompanied by |
3413 @code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers. | 3429 @code{MAKE_THROW_FRAME}, defined in @file{libjava/include/*-signal.h} headers. |
3414 @end defmac | 3430 @end defmac |
3415 | 3431 |
3416 @defmac MD_HANDLE_UNWABI (@var{context}, @var{fs}) | 3432 @defmac MD_HANDLE_UNWABI (@var{context}, @var{fs}) |
3417 This macro allows the target to add operating system specific code to the | 3433 This macro allows the target to add operating system specific code to the |
3418 call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive, | 3434 call-frame unwinder to handle the IA-64 @code{.unwabi} unwinding directive, |
3419 usually used for signal or interrupt frames. | 3435 usually used for signal or interrupt frames. |
3420 | 3436 |
3421 This macro is called from @code{uw_update_context} in @file{unwind-ia64.c}. | 3437 This macro is called from @code{uw_update_context} in libgcc's |
3422 @var{context} is an @code{_Unwind_Context}; | 3438 @file{unwind-ia64.c}. @var{context} is an @code{_Unwind_Context}; |
3423 @var{fs} is an @code{_Unwind_FrameState}. Examine @code{fs->unwabi} | 3439 @var{fs} is an @code{_Unwind_FrameState}. Examine @code{fs->unwabi} |
3424 for the abi and context in the @code{.unwabi} directive. If the | 3440 for the abi and context in the @code{.unwabi} directive. If the |
3425 @code{.unwabi} directive can be handled, the register save addresses should | 3441 @code{.unwabi} directive can be handled, the register save addresses should |
3426 be updated in @var{fs}. | 3442 be updated in @var{fs}. |
3427 @end defmac | 3443 @end defmac |
3428 | 3444 |
3429 @defmac TARGET_USES_WEAK_UNWIND_INFO | 3445 @defmac TARGET_USES_WEAK_UNWIND_INFO |
3430 A C expression that evaluates to true if the target requires unwind | 3446 A C expression that evaluates to true if the target requires unwind |
3431 info to be given comdat linkage. Define it to be @code{1} if comdat | 3447 info to be given comdat linkage. Define it to be @code{1} if comdat |
3432 linkage is necessary. The default is @code{0}. | 3448 linkage is necessary. The default is @code{0}. |
(...skipping 1529 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
4962 cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved | 4978 cannot be found by examination of FUNCTION_ARG_REGNO_P, the callee saved |
4963 registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM, | 4979 registers, STATIC_CHAIN_INCOMING_REGNUM, STATIC_CHAIN_REGNUM, |
4964 TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES, | 4980 TARGET_STRUCT_VALUE_RTX, FRAME_POINTER_REGNUM, EH_USES, |
4965 FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM. | 4981 FRAME_POINTER_REGNUM, ARG_POINTER_REGNUM, and the PIC_OFFSET_TABLE_REGNUM. |
4966 @end deftypefn | 4982 @end deftypefn |
4967 | 4983 |
4968 @deftypefn {Target Hook} void TARGET_SET_UP_BY_PROLOGUE (struct hard_reg_set_con
tainer *@var{}) | 4984 @deftypefn {Target Hook} void TARGET_SET_UP_BY_PROLOGUE (struct hard_reg_set_con
tainer *@var{}) |
4969 This hook should add additional registers that are computed by the prologue to t
he hard regset for shrink-wrapping optimization purposes. | 4985 This hook should add additional registers that are computed by the prologue to t
he hard regset for shrink-wrapping optimization purposes. |
4970 @end deftypefn | 4986 @end deftypefn |
4971 | 4987 |
| 4988 @deftypefn {Target Hook} bool TARGET_WARN_FUNC_RETURN (tree) |
| 4989 True if a function's return statements should be checked for matching the functi
on's return type. This includes checking for falling off the end of a non-void
function. Return false if no such check should be made. |
| 4990 @end deftypefn |
| 4991 |
4972 @node Stack Smashing Protection | 4992 @node Stack Smashing Protection |
4973 @subsection Stack smashing protection | 4993 @subsection Stack smashing protection |
4974 @cindex stack smashing protection | 4994 @cindex stack smashing protection |
4975 | 4995 |
4976 @deftypefn {Target Hook} tree TARGET_STACK_PROTECT_GUARD (void) | 4996 @deftypefn {Target Hook} tree TARGET_STACK_PROTECT_GUARD (void) |
4977 This hook returns a @code{DECL} node for the external variable to use | 4997 This hook returns a @code{DECL} node for the external variable to use |
4978 for the stack protection guard. This variable is initialized by the | 4998 for the stack protection guard. This variable is initialized by the |
4979 runtime to some random value and is used to initialize the guard value | 4999 runtime to some random value and is used to initialize the guard value |
4980 that is placed at the top of the local stack frame. The type of this | 5000 that is placed at the top of the local stack frame. The type of this |
4981 variable must be @code{ptr_type_node}. | 5001 variable must be @code{ptr_type_node}. |
4982 | 5002 |
4983 The default version of this hook creates a variable called | 5003 The default version of this hook creates a variable called |
4984 @samp{__stack_chk_guard}, which is normally defined in @file{libgcc2.c}. | 5004 @samp{__stack_chk_guard}, which is normally defined in @file{libgcc2.c}. |
4985 @end deftypefn | 5005 @end deftypefn |
4986 | 5006 |
4987 @deftypefn {Target Hook} tree TARGET_STACK_PROTECT_FAIL (void) | 5007 @deftypefn {Target Hook} tree TARGET_STACK_PROTECT_FAIL (void) |
4988 This hook returns a tree expression that alerts the runtime that the | 5008 This hook returns a @code{CALL_EXPR} that alerts the runtime that the |
4989 stack protect guard variable has been modified. This expression should | 5009 stack protect guard variable has been modified. This expression should |
4990 involve a call to a @code{noreturn} function. | 5010 involve a call to a @code{noreturn} function. |
4991 | 5011 |
4992 The default version of this hook invokes a function called | 5012 The default version of this hook invokes a function called |
4993 @samp{__stack_chk_fail}, taking no arguments. This function is | 5013 @samp{__stack_chk_fail}, taking no arguments. This function is |
4994 normally defined in @file{libgcc2.c}. | 5014 normally defined in @file{libgcc2.c}. |
4995 @end deftypefn | 5015 @end deftypefn |
4996 | 5016 |
4997 @deftypefn {Common Target Hook} bool TARGET_SUPPORTS_SPLIT_STACK (bool @var{repo
rt}, struct gcc_options *@var{opts}) | 5017 @deftypefn {Common Target Hook} bool TARGET_SUPPORTS_SPLIT_STACK (bool @var{repo
rt}, struct gcc_options *@var{opts}) |
4998 Whether this target supports splitting the stack when the options described in @
var{opts} have been passed. This is called after options have been parsed, so t
he target may reject splitting the stack in some configurations. The default ve
rsion of this hook returns false. If @var{report} is true, this function may is
sue a warning or error; if @var{report} is false, it must simply return a value | 5018 Whether this target supports splitting the stack when the options described in @
var{opts} have been passed. This is called after options have been parsed, so t
he target may reject splitting the stack in some configurations. The default ve
rsion of this hook returns false. If @var{report} is true, this function may is
sue a warning or error; if @var{report} is false, it must simply return a value |
(...skipping 523 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5522 | 5542 |
5523 @findex break_out_memory_refs | 5543 @findex break_out_memory_refs |
5524 @var{x} will always be the result of a call to @code{break_out_memory_refs}, | 5544 @var{x} will always be the result of a call to @code{break_out_memory_refs}, |
5525 and @var{oldx} will be the operand that was given to that function to produce | 5545 and @var{oldx} will be the operand that was given to that function to produce |
5526 @var{x}. | 5546 @var{x}. |
5527 | 5547 |
5528 The code of the hook should not alter the substructure of | 5548 The code of the hook should not alter the substructure of |
5529 @var{x}. If it transforms @var{x} into a more legitimate form, it | 5549 @var{x}. If it transforms @var{x} into a more legitimate form, it |
5530 should return the new @var{x}. | 5550 should return the new @var{x}. |
5531 | 5551 |
5532 It is not necessary for this hook to come up with a legitimate address. | 5552 It is not necessary for this hook to come up with a legitimate address, |
5533 The compiler has standard ways of doing so in all cases. In fact, it | 5553 with the exception of native TLS addresses (@pxref{Emulated TLS}). |
| 5554 The compiler has standard ways of doing so in all cases. In fact, if |
| 5555 the target supports only emulated TLS, it |
5534 is safe to omit this hook or make it return @var{x} if it cannot find | 5556 is safe to omit this hook or make it return @var{x} if it cannot find |
5535 a valid way to legitimize the address. But often a machine-dependent | 5557 a valid way to legitimize the address. But often a machine-dependent |
5536 strategy can generate better code. | 5558 strategy can generate better code. |
5537 @end deftypefn | 5559 @end deftypefn |
5538 | 5560 |
5539 @defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type},
@var{ind_levels}, @var{win}) | 5561 @defmac LEGITIMIZE_RELOAD_ADDRESS (@var{x}, @var{mode}, @var{opnum}, @var{type},
@var{ind_levels}, @var{win}) |
5540 A C compound statement that attempts to replace @var{x}, which is an address | 5562 A C compound statement that attempts to replace @var{x}, which is an address |
5541 that needs reloading, with a valid memory address for an operand of mode | 5563 that needs reloading, with a valid memory address for an operand of mode |
5542 @var{mode}. @var{win} will be a C statement label elsewhere in the code. | 5564 @var{mode}. @var{win} will be a C statement label elsewhere in the code. |
5543 It is not necessary to define this macro, but it might be useful for | 5565 It is not necessary to define this macro, but it might be useful for |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5593 | 5615 |
5594 Autoincrement and autodecrement addresses typically have mode-dependent | 5616 Autoincrement and autodecrement addresses typically have mode-dependent |
5595 effects because the amount of the increment or decrement is the size | 5617 effects because the amount of the increment or decrement is the size |
5596 of the operand being addressed. Some machines have other mode-dependent | 5618 of the operand being addressed. Some machines have other mode-dependent |
5597 addresses. Many RISC machines have no mode-dependent addresses. | 5619 addresses. Many RISC machines have no mode-dependent addresses. |
5598 | 5620 |
5599 You may assume that @var{addr} is a valid address for the machine. | 5621 You may assume that @var{addr} is a valid address for the machine. |
5600 | 5622 |
5601 The default version of this hook returns @code{false}. | 5623 The default version of this hook returns @code{false}. |
5602 @end deftypefn | 5624 @end deftypefn |
5603 | |
5604 @defmac GO_IF_MODE_DEPENDENT_ADDRESS (@var{addr}, @var{label}) | |
5605 A C statement or compound statement with a conditional @code{goto | |
5606 @var{label};} executed if memory address @var{x} (an RTX) can have | |
5607 different meanings depending on the machine mode of the memory | |
5608 reference it is used for or if the address is valid for some modes | |
5609 but not others. | |
5610 | |
5611 Autoincrement and autodecrement addresses typically have mode-dependent | |
5612 effects because the amount of the increment or decrement is the size | |
5613 of the operand being addressed. Some machines have other mode-dependent | |
5614 addresses. Many RISC machines have no mode-dependent addresses. | |
5615 | |
5616 You may assume that @var{addr} is a valid address for the machine. | |
5617 | |
5618 These are obsolete macros, replaced by the | |
5619 @code{TARGET_MODE_DEPENDENT_ADDRESS_P} target hook. | |
5620 @end defmac | |
5621 | 5625 |
5622 @deftypefn {Target Hook} bool TARGET_LEGITIMATE_CONSTANT_P (enum machine_mode @v
ar{mode}, rtx @var{x}) | 5626 @deftypefn {Target Hook} bool TARGET_LEGITIMATE_CONSTANT_P (enum machine_mode @v
ar{mode}, rtx @var{x}) |
5623 This hook returns true if @var{x} is a legitimate constant for a | 5627 This hook returns true if @var{x} is a legitimate constant for a |
5624 @var{mode}-mode immediate operand on the target machine. You can assume that | 5628 @var{mode}-mode immediate operand on the target machine. You can assume that |
5625 @var{x} satisfies @code{CONSTANT_P}, so you need not check this. | 5629 @var{x} satisfies @code{CONSTANT_P}, so you need not check this. |
5626 | 5630 |
5627 The default definition returns true. | 5631 The default definition returns true. |
5628 @end deftypefn | 5632 @end deftypefn |
5629 | 5633 |
5630 @deftypefn {Target Hook} rtx TARGET_DELEGITIMIZE_ADDRESS (rtx @var{x}) | 5634 @deftypefn {Target Hook} rtx TARGET_DELEGITIMIZE_ADDRESS (rtx @var{x}) |
(...skipping 65 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5696 to @var{f} (using the DECL tree that this hook returns) and will | 5700 to @var{f} (using the DECL tree that this hook returns) and will |
5697 use the return value of @var{f} as the argument @var{OFF} to | 5701 use the return value of @var{f} as the argument @var{OFF} to |
5698 @code{REALIGN_LOAD}. Therefore, the mask @var{m} returned by @var{f} | 5702 @code{REALIGN_LOAD}. Therefore, the mask @var{m} returned by @var{f} |
5699 should comply with the semantics expected by @code{REALIGN_LOAD} | 5703 should comply with the semantics expected by @code{REALIGN_LOAD} |
5700 described above. | 5704 described above. |
5701 If this hook is not defined, then @var{addr} will be used as | 5705 If this hook is not defined, then @var{addr} will be used as |
5702 the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low | 5706 the argument @var{OFF} to @code{REALIGN_LOAD}, in which case the low |
5703 log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered. | 5707 log2(@var{VS}) @minus{} 1 bits of @var{addr} will be considered. |
5704 @end deftypefn | 5708 @end deftypefn |
5705 | 5709 |
5706 @deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN (tree @var
{x}) | |
5707 This hook should return the DECL of a function @var{f} that implements | |
5708 widening multiplication of the even elements of two input vectors of type @var{x
}. | |
5709 | |
5710 If this hook is defined, the autovectorizer will use it along with the | |
5711 @code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD} target hook when vectorizing | |
5712 widening multiplication in cases that the order of the results does not have to
be | |
5713 preserved (e.g.@: used only by a reduction computation). Otherwise, the | |
5714 @code{widen_mult_hi/lo} idioms will be used. | |
5715 @end deftypefn | |
5716 | |
5717 @deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_ODD (tree @var{
x}) | |
5718 This hook should return the DECL of a function @var{f} that implements | |
5719 widening multiplication of the odd elements of two input vectors of type @var{x}
. | |
5720 | |
5721 If this hook is defined, the autovectorizer will use it along with the | |
5722 @code{TARGET_VECTORIZE_BUILTIN_MUL_WIDEN_EVEN} target hook when vectorizing | |
5723 widening multiplication in cases that the order of the results does not have to
be | |
5724 preserved (e.g.@: used only by a reduction computation). Otherwise, the | |
5725 @code{widen_mult_hi/lo} idioms will be used. | |
5726 @end deftypefn | |
5727 | |
5728 @deftypefn {Target Hook} int TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST (enum v
ect_cost_for_stmt @var{type_of_cost}, tree @var{vectype}, int @var{misalign}) | 5710 @deftypefn {Target Hook} int TARGET_VECTORIZE_BUILTIN_VECTORIZATION_COST (enum v
ect_cost_for_stmt @var{type_of_cost}, tree @var{vectype}, int @var{misalign}) |
5729 Returns cost of different scalar or vector statements for vectorization cost mod
el. | 5711 Returns cost of different scalar or vector statements for vectorization cost mod
el. |
5730 For vector memory operations the cost may depend on type (@var{vectype}) and | 5712 For vector memory operations the cost may depend on type (@var{vectype}) and |
5731 misalignment value (@var{misalign}). | 5713 misalignment value (@var{misalign}). |
5732 @end deftypefn | 5714 @end deftypefn |
5733 | 5715 |
5734 @deftypefn {Target Hook} bool TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE (const
_tree @var{type}, bool @var{is_packed}) | 5716 @deftypefn {Target Hook} bool TARGET_VECTORIZE_VECTOR_ALIGNMENT_REACHABLE (const
_tree @var{type}, bool @var{is_packed}) |
5735 Return true if vector alignment is reachable (by peeling N iterations) for the g
iven type. | 5717 Return true if vector alignment is reachable (by peeling N iterations) for the g
iven type. |
5736 @end deftypefn | 5718 @end deftypefn |
5737 | 5719 |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
5773 mode @var{mode}. The default is | 5755 mode @var{mode}. The default is |
5774 equal to @code{word_mode}, because the vectorizer can do some | 5756 equal to @code{word_mode}, because the vectorizer can do some |
5775 transformations even in absence of specialized @acronym{SIMD} hardware. | 5757 transformations even in absence of specialized @acronym{SIMD} hardware. |
5776 @end deftypefn | 5758 @end deftypefn |
5777 | 5759 |
5778 @deftypefn {Target Hook} {unsigned int} TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SI
ZES (void) | 5760 @deftypefn {Target Hook} {unsigned int} TARGET_VECTORIZE_AUTOVECTORIZE_VECTOR_SI
ZES (void) |
5779 This hook should return a mask of sizes that should be iterated over | 5761 This hook should return a mask of sizes that should be iterated over |
5780 after trying to autovectorize using the vector size derived from the | 5762 after trying to autovectorize using the vector size derived from the |
5781 mode returned by @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE}. | 5763 mode returned by @code{TARGET_VECTORIZE_PREFERRED_SIMD_MODE}. |
5782 The default is zero which means to not iterate over other vector sizes. | 5764 The default is zero which means to not iterate over other vector sizes. |
| 5765 @end deftypefn |
| 5766 |
| 5767 @deftypefn {Target Hook} {void *} TARGET_VECTORIZE_INIT_COST (struct loop *@var{
loop_info}) |
| 5768 This hook should initialize target-specific data structures in preparation for m
odeling the costs of vectorizing a loop or basic block. The default allocates t
hree unsigned integers for accumulating costs for the prologue, body, and epilog
ue of the loop or basic block. If @var{loop_info} is non-NULL, it identifies th
e loop being vectorized; otherwise a single block is being vectorized. |
| 5769 @end deftypefn |
| 5770 |
| 5771 @deftypefn {Target Hook} unsigned TARGET_VECTORIZE_ADD_STMT_COST (void *@var{dat
a}, int @var{count}, enum vect_cost_for_stmt @var{kind}, struct _stmt_vec_info *
@var{stmt_info}, int @var{misalign}, enum vect_cost_model_location @var{where}) |
| 5772 This hook should update the target-specific @var{data} in response to adding @va
r{count} copies of the given @var{kind} of statement to a loop or basic block.
The default adds the builtin vectorizer cost for the copies of the statement to
the accumulator specified by @var{where}, (the prologue, body, or epilogue) and
returns the amount added. The return value should be viewed as a tentative cost
that may later be revised. |
| 5773 @end deftypefn |
| 5774 |
| 5775 @deftypefn {Target Hook} void TARGET_VECTORIZE_FINISH_COST (void *@var{data}, un
signed *@var{prologue_cost}, unsigned *@var{body_cost}, unsigned *@var{epilogue_
cost}) |
| 5776 This hook should complete calculations of the cost of vectorizing a loop or basi
c block based on @var{data}, and return the prologue, body, and epilogue costs a
s unsigned integers. The default returns the value of the three accumulators. |
| 5777 @end deftypefn |
| 5778 |
| 5779 @deftypefn {Target Hook} void TARGET_VECTORIZE_DESTROY_COST_DATA (void *@var{dat
a}) |
| 5780 This hook should release @var{data} and any related data structures allocated by
TARGET_VECTORIZE_INIT_COST. The default releases the accumulator. |
5783 @end deftypefn | 5781 @end deftypefn |
5784 | 5782 |
5785 @deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_TM_LOAD (tree) | 5783 @deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_TM_LOAD (tree) |
5786 This hook should return the built-in decl needed to load a vector of the given t
ype within a transaction. | 5784 This hook should return the built-in decl needed to load a vector of the given t
ype within a transaction. |
5787 @end deftypefn | 5785 @end deftypefn |
5788 | 5786 |
5789 @deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_TM_STORE (tree) | 5787 @deftypefn {Target Hook} tree TARGET_VECTORIZE_BUILTIN_TM_STORE (tree) |
5790 This hook should return the built-in decl needed to store a vector of the given
type within a transaction. | 5788 This hook should return the built-in decl needed to store a vector of the given
type within a transaction. |
5791 @end deftypefn | 5789 @end deftypefn |
5792 | 5790 |
(...skipping 324 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6117 | 6115 |
6118 @node Cond Exec Macros | 6116 @node Cond Exec Macros |
6119 @subsection Macros to control conditional execution | 6117 @subsection Macros to control conditional execution |
6120 @findex conditional execution | 6118 @findex conditional execution |
6121 @findex predication | 6119 @findex predication |
6122 | 6120 |
6123 There is one macro that may need to be defined for targets | 6121 There is one macro that may need to be defined for targets |
6124 supporting conditional execution, independent of how they | 6122 supporting conditional execution, independent of how they |
6125 represent conditional branches. | 6123 represent conditional branches. |
6126 | 6124 |
6127 @defmac REVERSE_CONDEXEC_PREDICATES_P (@var{op1}, @var{op2}) | |
6128 A C expression that returns true if the conditional execution predicate | |
6129 @var{op1}, a comparison operation, is the inverse of @var{op2} and vice | |
6130 versa. Define this to return 0 if the target has conditional execution | |
6131 predicates that cannot be reversed safely. There is no need to validate | |
6132 that the arguments of op1 and op2 are the same, this is done separately. | |
6133 If no expansion is specified, this macro is defined as follows: | |
6134 | |
6135 @smallexample | |
6136 #define REVERSE_CONDEXEC_PREDICATES_P (x, y) \ | |
6137 (GET_CODE ((x)) == reversed_comparison_code ((y), NULL)) | |
6138 @end smallexample | |
6139 @end defmac | |
6140 | |
6141 @node Costs | 6125 @node Costs |
6142 @section Describing Relative Costs of Operations | 6126 @section Describing Relative Costs of Operations |
6143 @cindex costs of instructions | 6127 @cindex costs of instructions |
6144 @cindex relative costs | 6128 @cindex relative costs |
6145 @cindex speed of instructions | 6129 @cindex speed of instructions |
6146 | 6130 |
6147 These macros let you describe the relative speed of various operations | 6131 These macros let you describe the relative speed of various operations |
6148 on the target machine. | 6132 on the target machine. |
6149 | 6133 |
6150 @defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to}) | 6134 @defmac REGISTER_MOVE_COST (@var{mode}, @var{from}, @var{to}) |
(...skipping 260 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
6411 This macro is used to determine whether a store predecrement is a good | 6395 This macro is used to determine whether a store predecrement is a good |
6412 thing to use for a given mode. Defaults to the value of | 6396 thing to use for a given mode. Defaults to the value of |
6413 @code{HAVE_PRE_DECREMENT}. | 6397 @code{HAVE_PRE_DECREMENT}. |
6414 @end defmac | 6398 @end defmac |
6415 | 6399 |
6416 @defmac NO_FUNCTION_CSE | 6400 @defmac NO_FUNCTION_CSE |
6417 Define this macro if it is as good or better to call a constant | 6401 Define this macro if it is as good or better to call a constant |
6418 function address than to call an address kept in a register. | 6402 function address than to call an address kept in a register. |
6419 @end defmac | 6403 @end defmac |
6420 | 6404 |
6421 @defmac RANGE_TEST_NON_SHORT_CIRCUIT | 6405 @defmac LOGICAL_OP_NON_SHORT_CIRCUIT |
6422 Define this macro if a non-short-circuit operation produced by | 6406 Define this macro if a non-short-circuit operation produced by |
6423 @samp{fold_range_test ()} is optimal. This macro defaults to true if | 6407 @samp{fold_range_test ()} is optimal. This macro defaults to true if |
6424 @code{BRANCH_COST} is greater than or equal to the value 2. | 6408 @code{BRANCH_COST} is greater than or equal to the value 2. |
6425 @end defmac | 6409 @end defmac |
6426 | 6410 |
6427 @deftypefn {Target Hook} bool TARGET_RTX_COSTS (rtx @var{x}, int @var{code}, int
@var{outer_code}, int @var{opno}, int *@var{total}, bool @var{speed}) | 6411 @deftypefn {Target Hook} bool TARGET_RTX_COSTS (rtx @var{x}, int @var{code}, int
@var{outer_code}, int @var{opno}, int *@var{total}, bool @var{speed}) |
6428 This target hook describes the relative costs of RTL expressions. | 6412 This target hook describes the relative costs of RTL expressions. |
6429 | 6413 |
6430 The cost may depend on the precise form of the expression, which is | 6414 The cost may depend on the precise form of the expression, which is |
6431 available for examination in @var{x}, and the fact that @var{x} appears | 6415 available for examination in @var{x}, and the fact that @var{x} appears |
(...skipping 951 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
7383 This macro need not be defined if the standard form of output | 7367 This macro need not be defined if the standard form of output |
7384 for the file format in use is appropriate. | 7368 for the file format in use is appropriate. |
7385 @end defmac | 7369 @end defmac |
7386 | 7370 |
7387 @deftypefn {Target Hook} void TARGET_ASM_OUTPUT_SOURCE_FILENAME (FILE *@var{file
}, const char *@var{name}) | 7371 @deftypefn {Target Hook} void TARGET_ASM_OUTPUT_SOURCE_FILENAME (FILE *@var{file
}, const char *@var{name}) |
7388 Output COFF information or DWARF debugging information which indicates that file
name @var{name} is the current source file to the stdio stream @var{file}. | 7372 Output COFF information or DWARF debugging information which indicates that file
name @var{name} is the current source file to the stdio stream @var{file}. |
7389 · | 7373 · |
7390 This target hook need not be defined if the standard form of output for the fil
e format in use is appropriate. | 7374 This target hook need not be defined if the standard form of output for the fil
e format in use is appropriate. |
7391 @end deftypefn | 7375 @end deftypefn |
7392 | 7376 |
| 7377 @deftypefn {Target Hook} void TARGET_ASM_OUTPUT_IDENT (const char *@var{name}) |
| 7378 Output a string based on @var{name}, suitable for the @samp{#ident} directive,
or the equivalent directive or pragma in non-C-family languages. If this hook i
s not defined, nothing is output for the @samp{#ident} directive. |
| 7379 @end deftypefn |
| 7380 |
7393 @defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string}) | 7381 @defmac OUTPUT_QUOTED_STRING (@var{stream}, @var{string}) |
7394 A C statement to output the string @var{string} to the stdio stream | 7382 A C statement to output the string @var{string} to the stdio stream |
7395 @var{stream}. If you do not call the function @code{output_quoted_string} | 7383 @var{stream}. If you do not call the function @code{output_quoted_string} |
7396 in your config files, GCC will only call it to output filenames to | 7384 in your config files, GCC will only call it to output filenames to |
7397 the assembler source. So you can use it to canonicalize the format | 7385 the assembler source. So you can use it to canonicalize the format |
7398 of the filename using this macro. | 7386 of the filename using this macro. |
7399 @end defmac | |
7400 | |
7401 @defmac ASM_OUTPUT_IDENT (@var{stream}, @var{string}) | |
7402 A C statement to output something to the assembler file to handle a | |
7403 @samp{#ident} directive containing the text @var{string}. If this | |
7404 macro is not defined, nothing is output for a @samp{#ident} directive. | |
7405 @end defmac | 7387 @end defmac |
7406 | 7388 |
7407 @deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name},
unsigned int @var{flags}, tree @var{decl}) | 7389 @deftypefn {Target Hook} void TARGET_ASM_NAMED_SECTION (const char *@var{name},
unsigned int @var{flags}, tree @var{decl}) |
7408 Output assembly directives to switch to section @var{name}. The section | 7390 Output assembly directives to switch to section @var{name}. The section |
7409 should have attributes as specified by @var{flags}, which is a bit mask | 7391 should have attributes as specified by @var{flags}, which is a bit mask |
7410 of the @code{SECTION_*} flags defined in @file{output.h}. If @var{decl} | 7392 of the @code{SECTION_*} flags defined in @file{output.h}. If @var{decl} |
7411 is non-NULL, it is the @code{VAR_DECL} or @code{FUNCTION_DECL} with which | 7393 is non-NULL, it is the @code{VAR_DECL} or @code{FUNCTION_DECL} with which |
7412 this section is associated. | 7394 this section is associated. |
7413 @end deftypefn | 7395 @end deftypefn |
7414 | 7396 |
(...skipping 834 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8249 | 8231 |
8250 The argument @var{is_inst} specifies whether the method is an instance | 8232 The argument @var{is_inst} specifies whether the method is an instance |
8251 method or a class method; @var{class_name} is the name of the class; | 8233 method or a class method; @var{class_name} is the name of the class; |
8252 @var{cat_name} is the name of the category (or @code{NULL} if the method is not | 8234 @var{cat_name} is the name of the category (or @code{NULL} if the method is not |
8253 in a category); and @var{sel_name} is the name of the selector. | 8235 in a category); and @var{sel_name} is the name of the selector. |
8254 | 8236 |
8255 On systems where the assembler can handle quoted names, you can use this | 8237 On systems where the assembler can handle quoted names, you can use this |
8256 macro to provide more human-readable names. | 8238 macro to provide more human-readable names. |
8257 @end defmac | 8239 @end defmac |
8258 | 8240 |
8259 @defmac ASM_DECLARE_CLASS_REFERENCE (@var{stream}, @var{name}) | |
8260 A C statement (sans semicolon) to output to the stdio stream | |
8261 @var{stream} commands to declare that the label @var{name} is an | |
8262 Objective-C class reference. This is only needed for targets whose | |
8263 linkers have special support for NeXT-style runtimes. | |
8264 @end defmac | |
8265 | |
8266 @defmac ASM_DECLARE_UNRESOLVED_REFERENCE (@var{stream}, @var{name}) | |
8267 A C statement (sans semicolon) to output to the stdio stream | |
8268 @var{stream} commands to declare that the label @var{name} is an | |
8269 unresolved Objective-C class reference. This is only needed for targets | |
8270 whose linkers have special support for NeXT-style runtimes. | |
8271 @end defmac | |
8272 | |
8273 @node Initialization | 8241 @node Initialization |
8274 @subsection How Initialization Functions Are Handled | 8242 @subsection How Initialization Functions Are Handled |
8275 @cindex initialization routines | 8243 @cindex initialization routines |
8276 @cindex termination routines | 8244 @cindex termination routines |
8277 @cindex constructors, output of | 8245 @cindex constructors, output of |
8278 @cindex destructors, output of | 8246 @cindex destructors, output of |
8279 | 8247 |
8280 The compiled code for certain languages includes @dfn{constructors} | 8248 The compiled code for certain languages includes @dfn{constructors} |
8281 (also called @dfn{initialization routines})---functions to initialize | 8249 (also called @dfn{initialization routines})---functions to initialize |
8282 data in the program when the program is started. These functions need | 8250 data in the program when the program is started. These functions need |
(...skipping 635 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
8918 | 8886 |
8919 @defmac MASK_RETURN_ADDR | 8887 @defmac MASK_RETURN_ADDR |
8920 An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so | 8888 An rtx used to mask the return address found via @code{RETURN_ADDR_RTX}, so |
8921 that it does not contain any extraneous set bits in it. | 8889 that it does not contain any extraneous set bits in it. |
8922 @end defmac | 8890 @end defmac |
8923 | 8891 |
8924 @defmac DWARF2_UNWIND_INFO | 8892 @defmac DWARF2_UNWIND_INFO |
8925 Define this macro to 0 if your target supports DWARF 2 frame unwind | 8893 Define this macro to 0 if your target supports DWARF 2 frame unwind |
8926 information, but it does not yet work with exception handling. | 8894 information, but it does not yet work with exception handling. |
8927 Otherwise, if your target supports this information (if it defines | 8895 Otherwise, if your target supports this information (if it defines |
8928 @code{INCOMING_RETURN_ADDR_RTX} and either @code{UNALIGNED_INT_ASM_OP} | 8896 @code{INCOMING_RETURN_ADDR_RTX} and @code{OBJECT_FORMAT_ELF}), |
8929 or @code{OBJECT_FORMAT_ELF}), GCC will provide a default definition of 1. | 8897 GCC will provide a default definition of 1. |
8930 @end defmac | 8898 @end defmac |
8931 | 8899 |
8932 @deftypefn {Common Target Hook} {enum unwind_info_type} TARGET_EXCEPT_UNWIND_INF
O (struct gcc_options *@var{opts}) | 8900 @deftypefn {Common Target Hook} {enum unwind_info_type} TARGET_EXCEPT_UNWIND_INF
O (struct gcc_options *@var{opts}) |
8933 This hook defines the mechanism that will be used for exception handling | 8901 This hook defines the mechanism that will be used for exception handling |
8934 by the target. If the target has ABI specified unwind tables, the hook | 8902 by the target. If the target has ABI specified unwind tables, the hook |
8935 should return @code{UI_TARGET}. If the target is to use the | 8903 should return @code{UI_TARGET}. If the target is to use the |
8936 @code{setjmp}/@code{longjmp}-based exception handling scheme, the hook | 8904 @code{setjmp}/@code{longjmp}-based exception handling scheme, the hook |
8937 should return @code{UI_SJLJ}. If the target supports DWARF 2 frame unwind | 8905 should return @code{UI_SJLJ}. If the target supports DWARF 2 frame unwind |
8938 information, the hook should return @code{UI_DWARF2}. | 8906 information, the hook should return @code{UI_DWARF2}. |
8939 | 8907 |
(...skipping 18 matching lines...) Expand all Loading... |
8958 @deftypevr {Common Target Hook} bool TARGET_UNWIND_TABLES_DEFAULT | 8926 @deftypevr {Common Target Hook} bool TARGET_UNWIND_TABLES_DEFAULT |
8959 This variable should be set to @code{true} if the target ABI requires unwinding | 8927 This variable should be set to @code{true} if the target ABI requires unwinding |
8960 tables even when exceptions are not used. It must not be modified by | 8928 tables even when exceptions are not used. It must not be modified by |
8961 command-line option processing. | 8929 command-line option processing. |
8962 @end deftypevr | 8930 @end deftypevr |
8963 | 8931 |
8964 @defmac DONT_USE_BUILTIN_SETJMP | 8932 @defmac DONT_USE_BUILTIN_SETJMP |
8965 Define this macro to 1 if the @code{setjmp}/@code{longjmp}-based scheme | 8933 Define this macro to 1 if the @code{setjmp}/@code{longjmp}-based scheme |
8966 should use the @code{setjmp}/@code{longjmp} functions from the C library | 8934 should use the @code{setjmp}/@code{longjmp} functions from the C library |
8967 instead of the @code{__builtin_setjmp}/@code{__builtin_longjmp} machinery. | 8935 instead of the @code{__builtin_setjmp}/@code{__builtin_longjmp} machinery. |
| 8936 @end defmac |
| 8937 |
| 8938 @defmac JMP_BUF_SIZE |
| 8939 This macro has no effect unless @code{DONT_USE_BUILTIN_SETJMP} is also |
| 8940 defined. Define this macro if the default size of @code{jmp_buf} buffer |
| 8941 for the @code{setjmp}/@code{longjmp}-based exception handling mechanism |
| 8942 is not large enough, or if it is much too large. |
| 8943 The default size is @code{FIRST_PSEUDO_REGISTER * sizeof(void *)}. |
8968 @end defmac | 8944 @end defmac |
8969 | 8945 |
8970 @defmac DWARF_CIE_DATA_ALIGNMENT | 8946 @defmac DWARF_CIE_DATA_ALIGNMENT |
8971 This macro need only be defined if the target might save registers in the | 8947 This macro need only be defined if the target might save registers in the |
8972 function prologue at an offset to the stack pointer that is not aligned to | 8948 function prologue at an offset to the stack pointer that is not aligned to |
8973 @code{UNITS_PER_WORD}. The definition should be the negative minimum | 8949 @code{UNITS_PER_WORD}. The definition should be the negative minimum |
8974 alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive | 8950 alignment if @code{STACK_GROWS_DOWNWARD} is defined, and the positive |
8975 minimum alignment otherwise. @xref{SDB and DWARF}. Only applicable if | 8951 minimum alignment otherwise. @xref{SDB and DWARF}. Only applicable if |
8976 the target supports DWARF 2 frame unwind information. | 8952 the target supports DWARF 2 frame unwind information. |
8977 @end defmac | 8953 @end defmac |
(...skipping 358 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9336 generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single | 9312 generate @code{N_BINCL} or @code{N_EINCL} stabs, and it outputs a single |
9337 number for a type number. | 9313 number for a type number. |
9338 @end defmac | 9314 @end defmac |
9339 | 9315 |
9340 @node DBX Hooks | 9316 @node DBX Hooks |
9341 @subsection Open-Ended Hooks for DBX Format | 9317 @subsection Open-Ended Hooks for DBX Format |
9342 | 9318 |
9343 @c prevent bad page break with this line | 9319 @c prevent bad page break with this line |
9344 These are hooks for DBX format. | 9320 These are hooks for DBX format. |
9345 | 9321 |
9346 @defmac DBX_OUTPUT_LBRAC (@var{stream}, @var{name}) | |
9347 Define this macro to say how to output to @var{stream} the debugging | |
9348 information for the start of a scope level for variable names. The | |
9349 argument @var{name} is the name of an assembler symbol (for use with | |
9350 @code{assemble_name}) whose value is the address where the scope begins. | |
9351 @end defmac | |
9352 | |
9353 @defmac DBX_OUTPUT_RBRAC (@var{stream}, @var{name}) | |
9354 Like @code{DBX_OUTPUT_LBRAC}, but for the end of a scope level. | |
9355 @end defmac | |
9356 | |
9357 @defmac DBX_OUTPUT_NFUN (@var{stream}, @var{lscope_label}, @var{decl}) | |
9358 Define this macro if the target machine requires special handling to | |
9359 output an @code{N_FUN} entry for the function @var{decl}. | |
9360 @end defmac | |
9361 | |
9362 @defmac DBX_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter}) | 9322 @defmac DBX_OUTPUT_SOURCE_LINE (@var{stream}, @var{line}, @var{counter}) |
9363 A C statement to output DBX debugging information before code for line | 9323 A C statement to output DBX debugging information before code for line |
9364 number @var{line} of the current source file to the stdio stream | 9324 number @var{line} of the current source file to the stdio stream |
9365 @var{stream}. @var{counter} is the number of time the macro was | 9325 @var{stream}. @var{counter} is the number of time the macro was |
9366 invoked, including the current invocation; it is intended to generate | 9326 invoked, including the current invocation; it is intended to generate |
9367 unique labels in the assembly output. | 9327 unique labels in the assembly output. |
9368 | 9328 |
9369 This macro should not be defined if the default output is correct, or | 9329 This macro should not be defined if the default output is correct, or |
9370 if it can be made correct by defining @code{DBX_LINES_FUNCTION_RELATIVE}. | 9330 if it can be made correct by defining @code{DBX_LINES_FUNCTION_RELATIVE}. |
9371 @end defmac | 9331 @end defmac |
(...skipping 112 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9484 @end deftypefn | 9444 @end deftypefn |
9485 | 9445 |
9486 @defmac DWARF2_ASM_LINE_DEBUG_INFO | 9446 @defmac DWARF2_ASM_LINE_DEBUG_INFO |
9487 Define this macro to be a nonzero value if the assembler can generate Dwarf 2 | 9447 Define this macro to be a nonzero value if the assembler can generate Dwarf 2 |
9488 line debug info sections. This will result in much more compact line number | 9448 line debug info sections. This will result in much more compact line number |
9489 tables, and hence is desirable if it works. | 9449 tables, and hence is desirable if it works. |
9490 @end defmac | 9450 @end defmac |
9491 | 9451 |
9492 @deftypevr {Target Hook} bool TARGET_WANT_DEBUG_PUB_SECTIONS | 9452 @deftypevr {Target Hook} bool TARGET_WANT_DEBUG_PUB_SECTIONS |
9493 True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections should be
emitted. These sections are not used on most platforms, and in particular GDB
does not use them. | 9453 True if the @code{.debug_pubtypes} and @code{.debug_pubnames} sections should be
emitted. These sections are not used on most platforms, and in particular GDB
does not use them. |
| 9454 @end deftypevr |
| 9455 |
| 9456 @deftypevr {Target Hook} bool TARGET_FORCE_AT_COMP_DIR |
| 9457 True if the @code{DW_AT_comp_dir} attribute should be emitted for each compilat
ion unit. This attribute is required for the darwin linker to emit debug infor
mation. |
9494 @end deftypevr | 9458 @end deftypevr |
9495 | 9459 |
9496 @deftypevr {Target Hook} bool TARGET_DELAY_SCHED2 | 9460 @deftypevr {Target Hook} bool TARGET_DELAY_SCHED2 |
9497 True if sched2 is not to be run at its normal place. This usually means it will
be run as part of machine-specific reorg. | 9461 True if sched2 is not to be run at its normal place. This usually means it will
be run as part of machine-specific reorg. |
9498 @end deftypevr | 9462 @end deftypevr |
9499 | 9463 |
9500 @deftypevr {Target Hook} bool TARGET_DELAY_VARTRACK | 9464 @deftypevr {Target Hook} bool TARGET_DELAY_VARTRACK |
9501 True if vartrack is not to be run at its normal place. This usually means it wi
ll be run as part of machine-specific reorg. | 9465 True if vartrack is not to be run at its normal place. This usually means it wi
ll be run as part of machine-specific reorg. |
9502 @end deftypevr | 9466 @end deftypevr |
9503 | 9467 |
(...skipping 165 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9669 @code{abort}. Callers should check for this situation first, using | 9633 @code{abort}. Callers should check for this situation first, using |
9670 @code{MODE_HAS_INFINITIES}. @xref{Storage Layout}. | 9634 @code{MODE_HAS_INFINITIES}. @xref{Storage Layout}. |
9671 @end deftypefn | 9635 @end deftypefn |
9672 | 9636 |
9673 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x}) | 9637 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_NEGATE (REAL_VALUE_TYPE @var{x}) |
9674 Returns the negative of the floating point value @var{x}. | 9638 Returns the negative of the floating point value @var{x}. |
9675 @end deftypefn | 9639 @end deftypefn |
9676 | 9640 |
9677 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x}) | 9641 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_ABS (REAL_VALUE_TYPE @var{x}) |
9678 Returns the absolute value of @var{x}. | 9642 Returns the absolute value of @var{x}. |
9679 @end deftypefn | |
9680 | |
9681 @deftypefn Macro REAL_VALUE_TYPE REAL_VALUE_TRUNCATE (REAL_VALUE_TYPE @var{mode}
, enum machine_mode @var{x}) | |
9682 Truncates the floating point value @var{x} to fit in @var{mode}. The | |
9683 return value is still a full-size @code{REAL_VALUE_TYPE}, but it has an | |
9684 appropriate bit pattern to be output as a floating constant whose | |
9685 precision accords with mode @var{mode}. | |
9686 @end deftypefn | 9643 @end deftypefn |
9687 | 9644 |
9688 @deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT
@var{high}, REAL_VALUE_TYPE @var{x}) | 9645 @deftypefn Macro void REAL_VALUE_TO_INT (HOST_WIDE_INT @var{low}, HOST_WIDE_INT
@var{high}, REAL_VALUE_TYPE @var{x}) |
9689 Converts a floating point value @var{x} into a double-precision integer | 9646 Converts a floating point value @var{x} into a double-precision integer |
9690 which is then stored into @var{low} and @var{high}. If the value is not | 9647 which is then stored into @var{low} and @var{high}. If the value is not |
9691 integral, it is truncated. | 9648 integral, it is truncated. |
9692 @end deftypefn | 9649 @end deftypefn |
9693 | 9650 |
9694 @deftypefn Macro void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE @var{x}, HOST_WIDE_IN
T @var{low}, HOST_WIDE_INT @var{high}, enum machine_mode @var{mode}) | 9651 @deftypefn Macro void REAL_VALUE_FROM_INT (REAL_VALUE_TYPE @var{x}, HOST_WIDE_IN
T @var{low}, HOST_WIDE_INT @var{high}, enum machine_mode @var{mode}) |
9695 Converts a double-precision integer found in @var{low} and @var{high}, | 9652 Converts a double-precision integer found in @var{low} and @var{high}, |
(...skipping 42 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9738 @end defmac | 9695 @end defmac |
9739 | 9696 |
9740 @defmac MODE_NEEDED (@var{entity}, @var{insn}) | 9697 @defmac MODE_NEEDED (@var{entity}, @var{insn}) |
9741 @var{entity} is an integer specifying a mode-switched entity. If | 9698 @var{entity} is an integer specifying a mode-switched entity. If |
9742 @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to | 9699 @code{OPTIMIZE_MODE_SWITCHING} is defined, you must define this macro to |
9743 return an integer value not larger than the corresponding element in | 9700 return an integer value not larger than the corresponding element in |
9744 @code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must | 9701 @code{NUM_MODES_FOR_MODE_SWITCHING}, to denote the mode that @var{entity} must |
9745 be switched into prior to the execution of @var{insn}. | 9702 be switched into prior to the execution of @var{insn}. |
9746 @end defmac | 9703 @end defmac |
9747 | 9704 |
9748 @defmac MODE_AFTER (@var{mode}, @var{insn}) | 9705 @defmac MODE_AFTER (@var{entity}, @var{mode}, @var{insn}) |
9749 If this macro is defined, it is evaluated for every @var{insn} during | 9706 @var{entity} is an integer specifying a mode-switched entity. If |
| 9707 this macro is defined, it is evaluated for every @var{insn} during |
9750 mode switching. It determines the mode that an insn results in (if | 9708 mode switching. It determines the mode that an insn results in (if |
9751 different from the incoming mode). | 9709 different from the incoming mode). |
9752 @end defmac | 9710 @end defmac |
9753 | 9711 |
9754 @defmac MODE_ENTRY (@var{entity}) | 9712 @defmac MODE_ENTRY (@var{entity}) |
9755 If this macro is defined, it is evaluated for every @var{entity} that needs | 9713 If this macro is defined, it is evaluated for every @var{entity} that needs |
9756 mode switching. It should evaluate to an integer, which is a mode that | 9714 mode switching. It should evaluate to an integer, which is a mode that |
9757 @var{entity} is assumed to be switched to at function entry. If @code{MODE_ENTR
Y} | 9715 @var{entity} is assumed to be switched to at function entry. If @code{MODE_ENTR
Y} |
9758 is defined then @code{MODE_EXIT} must be defined. | 9716 is defined then @code{MODE_EXIT} must be defined. |
9759 @end defmac | 9717 @end defmac |
(...skipping 169 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
9929 once just after all the command options have been parsed. | 9887 once just after all the command options have been parsed. |
9930 | 9888 |
9931 Don't use this hook to turn on various extra optimizations for | 9889 Don't use this hook to turn on various extra optimizations for |
9932 @option{-O}. That is what @code{TARGET_OPTION_OPTIMIZATION} is for. | 9890 @option{-O}. That is what @code{TARGET_OPTION_OPTIMIZATION} is for. |
9933 | 9891 |
9934 If you need to do something whenever the optimization level is | 9892 If you need to do something whenever the optimization level is |
9935 changed via the optimize attribute or pragma, see | 9893 changed via the optimize attribute or pragma, see |
9936 @code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE} | 9894 @code{TARGET_OVERRIDE_OPTIONS_AFTER_CHANGE} |
9937 @end deftypefn | 9895 @end deftypefn |
9938 | 9896 |
| 9897 @deftypefn {Target Hook} bool TARGET_OPTION_FUNCTION_VERSIONS (tree @var{decl1},
tree @var{decl2}) |
| 9898 This target hook returns @code{true} if @var{FN1} and @var{FN2} are |
| 9899 versions of the same function. |
| 9900 @end deftypefn |
| 9901 |
9939 @deftypefn {Target Hook} bool TARGET_CAN_INLINE_P (tree @var{caller}, tree @var{
callee}) | 9902 @deftypefn {Target Hook} bool TARGET_CAN_INLINE_P (tree @var{caller}, tree @var{
callee}) |
9940 This target hook returns @code{false} if the @var{caller} function | 9903 This target hook returns @code{false} if the @var{caller} function |
9941 cannot inline @var{callee}, based on target specific information. By | 9904 cannot inline @var{callee}, based on target specific information. By |
9942 default, inlining is not allowed if the callee function has function | 9905 default, inlining is not allowed if the callee function has function |
9943 specific target options and the caller does not use the same options. | 9906 specific target options and the caller does not use the same options. |
9944 @end deftypefn | 9907 @end deftypefn |
9945 | 9908 |
9946 @node Emulated TLS | 9909 @node Emulated TLS |
9947 @section Emulating TLS | 9910 @section Emulating TLS |
9948 @cindex Emulated TLS | 9911 @cindex Emulated TLS |
(...skipping 95 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10044 Coprocessor registers are assumed to be epilogue-used; sets to them will | 10007 Coprocessor registers are assumed to be epilogue-used; sets to them will |
10045 be preserved even if it does not appear that the register is used again | 10008 be preserved even if it does not appear that the register is used again |
10046 later in the function. | 10009 later in the function. |
10047 | 10010 |
10048 Another note: according to the MIPS spec, coprocessor 1 (if present) is | 10011 Another note: according to the MIPS spec, coprocessor 1 (if present) is |
10049 the FPU@. One accesses COP1 registers through standard mips | 10012 the FPU@. One accesses COP1 registers through standard mips |
10050 floating-point support; they are not included in this mechanism. | 10013 floating-point support; they are not included in this mechanism. |
10051 | 10014 |
10052 There is one macro used in defining the MIPS coprocessor interface which | 10015 There is one macro used in defining the MIPS coprocessor interface which |
10053 you may want to override in subtargets; it is described below. | 10016 you may want to override in subtargets; it is described below. |
10054 | |
10055 @defmac ALL_COP_ADDITIONAL_REGISTER_NAMES | |
10056 A comma-separated list (with leading comma) of pairs describing the | |
10057 alternate names of coprocessor registers. The format of each entry should be | |
10058 @smallexample | |
10059 @{ @var{alternatename}, @var{register_number}@} | |
10060 @end smallexample | |
10061 Default: empty. | |
10062 @end defmac | |
10063 | 10017 |
10064 @node PCH Target | 10018 @node PCH Target |
10065 @section Parameters for Precompiled Header Validity Checking | 10019 @section Parameters for Precompiled Header Validity Checking |
10066 @cindex parameters, precompiled headers | 10020 @cindex parameters, precompiled headers |
10067 | 10021 |
10068 @deftypefn {Target Hook} {void *} TARGET_GET_PCH_VALIDITY (size_t *@var{sz}) | 10022 @deftypefn {Target Hook} {void *} TARGET_GET_PCH_VALIDITY (size_t *@var{sz}) |
10069 This hook returns a pointer to the data needed by | 10023 This hook returns a pointer to the data needed by |
10070 @code{TARGET_PCH_VALID_P} and sets | 10024 @code{TARGET_PCH_VALID_P} and sets |
10071 @samp{*@var{sz}} to the size of the data in bytes. | 10025 @samp{*@var{sz}} to the size of the data in bytes. |
10072 @end deftypefn | 10026 @end deftypefn |
(...skipping 266 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10339 is in effect. | 10293 is in effect. |
10340 @end defmac | 10294 @end defmac |
10341 | 10295 |
10342 @deftypefn {Target Hook} {unsigned int} TARGET_CASE_VALUES_THRESHOLD (void) | 10296 @deftypefn {Target Hook} {unsigned int} TARGET_CASE_VALUES_THRESHOLD (void) |
10343 This function return the smallest number of different values for which it | 10297 This function return the smallest number of different values for which it |
10344 is best to use a jump-table instead of a tree of conditional branches. | 10298 is best to use a jump-table instead of a tree of conditional branches. |
10345 The default is four for machines with a @code{casesi} instruction and | 10299 The default is four for machines with a @code{casesi} instruction and |
10346 five otherwise. This is best for most machines. | 10300 five otherwise. This is best for most machines. |
10347 @end deftypefn | 10301 @end deftypefn |
10348 | 10302 |
10349 @defmac CASE_USE_BIT_TESTS | |
10350 Define this macro to be a C expression to indicate whether C switch | |
10351 statements may be implemented by a sequence of bit tests. This is | |
10352 advantageous on processors that can efficiently implement left shift | |
10353 of 1 by the number of bits held in a register, but inappropriate on | |
10354 targets that would require a loop. By default, this macro returns | |
10355 @code{true} if the target defines an @code{ashlsi3} pattern, and | |
10356 @code{false} otherwise. | |
10357 @end defmac | |
10358 | |
10359 @defmac WORD_REGISTER_OPERATIONS | 10303 @defmac WORD_REGISTER_OPERATIONS |
10360 Define this macro if operations between registers with integral mode | 10304 Define this macro if operations between registers with integral mode |
10361 smaller than a word are always performed on the entire register. | 10305 smaller than a word are always performed on the entire register. |
10362 Most RISC machines have this property and most CISC machines do not. | 10306 Most RISC machines have this property and most CISC machines do not. |
10363 @end defmac | 10307 @end defmac |
10364 | 10308 |
10365 @defmac LOAD_EXTEND_OP (@var{mem_mode}) | 10309 @defmac LOAD_EXTEND_OP (@var{mem_mode}) |
10366 Define this macro to be a C expression indicating when insns that read | 10310 Define this macro to be a C expression indicating when insns that read |
10367 memory in @var{mem_mode}, an integral mode narrower than a word, set the | 10311 memory in @var{mem_mode}, an integral mode narrower than a word, set the |
10368 bits outside of @var{mem_mode} to be either the sign-extension or the | 10312 bits outside of @var{mem_mode} to be either the sign-extension or the |
(...skipping 16 matching lines...) Expand all Loading... |
10385 | 10329 |
10386 You must return @code{UNKNOWN} if for some hard registers that allow this | 10330 You must return @code{UNKNOWN} if for some hard registers that allow this |
10387 mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to | 10331 mode, @code{CANNOT_CHANGE_MODE_CLASS} says that they cannot change to |
10388 @code{word_mode}, but that they can change to another integral mode that | 10332 @code{word_mode}, but that they can change to another integral mode that |
10389 is larger then @var{mem_mode} but still smaller than @code{word_mode}. | 10333 is larger then @var{mem_mode} but still smaller than @code{word_mode}. |
10390 @end defmac | 10334 @end defmac |
10391 | 10335 |
10392 @defmac SHORT_IMMEDIATES_SIGN_EXTEND | 10336 @defmac SHORT_IMMEDIATES_SIGN_EXTEND |
10393 Define this macro if loading short immediate values into registers sign | 10337 Define this macro if loading short immediate values into registers sign |
10394 extends. | 10338 extends. |
10395 @end defmac | |
10396 | |
10397 @defmac FIXUNS_TRUNC_LIKE_FIX_TRUNC | |
10398 Define this macro if the same instructions that convert a floating | |
10399 point number to a signed fixed point number also convert validly to an | |
10400 unsigned one. | |
10401 @end defmac | 10339 @end defmac |
10402 | 10340 |
10403 @deftypefn {Target Hook} {unsigned int} TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum
machine_mode @var{mode}) | 10341 @deftypefn {Target Hook} {unsigned int} TARGET_MIN_DIVISIONS_FOR_RECIP_MUL (enum
machine_mode @var{mode}) |
10404 When @option{-ffast-math} is in effect, GCC tries to optimize | 10342 When @option{-ffast-math} is in effect, GCC tries to optimize |
10405 divisions by the same divisor, by turning them into multiplications by | 10343 divisions by the same divisor, by turning them into multiplications by |
10406 the reciprocal. This target hook specifies the minimum number of divisions | 10344 the reciprocal. This target hook specifies the minimum number of divisions |
10407 that should be there for GCC to perform the optimization for a variable | 10345 that should be there for GCC to perform the optimization for a variable |
10408 of mode @var{mode}. The default implementation returns 3 if the machine | 10346 of mode @var{mode}. The default implementation returns 3 if the machine |
10409 has an instruction for the division, and 2 if it does not. | 10347 has an instruction for the division, and 2 if it does not. |
10410 @end deftypefn | 10348 @end deftypefn |
(...skipping 493 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10904 to by @var{ce_info}. | 10842 to by @var{ce_info}. |
10905 @end defmac | 10843 @end defmac |
10906 | 10844 |
10907 @defmac IFCVT_MODIFY_CANCEL (@var{ce_info}) | 10845 @defmac IFCVT_MODIFY_CANCEL (@var{ce_info}) |
10908 A C expression to cancel any machine dependent modifications in | 10846 A C expression to cancel any machine dependent modifications in |
10909 converting code to conditional execution. The involved basic blocks | 10847 converting code to conditional execution. The involved basic blocks |
10910 can be found in the @code{struct ce_if_block} structure that is pointed | 10848 can be found in the @code{struct ce_if_block} structure that is pointed |
10911 to by @var{ce_info}. | 10849 to by @var{ce_info}. |
10912 @end defmac | 10850 @end defmac |
10913 | 10851 |
10914 @defmac IFCVT_INIT_EXTRA_FIELDS (@var{ce_info}) | 10852 @defmac IFCVT_MACHDEP_INIT (@var{ce_info}) |
10915 A C expression to initialize any extra fields in a @code{struct ce_if_block} | 10853 A C expression to initialize any machine specific data for if-conversion |
10916 structure, which are defined by the @code{IFCVT_EXTRA_FIELDS} macro. | 10854 of the if-block in the @code{struct ce_if_block} structure that is pointed |
10917 @end defmac | 10855 to by @var{ce_info}. |
10918 | |
10919 @defmac IFCVT_EXTRA_FIELDS | |
10920 If defined, it should expand to a set of field declarations that will be | |
10921 added to the @code{struct ce_if_block} structure. These should be initialized | |
10922 by the @code{IFCVT_INIT_EXTRA_FIELDS} macro. | |
10923 @end defmac | 10856 @end defmac |
10924 | 10857 |
10925 @deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_REORG (void) | 10858 @deftypefn {Target Hook} void TARGET_MACHINE_DEPENDENT_REORG (void) |
10926 If non-null, this hook performs a target-specific pass over the | 10859 If non-null, this hook performs a target-specific pass over the |
10927 instruction stream. The compiler will run it at all optimization levels, | 10860 instruction stream. The compiler will run it at all optimization levels, |
10928 just before the point at which it normally does delayed-branch scheduling. | 10861 just before the point at which it normally does delayed-branch scheduling. |
10929 | 10862 |
10930 The exact purpose of the hook varies from target to target. Some use | 10863 The exact purpose of the hook varies from target to target. Some use |
10931 it to do transformations that are necessary for correctness, such as | 10864 it to do transformations that are necessary for correctness, such as |
10932 laying out in-function constant pools or avoiding hardware hazards. | 10865 laying out in-function constant pools or avoiding hardware hazards. |
(...skipping 57 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
10990 | 10923 |
10991 @deftypefn {Target Hook} tree TARGET_FOLD_BUILTIN (tree @var{fndecl}, int @var{n
_args}, tree *@var{argp}, bool @var{ignore}) | 10924 @deftypefn {Target Hook} tree TARGET_FOLD_BUILTIN (tree @var{fndecl}, int @var{n
_args}, tree *@var{argp}, bool @var{ignore}) |
10992 Fold a call to a machine specific built-in function that was set up by | 10925 Fold a call to a machine specific built-in function that was set up by |
10993 @samp{TARGET_INIT_BUILTINS}. @var{fndecl} is the declaration of the | 10926 @samp{TARGET_INIT_BUILTINS}. @var{fndecl} is the declaration of the |
10994 built-in function. @var{n_args} is the number of arguments passed to | 10927 built-in function. @var{n_args} is the number of arguments passed to |
10995 the function; the arguments themselves are pointed to by @var{argp}. | 10928 the function; the arguments themselves are pointed to by @var{argp}. |
10996 The result is another tree containing a simplified expression for the | 10929 The result is another tree containing a simplified expression for the |
10997 call's result. If @var{ignore} is true the value will be ignored. | 10930 call's result. If @var{ignore} is true the value will be ignored. |
10998 @end deftypefn | 10931 @end deftypefn |
10999 | 10932 |
11000 @deftypefn {Target Hook} int TARGET_DISPATCH_VERSION (tree @var{dispatch_decl},
void *@var{fndecls}, basic_block *@var{empty_bb}) | 10933 @deftypefn {Target Hook} int TARGET_COMPARE_VERSION_PRIORITY (tree @var{decl1},
tree @var{decl2}) |
11001 For multi-versioned function, this hook sets up the dispatcher. | 10934 This hook is used to compare the target attributes in two functions to |
11002 @var{dispatch_decl} is the function that will be used to dispatch the | 10935 figure out which function's features get higher priority. This is used |
11003 version. @var{fndecls} are the function choices for dispatch. | 10936 during multi-versioning to figure out the order of dispatching. @var{decl1} |
11004 @var{empty_bb} is an basic block in @var{dispatch_decl} where the | 10937 and @var{decl2} are the two function decls that will be compared. |
11005 code to do the dispatch will be added. | 10938 @end deftypefn |
| 10939 |
| 10940 @deftypefn {Target Hook} void TARGET_SET_VERSION_ASSEMBLER_NAME (tree @var{decl}
) |
| 10941 This hook is for getting the new assembler name of a function that is |
| 10942 a version. |
| 10943 @end deftypefn |
| 10944 |
| 10945 @deftypefn {Target Hook} tree TARGET_GET_FUNCTION_VERSIONS_DISPATCHER (void *@va
r{arglist}) |
| 10946 This hook is used to get the dispatcher function for a set of function |
| 10947 versions. The dispatcher function is called to invoke the rignt function |
| 10948 version at run-time. @var{arglist} is the vector of function versions |
| 10949 that should be considered for dispatch. |
| 10950 @end deftypefn |
| 10951 |
| 10952 @deftypefn {Target Hook} tree TARGET_GENERATE_VERSION_DISPATCHER_BODY (void *@va
r{arg}) |
| 10953 This hook is used to generate the dispatcher logic to invoke the right |
| 10954 function version at runtime for a given set of function versions. |
| 10955 @var{arg} points to the callgraph node of the dispatcher function whose |
| 10956 body must be generated. |
11006 @end deftypefn | 10957 @end deftypefn |
11007 | 10958 |
11008 @deftypefn {Target Hook} {const char *} TARGET_INVALID_WITHIN_DOLOOP (const_rtx
@var{insn}) | 10959 @deftypefn {Target Hook} {const char *} TARGET_INVALID_WITHIN_DOLOOP (const_rtx
@var{insn}) |
11009 | 10960 |
11010 Take an instruction in @var{insn} and return NULL if it is valid within a | 10961 Take an instruction in @var{insn} and return NULL if it is valid within a |
11011 low-overhead loop, otherwise return a string explaining why doloop | 10962 low-overhead loop, otherwise return a string explaining why doloop |
11012 could not be applied. | 10963 could not be applied. |
11013 | 10964 |
11014 Many targets use special registers for low-overhead looping. For any | 10965 Many targets use special registers for low-overhead looping. For any |
11015 instruction that clobbers these this function should return a string indicating | 10966 instruction that clobbers these this function should return a string indicating |
(...skipping 347 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
11363 available expressions. These are then queried when encountering new | 11314 available expressions. These are then queried when encountering new |
11364 constants. The anchors are computed by rounding the constant up and | 11315 constants. The anchors are computed by rounding the constant up and |
11365 down to a multiple of the value of @code{TARGET_CONST_ANCHOR}. | 11316 down to a multiple of the value of @code{TARGET_CONST_ANCHOR}. |
11366 @code{TARGET_CONST_ANCHOR} should be the maximum positive value | 11317 @code{TARGET_CONST_ANCHOR} should be the maximum positive value |
11367 accepted by immediate-add plus one. We currently assume that the | 11318 accepted by immediate-add plus one. We currently assume that the |
11368 value of @code{TARGET_CONST_ANCHOR} is a power of 2. For example, on | 11319 value of @code{TARGET_CONST_ANCHOR} is a power of 2. For example, on |
11369 MIPS, where add-immediate takes a 16-bit signed value, | 11320 MIPS, where add-immediate takes a 16-bit signed value, |
11370 @code{TARGET_CONST_ANCHOR} is set to @samp{0x8000}. The default value | 11321 @code{TARGET_CONST_ANCHOR} is set to @samp{0x8000}. The default value |
11371 is zero, which disables this optimization. @end deftypevr | 11322 is zero, which disables this optimization. @end deftypevr |
11372 | 11323 |
| 11324 @deftypefn {Target Hook} {unsigned HOST_WIDE_INT} TARGET_MEMMODEL_CHECK (unsigne
d HOST_WIDE_INT @var{val}) |
| 11325 Validate target specific memory model mask bits. When NULL no target specific |
| 11326 memory model bits are allowed. |
| 11327 @end deftypefn |
| 11328 |
11373 @deftypevr {Target Hook} {unsigned char} TARGET_ATOMIC_TEST_AND_SET_TRUEVAL | 11329 @deftypevr {Target Hook} {unsigned char} TARGET_ATOMIC_TEST_AND_SET_TRUEVAL |
11374 This value should be set if the result written by @code{atomic_test_and_set} is
not exactly 1, i.e. the @code{bool} @code{true}. | 11330 This value should be set if the result written by @code{atomic_test_and_set} is
not exactly 1, i.e. the @code{bool} @code{true}. |
11375 @end deftypevr | 11331 @end deftypevr |
LEFT | RIGHT |