diff options
author | Alexander Monakov <amonakov@ispras.ru> | 2009-04-28 14:01:52 +0400 |
---|---|---|
committer | Alexander Monakov <amonakov@gcc.gnu.org> | 2009-04-28 14:01:52 +0400 |
commit | f2c45f08668a1e898d965d02914957d03ffb091f (patch) | |
tree | 49f2c287d751ab49352e33fce6814bbe9a083ce9 /gcc/sel-sched.c | |
parent | 7a00d767b7c149202d3a8d0600e7384940eec14d (diff) | |
download | gcc-f2c45f08668a1e898d965d02914957d03ffb091f.tar.gz |
20071210-2.c: New testcase.
gcc/testsuite/Changelog:
2009-04-28 Alexander Monakov <amonakov@ispras.ru>
* gcc.target/ia64/20071210-2.c: New testcase.
gcc/Changelog:
2009-04-28 Alexander Monakov <amonakov@ispras.ru>
* sel-sched-ir.c (maybe_tidy_empty_bb): Do not attempt to delete a
block if there are complex incoming edges.
(sel_merge_blocks): Remove useless assert.
(sel_redirect_edge_and_branch): Check that edge was redirected.
* sel-sched-ir.h (_eligible_successor_edge_p): Remove assert.
(sel_find_rgns): Delete declaration.
* sel-sched.c (purge_empty_blocks): Attempt to remove first block of
the region when it is not a preheader.
From-SVN: r146882
Diffstat (limited to 'gcc/sel-sched.c')
-rw-r--r-- | gcc/sel-sched.c | 5 |
1 files changed, 3 insertions, 2 deletions
diff --git a/gcc/sel-sched.c b/gcc/sel-sched.c index e524d02516f..b1a33beb7d0 100644 --- a/gcc/sel-sched.c +++ b/gcc/sel-sched.c @@ -6483,9 +6483,10 @@ setup_current_loop_nest (int rgn) static void purge_empty_blocks (void) { - int i ; + /* Do not attempt to delete preheader. */ + int i = sel_is_loop_preheader_p (BASIC_BLOCK (BB_TO_BLOCK (0))) ? 1 : 0; - for (i = 1; i < current_nr_blocks; ) + while (i < current_nr_blocks) { basic_block b = BASIC_BLOCK (BB_TO_BLOCK (i)); |