* 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
+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.
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) \
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,
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:
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:
{
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: