(make_node, copy_node): Don't assume node length is multiple of int.
From-SVN: r2524
This commit is contained in:
parent
71bde1f321
commit
2f145821b7
10
gcc/tree.c
10
gcc/tree.c
|
@ -877,11 +877,12 @@ 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. */
|
||||
/* Clear a word at a time. */
|
||||
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
|
||||
((int *) t)[i] = 0;
|
||||
/* Clear any extra bytes. */
|
||||
for (i = length / sizeof (int) * sizeof (int); i < length; i++)
|
||||
((char *) t)[i] = 0;
|
||||
|
||||
TREE_SET_CODE (t, code);
|
||||
if (obstack == &permanent_obstack)
|
||||
|
@ -978,6 +979,9 @@ copy_node (node)
|
|||
|
||||
for (i = (length / sizeof (int)) - 1; i >= 0; i--)
|
||||
((int *) t)[i] = ((int *) node)[i];
|
||||
/* Clear any extra bytes. */
|
||||
for (i = length / sizeof (int) * sizeof (int); i < length; i++)
|
||||
((char *) t)[i] = 0;
|
||||
|
||||
TREE_CHAIN (t) = 0;
|
||||
|
||||
|
|
Loading…
Reference in New Issue