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_apinski@quicinc.com>
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),