OSDN Git Service
(root)
/
pf3gnuchains
/
gcc-fork.git
/ blobdiff
commit
grep
author
committer
pickaxe
?
search:
re
summary
|
shortlog
|
log
|
commit
|
commitdiff
|
tree
raw
|
inline
| side by side
2007-04-06 Ed Schonberg <schonberg@adacore.com>
[pf3gnuchains/gcc-fork.git]
/
gcc
/
cfgcleanup.c
diff --git
a/gcc/cfgcleanup.c
b/gcc/cfgcleanup.c
index
7c5b745
..
c2595ea
100644
(file)
--- 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. */
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)
{
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;
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. */
}
/* Remove code labels no longer used. */
@@
-2032,6
+2034,8
@@
try_optimize_cfg (int mode)
reorder_insns_nobb (label, label, bb_note);
BB_HEAD (b) = bb_note;
reorder_insns_nobb (label, label, bb_note);
BB_HEAD (b) = bb_note;
+ if (BB_END (b) == bb_note)
+ BB_END (b) = label;
}
if (dump_file)
fprintf (dump_file, "Deleted label in block %i.\n",
}
if (dump_file)
fprintf (dump_file, "Deleted label in block %i.\n",