[Bug c++/106230] [12 Regression] ICE when building folly-2022.07.04.00 in pop_local_binding (cp/name-lookup.cc:2474) since r12-6328-gbeaee0a871b6485d
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jul 26 03:12:14 GMT 2022
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=106230
--- Comment #7 from CVS Commits <cvs-commit at gcc dot gnu.org> ---
The releases/gcc-12 branch has been updated by Jason Merrill
<jason@gcc.gnu.org>:
https://gcc.gnu.org/g:60954a06ceb1598d86763e5504d8e1b874b6bd6a
commit r12-8618-g60954a06ceb1598d86763e5504d8e1b874b6bd6a
Author: Jason Merrill <jason@redhat.com>
Date: Mon Jul 25 11:13:31 2022 -0400
c++: aggregate prvalue as for range [PR106230]
Since my PR94041 work on temporary lifetime in aggregate initialization, we
end up calling build_vec_init to initialize the reference-extended
temporary
for the artificial __for_range variable. And build_vec_init uses
finish_for_stmt to implement its loop. That function assumes that if
__for_range is in current_binding_level, we're finishing a range-for, and
we
should fix up the variable as it goes out of scope. But when called from
build_vec_init we aren't finishing a range-for, and do_poplevel doesn't
remove the variable from scope because stmts_are_full_exprs_p is false. So
let's check that here as well, and leave the DECL_NAME alone.
PR c++/106230
gcc/cp/ChangeLog:
* semantics.cc (finish_for_stmt): Check stmts_are_full_exprs_p.
gcc/testsuite/ChangeLog:
* g++.dg/cpp0x/range-for38.C: New test.
More information about the Gcc-bugs
mailing list