aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/ChangeLog4
-rw-r--r--gcc/cse.c2
-rw-r--r--gcc/testsuite/ChangeLog4
-rw-r--r--gcc/testsuite/g++.dg/eh/080514-1.C16
4 files changed, 25 insertions, 1 deletions
diff --git a/gcc/ChangeLog b/gcc/ChangeLog
index 17a4613..d5b6672 100644
--- a/gcc/ChangeLog
+++ b/gcc/ChangeLog
@@ -1,3 +1,7 @@
+2008-05-14 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
+
2008-05-13 Uros Bizjak <ubizjak@gmail.com>
PR target/36222
diff --git a/gcc/cse.c b/gcc/cse.c
index 23b6134..a5efcd7 100644
--- a/gcc/cse.c
+++ b/gcc/cse.c
@@ -6861,7 +6861,7 @@ cse_cc_succs (basic_block bb, rtx cc_reg, rtx cc_src, bool can_change_mode)
newreg);
}
- delete_insn (insns[i]);
+ delete_insn_and_edges (insns[i]);
}
return mode;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index 699c416..ff7b73d 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2008-05-14 Andreas Krebbel <krebbel1@de.ibm.com>
+
+ * g++.dg/eh/080513-1.C: New testcase.
+
2008-05-13 Uros Bizjak <ubizjak@gmail.com>
PR target/36222
diff --git a/gcc/testsuite/g++.dg/eh/080514-1.C b/gcc/testsuite/g++.dg/eh/080514-1.C
new file mode 100644
index 0000000..dafa325
--- /dev/null
+++ b/gcc/testsuite/g++.dg/eh/080514-1.C
@@ -0,0 +1,16 @@
+// This used to fail on s390 due to cse removing an insn with a
+// REG_EH_REGION without deleting the EH edge.
+// { dg-do compile }
+// { dg-options "-O2 -fnon-call-exceptions" }
+
+void
+run (int m, double d)
+{
+ int stack[m];
+ int *sp = stack;
+
+ if (d == 1.0)
+ *(sp++) = (0);
+ else if (d < 1.0)
+ *(sp++) = (-1);
+}