https://gcc.gnu.org/bugzilla/show_bug.cgi?id=126057
--- Comment #5 from GCC Commits <cvs-commit at gcc dot gnu.org> --- The master branch has been updated by Jakub Jelinek <[email protected]>: https://gcc.gnu.org/g:0b533aa54d375d22a34cf34e6b35c75a317d65d3 commit r17-2128-g0b533aa54d375d22a34cf34e6b35c75a317d65d3 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]>
