OSDN Git Service

(copy_node): Handle length of INTEGER_CST like make_node.
authorkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Dec 1993 23:43:52 +0000 (23:43 +0000)
committerkenner <kenner@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 15 Dec 1993 23:43:52 +0000 (23:43 +0000)
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@6241 138bc75d-0d04-0410-961f-82ee72b054a4

gcc/tree.c

index 957ac72..ed6411d 100644 (file)
@@ -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;