Commit b604fe9b by Steven Bosscher Committed by Steven Bosscher

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
parent b87ff335
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);
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment