diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 39eb306a372..c84a3b254ff 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,7 @@ +2001-07-09 Joseph S. Myers + + * doc/c-tree.texi: Document representation of attributes. + 2001-07-08 Joseph S. Myers * doc/tm.texi: Update some places for the rename of target to diff --git a/gcc/doc/c-tree.texi b/gcc/doc/c-tree.texi index 8fb7a7a717c..aa976e85622 100644 --- a/gcc/doc/c-tree.texi +++ b/gcc/doc/c-tree.texi @@ -53,6 +53,7 @@ should submit your patches for inclusion in GCC@. * Scopes:: Namespaces and classes. * Functions:: Overloading, function bodies, and linkage. * Declarations:: Type declarations and variables. +* Attributes:: Declaration and type attributes. * Expression trees:: From @code{typeid} to @code{throw}. @end menu @@ -1656,6 +1657,40 @@ The @code{WHILE_BODY} is the body of the loop. @end table +@c --------------------------------------------------------------------- +@c Attributes +@c --------------------------------------------------------------------- +@node Attributes +@section Attributes in trees +@cindex attributes + +Attributes, as specified using the @code{__attribute__} keyword, are +represented internally as a @code{TREE_LIST}. The @code{TREE_PURPOSE} +is the name of the attribute, as an @code{IDENTIFIER_NODE}. The +@code{TREE_VALUE} is a @code{TREE_LIST} of the arguments of the +attribute, if any, or @code{NULL_TREE} if there are no arguments; the +arguments are stored as the @code{TREE_VALUE} of successive entries in +the list, and may be identifiers or expressions. The @code{TREE_CHAIN} +of the attribute is the next attribute in a list of attributes applying +to the same declaration or type, or @code{NULL_TREE} if there are no +further attributes in the list. + +Attributes may be attached to declarations and to types; these +attributes may be accessed with the following macros. At present only +machine-dependent attributes are stored in this way (other attributes +cause changes to the declaration or type or to other internal compiler +data structures, but are not themselves stored along with the +declaration or type), but in future all attributes may be stored like +this. + +@deftypefn {Tree Macro} tree DECL_MACHINE_ATTRIBUTES (tree @var{decl}) +This macro returns the attributes on the declaration @var{decl}. +@end deftypefn + +@deftypefn {Tree Macro} tree TYPE_ATTRIBUTES (tree @var{type}) +This macro returns the attributes on the type @var{type}. +@end deftypefn + @c --------------------------------------------------------------------- @c Expressions @c ---------------------------------------------------------------------