diff options
Diffstat (limited to 'gcc/doc/tm.texi')
-rw-r--r-- | gcc/doc/tm.texi | 52 |
1 files changed, 48 insertions, 4 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index e238797ed77..5183736ccae 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -833,10 +833,9 @@ specified, 1 if @option{-O} is specified, and 0 if neither is specified. @var{size} is nonzero if @option{-Os} is specified and zero otherwise. -You should not use this macro to change options that are not -machine-specific. These should uniformly selected by the same -optimization level on all supported machines. Use this macro to enable -machine-specific optimizations. +This macro is run once at program startup and when the optimization +options are changed via @code{#pragma GCC optimize} or by using the +@code{optimize} attribute. @strong{Do not examine @code{write_symbols} in this macro!} The debugging options are not supposed to alter the @@ -9271,6 +9270,51 @@ attributes, @code{false} otherwise. By default, if a function has a target specific attribute attached to it, it will not be inlined. @end deftypefn +@deftypefn {Target Hook} bool TARGET_VALID_OPTION_ATTRIBUTE_P (tree @var{fndecl}, tree @var{name}, tree @var{args}, int @var{flags}) +This hook is called to parse the @code{attribute(option("..."))}, and +it allows the function to set different target machine compile time +options for the current function that might be different than the +options specified on the command line. The hook should return +@code{true} if the options are valid. + +The hook should set the @var{DECL_FUNCTION_SPECIFIC_TARGET} field in +the function declaration to hold a pointer to a target specific +@var{struct cl_target_option} structure. +@end deftypefn + +@deftypefn {Target Hook} void TARGET_OPTION_SAVE (struct cl_target_option *@var{ptr}) +This hook is called to save any additional target specific information +in the @var{struct cl_target_option} structure for function specific +options. +@xref{Option file format}. +@end deftypefn + +@deftypefn {Target Hook} void TARGET_OPTION_RESTORE (struct cl_target_option *@var{ptr}) +This hook is called to restore any additional target specific +information in the @var{struct cl_target_option} structure for +function specific options. +@end deftypefn + +@deftypefn {Target Hook} void TARGET_OPTION_PRINT (struct cl_target_option *@var{ptr}) +This hook is called to print any additional target specific +information in the @var{struct cl_target_option} structure for +function specific options. +@end deftypefn + +@deftypefn {Target Hook} bool TARGET_OPTION_PRAGMA_PARSE (target @var{args}) +This target hook parses the options for @code{#pragma GCC option} to +set the machine specific options for functions that occur later in the +input stream. The options should be the same as handled by the +@code{TARGET_VALID_OPTION_ATTRIBUTE_P} hook. +@end deftypefn + +@deftypefn {Target Hook} bool TARGET_CAN_INLINE_P (tree @var{caller}, tree @var{callee}) +This target hook returns @code{false} if the @var{caller} function +cannot inline @var{callee}, based on target specific information. By +default, inlining is not allowed if the callee function has function +specific target options and the caller does not use the same options. +@end deftypefn + @node Emulated TLS @section Emulating TLS @cindex Emulated TLS |