https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126057
--- Comment #6 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The releases/gcc-16 branch has been updated by Jakub Jelinek <[email protected]>: https://gcc.gnu.org/g:7e670fd7e625e18378e03971d76077d8016eda18 commit r16-9284-g7e670fd7e625e18378e03971d76077d8016eda18 Author: Jakub Jelinek <[email protected]> Date: Fri Jul 3 20:45:07 2026 +0200 c++: Fix structured binding mangling during error recovery [PR126057] The following testcase ICEs during error recovery. We try to mangle a structured binding base variable, but because it has been erroneous, the mangling ICEs as it can't find the corresponding structured bindings. Now, we already have a hack in cp_finish_decomp when things are erroneous, we set assembler name to <decomp> so that mangling isn't done. But we do that only for DECL_NAMESPACE_SCOPE_P bases and block scope static structured bindings can be mangled too, and during instantiation, if tsubst_decomp_names fails, we don't call cp_finish_decomp at all, so in that case we need to also avoid the mangling of the structured binding base. 2026-07-03 Jakub Jelinek <[email protected]> PR c++/126057 * decl.cc (cp_finish_decomp): Set assembler name to <decomp> during error recovery whenever TREE_STATIC rather than just DECL_NAMESPACE_SCOPE_P. * pt.cc (tsubst_stmt): If tsubst_decomp_names fails, set assembler name to <decomp>. * g++.dg/cpp2a/decomp11.C: New test. Reviewed-by: Jason Merrill <[email protected]> (cherry picked from commit 0b533aa54d375d22a34cf34e6b35c75a317d65d3)
