diff options
author | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-04 23:51:28 +0000 |
---|---|---|
committer | rakdver <rakdver@138bc75d-0d04-0410-961f-82ee72b054a4> | 2007-02-04 23:51:28 +0000 |
commit | 2a3e49aaaafabed2113c746c6363d6250de418a2 (patch) | |
tree | cb5883febf06ea7e39d3e7a41458c08e927af1a5 /gcc/cfgcleanup.c | |
parent | 611d2ac17cbd3df0489cffe3fda88ec503a3e059 (diff) | |
download | gcc-2a3e49aaaafabed2113c746c6363d6250de418a2.tar.gz |
* cfgcleanup.c (try_optimize_cfg): Avoid removing ENTRY_BLOCK_PTR.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@121584 138bc75d-0d04-0410-961f-82ee72b054a4
Diffstat (limited to 'gcc/cfgcleanup.c')
-rw-r--r-- | gcc/cfgcleanup.c | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/gcc/cfgcleanup.c b/gcc/cfgcleanup.c index 7c5b745a650..ee5c69bd2e6 100644 --- a/gcc/cfgcleanup.c +++ b/gcc/cfgcleanup.c @@ -1992,7 +1992,7 @@ try_optimize_cfg (int mode) bool changed_here = false; /* Delete trivially dead basic blocks. */ - while (EDGE_COUNT (b->preds) == 0) + if (EDGE_COUNT (b->preds) == 0) { c = b->prev_bb; if (dump_file) @@ -2002,7 +2002,9 @@ try_optimize_cfg (int mode) delete_basic_block (b); if (!(mode & CLEANUP_CFGLAYOUT)) changed = true; - b = c; + /* Avoid trying to remove ENTRY_BLOCK_PTR. */ + b = (c == ENTRY_BLOCK_PTR ? c->next_bb : c); + continue; } /* Remove code labels no longer used. */ |