diff options
author | Jason Merrill <jason@redhat.com> | 2025-04-07 14:35:14 -0400 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2025-04-08 07:43:37 -0400 |
commit | d034c78c7be613db3c25fddec1dd50222327117b (patch) | |
tree | 19a83b5d51c043db6eac75378f4a7d1a6b49c96c /libjava/classpath/lib/java/math/MathContext.class | |
parent | f53c5cde64770d6c175737a444450fea81feba80 (diff) | |
download | gcc-d034c78c7be613db3c25fddec1dd50222327117b.zip gcc-d034c78c7be613db3c25fddec1dd50222327117b.tar.gz gcc-d034c78c7be613db3c25fddec1dd50222327117b.tar.bz2 |
c++: self-dependent alias template [PR117530]
Here, instantiating B<short> means instantiating A<short>, which means
instantiating B<short>. And then when we go to register the initial
instantiation, it conflicts with the inner one. Fixed by checking after
tsubst whether there's already something in the hash table. We already did
something much like this in tsubst_decl, but that doesn't handle this case.
While I was here, I noticed that we had a pop_deferring_access_checks on one
early exit but not another, and since I wanted to add yet another I switched
to using deferring_access_check_sentinel.
PR c++/117530
gcc/cp/ChangeLog:
* pt.cc (instantiate_template): Check retrieve_specialization after
tsubst.
gcc/testsuite/ChangeLog:
* g++.dg/cpp2a/lambda-uneval27.C: New test.
Diffstat (limited to 'libjava/classpath/lib/java/math/MathContext.class')
0 files changed, 0 insertions, 0 deletions