aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ext-dce.cc51
1 files changed, 26 insertions, 25 deletions
diff --git a/gcc/ext-dce.cc b/gcc/ext-dce.cc
index 649d39f..0580749 100644
--- a/gcc/ext-dce.cc
+++ b/gcc/ext-dce.cc
@@ -357,8 +357,8 @@ ext_dce_process_sets (rtx_insn *insn, rtx obj, bitmap live_tmp)
Note that BIT need not be a power of two, consider a
ZERO_EXTRACT destination. */
int start = (bit < 8 ? 0 : bit < 16 ? 1 : bit < 32 ? 2 : 3);
- int end = ((mask & ~0xffffffffULL) ? 4
- : (mask & 0xffff0000ULL) ? 3
+ int end = ((mask & ~HOST_WIDE_INT_UC (0xffffffff)) ? 4
+ : (mask & HOST_WIDE_INT_UC (0xffff0000)) ? 3
: (mask & 0xff00) ? 2 : 1);
bitmap_clear_range (livenow, 4 * rn + start, end - start);
}
@@ -509,21 +509,21 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
case PLUS:
case MINUS:
case MULT:
- return (2ULL << floor_log2 (mask)) - 1;
+ return (HOST_WIDE_INT_UC (2) << floor_log2 (mask)) - 1;
/* We propagate for the shifted operand, but not the shift
count. The count is handled specially. */
case ASHIFT:
if (CONST_INT_P (XEXP (x, 1))
- && known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
- return (HOST_WIDE_INT)mask >> INTVAL (XEXP (x, 1));
- return (2ULL << floor_log2 (mask)) - 1;
+ && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
+ return (HOST_WIDE_INT) mask >> INTVAL (XEXP (x, 1));
+ return (HOST_WIDE_INT_UC (2) << floor_log2 (mask)) - 1;
/* We propagate for the shifted operand, but not the shift
count. The count is handled specially. */
case LSHIFTRT:
if (CONST_INT_P (XEXP (x, 1))
- && known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
+ && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
return mmask & (mask << INTVAL (XEXP (x, 1)));
return mmask;
@@ -531,12 +531,12 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
count. The count is handled specially. */
case ASHIFTRT:
if (CONST_INT_P (XEXP (x, 1))
- && known_lt (UINTVAL (XEXP (x, 1)), GET_MODE_BITSIZE (mode)))
+ && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
{
HOST_WIDE_INT sign = 0;
if (HOST_BITS_PER_WIDE_INT - clz_hwi (mask) + INTVAL (XEXP (x, 1))
- > GET_MODE_BITSIZE (mode).to_constant ())
- sign = 1ULL << (GET_MODE_BITSIZE (mode).to_constant () - 1);
+ > GET_MODE_BITSIZE (smode))
+ sign = HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (smode) - 1);
return sign | (mmask & (mask << INTVAL (XEXP (x, 1))));
}
return mmask;
@@ -550,14 +550,13 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
if (CONST_INT_P (XEXP (x, 1)))
{
if (pow2p_hwi (INTVAL (XEXP (x, 1))))
- return mmask & (mask << (GET_MODE_BITSIZE (mode).to_constant ()
+ return mmask & (mask << (GET_MODE_BITSIZE (smode)
- exact_log2 (INTVAL (XEXP (x, 1)))));
- int bits = (HOST_BITS_PER_WIDE_INT
- + GET_MODE_BITSIZE (mode).to_constant ()
+ int bits = (HOST_BITS_PER_WIDE_INT + GET_MODE_BITSIZE (smode)
- clz_hwi (mask) - ctz_hwi (INTVAL (XEXP (x, 1))));
- if (bits < GET_MODE_BITSIZE (mode).to_constant ())
- return (1ULL << bits) - 1;
+ if (bits < GET_MODE_BITSIZE (smode))
+ return (HOST_WIDE_INT_1U << bits) - 1;
}
return mmask;
@@ -568,9 +567,10 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
/* We want the mode of the inner object. We need to ensure its
sign bit is on in MASK. */
- mode = GET_MODE (XEXP (x, 0));
- if (mask & ~GET_MODE_MASK (GET_MODE_INNER (mode)))
- mask |= 1ULL << (GET_MODE_BITSIZE (mode).to_constant () - 1);
+ mode = GET_MODE_INNER (GET_MODE (XEXP (x, 0)));
+ if (mask & ~GET_MODE_MASK (mode))
+ mask |= HOST_WIDE_INT_1U << (GET_MODE_BITSIZE (mode).to_constant ()
+ - 1);
/* Recurse into the operand. */
return carry_backpropagate (mask, GET_CODE (XEXP (x, 0)), XEXP (x, 0));
@@ -588,13 +588,13 @@ carry_backpropagate (unsigned HOST_WIDE_INT mask, enum rtx_code code, rtx x)
case SS_ASHIFT:
case US_ASHIFT:
if (CONST_INT_P (XEXP (x, 1))
- && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (mode).to_constant ())
+ && UINTVAL (XEXP (x, 1)) < GET_MODE_BITSIZE (smode))
{
- return ((mmask & ~((unsigned HOST_WIDE_INT)mmask
+ return ((mmask & ~((unsigned HOST_WIDE_INT) mmask
>> (INTVAL (XEXP (x, 1))
+ (XEXP (x, 1) != const0_rtx
&& code == SS_ASHIFT))))
- | ((HOST_WIDE_INT)mask >> INTVAL (XEXP (x, 1))));
+ | ((HOST_WIDE_INT) mask >> INTVAL (XEXP (x, 1))));
}
return mmask;
@@ -681,7 +681,8 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj,
unsigned HOST_WIDE_INT dst_mask = 0;
HOST_WIDE_INT rn = REGNO (dst);
unsigned HOST_WIDE_INT mask_array[]
- = { 0xff, 0xff00, 0xffff0000ULL, -0x100000000ULL };
+ = { 0xff, 0xff00, HOST_WIDE_INT_UC (0xffff0000),
+ -HOST_WIDE_INT_UC (0x100000000) };
for (int i = 0; i < 4; i++)
if (bitmap_bit_p (live_tmp, 4 * rn + i))
dst_mask |= mask_array[i];
@@ -786,7 +787,7 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj,
{
dst_mask <<= bit;
if (!dst_mask)
- dst_mask = -0x100000000ULL;
+ dst_mask = -HOST_WIDE_INT_UC (0x100000000);
}
y = SUBREG_REG (y);
}
@@ -811,9 +812,9 @@ ext_dce_process_uses (rtx_insn *insn, rtx obj,
bitmap_set_bit (livenow, rn);
if (tmp_mask & 0xff00)
bitmap_set_bit (livenow, rn + 1);
- if (tmp_mask & 0xffff0000ULL)
+ if (tmp_mask & HOST_WIDE_INT_UC (0xffff0000))
bitmap_set_bit (livenow, rn + 2);
- if (tmp_mask & -0x100000000ULL)
+ if (tmp_mask & -HOST_WIDE_INT_UC (0x100000000))
bitmap_set_bit (livenow, rn + 3);
}
else if (!CONSTANT_P (y))