]> git.ipfire.org Git - thirdparty/gcc.git/commitdiff
tree.h (struct tree_int_cst): Wrap low and high in a sub-struct.
authorGreg McGary <greg@mcgary.org>
Wed, 30 Aug 2000 22:50:52 +0000 (22:50 +0000)
committerGreg McGary <gkm@gcc.gnu.org>
Wed, 30 Aug 2000 22:50:52 +0000 (22:50 +0000)
* tree.h (struct tree_int_cst): Wrap low and high in a sub-struct.
(TREE_INT_CST_LOW, TREE_INT_CST_HIGH): Access through sub-struct.
(TREE_INT_CST): New macro.
* varasm.c (const_hash, compare_constant_1, record_constant_1):
Use new macro TREE_INT_CST.

From-SVN: r36076

gcc/ChangeLog
gcc/tree.h
gcc/varasm.c

index 43ebcd5c25fc2fe4e6f67bdc9f65bf09dc4a6072..31b3e0825552441ccea5469b2692a702e44ba11f 100644 (file)
@@ -1,3 +1,11 @@
+2000-08-30  Greg McGary  <greg@mcgary.org>
+
+       * tree.h (struct tree_int_cst): Wrap low and high in a sub-struct.
+       (TREE_INT_CST_LOW, TREE_INT_CST_HIGH): Access through sub-struct.
+       (TREE_INT_CST): New macro.
+       * varasm.c (const_hash, compare_constant_1, record_constant_1):
+       Use new macro TREE_INT_CST.
+
 Wed 30-Aug-2000 23:18:59 BST  Neil Booth  <NeilB@earthling.net>
 
        * contrib.texi: Add self.
index e9b0da4d73011c3eb7e31c7d799ca479d8ffced2..245f413c77b3f40916218941819b664efb667f59 100644 (file)
@@ -655,8 +655,9 @@ extern void tree_class_check_failed PARAMS ((const tree, int,
    If the data type is signed, the value is sign-extended to 2 words
    even though not all of them may really be in use.
    In an unsigned constant shorter than 2 words, the extra bits are 0.  */
-#define TREE_INT_CST_LOW(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst_low)
-#define TREE_INT_CST_HIGH(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst_high)
+#define TREE_INT_CST(NODE) (INTEGER_CST_CHECK (NODE)->int_cst.int_cst)
+#define TREE_INT_CST_LOW(NODE) (TREE_INT_CST (NODE).low)
+#define TREE_INT_CST_HIGH(NODE) (TREE_INT_CST (NODE).high)
 
 #define INT_CST_LT(A, B)  \
 (TREE_INT_CST_HIGH (A) < TREE_INT_CST_HIGH (B)                 \
@@ -675,8 +676,13 @@ struct tree_int_cst
   struct tree_common common;
   struct rtx_def *rtl; /* acts as link to register transfer language
                           (rtl) info */
-  unsigned HOST_WIDE_INT int_cst_low;
-  HOST_WIDE_INT int_cst_high;
+  /* A sub-struct is necessary here because the function `const_hash'
+     wants to scan both words as a unit and taking the address of the
+     sub-struct yields the properly inclusive bounded pointer.  */
+  struct {
+    unsigned HOST_WIDE_INT low;
+    HOST_WIDE_INT high;
+  } int_cst;
 };
 
 /* In REAL_CST, STRING_CST, COMPLEX_CST nodes, and CONSTRUCTOR nodes,
index 478daf8286184c1a9f12f2726217237f925824df..5a10d65687fdd0b3a2b7788e57a9151a7b621db0 100644 (file)
@@ -2361,8 +2361,8 @@ const_hash (exp)
   switch (code)
     {
     case INTEGER_CST:
-      p = (char *) &TREE_INT_CST_LOW (exp);
-      len = 2 * sizeof TREE_INT_CST_LOW (exp);
+      p = (char *) &TREE_INT_CST (exp);
+      len = sizeof TREE_INT_CST (exp);
       break;
 
     case REAL_CST:
@@ -2506,8 +2506,8 @@ compare_constant_1 (exp, p)
       if (*p++ != TYPE_PRECISION (TREE_TYPE (exp)))
        return 0;
 
-      strp = (unsigned char *) &TREE_INT_CST_LOW (exp);
-      len = 2 * sizeof TREE_INT_CST_LOW (exp);
+      strp = (unsigned char *) &TREE_INT_CST (exp);
+      len = sizeof TREE_INT_CST (exp);
       break;
 
     case REAL_CST:
@@ -2745,8 +2745,8 @@ record_constant_1 (exp)
     {
     case INTEGER_CST:
       obstack_1grow (&permanent_obstack, TYPE_PRECISION (TREE_TYPE (exp)));
-      strp = (unsigned char *) &TREE_INT_CST_LOW (exp);
-      len = 2 * sizeof TREE_INT_CST_LOW (exp);
+      strp = (unsigned char *) &TREE_INT_CST (exp);
+      len = sizeof TREE_INT_CST (exp);
       break;
 
     case REAL_CST: