Re: [PATCH 09/13] use auto_bitmap more with alternate obstacks

2017-05-10 Thread Richard Biener
On Tue, May 9, 2017 at 10:52 PM,   wrote:
> From: Trevor Saunders 
>
> gcc/ChangeLog:

Ok.

> 2017-05-09  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.
> ---
>  gcc/df-core.c | 30 +++--
>  gcc/df-problems.c | 10 +++---
>  gcc/df-scan.c | 93 
> ---
>  gcc/lra-constraints.c | 42 ++-
>  gcc/lra-remat.c   | 43 ++--
>  gcc/lra-spills.c  | 25 ++
>  gcc/tree-ssa-pre.c| 17 --
>  7 files changed, 104 insertions(+), 156 deletions(-)
>
> diff --git a/gcc/df-core.c b/gcc/df-core.c
> index 98787a768c6..1b270d417aa 100644
> --- a/gcc/df-core.c
> +++ b/gcc/df-core.c
> @@ -497,9 +497,8 @@ df_set_blocks (bitmap blocks)
>   /* This block is called to change the focus from one subset
>  to another.  */
>   int p;
> - bitmap_head diff;
> - bitmap_initialize (, _bitmap_obstack);
> - bitmap_and_compl (, df->blocks_to_analyze, blocks);
> + auto_bitmap diff (_bitmap_obstack);
> + bitmap_and_compl (diff, df->blocks_to_analyze, blocks);
>   for (p = 0; p < df->num_problems_defined; p++)
> {
>   struct dataflow *dflow = df->problems_in_order[p];
> @@ -510,7 +509,7 @@ df_set_blocks (bitmap blocks)
>   bitmap_iterator bi;
>   unsigned int bb_index;
>
> - EXECUTE_IF_SET_IN_BITMAP (, 0, bb_index, bi)
> + EXECUTE_IF_SET_IN_BITMAP (diff, 0, bb_index, bi)
> {
>   basic_block bb = BASIC_BLOCK_FOR_FN (cfun, bb_index);
>   if (bb)
> @@ -522,8 +521,6 @@ df_set_blocks (bitmap blocks)
> }
> }
> }
> -
> -  bitmap_clear ();
> }
>else
> {
> @@ -1652,9 +1649,8 @@ df_compact_blocks (void)
>int i, p;
>basic_block bb;
>void *problem_temps;
> -  bitmap_head tmp;
>
> -  bitmap_initialize (, _bitmap_obstack);
> +  auto_bitmap tmp (_bitmap_obstack);
>for (p = 0; p < df->num_problems_defined; p++)
>  {
>struct dataflow *dflow = df->problems_in_order[p];
> @@ -1663,17 +1659,17 @@ df_compact_blocks (void)
>  dflow problem.  */
>if (dflow->out_of_date_transfer_functions)
> {
> - bitmap_copy (, dflow->out_of_date_transfer_functions);
> + bitmap_copy (tmp, dflow->out_of_date_transfer_functions);
>   bitmap_clear (dflow->out_of_date_transfer_functions);
> - if (bitmap_bit_p (, ENTRY_BLOCK))
> + if (bitmap_bit_p (tmp, ENTRY_BLOCK))
> bitmap_set_bit (dflow->out_of_date_transfer_functions, 
> ENTRY_BLOCK);
> - if (bitmap_bit_p (, EXIT_BLOCK))
> + if (bitmap_bit_p (tmp, EXIT_BLOCK))
> bitmap_set_bit (dflow->out_of_date_transfer_functions, 
> EXIT_BLOCK);
>
>   i = NUM_FIXED_BLOCKS;
>   FOR_EACH_BB_FN (bb, cfun)
> {
> - if (bitmap_bit_p (, bb->index))
> + if (bitmap_bit_p (tmp, bb->index))
> bitmap_set_bit (dflow->out_of_date_transfer_functions, i);
>   i++;
> }
> @@ -1711,23 +1707,21 @@ df_compact_blocks (void)
>
>if (df->blocks_to_analyze)
>  {
> -  if (bitmap_bit_p (, ENTRY_BLOCK))
> +  if (bitmap_bit_p (tmp, ENTRY_BLOCK))
> bitmap_set_bit (df->blocks_to_analyze, ENTRY_BLOCK);
> -  if (bitmap_bit_p (, EXIT_BLOCK))
> +  if (bitmap_bit_p (tmp, EXIT_BLOCK))
> bitmap_set_bit (df->blocks_to_analyze, EXIT_BLOCK);
> -  bitmap_copy (, df->blocks_to_analyze);
> +  bitmap_copy (tmp, df->blocks_to_analyze);
>bitmap_clear (df->blocks_to_analyze);
>i = NUM_FIXED_BLOCKS;
>FOR_EACH_BB_FN (bb, cfun)
> {
> - if (bitmap_bit_p (, bb->index))
> + if (bitmap_bit_p (tmp, bb->index))
> bitmap_set_bit (df->blocks_to_analyze, i);
>  

[PATCH 09/13] use auto_bitmap more with alternate obstacks

2017-05-09 Thread tbsaunde+gcc
From: Trevor Saunders 

gcc/ChangeLog:

2017-05-09  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.
---
 gcc/df-core.c | 30 +++--
 gcc/df-problems.c | 10 +++---
 gcc/df-scan.c | 93 ---
 gcc/lra-constraints.c | 42 ++-
 gcc/lra-remat.c   | 43 ++--
 gcc/lra-spills.c  | 25 ++
 gcc/tree-ssa-pre.c| 17 --
 7 files changed, 104 insertions(+), 156 deletions(-)

diff --git a/gcc/df-core.c b/gcc/df-core.c
index 98787a768c6..1b270d417aa 100644
--- a/gcc/df-core.c
+++ b/gcc/df-core.c
@@ -497,9 +497,8 @@ df_set_blocks (bitmap blocks)
  /* This block is called to change the focus from one subset
 to another.  */
  int p;
- bitmap_head diff;
- bitmap_initialize (, _bitmap_obstack);
- bitmap_and_compl (, df->blocks_to_analyze, blocks);
+ auto_bitmap diff (_bitmap_obstack);
+ bitmap_and_compl (diff, df->blocks_to_analyze, blocks);
  for (p = 0; p < df->num_problems_defined; p++)
{
  struct dataflow *dflow = df->problems_in_order[p];
@@ -510,7 +509,7 @@ df_set_blocks (bitmap blocks)
  bitmap_iterator bi;
  unsigned int bb_index;
 
- EXECUTE_IF_SET_IN_BITMAP (, 0, bb_index, bi)
+ EXECUTE_IF_SET_IN_BITMAP (diff, 0, bb_index, bi)
{
  basic_block bb = BASIC_BLOCK_FOR_FN (cfun, bb_index);
  if (bb)
@@ -522,8 +521,6 @@ df_set_blocks (bitmap blocks)
}
}
}
-
-  bitmap_clear ();
}
   else
{
@@ -1652,9 +1649,8 @@ df_compact_blocks (void)
   int i, p;
   basic_block bb;
   void *problem_temps;
-  bitmap_head tmp;
 
-  bitmap_initialize (, _bitmap_obstack);
+  auto_bitmap tmp (_bitmap_obstack);
   for (p = 0; p < df->num_problems_defined; p++)
 {
   struct dataflow *dflow = df->problems_in_order[p];
@@ -1663,17 +1659,17 @@ df_compact_blocks (void)
 dflow problem.  */
   if (dflow->out_of_date_transfer_functions)
{
- bitmap_copy (, dflow->out_of_date_transfer_functions);
+ bitmap_copy (tmp, dflow->out_of_date_transfer_functions);
  bitmap_clear (dflow->out_of_date_transfer_functions);
- if (bitmap_bit_p (, ENTRY_BLOCK))
+ if (bitmap_bit_p (tmp, ENTRY_BLOCK))
bitmap_set_bit (dflow->out_of_date_transfer_functions, ENTRY_BLOCK);
- if (bitmap_bit_p (, EXIT_BLOCK))
+ if (bitmap_bit_p (tmp, EXIT_BLOCK))
bitmap_set_bit (dflow->out_of_date_transfer_functions, EXIT_BLOCK);
 
  i = NUM_FIXED_BLOCKS;
  FOR_EACH_BB_FN (bb, cfun)
{
- if (bitmap_bit_p (, bb->index))
+ if (bitmap_bit_p (tmp, bb->index))
bitmap_set_bit (dflow->out_of_date_transfer_functions, i);
  i++;
}
@@ -1711,23 +1707,21 @@ df_compact_blocks (void)
 
   if (df->blocks_to_analyze)
 {
-  if (bitmap_bit_p (, ENTRY_BLOCK))
+  if (bitmap_bit_p (tmp, ENTRY_BLOCK))
bitmap_set_bit (df->blocks_to_analyze, ENTRY_BLOCK);
-  if (bitmap_bit_p (, EXIT_BLOCK))
+  if (bitmap_bit_p (tmp, EXIT_BLOCK))
bitmap_set_bit (df->blocks_to_analyze, EXIT_BLOCK);
-  bitmap_copy (, df->blocks_to_analyze);
+  bitmap_copy (tmp, df->blocks_to_analyze);
   bitmap_clear (df->blocks_to_analyze);
   i = NUM_FIXED_BLOCKS;
   FOR_EACH_BB_FN (bb, cfun)
{
- if (bitmap_bit_p (, bb->index))
+ if (bitmap_bit_p (tmp, bb->index))
bitmap_set_bit (df->blocks_to_analyze, i);
  i++;
}
 }
 
-  bitmap_clear ();
-
   i = NUM_FIXED_BLOCKS;
   FOR_EACH_BB_FN (bb, cfun)
 {
diff --git a/gcc/df-problems.c b/gcc/df-problems.c
index 92323a39d8a..755aecf46df 100644
--- a/gcc/df-problems.c
+++ b/gcc/df-problems.c
@@ -461,19 +461,17 @@ df_rd_confluence_n (edge e)