aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1992-07-08 06:30:11 -0400
committerRichard Kenner <kenner@gcc.gnu.org>1992-07-08 06:30:11 -0400
commit508f8149cc9ce0c99b755aff3ca4b7409405f42a (patch)
tree6d62283f2fd33224a1673e65d6cd5ac0b0d7a3d4 /gcc
parent2e0e2b76bea575afc3070ebd4d3c47deade86221 (diff)
downloadgcc-508f8149cc9ce0c99b755aff3ca4b7409405f42a.zip
gcc-508f8149cc9ce0c99b755aff3ca4b7409405f42a.tar.gz
gcc-508f8149cc9ce0c99b755aff3ca4b7409405f42a.tar.bz2
*** empty log message ***
From-SVN: r1516
Diffstat (limited to 'gcc')
-rw-r--r--gcc/tree.c28
1 files changed, 12 insertions, 16 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 93ebeac..0dadbd2 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -840,6 +840,9 @@ make_node (code)
tree_node_sizes[(int)kind] += length;
#endif
+ /* We assume here that the length of a tree node is a multiple of the
+ size of an int. Rounding up won't work because it would clobber
+ the next object. */
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
((int *) t)[i] = 0;
@@ -932,9 +935,7 @@ copy_node (node)
t = (tree) obstack_alloc (current_obstack, length);
- for (i = ((length + sizeof (int) - 1) / sizeof (int)) - 1;
- i >= 0;
- i--)
+ for (i = (length / sizeof (int)) - 1; i >= 0; i--)
((int *) t)[i] = ((int *) node)[i];
TREE_CHAIN (t) = 0;
@@ -1199,12 +1200,9 @@ make_tree_vec (len)
t = (tree) obstack_alloc (obstack, length);
- TREE_TYPE (t) = 0;
- TREE_CHAIN (t) = 0;
- for (i = (length / sizeof (int)) - 1;
- i >= sizeof (struct tree_common) / sizeof (int) - 1;
- i--)
+ for (i = (length / sizeof (int)) - 1; i >= 0; i--)
((int *) t)[i] = 0;
+
TREE_SET_CODE (t, TREE_VEC);
TREE_VEC_LENGTH (t) = len;
if (obstack == &permanent_obstack)
@@ -1563,11 +1561,12 @@ tree_cons (purpose, value, chain)
tree_node_sizes[(int)x_kind] += sizeof (struct tree_list);
#endif
- ((int *)node)[(sizeof (struct tree_common)/sizeof (int)) - 1] = 0;
+ for (i = (sizeof (struct tree_common) / sizeof (int)) - 1; i >= 0; i--)
+ ((int *) t)[i] = 0;
+
TREE_SET_CODE (node, TREE_LIST);
if (current_obstack == &permanent_obstack)
TREE_PERMANENT (node) = 1;
- TREE_TYPE (node) = 0;
#endif
TREE_CHAIN (node) = chain;
@@ -2005,13 +2004,10 @@ build1 (code, type, node)
tree_node_sizes[(int)kind] += length;
#endif
- TREE_TYPE (t) = type;
- TREE_CHAIN (t) = 0;
-
- for (i = (length / sizeof (int)) - 2;
- i >= sizeof (struct tree_common) / sizeof (int) - 1;
- i--)
+ for (i = (length / sizeof (int)) - 1; i >= 0; i--)
((int *) t)[i] = 0;
+
+ TREE_TYPE (t) = type;
TREE_SET_CODE (t, code);
if (obstack == &permanent_obstack)