aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/lambda.c
diff options
context:
space:
mode:
authorJason Merrill <jason@redhat.com>2021-11-05 00:08:53 -0400
committerJason Merrill <jason@redhat.com>2021-11-15 02:45:48 -0500
commit4df7f8c79835d56928f51f9e674d326300936e8e (patch)
tree7e18a7d480f0c30b44494ef0f15f38e108fc2b11 /gcc/cp/lambda.c
parent267318a2857a42922c3ca033dac4690172b17683 (diff)
downloadgcc-4df7f8c79835d56928f51f9e674d326300936e8e.zip
gcc-4df7f8c79835d56928f51f9e674d326300936e8e.tar.gz
gcc-4df7f8c79835d56928f51f9e674d326300936e8e.tar.bz2
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.
Diffstat (limited to 'gcc/cp/lambda.c')
0 files changed, 0 insertions, 0 deletions