aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog7
-rw-r--r--gcc/expr.c2
-rw-r--r--gcc/tree.def10
3 files changed, 16 insertions, 3 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 193fde8..0a38aef 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,10 @@
+Mon May 17 07:23:34 1999 Mark Mitchell <mark@codesourcery.com>
+
+ * tree.def (TYPE_NONCOPIED_PARTS): Revise documentation to match
+ reality.
+ * expr.c (init_noncopied_parts): Don't generate initializers for
+ parts that don't need them.
+
Mon May 17 02:56:35 PDT 1999 Jeff Law (law@cygnus.com)
* version.c: Bump for snapshot.
diff --git a/gcc/expr.c b/gcc/expr.c
index 17fa1be..e5ef6e1 100644
--- a/gcc/expr.c
+++ b/gcc/expr.c
@@ -5097,7 +5097,7 @@ init_noncopied_parts (lhs, list)
for (tail = list; tail; tail = TREE_CHAIN (tail))
if (TREE_CODE (TREE_VALUE (tail)) == TREE_LIST)
parts = chainon (parts, init_noncopied_parts (lhs, TREE_VALUE (tail)));
- else
+ else if (TREE_PURPOSE (tail))
{
tree part = TREE_VALUE (tail);
tree part_type = TREE_TYPE (part);
diff --git a/gcc/tree.def b/gcc/tree.def
index 64fe0e4..2056c62 100644
--- a/gcc/tree.def
+++ b/gcc/tree.def
@@ -98,8 +98,14 @@ DEFTREECODE (BLOCK, "block", 'b', 0)
points to the start of the chain.
The TYPE_NONCOPIED_PARTS field is a list specifying which parts
of an object of this type should *not* be copied by assignment.
- The TREE_PURPOSE of each element is the offset of the part
- and the TREE_VALUE is the size in bits of the part.
+ The TREE_VALUE of each is a FIELD_DECL that should not be
+ copied. The TREE_PURPOSE is an initial value for that field when
+ an object of this type is initialized via an INIT_EXPR. It may
+ be NULL if no special value is required. Even the things in this
+ list are copied if the right-hand side of an assignment is known
+ to be a complete object (rather than being, perhaps, a subobject
+ of some other object.) The determination of what constitutes a
+ complete object is done by fixed_type_p.
The TYPE_NAME field contains info on the name used in the program
for this type (for GDB symbol table output). It is either a
TYPE_DECL node, for types that are typedefs, or an IDENTIFIER_NODE