[Bug c++/121601] [16 Regression] ICE when exception is thrown from static_assert message expression
jakub at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Aug 19 20:59:48 GMT 2025
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121601
--- Comment #2 from Jakub Jelinek <jakub at gcc dot gnu.org> ---
--- a/gcc/cp/constexpr.cc
+++ b/gcc/cp/constexpr.cc
@@ -2694,6 +2694,8 @@ cxx_bind_parameters_in_call (const constexpr_ctx *ctx,
tree t, tree fun,
arg = cxx_eval_constant_expression (ctx, x, vc_prvalue,
non_constant_p, overflow_p,
jump_target);
+ if (*jump_target)
+ break;
/* Check we aren't dereferencing a null pointer when calling a
non-static
member function, which is undefined behaviour. */
if (i == 0 && DECL_OBJECT_MEMBER_FUNCTION_P (fun)
@@ -2711,8 +2713,6 @@ cxx_bind_parameters_in_call (const constexpr_ctx *ctx,
tree t, tree fun,
/* Don't VERIFY_CONSTANT here. */
if (*non_constant_p && ctx->quiet)
break;
- if (*jump_target)
- break;
/* Just discard ellipsis args after checking their constantitude. */
if (!parms)
continue;
should fix this. cxx_eval_constant_expresison can return NULL_TREE if
*jump_target is set (especially to the throws case).
More information about the Gcc-bugs
mailing list