From: Richard Stallman Date: Sat, 11 Jul 1992 21:58:16 +0000 (+0000) Subject: entered into RCS X-Git-Url: https://git.libre-soc.org/?a=commitdiff_plain;h=db7e5239390f0e259b64858ae1333ddb708e4486;p=gcc.git entered into RCS From-SVN: r1559 --- diff --git a/gcc/tree.c b/gcc/tree.c index c90bd4e6c3e..c67078360fb 100644 --- a/gcc/tree.c +++ b/gcc/tree.c @@ -1107,7 +1107,7 @@ real_value_from_int_cst (i) #ifdef REAL_ARITHMETIC REAL_VALUE_FROM_INT (d, TREE_INT_CST_LOW (i), TREE_INT_CST_HIGH (i)); #else /* not REAL_ARITHMETIC */ - if (TREE_INT_CST_HIGH (i) < 0) + if (TREE_INT_CST_HIGH (i) < 0 && ! TREE_UNSIGNED (TREE_TYPE (i))) { d = (double) (~ TREE_INT_CST_HIGH (i)); d *= ((double) ((HOST_WIDE_INT) 1 << (HOST_BITS_PER_WIDE_INT / 2)) @@ -1117,7 +1117,7 @@ real_value_from_int_cst (i) } else { - d = (double) TREE_INT_CST_HIGH (i); + d = (double) (unsigned HOST_WIDE_INT) TREE_INT_CST_HIGH (i); d *= ((double) ((HOST_WIDE_INT) 1 << (HOST_BITS_PER_WIDE_INT / 2)) * (double) ((HOST_WIDE_INT) 1 << (HOST_BITS_PER_WIDE_INT / 2))); d += (double) (unsigned HOST_WIDE_INT) TREE_INT_CST_LOW (i); @@ -1140,7 +1140,7 @@ build_real_from_int_cst (type, i) v = make_node (REAL_CST); TREE_TYPE (v) = type; - d = real_value_from_int_cst (i); + d = REAL_VALUE_TRUNCATE (TYPE_MODE (type), real_value_from_int_cst (i)); /* Check for valid float value for this type on this target machine; if not, can print error message and store a valid value in D. */ #ifdef CHECK_FLOAT_VALUE