OSDN Git Service

2008-05-14 Andreas Krebbel <krebbel1@de.ibm.com>
authorkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 May 2008 06:51:30 +0000 (06:51 +0000)
committerkrebbel <krebbel@138bc75d-0d04-0410-961f-82ee72b054a4>
Wed, 14 May 2008 06:51:30 +0000 (06:51 +0000)
* 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.

git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@135281 138bc75d-0d04-0410-961f-82ee72b054a4

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

index 17a4613..d5b6672 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 23b6134..a5efcd7 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 699c416..ff7b73d 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);
+}