summaryrefslogtreecommitdiff
path: root/gcc/tree.def
diff options
context:
space:
mode:
authorbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-01-20 01:40:09 +0000
committerbothner <bothner@138bc75d-0d04-0410-961f-82ee72b054a4>1996-01-20 01:40:09 +0000
commit36e4740af14ed36937212a23a7fe62355b32340e (patch)
tree4aab69d593c44a83d23276fa7fd6e6542447a76b /gcc/tree.def
parent5d050d477ef51c56c0584492dc3c29f9e4b5a4e5 (diff)
downloadgcc-36e4740af14ed36937212a23a7fe62355b32340e.tar.gz
CONSTRUCTOR: Add comments.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@11075 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/tree.def')
-rw-r--r--gcc/tree.def18
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/tree.def b/gcc/tree.def
index 971e6838504..9de2ca01d99 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -365,10 +365,26 @@ DEFTREECODE (ARRAY_REF, "array_ref", "r", 2)
/* Constructor: return an aggregate value made from specified components.
In C, this is used only for structure and array initializers.
+ Also used for SET_TYPE in Chill (and potentially Pascal).
The first "operand" is really a pointer to the RTL,
for constant constructors only.
The second operand is a list of component values
- made out of a chain of TREE_LIST nodes. */
+ made out of a chain of TREE_LIST nodes.
+
+ For ARRAY_TYPE:
+ The TREE_PURPOSE of each node is the corresponding index.
+ If the TREE_PURPOSE is a RANGE_EXPR, it is a short-hand for many nodes,
+ one for each index in the range. (If the corresponding TREE_VALUE
+ has side-effects, they are evaluated once for each element. Wrap the
+ value in a SAVE_EXPR if you want to evaluate side effects only once.)
+
+ For RECORD_TYPE, UNION_TYPE, or QUAL_UNION_TYPE:
+ The TREE_PURPOSE of each node is a FIELD_DECL.
+
+ For SET_TYPE:
+ The TREE_VALUE specifies a value (index) in the set that is true.
+ If TREE_PURPOSE is non-NULL, it specifies the lower limit of a
+ range of true values. Elements not listed are false (not in the set). */
DEFTREECODE (CONSTRUCTOR, "constructor", "e", 2)
/* The expression types are mostly straightforward, with the fourth argument