aboutsummaryrefslogtreecommitdiff
path: root/gcc/lra-spills.c
diff options
context:
space:
mode:
authorTrevor Saunders <tbsaunde+gcc@tbsaunde.org>2017-05-14 00:38:59 +0000
committerTrevor Saunders <tbsaunde@gcc.gnu.org>2017-05-14 00:38:59 +0000
commitd648b5ff3cb2bf7aec320312e79c90e49cd9b39b (patch)
treedcf7daa4381cf183540db2795959f7f418fc0e5e /gcc/lra-spills.c
parent8f9b31f7f161bd00d9c7847f117591ec85f9484d (diff)
downloadgcc-d648b5ff3cb2bf7aec320312e79c90e49cd9b39b.zip
gcc-d648b5ff3cb2bf7aec320312e79c90e49cd9b39b.tar.gz
gcc-d648b5ff3cb2bf7aec320312e79c90e49cd9b39b.tar.bz2
use auto_bitmap more with alternate obstacks
gcc/ChangeLog: 2017-05-13 Trevor Saunders <tbsaunde+gcc@tbsaunde.org> * df-core.c (df_set_blocks): Start using auto_bitmap. (df_compact_blocks): Likewise. * df-problems.c (df_rd_confluence_n): Likewise. * df-scan.c (df_insn_rescan_all): Likewise. (df_process_deferred_rescans): Likewise. (df_update_entry_block_defs): Likewise. (df_update_exit_block_uses): Likewise. (df_entry_block_bitmap_verify): Likewise. (df_exit_block_bitmap_verify): Likewise. (df_scan_verify): Likewise. * lra-constraints.c (lra_constraints): Likewise. (undo_optional_reloads): Likewise. (lra_undo_inheritance): Likewise. * lra-remat.c (calculate_gen_cands): Likewise. (do_remat): Likewise. * lra-spills.c (assign_spill_hard_regs): Likewise. (spill_pseudos): Likewise. * tree-ssa-pre.c (bitmap_set_and): Likewise. (bitmap_set_subtract_values): Likewise. From-SVN: r248023
Diffstat (limited to 'gcc/lra-spills.c')
-rw-r--r--gcc/lra-spills.c25
1 files changed, 10 insertions, 15 deletions
diff --git a/gcc/lra-spills.c b/gcc/lra-spills.c
index 492fc18..3df6f67 100644
--- a/gcc/lra-spills.c
+++ b/gcc/lra-spills.c
@@ -223,7 +223,6 @@ assign_spill_hard_regs (int *pseudo_regnos, int n)
rtx set;
basic_block bb;
HARD_REG_SET conflict_hard_regs;
- bitmap_head ok_insn_bitmap;
bitmap setjump_crosses = regstat_get_setjmp_crosses ();
/* Hard registers which can not be used for any purpose at given
program point because they are unallocatable or already allocated
@@ -243,13 +242,13 @@ assign_spill_hard_regs (int *pseudo_regnos, int n)
for (p = r->start; p <= r->finish; p++)
add_to_hard_reg_set (&reserved_hard_regs[p],
lra_reg_info[i].biggest_mode, hard_regno);
- bitmap_initialize (&ok_insn_bitmap, &reg_obstack);
+ auto_bitmap ok_insn_bitmap (&reg_obstack);
FOR_EACH_BB_FN (bb, cfun)
FOR_BB_INSNS (bb, insn)
if (DEBUG_INSN_P (insn)
|| ((set = single_set (insn)) != NULL_RTX
&& REG_P (SET_SRC (set)) && REG_P (SET_DEST (set))))
- bitmap_set_bit (&ok_insn_bitmap, INSN_UID (insn));
+ bitmap_set_bit (ok_insn_bitmap, INSN_UID (insn));
for (res = i = 0; i < n; i++)
{
regno = pseudo_regnos[i];
@@ -260,7 +259,7 @@ assign_spill_hard_regs (int *pseudo_regnos, int n)
targetm.spill_class ((reg_class_t) rclass,
PSEUDO_REGNO_MODE (regno)))) == NO_REGS
|| bitmap_intersect_compl_p (&lra_reg_info[regno].insn_bitmap,
- &ok_insn_bitmap))
+ ok_insn_bitmap))
{
pseudo_regnos[res++] = regno;
continue;
@@ -300,7 +299,6 @@ assign_spill_hard_regs (int *pseudo_regnos, int n)
/* Just loop. */
df_set_regs_ever_live (hard_regno + nr, true);
}
- bitmap_clear (&ok_insn_bitmap);
free (reserved_hard_regs);
return res;
}
@@ -449,17 +447,16 @@ spill_pseudos (void)
basic_block bb;
rtx_insn *insn, *curr;
int i;
- bitmap_head spilled_pseudos, changed_insns;
- bitmap_initialize (&spilled_pseudos, &reg_obstack);
- bitmap_initialize (&changed_insns, &reg_obstack);
+ auto_bitmap spilled_pseudos (&reg_obstack);
+ auto_bitmap changed_insns (&reg_obstack);
for (i = FIRST_PSEUDO_REGISTER; i < regs_num; i++)
{
if (lra_reg_info[i].nrefs != 0 && lra_get_regno_hard_regno (i) < 0
&& ! lra_former_scratch_p (i))
{
- bitmap_set_bit (&spilled_pseudos, i);
- bitmap_ior_into (&changed_insns, &lra_reg_info[i].insn_bitmap);
+ bitmap_set_bit (spilled_pseudos, i);
+ bitmap_ior_into (changed_insns, &lra_reg_info[i].insn_bitmap);
}
}
FOR_EACH_BB_FN (bb, cfun)
@@ -468,7 +465,7 @@ spill_pseudos (void)
{
bool removed_pseudo_p = false;
- if (bitmap_bit_p (&changed_insns, INSN_UID (insn)))
+ if (bitmap_bit_p (changed_insns, INSN_UID (insn)))
{
rtx *link_loc, link;
@@ -526,12 +523,10 @@ spill_pseudos (void)
"Debug insn #%u is reset because it referenced "
"removed pseudo\n", INSN_UID (insn));
}
- bitmap_and_compl_into (df_get_live_in (bb), &spilled_pseudos);
- bitmap_and_compl_into (df_get_live_out (bb), &spilled_pseudos);
+ bitmap_and_compl_into (df_get_live_in (bb), spilled_pseudos);
+ bitmap_and_compl_into (df_get_live_out (bb), spilled_pseudos);
}
}
- bitmap_clear (&spilled_pseudos);
- bitmap_clear (&changed_insns);
}
/* Return true if we need to change some pseudos into memory. */