While working on PR 119903, I noticed that there is code in replace_stmt_with_simplification which makes sure that the comparison of a GIMPLE_COND does not throw (non-call exceptions and trapping math) but the gimple verifier does not verify this. So let's add it.
Bootstrapped and tested on x86_64-linux-gnu. gcc/ChangeLog: * tree-cfg.cc (verify_gimple_cond): Error out if the comparison throws. Signed-off-by: Andrew Pinski <quic_apin...@quicinc.com> --- gcc/tree-cfg.cc | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/gcc/tree-cfg.cc b/gcc/tree-cfg.cc index 6a29a56ca9a..712bda1f8ca 100644 --- a/gcc/tree-cfg.cc +++ b/gcc/tree-cfg.cc @@ -5113,6 +5113,19 @@ verify_gimple_cond (gcond *stmt) return true; } + tree lhs = gimple_cond_lhs (stmt); + + /* GIMPLE_CONDs condition may not throw. */ + if (flag_exceptions + && cfun->can_throw_non_call_exceptions + && operation_could_trap_p (gimple_cond_code (stmt), + FLOAT_TYPE_P (TREE_TYPE (lhs)), + false, NULL_TREE)) + { + error ("gimple cond condition cannot throw"); + return true; + } + return verify_gimple_comparison (boolean_type_node, gimple_cond_lhs (stmt), gimple_cond_rhs (stmt), -- 2.43.0