diff options
-rw-r--r-- | gcc/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/cse.c | 2 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/eh/080514-1.C | 16 |
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 @@ -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); +} |