+2013-01-30 Richard Biener <rguenther@suse.de>
+
+ * sparseset.h (sparseset_bit_p): Use gcc_checking_assert.
+ (sparseset_pop): Likewise.
+ * cfganal.c (compute_idf): Likewise. Increase work-stack size
+ to be able to use quick_push in the worker loop.
+
2013-01-30 Marek Polacek <polacek@redhat.com>
* cfgcleanup.c (cleanup_cfg): Don't mark affected BBs.
vec<int> work_stack;
bitmap phi_insertion_points;
- work_stack.create (n_basic_blocks);
+ /* Each block can appear at most twice on the work-stack. */
+ work_stack.create (2 * n_basic_blocks);
phi_insertion_points = BITMAP_ALLOC (NULL);
/* Seed the work list with all the blocks in DEF_BLOCKS. We use
form, the basic blocks where new and/or old names are defined
may have disappeared by CFG cleanup calls. In this case,
we may pull a non-existing block from the work stack. */
- gcc_assert (bb_index < (unsigned) last_basic_block);
+ gcc_checking_assert (bb_index < (unsigned) last_basic_block);
EXECUTE_IF_AND_COMPL_IN_BITMAP (&dfs[bb_index], phi_insertion_points,
0, i, bi)
{
- /* Use a safe push because if there is a definition of VAR
- in every basic block, then WORK_STACK may eventually have
- more than N_BASIC_BLOCK entries. */
- work_stack.safe_push (i);
+ work_stack.quick_push (i);
bitmap_set_bit (phi_insertion_points, i);
}
}
{
SPARSESET_ELT_TYPE idx;
- gcc_assert (e < s->size);
+ gcc_checking_assert (e < s->size);
idx = s->sparse[e];
{
SPARSESET_ELT_TYPE mem = s->members;
- gcc_assert (mem != 0);
+ gcc_checking_assert (mem != 0);
s->members = mem - 1;
return s->dense[mem];