aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorPer Bothner <bothner@gcc.gnu.org>1996-01-19 17:40:09 -0800
committerPer Bothner <bothner@gcc.gnu.org>1996-01-19 17:40:09 -0800
commit69b4bf984720645e499d2e60508e00618b53c6fa (patch)
tree4aab69d593c44a83d23276fa7fd6e6542447a76b /gcc
parentb650314b846a5f5cf980eeab90fb9d4b0146eaa3 (diff)
downloadgcc-69b4bf984720645e499d2e60508e00618b53c6fa.zip
gcc-69b4bf984720645e499d2e60508e00618b53c6fa.tar.gz
gcc-69b4bf984720645e499d2e60508e00618b53c6fa.tar.bz2
CONSTRUCTOR: Add comments.
From-SVN: r11075
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree.def18
1 files changed, 17 insertions, 1 deletions
diff --git a/gcc/tree.def b/gcc/tree.def
index 971e683..9de2ca0 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