aboutsummaryrefslogtreecommitdiff
AgeCommit message (Collapse)Author
2022-05-06Update ChangeLog and version files for releasereleases/gcc-12.1.0Jakub Jelinek
2022-05-06Update gennews for GCC 12.Jakub Jelinek
2022-05-06 Jakub Jelinek <jakub@redhat.com> * gennews (files): Add files for GCC 12. (cherry picked from commit 8025f29fbd8f87e27354b69d0bc9eb8d1aeae94c)
2022-05-06Daily bump.GCC Administrator
2022-05-05d: Merge upstream dmd 88de5e369.Iain Buclaw
D front-end changes: - Merge regression fixes in v2.100.0 branch. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 88de5e369.
2022-05-05Regenerate gcc.potJoseph Myers
* gcc.pot: Regenerate.
2022-05-05Daily bump.GCC Administrator
2022-05-04Update cpplib es.poJoseph Myers
* es.po: Update.
2022-05-04Daily bump.GCC Administrator
2022-05-03Update gcc sv.poJoseph Myers
* sv.po: Update.
2022-05-03d: Merge upstream dmd 081d61e15, druntime 9c0d4f91, phobos dba1bbe27.Iain Buclaw
D front-end changes: - Import dmd v2.100.0-rc.1. D runtime changes: - Import druntime v2.100.0-rc.1. Phobos changes: - Import v2.100.0-rc.1. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 081d61e15. * dmd/VERSION: Update version to v2.100.0-rc.1. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime 9c0d4f91. * src/MERGE: Merge upstream phobos dba1bbe27.
2022-05-03testsuite: vect: update unaligned messageAlexandre Oliva
gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c covers ppc variants that accept and reject misaligned accesses. The message that it expects for rejection was removed in the gcc-11 development cycle by commit r11-1969. The patch adjusted multiple tests to use the message introduced in r11-1945, but missed this one. for gcc/testsuite/ChangeLog * gcc.dg/vect/costmodel/ppc/costmodel-vect-31a.c: Update the expected message for the case in which unaligned accesses are not allowed. (cherry picked from commit 404edfce683cb1801b052ee7c8d45d603c392e08)
2022-05-03Daily bump.GCC Administrator
2022-05-02libstdc++: case-sensitivity in hexfloat std::from_chars [PR105441]Patrick Palka
The hexfloat parser for binary32/64 added in r12-6645-gcc3bf3404e4b1c overlooked that the exponent part can also begin with an uppercase 'P'. PR libstdc++/105441 libstdc++-v3/ChangeLog: * src/c++17/floating_from_chars.cc (__floating_from_chars_hex): Also accept 'P' as the start of the exponent. * testsuite/20_util/from_chars/7.cc: Add corresponding testcase. (cherry picked from commit 576f975cabb0fd9843de152a2d247d486a967b08)
2022-05-02Fix exchanged period and letter in gfortan.texi.Thomas Koenig
gcc/fortran/ChangeLog: * gfortran.texi: Fix exchanged period and letter. (cherry picked from commit 4a8b45e8bc8246bd141dad65f571a3e0cc499c6b)
2022-05-02system.h: Include <initializer_list> in system.h unconditionallyJakub Jelinek
On Sun, May 01, 2022 at 07:06:53PM +0100, Jonathan Wakely wrote: > > >> the reason is that "gcc/analyzer/region-model.cc” uses initializer_lists, and it seems that <initializer_list> > > >> is not transitively included by any used headers for _LIBCPP_VERSION < 4000. I fixed that locally by > > >> adding initializer_list into system.h (and adding INCLUDE_INITIALIZER_LIST to the top of gcc/analyzer/region-model.cc) > > >> - with that change those versions do bootstrap and test OK*** > > > > > > From what I can see, with libstdc++ it works because <utility> which is > > > included by system.h includes <initializer_list>. > > > If I rename initializer_list in analyzer/region-model.ii to initializer_listx, I > > > also get: > > > ../../gcc/analyzer/region-model.cc: In function ‘void ana::selftest::test_binop_svalue_folding()’: > > > ../../gcc/analyzer/region-model.cc:4966:48: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’ > > > 4508 | > > > +++ |+#include <initializer_list> > > > 4509 | static void > > > ...... > > > 4966 | for (auto op : {BIT_IOR_EXPR, TRUTH_OR_EXPR}) > > > | ^ > > > ../../gcc/analyzer/region-model.cc:4978:49: error: deducing from brace-enclosed initializer list requires ‘#include <initializer_list>’ > > > 4978 | for (auto op : {BIT_AND_EXPR, TRUTH_AND_EXPR}) > > > | ^ > > > > > > I think we have 2 options, one is do what you wrote above, > > > INCLUDE_INITIALIZER_LIST defined before system.h to get #include <initializer_list>. > > > The other option is just to include that unconditionally, it is a very small > > > header. For libstdc++ it will make no difference as it is included anyway > > > and the header is really small there, libc++ includes <cstddef> which isn't > > > normally included and system.h includes <stddef.h> instead. > > > > I’d say unconditionally would be OK. I suppose the chance that any host > > C++ is good enough to build GCC as-is but fails to provide > > <initializer_list> is zero? > > > > Yes, definitely. > > > I’d be OK to do this change without a new RC even. 2022-05-02 Jakub Jelinek <jakub@redhat.com> * system.h: Include initializer_list. (cherry picked from commit 4a0e89b10f6bdc1e285e0b9e6a435a0062f8936c)
2022-05-02Daily bump.GCC Administrator
2022-05-01Daily bump.GCC Administrator
2022-04-30Daily bump.GCC Administrator
2022-04-29libstdc++: Add missing exports for ppc64le --with-long-double-format=ibm ↵Jonathan Wakely
[PR105417] The --with-long-double-abi=ibm build is missing some exports that are present in the --with-long-double-abi=ieee build. Those symbols never should have been exported at all, but now that they have been, they should be exported consistently by both ibm and ieee. This simply defines them as aliases for equivalent symbols that are already present. The abi-tag on num_get::_M_extract_int isn't really needed, because it only uses a std::string as a local variable, not in the return type or function parameters, so it's safe to define the _M_extract_int[abi:cxx11] symbols as aliases for the corresponding function without the abi-tag. This causes some new symbols to be added to the GLIBCXX_3.4.29 version for the ibm long double build mode, but there is no advantage to adding them to 3.4.30 for that build. That would just create more inconsistencies. libstdc++-v3/ChangeLog: PR libstdc++/105417 * config/abi/post/powerpc64-linux-gnu/baseline_symbols.txt: Regenerate. * src/c++11/compatibility-ldbl-alt128.cc [_GLIBCXX_USE_DUAL_ABI]: Define __gnu_ieee128::num_get<C>::_M_extract_int[abi:cxx11]<I> symbols as aliases for corresponding symbols without abi-tag. (cherry picked from commit bb7cf39b05a216431a431499d0c36a6034f6acc4)
2022-04-29libstdc++: Update Solaris baselines for GCC 12.1Rainer Orth
The following patch updates the Solaris baselines for GCC 12.1. Tested on i386-pc-solaris2.11 and sparc-sun-solaris2.11 (Solaris 11.3 and 11.4 in each case). The only (expected) difference between the 11.3 and 11.4 versions is --- baseline_symbols.txt.s113s 2022-04-28 10:37:11.464068450 +0000 +++ baseline_symbols.txt.s114s 2022-04-27 16:54:31.995636805 +0000 @@ -4070,3 +4070,3 @@ -FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.30 -FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.30 -FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.30 +FUNC:_ZSt10from_charsPKcS0_RdSt12chars_format@@GLIBCXX_3.4.29 +FUNC:_ZSt10from_charsPKcS0_ReSt12chars_format@@GLIBCXX_3.4.29 +FUNC:_ZSt10from_charsPKcS0_RfSt12chars_format@@GLIBCXX_3.4.29 which is handled by the fix for PR libstdc++/103407. I'm using the 11.4 version here. 2022-04-27 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> libstdc++-v3: * config/abi/post/i386-solaris/baseline_symbols.txt: Regenerate. * config/abi/post/i386-solaris/amd64/baseline_symbols.txt: Likewise. * config/abi/post/sparc-solaris/baseline_symbols.txt: Likewise. * config/abi/post/sparc-solaris/sparcv9/baseline_symbols.txt: Likewise.
2022-04-29c++, coroutines: Partial reversion of r12-8308-g15a176a833f23e [PR105426].Iain Sandoe
The changes to fix PR 105287 included a tightening of the constraints on which variables are promoted to frame copies. This has exposed that we are failing to name some variables that should be promoted. We avoid the use of DECL_UID to build anonymous symbols since that might not be stable for -fcompare-debug. The long-term fix is to address the cases where the naming has been missed, but for the short-term (and for the GCC-12 branch) backing out the additional constraint is proposed. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR c++/105426 gcc/cp/ChangeLog: * coroutines.cc (register_local_var_uses): Allow promotion of unnamed temporaries to coroutine frame copies. (cherry picked from commit 3d8d093e820b10a4b4b2af8949a368377c0888cb)
2022-04-29Daily bump.GCC Administrator
2022-04-28c++: partial ordering and dependent operator expr [PR105425]Patrick Palka
Here ever since r12-6022-gbb2a7f80a98de3 we stopped deeming the partial specialization #2 to be more specialized than #1 ultimately because dependent operator expressions now have a DEPENDENT_OPERATOR_TYPE type instead of an empty type, and this made unify stop deducing T(2) == 1 for K during partial ordering for #1 and #2. This minimal patch fixes this by making the relevant logic in unify treat DEPENDENT_OPERATOR_TYPE like an empty type. PR c++/105425 gcc/cp/ChangeLog: * pt.cc (unify) <case TEMPLATE_PARM_INDEX>: Treat DEPENDENT_OPERATOR_TYPE like an empty type. gcc/testsuite/ChangeLog: * g++.dg/template/partial-specialization13.C: New test. (cherry picked from commit 509fd16da8528444dccc98cef57a18a295c3f1b4)
2022-04-28libstdc++: Update docs for release branchJonathan Wakely
libstdc++-v3/ChangeLog: * doc/xml/manual/status_cxx1998.xml: Refer to GCC 12 not mainline. * doc/xml/manual/status_cxx2011.xml: Likewise. * doc/xml/manual/status_cxx2014.xml: Likewise. * doc/xml/manual/status_cxx2017.xml: Likewise. * doc/xml/manual/status_cxx2020.xml: Likewise. * doc/xml/manual/status_cxxtr1.xml: Likewise. * doc/xml/manual/status_cxxtr24733.xml: Likewise. * doc/html/manual/status.html: Regenerate.
2022-04-28Document changes to CONVERT for -mabi-ieeelongdouble for POWER.Thomas Koenig
gcc/fortran/ChangeLog: * gfortran.texi: Mention r16_ieee and r16_ibm. * invoke.texi: Likewise. (cherry picked from commit 1a5ae012ff3303a8232a03ac9a0925c709775076)
2022-04-28[committed] Fix more problems with new linker warningsJeff Law
gcc/testsuite * gcc.dg/lto/pr94157_0.c: Revert last change. * lib/prune.exp (prune_gcc_output): Prune new linker warning.
2022-04-28Set DEV-PHASE to prerelease.Jakub Jelinek
2022-04-28 Jakub Jelinek <jakub@redhat.com> * DEV-PHASE: Set to prerelease.
2022-04-28cgraph: Don't verify semantic_interposition flag for aliases [PR105399]Jakub Jelinek
The following testcase ICEs, because the ctors during cc1plus all have !opt_for_fn (decl, flag_semantic_interposition) - they have NULL DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) and optimization_default_node is for -Ofast and so has flag_semantic_interposition cleared. During free lang data, we set DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) for the ctor which has body (or for thunks), but don't touch it for aliases. During lto1 optimization_default_node reflects the lto1 flags which are -O2 rather than -Ofast and so has flag_semantic_interposition set, for the ctor which has body that makes no difference, but as the alias doesn't still have DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) set, we now trigger this verification check. The following patch just doesn't verify it for aliases during lto1. Another possibility would be to set DECL_FUNCTION_SPECIFIC_OPTIMIZATION (decl) during free lang data even for aliases. 2022-04-28 Jakub Jelinek <jakub@redhat.com> PR lto/105399 * cgraph.cc (cgraph_node::verify_node): Don't verify semantic_interposition flag against opt_for_fn (decl, flag_semantic_interposition) for aliases in lto1. * g++.dg/lto/pr105399_0.C: New test.
2022-04-28Fix up 'libgomp.oacc-fortran/print-1.f90' GCN offloading compilation [PR104717]Thomas Schwinge
That got broken by recent commit b2202431910e30d8505c94d1cb9341cac7080d10 "fortran: Fix up gfc_trans_oacc_construct [PR104717]". PR fortran/104717 libgomp/ * testsuite/libgomp.oacc-fortran/print-1.f90: Add OpenACC privatization scanning. For GCN offloading compilation, raise '-mgang-private-size'.
2022-04-28c++, coroutines: Improve check for throwing final await [PR104051].Iain Sandoe
We check that the final_suspend () method returns a sane type (i.e. a class or structure) but, unfortunately, that check has to be later than the one for a throwing case. If the use returns some nonsensical type from the method, we need to handle that in the checking for noexcept. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR c++/104051 gcc/cp/ChangeLog: * coroutines.cc (coro_diagnose_throwing_final_aw_expr): Handle non-target expression inputs. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr104051.C: New test.
2022-04-28c++, coroutines: Account for overloaded promise return_value() [PR105301].Iain Sandoe
Whether it was intended or not, it is possible to define a coroutine promise with multiple return_value() methods [which need not even have the same type]. We were not accounting for this possibility in the check to see whether both return_value and return_void are specifier (which is prohibited by the standard). Fixed thus and provided an adjusted diagnostic for the case that multiple return_value() methods are present. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR c++/105301 gcc/cp/ChangeLog: * coroutines.cc (coro_promise_type_found_p): Account for possible mutliple overloads of the promise return_value() method. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr105301.C: New test.
2022-04-28c++, coroutines: Make sure our temporaries are in a bind expr [PR105287]Iain Sandoe
There are a few cases where we can generate a temporary that does not need to be added to the coroutine frame (i.e. these are genuinely ephemeral). The intent was that unnamed temporaries should not be 'promoted' to coroutine frame entries. However there was a thinko and these were not actually ever added to the bind expressions being generated for the expanded awaits. This meant that they were showing in the global namspace, leading to an empty DECL_CONTEXT and the ICE reported. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> PR c++/105287 gcc/cp/ChangeLog: * coroutines.cc (maybe_promote_temps): Ensure generated temporaries are added to the bind expr. (add_var_to_bind): Fix local var naming to use portable punctuation. (register_local_var_uses): Do not add synthetic names to unnamed temporaries. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr105287.C: New test.
2022-04-28c++, coroutines: Avoid expanding within templates [PR103868]Nathan Sidwell
This is a forward-port of a patch by Nathan (against 10.x) which fixes an open PR. We are ICEing because we ended up tsubst_copying something that had already been tsubst, leading to an assert failure (mostly such repeated tsubsting is harmless). We had a non-dependent co_await in a non-dependent-type template fn, so we processed it at definition time, and then reprocessed at instantiation time. We fix this here by deferring substitution while processing templates. Additional observations (for a better future fix, in the GCC13 timescale): Exprs only have dependent type if at least one operand is dependent which was what the current code was intending to do. Coroutines have the additional wrinkle, that the current fn's type is an implicit operand. So, if the coroutine function's type is not dependent, and the operand is not dependent, we should determine the type of the co_await expression using the DEPENDENT_EXPR wrapper machinery. That allows us to determine the subexpression type, but leave its operand unchanged and then instantiate it later. PR c++/103868 gcc/cp/ChangeLog: * coroutines.cc (finish_co_await_expr): Do not process non-dependent coroutine expressions at template definition time. (finish_co_yield_expr): Likewise. (finish_co_return_stmt): Likewise. gcc/testsuite/ChangeLog: * g++.dg/coroutines/pr103868.C: New test. Co-Authored-by: Iain Sandoe <iain@sandoe.co.uk>
2022-04-28testsuite,X86: Fix missing USER_LABEL_PREFIX cases.Iain Sandoe
Yet another set of testcases that do not account for targets that use __USER_LABEL_PREFIX__. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/testsuite/ChangeLog: * gcc.target/i386/memcpy-strategy-10.c: Account for __USER_LABEL_PREFIX__. * gcc.target/i386/memcpy-strategy-5.c: Likewise. * gcc.target/i386/memset-strategy-5.c: Likewise. * gcc.target/i386/memset-strategy-7.c: Likewise.
2022-04-28testsuite: Add target requires for ifuncs to mv31.C.Iain Sandoe
g++.target/i386/mv31.C fails on targets without ifuncs support so add the necessary target supports guard. Signed-off-by: Iain Sandoe <iain@sandoe.co.uk> gcc/testsuite/ChangeLog: * g++.target/i386/mv31.C: Add target supports guard for ifuncs.
2022-04-28c++: global-namespace-qualified var after class def [PR90107]Marek Polacek
Here we wrongly reject the definition of "::N::a" struct A; namespace N { extern A a; } struct A {} ::N::a; because our code to diagnose a missing ; after a class definition doesn't realize that :: can follow a class definition. PR c++/90107 gcc/cp/ChangeLog: * parser.cc (cp_parser_class_specifier_1): Accept :: after a class definition. gcc/testsuite/ChangeLog: * g++.dg/parse/qualified6.C: New test.
2022-04-28libstdc++: Fix error reporting in filesystem::copy [PR99290]Jonathan Wakely
The recursive calls to filesystem::copy should stop if any of them reports an error. libstdc++-v3/ChangeLog: PR libstdc++/99290 * src/c++17/fs_ops.cc (fs::copy): Pass error_code to directory_iterator constructor, and check on each iteration. * src/filesystem/ops.cc (fs::copy): Likewise. * testsuite/27_io/filesystem/operations/copy.cc: Check for errors during recursion. * testsuite/experimental/filesystem/operations/copy.cc: Likewise.
2022-04-28d: Merge upstream dmd 313d28b3d, druntime e361d200.Iain Buclaw
D front-end changes: - Import latest bug fixes from the 2.100 release branch. - Fix signatures of extern C++ functions that have size_t parameters. gcc/d/ChangeLog: * dmd/MERGE: Merge upstream dmd 313d28b3d. * d-port.cc (Port::memicmp): Use d_size_t instead of size_t. (Port::valcpy): Likewise. libphobos/ChangeLog: * libdruntime/MERGE: Merge upstream druntime e361d200.
2022-04-28i386: Fix up ix86_gimplify_va_arg [PR105331]Jakub Jelinek
On the following testcase we emit a bogus 'va_arg_tmp.5' may be used uninitialized warning. The reason is that when gimplifying the addr = &temp; statement, the va_arg_tmp temporary var for which we emit ADDR_EXPR is not TREE_ADDRESSABLE, prepare_gimple_addressable emits some extra code to initialize the newly addressable var from its previous value, but it is a new variable which hasn't been initialized yet and will be later, so we end up initializing it with uninitialized SSA_NAME: va_arg_tmp.6 = va_arg_tmp.5_14(D); addr.2_16 = &va_arg_tmp.6; _17 = MEM[(double *)sse_addr.4_13]; MEM[(double * {ref-all})addr.2_16] = _17; and with -O1 we actually don't DSE it before the warning is emitted. If we make the temp TREE_ADDRESSABLE before the gimplification, then this prepare_gimple_addressable path isn't taken and we effectively omit the first statement above and so the bogus warning is gone. I went through other backends and didn't find another instance of this problem. 2022-04-28 Jakub Jelinek <jakub@redhat.com> PR target/105331 * config/i386/i386.cc (ix86_gimplify_va_arg): Mark va_arg_tmp temporary TREE_ADDRESSABLE before trying to gimplify ADDR_EXPR of it. * gcc.dg/pr105331.c: New test.
2022-04-28doc: Remove misleading text about multilibs for IEEE long doubleJonathan Wakely
The choice of ieee or ibm long double format is orthogonal to multilibs, as the two sets of symbols co-exist and don't need a separate multilib. gcc/ChangeLog: * doc/install.texi (Configuration): Remove misleading text around LE PowerPC Linux multilibs.
2022-04-28libstdc++: Remove redundant line in versioned namespace linker scriptFrançois Dumont
This doesn't match anything. libstdc++-v3/ChangeLog: * config/abi/pre/gnu-versioned-namespace.ver: Remove std::random_device::* pattern.
2022-04-28doc: Document Solaris D bootstrap requirements [PR 103528]Rainer Orth
This patch documents the Solaris-specific D bootstrap requirements. Tested by building and inspecting gccinstall.{pdf,info}. 2022-03-16 Rainer Orth <ro@CeBiTec.Uni-Bielefeld.DE> gcc: PR d/103528 * doc/install.texi (Tools/packages necessary for building GCC) (GDC): Document libphobos requirement. (Host/target specific installation notes for GCC, *-*-solaris2*): Document libphobos and GDC specifics.
2022-04-28tree-optimization/105219 - bogus max iters for vectorized epilogueRichard Biener
The following makes sure to take into account prologue peeling when trying to narrow down the maximum number of iterations computed for the vectorized epilogue. A similar issue exists when peeling for gaps. 2022-04-27 Richard Biener <rguenther@suse.de> PR tree-optimization/105219 * tree-vect-loop.cc (vect_transform_loop): Disable special code narrowing the vectorized epilogue max iterations when peeling for alignment or gaps was in effect. * gcc.dg/vect/pr105219.c: New testcase.
2022-04-27testsuite: Add test case for pack/unpack bifs at soft-float [PR105334]Kewen Lin
This patch is to add the test coverage for the two recent fixes r12-8091 and r12-8226 from Segher, aix is skipped since it takes soft-float and long-double-128 incompatible. PR target/105334 gcc/testsuite/ChangeLog: * gcc.target/powerpc/pr105334.c: New test.
2022-04-28testsuite: Skip target not support -pthread [PR104676].Jia-Wei Chen
The "ftree-parallelize-loops=" imply -pthread option in gcc/gcc.cc, some target are not support pthread like elf target use newlib, and will get an error: "*-*-elf-gcc: error: unrecognized command-line option '-pthread'" so we add an additional condition "{target pthread}" to make sure the dg-additional-options runs on support targets. gcc/testsuite/ChangeLog PR target/104676 * gcc.dg/torture/pr104676.c: Add "{target pthread}" check.
2022-04-28loongarch: ignore zero-size fields in calling conventionXi Ruoyao
gcc/ * config/loongarch/loongarch.cc (loongarch_flatten_aggregate_field): Ignore empty fields for RECORD_TYPE. gcc/testsuite/ * gcc.target/loongarch/zero-size-field-pass.c: New test. * gcc.target/loongarch/zero-size-field-ret.c: New test.
2022-04-28Daily bump.GCC Administrator
2022-04-27c++: add commentsJason Merrill
gcc/cp/ChangeLog: * tree.cc (strip_typedefs): Add default argument comments.
2022-04-27Fix oversight from previous commit to pr70673.Thomas Koenig
gcc/testsuite/ChangeLog: * gfortran.dg/pr70673.f90: Removed second invalid line.
2022-04-27c++: enum in generic lambda at global scope [PR105398]Marek Polacek
We crash compiling this test since r11-7993 which changed lookup_template_class_1 so that we only call tsubst_enum when !uses_template_parms (current_nonlambda_scope ()) But here current_nonlambda_scope () is the global NAMESPACE_DECL ::, which doesn't have a type, therefore is considered type-dependent. So we don't call tsubst_enum, and crash in tsubst_copy/CONST_DECL because we didn't find the e1 enumerator. I don't think any namespace can depend on any template parameter, so this patch tweaks uses_template_parms. PR c++/105398 gcc/cp/ChangeLog: * pt.cc (uses_template_parms): Return false for any NAMESPACE_DECL. gcc/testsuite/ChangeLog: * g++.dg/cpp1y/lambda-generic-enum2.C: New test.