aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--gcc/gimple.c3
-rw-r--r--gcc/testsuite/gcc.target/aarch64/sve/pr81003.c10
-rw-r--r--gcc/tree-eh.c6
3 files changed, 13 insertions, 6 deletions
diff --git a/gcc/gimple.c b/gcc/gimple.c
index d067656..f1044e9 100644
--- a/gcc/gimple.c
+++ b/gcc/gimple.c
@@ -2161,9 +2161,6 @@ gimple_could_trap_p_1 (gimple *s, bool include_mem, bool include_stores)
/* For COND_EXPR only the condition may trap. */
if (op == COND_EXPR)
return tree_could_trap_p (gimple_assign_rhs1 (s));
- /* A VEC_COND_EXPR cannot trap. */
- else if (op == VEC_COND_EXPR)
- return false;
/* For comparisons we need to check rhs operand types instead of rhs type
(which is BOOLEAN_TYPE). */
diff --git a/gcc/testsuite/gcc.target/aarch64/sve/pr81003.c b/gcc/testsuite/gcc.target/aarch64/sve/pr81003.c
new file mode 100644
index 0000000..661a6f9
--- /dev/null
+++ b/gcc/testsuite/gcc.target/aarch64/sve/pr81003.c
@@ -0,0 +1,10 @@
+/* { dg-options "-O3" } */
+
+unsigned int a, b;
+
+void
+foo (void)
+{
+ for (b = 0; b < 13; b += 2)
+ a &= !!b;
+}
diff --git a/gcc/tree-eh.c b/gcc/tree-eh.c
index a68778b..601285c 100644
--- a/gcc/tree-eh.c
+++ b/gcc/tree-eh.c
@@ -2541,9 +2541,9 @@ operation_could_trap_p (enum tree_code op, bool fp_operation, bool honor_trapv,
bool honor_snans = fp_operation && flag_signaling_nans != 0;
bool handled;
- /* This function cannot tell whether or not COND_EXPR and VEC_COND_EXPR could
- trap, because that depends on the respective condition op. */
- gcc_assert (op != COND_EXPR && op != VEC_COND_EXPR);
+ /* This function cannot tell whether or not COND_EXPR could trap,
+ because that depends on its condition op. */
+ gcc_assert (op != COND_EXPR);
if (TREE_CODE_CLASS (op) != tcc_comparison
&& TREE_CODE_CLASS (op) != tcc_unary