bitmap.c (bitmap_set_range): Handle count==1 specially.
gcc/ * bitmap.c (bitmap_set_range): Handle count==1 specially. (bitmap_clear_range): Likewise. * cfgcleanup.c (mark_effect): Use bitmap_clear_range and bitmap_set_range unconditionally. * df-problems.c (df_simulate_one_insn_forwards): Likewise. * df-scan.c (df_mark_reg): Likewise. * haifa-sched.c (setup_ref_regs): Likewise. * sched-rgn.c (update_live_1): Likewise. From-SVN: r223344
This commit is contained in:
parent
72d19505ee
commit
07a737f333
|
@ -1,3 +1,14 @@
|
|||
2015-05-19 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* bitmap.c (bitmap_set_range): Handle count==1 specially.
|
||||
(bitmap_clear_range): Likewise.
|
||||
* cfgcleanup.c (mark_effect): Use bitmap_clear_range and
|
||||
bitmap_set_range unconditionally.
|
||||
* df-problems.c (df_simulate_one_insn_forwards): Likewise.
|
||||
* df-scan.c (df_mark_reg): Likewise.
|
||||
* haifa-sched.c (setup_ref_regs): Likewise.
|
||||
* sched-rgn.c (update_live_1): Likewise.
|
||||
|
||||
2015-05-19 Richard Sandiford <richard.sandiford@arm.com>
|
||||
|
||||
* regs.h (END_HARD_REGNO): Delete.
|
||||
|
|
12
gcc/bitmap.c
12
gcc/bitmap.c
|
@ -1212,6 +1212,12 @@ bitmap_set_range (bitmap head, unsigned int start, unsigned int count)
|
|||
if (!count)
|
||||
return;
|
||||
|
||||
if (count == 1)
|
||||
{
|
||||
bitmap_set_bit (head, start);
|
||||
return;
|
||||
}
|
||||
|
||||
first_index = start / BITMAP_ELEMENT_ALL_BITS;
|
||||
end_bit_plus1 = start + count;
|
||||
last_index = (end_bit_plus1 - 1) / BITMAP_ELEMENT_ALL_BITS;
|
||||
|
@ -1311,6 +1317,12 @@ bitmap_clear_range (bitmap head, unsigned int start, unsigned int count)
|
|||
if (!count)
|
||||
return;
|
||||
|
||||
if (count == 1)
|
||||
{
|
||||
bitmap_clear_bit (head, start);
|
||||
return;
|
||||
}
|
||||
|
||||
first_index = start / BITMAP_ELEMENT_ALL_BITS;
|
||||
end_bit_plus1 = start + count;
|
||||
last_index = (end_bit_plus1 - 1) / BITMAP_ELEMENT_ALL_BITS;
|
||||
|
|
|
@ -222,22 +222,15 @@ try_simplify_condjump (basic_block cbranch_block)
|
|||
static bool
|
||||
mark_effect (rtx exp, regset nonequal)
|
||||
{
|
||||
int regno;
|
||||
rtx dest;
|
||||
switch (GET_CODE (exp))
|
||||
{
|
||||
/* In case we do clobber the register, mark it as equal, as we know the
|
||||
value is dead so it don't have to match. */
|
||||
case CLOBBER:
|
||||
if (REG_P (XEXP (exp, 0)))
|
||||
{
|
||||
dest = XEXP (exp, 0);
|
||||
regno = REGNO (dest);
|
||||
if (HARD_REGISTER_NUM_P (regno))
|
||||
bitmap_clear_range (nonequal, regno, REG_NREGS (dest));
|
||||
else
|
||||
bitmap_clear_bit (nonequal, regno);
|
||||
}
|
||||
if (REG_P (dest))
|
||||
bitmap_clear_range (nonequal, REGNO (dest), REG_NREGS (dest));
|
||||
return false;
|
||||
|
||||
case SET:
|
||||
|
@ -248,11 +241,7 @@ mark_effect (rtx exp, regset nonequal)
|
|||
return false;
|
||||
if (!REG_P (dest))
|
||||
return true;
|
||||
regno = REGNO (dest);
|
||||
if (HARD_REGISTER_NUM_P (regno))
|
||||
bitmap_set_range (nonequal, regno, REG_NREGS (dest));
|
||||
else
|
||||
bitmap_set_bit (nonequal, regno);
|
||||
bitmap_set_range (nonequal, REGNO (dest), REG_NREGS (dest));
|
||||
return false;
|
||||
|
||||
default:
|
||||
|
|
|
@ -3574,11 +3574,7 @@ df_simulate_one_insn_forwards (basic_block bb, rtx_insn *insn, bitmap live)
|
|||
case REG_UNUSED:
|
||||
{
|
||||
rtx reg = XEXP (link, 0);
|
||||
int regno = REGNO (reg);
|
||||
if (HARD_REGISTER_NUM_P (regno))
|
||||
bitmap_clear_range (live, regno, REG_NREGS (reg));
|
||||
else
|
||||
bitmap_clear_bit (live, regno);
|
||||
bitmap_clear_range (live, REGNO (reg), REG_NREGS (reg));
|
||||
}
|
||||
break;
|
||||
default:
|
||||
|
|
|
@ -3518,15 +3518,7 @@ df_get_eh_block_artificial_uses (bitmap eh_block_artificial_uses)
|
|||
static void
|
||||
df_mark_reg (rtx reg, void *vset)
|
||||
{
|
||||
bitmap set = (bitmap) vset;
|
||||
int regno = REGNO (reg);
|
||||
|
||||
gcc_assert (GET_MODE (reg) != BLKmode);
|
||||
|
||||
if (regno < FIRST_PSEUDO_REGISTER)
|
||||
bitmap_set_range (set, regno, REG_NREGS (reg));
|
||||
else
|
||||
bitmap_set_bit (set, regno);
|
||||
bitmap_set_range ((bitmap) vset, REGNO (reg), REG_NREGS (reg));
|
||||
}
|
||||
|
||||
|
||||
|
|
|
@ -1032,17 +1032,13 @@ initiate_reg_pressure_info (bitmap live)
|
|||
static void
|
||||
setup_ref_regs (rtx x)
|
||||
{
|
||||
int i, j, regno;
|
||||
int i, j;
|
||||
const RTX_CODE code = GET_CODE (x);
|
||||
const char *fmt;
|
||||
|
||||
if (REG_P (x))
|
||||
{
|
||||
regno = REGNO (x);
|
||||
if (HARD_REGISTER_NUM_P (regno))
|
||||
bitmap_set_range (region_ref_regs, regno, REG_NREGS (x));
|
||||
else
|
||||
bitmap_set_bit (region_ref_regs, REGNO (x));
|
||||
bitmap_set_range (region_ref_regs, REGNO (x), REG_NREGS (x));
|
||||
return;
|
||||
}
|
||||
fmt = GET_RTX_FORMAT (code);
|
||||
|
|
|
@ -1801,11 +1801,7 @@ update_live_1 (int src, rtx x)
|
|||
for (i = 0; i < candidate_table[src].update_bbs.nr_members; i++)
|
||||
{
|
||||
basic_block b = candidate_table[src].update_bbs.first_member[i];
|
||||
|
||||
if (HARD_REGISTER_NUM_P (regno))
|
||||
bitmap_set_range (df_get_live_in (b), regno, REG_NREGS (reg));
|
||||
else
|
||||
bitmap_set_bit (df_get_live_in (b), regno);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue