aboutsummaryrefslogtreecommitdiff
path: root/gcc/tree-eh.c
diff options
context:
space:
mode:
authorRichard Sandiford <richard.sandiford@arm.com>2021-04-27 18:30:36 +0100
committerRichard Sandiford <richard.sandiford@arm.com>2021-04-27 18:30:36 +0100
commitd0a57b030f1c7df33c6bc3c661d16c9cb79e96dd (patch)
treef795bc6ca70c9a3e42e8ec329abb66a32579b101 /gcc/tree-eh.c
parent2ae2a45c287d254c2890feff2cca46ed2ddb06ca (diff)
downloadgcc-d0a57b030f1c7df33c6bc3c661d16c9cb79e96dd.zip
gcc-d0a57b030f1c7df33c6bc3c661d16c9cb79e96dd.tar.gz
gcc-d0a57b030f1c7df33c6bc3c661d16c9cb79e96dd.tar.bz2
Fix handling of VEC_COND_EXPR trap tests [PR100284]
Now that VEC_COND_EXPR has normal unnested operands, operation_could_trap_p can treat it like any other expression. This fixes many testsuite ICEs for SVE, but it turns out that none of the tests in gcc.target/aarch64/sve were affected. Anyone testing on non-SVE aarch64 therefore wouldn't have seen it. gcc/ PR middle-end/100284 * gimple.c (gimple_could_trap_p_1): Remove VEC_COND_EXPR test. * tree-eh.c (operation_could_trap_p): Handle VEC_COND_EXPR rather than asserting on it. gcc/testsuite/ PR middle-end/100284 * gcc.target/aarch64/sve/pr81003.c: New test.
Diffstat (limited to 'gcc/tree-eh.c')
-rw-r--r--gcc/tree-eh.c6
1 files changed, 3 insertions, 3 deletions
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