* doc/c-tree.texi: Document representation of attributes.
authorJoseph Myers <jsm28@cam.ac.uk>
Sun, 8 Jul 2001 23:12:31 +0000 (00:12 +0100)
committerJoseph Myers <jsm28@gcc.gnu.org>
Sun, 8 Jul 2001 23:12:31 +0000 (00:12 +0100)
From-SVN: r43854

gcc/ChangeLog
gcc/doc/c-tree.texi

index 39eb306a372456dba2b1bf878a494cc9d6a81b36..c84a3b254ff5ded56b6c214f2ef12fbd639bde53 100644 (file)
@@ -1,3 +1,7 @@
+2001-07-09  Joseph S. Myers  <jsm28@cam.ac.uk>
+
+       * doc/c-tree.texi: Document representation of attributes.
+
 2001-07-08  Joseph S. Myers  <jsm28@cam.ac.uk>
 
        * doc/tm.texi: Update some places for the rename of target to
index 8fb7a7a717cfb19e320ba513759e5db5ce93ef37..aa976e856229a85a512ec2eef48bbe82fc3224b8 100644 (file)
@@ -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 ---------------------------------------------------------------------