[Bug c++/121597] ICE: Segmentation fault, involving nested generic lambda and argument deduction
cvs-commit at gcc dot gnu.org
gcc-bugzilla@gcc.gnu.org
Tue Jun 9 18:39:36 GMT 2026
https://gcc.gnu.org/bugzilla/show_bug.cgi?id=121597
--- Comment #1 from GCC Commits <cvs-commit at gcc dot gnu.org> ---
The trunk branch has been updated by Marek Polacek <mpolacek@gcc.gnu.org>:
https://gcc.gnu.org/g:811cc466193d7efcfcc07d2081b1284d97fc91a1
commit r17-1455-g811cc466193d7efcfcc07d2081b1284d97fc91a1
Author: Marek Polacek <polacek@redhat.com>
Date: Tue May 19 19:03:33 2026 -0400
c++: recognize more aliases with lambda targs [PR125212]
This patch introduces a new TYPE_DECL flag so that dependent_opaque_alias_p
doesn't have to peruse the tree every time it's called to see if there is
a LAMBDA_EXPR, in which case the alias should be opaque. Using walk_tree
in dependent_opaque_alias_p was too expensive, and the special cases we
had there were fooled by more deeply nested lambdas.
Compiling range-v3's zip.cpp, perf stat shows:
this patch: 28.826446158 seconds time elapsed
trunk: 29.425441889 seconds time elapsed
so this patch makes the situation marginally better.
PR c++/121287
PR c++/125212
PR c++/105667
PR c++/121597
PR c++/110961
gcc/cp/ChangeLog:
* cp-tree.h (TYPE_DECL_OPAQUE_ALIAS_P): Define.
(any_lambdas_p): Declare.
* decl.cc (grokdeclarator): Set TYPE_DECL_OPAQUE_ALIAS_P.
* pt.cc (dependent_opaque_alias_p): Refine to check
TYPE_DECL_OPAQUE_ALIAS_P.
(tsubst_decl) <case TYPE_DECL>: Set TYPE_DECL_OPAQUE_ALIAS_P.
(any_lambdas_p): New, factored out of...
(regenerate_decl_from_template): ...this. Call it.
gcc/testsuite/ChangeLog:
* g++.dg/cpp26/lambda-targ1.C: New test.
* g++.dg/cpp2a/lambda-targ26.C: New test.
* g++.dg/cpp2a/lambda-targ27.C: New test.
* g++.dg/cpp2a/lambda-targ28.C: New test.
* g++.dg/cpp2a/lambda-targ29.C: New test.
* g++.dg/cpp2a/lambda-targ30.C: New test.
* g++.dg/cpp2a/lambda-targ31.C: New test.
* g++.dg/cpp2a/lambda-targ32.C: New test.
Reviewed-by: Jason Merrill <jason@redhat.com>
More information about the Gcc-bugs
mailing list