+2018-12-06 Richard Biener <rguenther@suse.de>
+
+ * df-problems.c (df_rd_local_compute): Use bitmap_release.
+ (df_live_free): Likewise.
+ (df_md_local_compute): Likewise.
+ (df_md_free): Release df_md_scratch bitmap.
+ * loop-invariant.c (calculate_loop_reg_pressure): Use
+ bitmap_release.
+ * sched-deps.c (true_dependency_cache, output_dependency_cache,
+ anti_dependency_cache, control_dependency_cache,
+ spec_dependency_cache): Use bitmap instead of bitmap_head *.
+ * sched-ebb.c (schedule_ebbs_init): Initialize non-GTY
+ dont_calc_deps as bitmap allocated from obstack not GC.
+ (schedule_ebbs_finish): Use bitmap_release.
+ * sched-rgn.c (schedule_insns): Initialize non-GTY
+ not_in_df as bitmap allocated from obstack not GC.
+ Use bitmap_release.
+ * sel-sched.c (_forced_ebb_heads): Remove premature optimization.
+ (sel_region_init): Allocate forced_ebb_heads.
+ (sel_region_finish): Free forced_ebb_heads.
+
2018-12-06 Richard Biener <rguenther@suse.de>
* bitmap.c (bitmap_head::crashme): Define.
}
}
- bitmap_clear (&seen_in_block);
- bitmap_clear (&seen_in_insn);
+ bitmap_release (&seen_in_block);
+ bitmap_release (&seen_in_insn);
}
df_live->block_info_size = 0;
free (df_live->block_info);
df_live->block_info = NULL;
- bitmap_clear (&df_live_scratch);
+ bitmap_release (&df_live_scratch);
bitmap_obstack_release (&problem_data->live_bitmaps);
free (problem_data);
df_live->problem_data = NULL;
df_md_bb_local_compute (bb_index);
}
- bitmap_clear (&seen_in_insn);
+ bitmap_release (&seen_in_insn);
frontiers = XNEWVEC (bitmap_head, last_basic_block_for_fn (cfun));
FOR_ALL_BB_FN (bb, cfun)
struct df_md_problem_data *problem_data
= (struct df_md_problem_data *) df_md->problem_data;
+ bitmap_release (&df_md_scratch);
bitmap_obstack_release (&problem_data->md_bitmaps);
free (problem_data);
df_md->problem_data = NULL;
}
}
}
- bitmap_clear (&curr_regs_live);
+ bitmap_release (&curr_regs_live);
if (flag_ira_region == IRA_REGION_MIXED
|| flag_ira_region == IRA_REGION_ALL)
FOR_EACH_LOOP (loop, 0)
has enough entries to represent a dependency on any other insn in
the insn chain. All bitmap for true dependencies cache is
allocated then the rest two ones are also allocated. */
-static bitmap_head *true_dependency_cache = NULL;
-static bitmap_head *output_dependency_cache = NULL;
-static bitmap_head *anti_dependency_cache = NULL;
-static bitmap_head *control_dependency_cache = NULL;
-static bitmap_head *spec_dependency_cache = NULL;
+static bitmap true_dependency_cache = NULL;
+static bitmap output_dependency_cache = NULL;
+static bitmap anti_dependency_cache = NULL;
+static bitmap control_dependency_cache = NULL;
+static bitmap spec_dependency_cache = NULL;
static int cache_size;
/* True if we should mark added dependencies as a non-register deps. */
compute_bb_for_insn ();
/* Initialize DONT_CALC_DEPS and ebb-{start, end} markers. */
- bitmap_initialize (&dont_calc_deps, 0);
- bitmap_clear (&dont_calc_deps);
+ bitmap_initialize (&dont_calc_deps, &bitmap_default_obstack);
}
/* Perform cleanups after scheduling using schedules_ebbs or schedule_ebb. */
void
schedule_ebbs_finish (void)
{
- bitmap_clear (&dont_calc_deps);
+ bitmap_release (&dont_calc_deps);
/* Reposition the prologue and epilogue notes in case we moved the
prologue/epilogue insns. */
haifa_sched_init ();
sched_rgn_init (reload_completed);
- bitmap_initialize (¬_in_df, 0);
- bitmap_clear (¬_in_df);
+ bitmap_initialize (¬_in_df, &bitmap_default_obstack);
/* Schedule every region in the subroutine. */
for (rgn = 0; rgn < nr_regions; rgn++)
/* Clean up. */
sched_rgn_finish ();
- bitmap_clear (¬_in_df);
+ bitmap_release (¬_in_df);
haifa_sched_finish ();
}
/* Set of basic blocks that are forced to start new ebbs. This is a subset
of all the ebb heads. */
-static bitmap_head _forced_ebb_heads;
-bitmap_head *forced_ebb_heads = &_forced_ebb_heads;
+bitmap forced_ebb_heads;
/* Blocks that need to be rescheduled after pipelining. */
bitmap blocks_to_reschedule = NULL;
memset (reg_rename_tick, 0, sizeof reg_rename_tick);
reg_rename_this_tick = 0;
- bitmap_initialize (forced_ebb_heads, 0);
- bitmap_clear (forced_ebb_heads);
+ forced_ebb_heads = BITMAP_ALLOC (NULL);
setup_nop_vinsn ();
current_copies = BITMAP_ALLOC (NULL);
sel_finish_global_and_expr ();
- bitmap_clear (forced_ebb_heads);
+ BITMAP_FREE (forced_ebb_heads);
free_nop_vinsn ();