summaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-08 23:12:31 +0000
committerjsm28 <jsm28@138bc75d-0d04-0410-961f-82ee72b054a4>2001-07-08 23:12:31 +0000
commit99effa892619f1b403a32fc900b0ac69f3561591 (patch)
tree1aa1afa6b0fc20cb00375b32ea88cf9d9e1138a3 /gcc
parent7fe22e19cf5e61db621bb2234ac2b5d6b169a416 (diff)
downloadgcc-99effa892619f1b403a32fc900b0ac69f3561591.tar.gz
* doc/c-tree.texi: Document representation of attributes.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@43854 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/doc/c-tree.texi35
2 files changed, 39 insertions, 0 deletions
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 <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
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
@@ -1657,6 +1658,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 ---------------------------------------------------------------------