aboutsummaryrefslogtreecommitdiff
path: root/gcc
diff options
context:
space:
mode:
authorRichard Henderson <rth@redhat.com>2001-02-18 12:06:51 -0800
committerRichard Henderson <rth@gcc.gnu.org>2001-02-18 12:06:51 -0800
commit3bd241172417b6329baf196858143269c4b362e5 (patch)
tree166893fdd6431288bb5d979f1e74ce8ff1f392ac /gcc
parente0fff4b3a7312cd08165c9a010dbafc1a4c98316 (diff)
downloadgcc-3bd241172417b6329baf196858143269c4b362e5.zip
gcc-3bd241172417b6329baf196858143269c4b362e5.tar.gz
gcc-3bd241172417b6329baf196858143269c4b362e5.tar.bz2
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
Diffstat (limited to 'gcc')
-rw-r--r--gcc/ChangeLog5
-rw-r--r--gcc/ifcvt.c9
2 files changed, 14 insertions, 0 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index b6e2a47..3e663b3 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,5 +1,10 @@
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>
+
* config/ns32k/ns32k.h (ADJSP): Upcase arguments.
* config/alpha/alpha.md (movsi_fix): Fix typo in pattern name.
diff --git a/gcc/ifcvt.c b/gcc/ifcvt.c
index 652814e..a5494b8 100644
--- a/gcc/ifcvt.c
+++ b/gcc/ifcvt.c
@@ -1855,6 +1855,15 @@ dead_or_predicable (test_bb, merge_bb, other_bb, new_dest, reversep)
{
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;
/* Find the extent of the real code in the merge block. */