Bootstrapped and tested on x86_64-unknown-linux-gnu, applied.

I mistook the opportunity to also "fix" the [VEC_]COND_EXPR case
for PR95171 but I was wrong in that it doesn't need the fix and
in the actual fix as well.  The following just reverts that part.

2020-05-20  Richard Biener  <rguent...@suse.de>

        PR middle-end/95231
        * tree-inline.c (remap_gimple_stmt): Revert adjusting
        COND_EXPR and VEC_COND_EXPR for a -fnon-call-exception boundary.

        * g++.dg/other/pr95231.C: New testcase.
---
 gcc/testsuite/g++.dg/other/pr95231.C |  4 ++++
 gcc/tree-inline.c                    | 11 -----------
 2 files changed, 4 insertions(+), 11 deletions(-)
 create mode 100644 gcc/testsuite/g++.dg/other/pr95231.C

diff --git a/gcc/testsuite/g++.dg/other/pr95231.C 
b/gcc/testsuite/g++.dg/other/pr95231.C
new file mode 100644
index 00000000000..de063662528
--- /dev/null
+++ b/gcc/testsuite/g++.dg/other/pr95231.C
@@ -0,0 +1,4 @@
+/* { dg-do compile { target c++11 } } */
+/* { dg-options "-O3 -fnon-call-exceptions" } */
+
+#include "vector-compare.C"
diff --git a/gcc/tree-inline.c b/gcc/tree-inline.c
index 943f3f9407b..3160ca3f88a 100644
--- a/gcc/tree-inline.c
+++ b/gcc/tree-inline.c
@@ -1974,17 +1974,6 @@ remap_gimple_stmt (gimple *stmt, copy_body_data *id)
            gimple_cond_set_lhs (cond, gimple_assign_lhs (cmp));
            gimple_cond_set_rhs (cond, boolean_false_node);
          }
-      if (gassign *ass = dyn_cast <gassign *> (copy))
-       if ((gimple_assign_rhs_code (ass) == COND_EXPR
-            || gimple_assign_rhs_code (ass) == VEC_COND_EXPR)
-           && gimple_could_trap_p (ass))
-         {
-           gassign *cmp
-             = gimple_build_assign (make_ssa_name (boolean_type_node),
-                                    gimple_assign_rhs1 (ass));
-           gimple_seq_add_stmt (&stmts, cmp);
-           gimple_assign_set_rhs1 (ass, gimple_assign_lhs (cmp));
-         }
     }
 
   gimple_seq_add_stmt (&stmts, copy);
-- 
2.25.1

Reply via email to