From: Marek Polacek Date: Fri, 7 Mar 2025 16:26:46 +0000 (-0500) Subject: c++: ICE with lambda in fold expression in requires [PR119134] X-Git-Tag: basepoints/gcc-16~1548 X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=0e47062ce70d147091f1a97ec94bd6efad92bc5e;p=thirdparty%2Fgcc.git c++: ICE with lambda in fold expression in requires [PR119134] The r12-8258 fix assumes that DECL_CONTEXT of 'pack' in check_for_bare_parameter_packs is going to be an operator() but as this test shows, it can be empty. PR c++/119134 gcc/cp/ChangeLog: * pt.cc (check_for_bare_parameter_packs): Check DECL_CONTEXT. gcc/testsuite/ChangeLog: * g++.dg/cpp2a/lambda-uneval24.C: New test. Reviewed-by: Jason Merrill --- diff --git a/gcc/cp/pt.cc b/gcc/cp/pt.cc index 6ac9e6f163e..8aaae446868 100644 --- a/gcc/cp/pt.cc +++ b/gcc/cp/pt.cc @@ -4375,6 +4375,7 @@ check_for_bare_parameter_packs (tree t, location_t loc /* = UNKNOWN_LOCATION */) tree pack = TREE_VALUE (parameter_packs); if (is_capture_proxy (pack) || (TREE_CODE (pack) == PARM_DECL + && DECL_CONTEXT (pack) && DECL_CONTEXT (DECL_CONTEXT (pack)) == lam)) break; } diff --git a/gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C new file mode 100644 index 00000000000..a2b45595e47 --- /dev/null +++ b/gcc/testsuite/g++.dg/cpp2a/lambda-uneval24.C @@ -0,0 +1,4 @@ +// PR c++/119134 +// { dg-do compile { target c++20 } } + +void f(auto... args) requires(([args] {}, ..., true)) {}