From d648b5ff3cb2bf7aec320312e79c90e49cd9b39b Mon Sep 17 00:00:00 2001 From: Trevor Saunders Date: Sun, 14 May 2017 00:38:59 +0000 Subject: use auto_bitmap more with alternate obstacks gcc/ChangeLog: 2017-05-13 Trevor Saunders * 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 --- gcc/lra-spills.c | 25 ++++++++++--------------- 1 file changed, 10 insertions(+), 15 deletions(-) (limited to 'gcc/lra-spills.c') 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. */ -- cgit v1.1