diff options
author | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-01-30 15:42:49 +0000 |
---|---|---|
committer | rguenth <rguenth@138bc75d-0d04-0410-961f-82ee72b054a4> | 2013-01-30 15:42:49 +0000 |
commit | 545cf51cad15cd5e96c7b30e34612ac546ca8626 (patch) | |
tree | 2699dd96877fb3ea03cd20f59419eddedf1d0232 | |
parent | 022d4ccc2b0052a7ec0266f8e63c94055a82fd8b (diff) | |
download | ppe42-gcc-545cf51cad15cd5e96c7b30e34612ac546ca8626.tar.gz ppe42-gcc-545cf51cad15cd5e96c7b30e34612ac546ca8626.zip |
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.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@195577 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/ChangeLog | 7 | ||||
-rw-r--r-- | gcc/cfganal.c | 10 | ||||
-rw-r--r-- | gcc/sparseset.h | 4 |
3 files changed, 13 insertions, 8 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog index 54b2167f881..44535edfb00 100644 --- a/gcc/ChangeLog +++ b/gcc/ChangeLog @@ -1,3 +1,10 @@ +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. diff --git a/gcc/cfganal.c b/gcc/cfganal.c index 25f2507b95c..63d17cede2b 100644 --- a/gcc/cfganal.c +++ b/gcc/cfganal.c @@ -1141,7 +1141,8 @@ compute_idf (bitmap def_blocks, bitmap_head *dfs) 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 @@ -1165,15 +1166,12 @@ compute_idf (bitmap def_blocks, bitmap_head *dfs) 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); } } diff --git a/gcc/sparseset.h b/gcc/sparseset.h index a9d047ade9c..c9ba09a3479 100644 --- a/gcc/sparseset.h +++ b/gcc/sparseset.h @@ -140,7 +140,7 @@ sparseset_bit_p (sparseset s, SPARSESET_ELT_TYPE e) { SPARSESET_ELT_TYPE idx; - gcc_assert (e < s->size); + gcc_checking_assert (e < s->size); idx = s->sparse[e]; @@ -174,7 +174,7 @@ sparseset_pop (sparseset s) { SPARSESET_ELT_TYPE mem = s->members; - gcc_assert (mem != 0); + gcc_checking_assert (mem != 0); s->members = mem - 1; return s->dense[mem]; |