ifcvt.c (dead_or_predicable): Don't move code if eh regions would be disrupted.

* ifcvt.c (dead_or_predicable): Don't move code if eh regions
        would be disrupted.

From-SVN: r39843
This commit is contained in:
Richard Henderson 2001-02-18 12:06:51 -08:00 committed by Richard Henderson
parent e0fff4b3a7
commit 3bd2411724
2 changed files with 14 additions and 0 deletions

View File

@ -1,3 +1,8 @@
2001-02-18 Richard Henderson <rth@redhat.com>
* ifcvt.c (dead_or_predicable): Don't move code if eh regions
would be disrupted.
2001-02-18 Richard Henderson <rth@redhat.com> 2001-02-18 Richard Henderson <rth@redhat.com>
* config/ns32k/ns32k.h (ADJSP): Upcase arguments. * config/ns32k/ns32k.h (ADJSP): Upcase arguments.

View File

@ -1855,6 +1855,15 @@ dead_or_predicable (test_bb, merge_bb, other_bb, new_dest, reversep)
{ {
rtx head, end, jump, earliest, old_dest; rtx head, end, jump, earliest, old_dest;
/* No code movement can occur if we'd be scrogging EH regions.
Within MERGE_BB, ensure that we've not got stray EH_BEG or EH_END
notes within the block. Between the blocks, checking that the end
region numbers match ensures that we won't disrupt the nesting
between regions. */
if (merge_bb->eh_beg != merge_bb->eh_end
|| merge_bb->eh_end != test_bb->eh_end)
return FALSE;
jump = test_bb->end; jump = test_bb->end;
/* Find the extent of the real code in the merge block. */ /* Find the extent of the real code in the merge block. */