aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree.c
diff options
context:
space:
mode:
authorRichard Kenner <kenner@gcc.gnu.org>1993-12-15 18:43:52 -0500
committerRichard Kenner <kenner@gcc.gnu.org>1993-12-15 18:43:52 -0500
commit49b08aba12ca29601b84959168bc116f25e71845 (patch)
tree76744158360ab0df76fbb2eae441b841d4a16f08 /gcc/tree.c
parentc11ffdbd029ce4037aea19e8df0c23e0f64a3580 (diff)
downloadgcc-49b08aba12ca29601b84959168bc116f25e71845.zip
gcc-49b08aba12ca29601b84959168bc116f25e71845.tar.gz
gcc-49b08aba12ca29601b84959168bc116f25e71845.tar.bz2
(copy_node): Handle length of INTEGER_CST like make_node.
From-SVN: r6241
Diffstat (limited to 'gcc/tree.c')
-rw-r--r--gcc/tree.c14
1 files changed, 11 insertions, 3 deletions
diff --git a/gcc/tree.c b/gcc/tree.c
index 957ac72..ed6411d 100644
--- a/gcc/tree.c
+++ b/gcc/tree.c
@@ -1011,9 +1011,17 @@ copy_node (node)
break;
case 'c': /* a constant */
- /* We can't use tree_code_length for this, since the number of words
- is machine-dependent due to varying alignment of `double'. */
- if (code == REAL_CST)
+ /* We can't use tree_code_length for INTEGER_CST, since the number of
+ words is machine-dependent due to varying length of HOST_WIDE_INT,
+ which might be wider than a pointer (e.g., long long). Similarly
+ for REAL_CST, since the number of words is machine-dependent due
+ to varying size and alignment of `double'. */
+ if (code == INTEGER_CST)
+ {
+ length = sizeof (struct tree_int_cst);
+ break;
+ }
+ else if (code == REAL_CST)
{
length = sizeof (struct tree_real_cst);
break;