[Bug c++/108218] [12/13 Regression] Constant arguments in the new expression is not checked in unevaluated operand

StevenSun2021 at hotmail dot com gcc-bugzilla@gcc.gnu.org
Sat Dec 24 20:56:51 GMT 2022


https://gcc.gnu.org/bugzilla/show_bug.cgi?id=108218

--- Comment #6 from Steven Sun <StevenSun2021 at hotmail dot com> ---
g:4df7f8c79835d56928f51f9e674d326300936e8e

c++: don't do constexpr folding in unevaluated context

The implicit constexpr patch revealed that we were doing constant evaluation
of arbitrary expressions in unevaluated contexts, leading to failure when we
tried to evaluate e.g. a call to declval.  This is wrong more generally;
only manifestly-constant-evaluated expressions should be evaluated within
an unevaluated operand.

Making this change revealed a case we were failing to mark as manifestly
constant-evaluated.

gcc/cp/ChangeLog:

* constexpr.c (maybe_constant_value): Don't evaluate
in an unevaluated operand unless manifestly const-evaluated.
(fold_non_dependent_expr_template): Likewise.
* decl.c (compute_array_index_type_loc): This context is
manifestly constant-evaluated.


More information about the Gcc-bugs mailing list