cse.c (cse_cc_succs): Invoke delete_insn_and_edges.
authorAndreas Krebbel <krebbel1@de.ibm.com>
Wed, 14 May 2008 06:51:30 +0000 (06:51 +0000)
committerAndreas Krebbel <krebbel@gcc.gnu.org>
Wed, 14 May 2008 06:51:30 +0000 (06:51 +0000)
2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>

* cse.c (cse_cc_succs): Invoke delete_insn_and_edges.

2008-05-14  Andreas Krebbel  <krebbel1@de.ibm.com>

* g++.dg/eh/080513-1.C: New testcase.

From-SVN: r135281

gcc/ChangeLog
gcc/cse.c
gcc/testsuite/ChangeLog
gcc/testsuite/g++.dg/eh/080514-1.C [new file with mode: 0644]

index 17a46138693382e3c238dd1d5b43836dee38041d..d5b6672174f6b42e46c88a4af86b3a42dc291ac1 100644 (file)
@@ -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
index 23b61349455754c66b136f93422cf125c5a5bc71..a5efcd713bcd0a90dcca2904deab1d73059438f3 100644 (file)
--- 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;
index 699c4169f38c9e570a9a4c1ad95bc3aaf29ba888..ff7b73d74df277b0451f331a7f88e6cc53ea708b 100644 (file)
@@ -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 (file)
index 0000000..dafa325
--- /dev/null
@@ -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);
+}