diff options
Diffstat (limited to 'gcc/doc')
-rw-r--r-- | gcc/doc/tm.texi | 48 |
1 files changed, 48 insertions, 0 deletions
diff --git a/gcc/doc/tm.texi b/gcc/doc/tm.texi index 24ca6b9..e60a4eb 100644 --- a/gcc/doc/tm.texi +++ b/gcc/doc/tm.texi @@ -12,6 +12,19 @@ In addition to the file @file{@var{machine}.md}, a machine description includes a C header file conventionally given the name +<<<<<<< tm.texi +@file{@var{machine}.h} and a C source file named @file{@var{machine}.c}. +The header file defines numerous macros that convey the information +about the target machine that does not fit into the scheme of the +@file{.md} file. The file @file{tm.h} should be a link to +@file{@var{machine}.h}. The header file @file{config.h} includes +@file{tm.h} and most compiler source files include @file{config.h}. The +source file defines a variable @code{target}, which is a structure +containing pointers to functions and data relating to the target +machine. @file{@var{machine}.c} should also their definitions, if they +are not defined elsewhere in GCC, and other functions called through the +macros defined in the @file{.h} file. +======= @file{@var{machine}.h} and a C source file named @file{@var{machine}.c}. The header file defines numerous macros that convey the information about the target machine that does not fit into the scheme of the @@ -23,6 +36,7 @@ containing pointers to functions and data relating to the target machine. @file{@var{machine}.c} should also contain their definitions, if they are not defined elsewhere in GCC, and other functions called through the macros defined in the @file{.h} file. +>>>>>>> 1.11 @menu * Target Structure:: The @code{target} variable. @@ -1581,6 +1595,12 @@ explicitly define all of the macros below. A C constant expression for the integer value for escape sequence @samp{\a}. +@findex TARGET_ESC +@item TARGET_ESC +A C constant expression for the integer value of the target escape +character. As an extension, GCC evaluates the escape sequences +@samp{\e} and @samp{\E} to this. + @findex TARGET_TAB @findex TARGET_BS @findex TARGET_NEWLINE @@ -8300,6 +8320,33 @@ If defined, a C statement that assigns default attributes to newly defined @var{type}. @end table +<<<<<<< tm.texi +@deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2}) +Define this target hook if the merging of type attributes needs special +handling. If defined, the result is a list of the combined +@code{TYPE_ATTRIBUTES} of @var{type1} and @var{type2}. It is assumed +that @code{comptypes} has already been called and returned 1. This +function may call @code{merge_attributes} to handle machine-independent +merging. +@end deftypefn + +@deftypefn {Target Hook} tree TARGET_MERGE_DECL_ATTRIBUTES (tree @var{olddecl}, tree @var{newdecl}) +Define this target hook if the merging of decl attributes needs special +handling. If defined, the result is a list of the combined +@code{DECL_MACHINE_ATTRIBUTES} of @var{olddecl} and @var{newdecl}. +@var{newdecl} is a duplicate declaration of @var{olddecl}. Examples of +when this is needed are when one attribute overrides another, or when an +attribute is nullified by a subsequent definition. This function may +call @code{merge_attributes} to handle machine-independent merging. + +If the only target-specific handling you require is @samp{dllimport} for +Windows targets, you should define the macro +@code{TARGET_DLLIMPORT_DECL_ATTRIBUTES}. This links in a function +called @code{merge_dllimport_decl_attributes} which you can then define +as the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}. This is done +in @file{i386/cygwin.h} and @file{i386/i386.c}, for example. +@end deftypefn +======= @deftypefn {Target Hook} tree TARGET_MERGE_TYPE_ATTRIBUTES (tree @var{type1}, tree @var{type2}) Define this target hook if the merging of type attributes needs special handling. If defined, the result is a list of the combined @@ -8326,6 +8373,7 @@ called @code{merge_dllimport_decl_attributes} which can then be defined as the expansion of @code{TARGET_MERGE_DECL_ATTRIBUTES}. This is done in @file{i386/cygwin.h} and @file{i386/i386.c}, for example. @end deftypefn +>>>>>>> 1.11 @table @code @findex INSERT_ATTRIBUTES |