flow.c (delete_unreachable_blocks): Do not call merge_blocks or tidy_fallthru_edge if...
* flow.c (delete_unreachable_blocks): Do not call merge_blocks or tidy_fallthru_edge if the last insn in the block is not an unconditional jump or a simple conditional jump. From-SVN: r28483
This commit is contained in:
parent
31534a2cba
commit
e8fe3cc34e
@ -1,3 +1,9 @@
|
||||
Wed Aug 4 01:08:44 1999 Jeffrey A Law (law@cygnus.com)
|
||||
|
||||
* flow.c (delete_unreachable_blocks): Do not call merge_blocks
|
||||
or tidy_fallthru_edge if the last insn in the block is not
|
||||
an unconditional jump or a simple conditional jump.
|
||||
|
||||
Tue Aug 3 20:21:20 1999 J"orn Rennecke <amylaar@cygnus.co.uk>
|
||||
|
||||
* Makefile.in (c-decl.o): Depends on defaults.h.
|
||||
|
12
gcc/flow.c
12
gcc/flow.c
@ -1563,7 +1563,12 @@ delete_unreachable_blocks ()
|
||||
check that the edge is not a FALLTHRU edge. */
|
||||
if ((s = b->succ) != NULL
|
||||
&& s->succ_next == NULL
|
||||
&& s->dest == c)
|
||||
&& s->dest == c
|
||||
/* If the last insn is not a normal conditional jump
|
||||
(or an unconditional jump), then we can not tidy the
|
||||
fallthru edge because we can not delete the jump. */
|
||||
&& GET_CODE (b->end) == JUMP_INSN
|
||||
&& condjump_p (b->end))
|
||||
tidy_fallthru_edge (s, b, c);
|
||||
}
|
||||
|
||||
@ -1582,6 +1587,11 @@ delete_unreachable_blocks ()
|
||||
&& (s->flags & EDGE_EH) == 0
|
||||
&& (c = s->dest) != EXIT_BLOCK_PTR
|
||||
&& c->pred->pred_next == NULL
|
||||
/* If the last insn is not a normal conditional jump
|
||||
(or an unconditional jump), then we can not merge
|
||||
the blocks because we can not delete the jump. */
|
||||
&& GET_CODE (b->end) == JUMP_INSN
|
||||
&& condjump_p (b->end)
|
||||
&& merge_blocks (s, b, c))
|
||||
continue;
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user