cfgcleanup.c (try_crossjump_to_edge): Always split SRC2 if it has EH predecessor edges.
* cfgcleanup.c (try_crossjump_to_edge): Always split SRC2 if it has EH predecessor edges. From-SVN: r107565
This commit is contained in:
parent
b87ff3358b
commit
b604fe9b84
@ -1,3 +1,8 @@
|
||||
2005-11-27 Steven Bosscher <stevenb@suse.de>
|
||||
|
||||
* cfgcleanup.c (try_crossjump_to_edge): Always split SRC2 if it
|
||||
has EH predecessor edges.
|
||||
|
||||
2005-11-26 Eric Christopher <echristo@apple.com>
|
||||
|
||||
* config/i386/i386.md (*zero_extendqihi2_movzbw): Avoid partial
|
||||
|
@ -1572,11 +1572,23 @@ try_crossjump_to_edge (int mode, edge e1, edge e2)
|
||||
}
|
||||
}
|
||||
|
||||
/* Avoid splitting if possible. */
|
||||
if (newpos2 == BB_HEAD (src2))
|
||||
/* Avoid splitting if possible. We must always split when SRC2 has
|
||||
EH predecessor edges, or we may end up with basic blocks with both
|
||||
normal and EH predecessor edges. */
|
||||
if (newpos2 == BB_HEAD (src2)
|
||||
&& !(EDGE_PRED (src2, 0)->flags & EDGE_EH))
|
||||
redirect_to = src2;
|
||||
else
|
||||
{
|
||||
if (newpos2 == BB_HEAD (src2))
|
||||
{
|
||||
/* Skip possible basic block header. */
|
||||
if (LABEL_P (newpos2))
|
||||
newpos2 = NEXT_INSN (newpos2);
|
||||
if (NOTE_P (newpos2))
|
||||
newpos2 = NEXT_INSN (newpos2);
|
||||
}
|
||||
|
||||
if (dump_file)
|
||||
fprintf (dump_file, "Splitting bb %i before %i insns\n",
|
||||
src2->index, nmatch);
|
||||
|
Loading…
Reference in New Issue
Block a user