diff options
author | Marek Polacek <polacek@redhat.com> | 2023-03-10 10:14:20 -0500 |
---|---|---|
committer | Marek Polacek <polacek@redhat.com> | 2023-03-15 14:23:06 -0400 |
commit | be20dcc359bcc4677c5b9ce011d3cd7b4ce94a64 (patch) | |
tree | 1a4fe7754ee9007fad482b065613da8ce7f9cd1d /gcc/fortran | |
parent | cd394c542b73cab89228f4aad7afe757e58ef126 (diff) | |
download | gcc-be20dcc359bcc4677c5b9ce011d3cd7b4ce94a64.zip gcc-be20dcc359bcc4677c5b9ce011d3cd7b4ce94a64.tar.gz gcc-be20dcc359bcc4677c5b9ce011d3cd7b4ce94a64.tar.bz2 |
c++: ICE with constexpr lambda [PR107280]
We crash here since r10-3661, the store_init_value hunk in particular.
Before, we called cp_fully_fold_init, so e.g.
{.str=VIEW_CONVERT_EXPR<char[8]>("")}
was folded into
{.str=""}
but now we don't fold and keep the VCE around, and it causes trouble in
cxx_eval_store_expression: in the !refs->is_empty () loop we descend on
.str's initializer but since it's wrapped in a VCE, we skip the STRING_CST
check and then crash on the CONSTRUCTOR_NO_CLEARING.
PR c++/107280
gcc/cp/ChangeLog:
* constexpr.cc (cxx_eval_store_expression): Strip location wrappers.
gcc/testsuite/ChangeLog:
* g++.dg/cpp1z/constexpr-lambda28.C: New test.
Diffstat (limited to 'gcc/fortran')
0 files changed, 0 insertions, 0 deletions