diff options
author | Trevor Saunders <tbsaunde+gcc@tbsaunde.org> | 2017-05-14 00:38:59 +0000 |
---|---|---|
committer | Trevor Saunders <tbsaunde@gcc.gnu.org> | 2017-05-14 00:38:59 +0000 |
commit | d648b5ff3cb2bf7aec320312e79c90e49cd9b39b (patch) | |
tree | dcf7daa4381cf183540db2795959f7f418fc0e5e /gcc/lra-spills.c | |
parent | 8f9b31f7f161bd00d9c7847f117591ec85f9484d (diff) | |
download | gcc-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.c | 25 |
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, ®_obstack); + auto_bitmap ok_insn_bitmap (®_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, ®_obstack); - bitmap_initialize (&changed_insns, ®_obstack); + auto_bitmap spilled_pseudos (®_obstack); + auto_bitmap changed_insns (®_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. */ |