diff options
author | Jason Merrill <jason@redhat.com> | 2024-11-20 13:51:10 +0100 |
---|---|---|
committer | Jason Merrill <jason@redhat.com> | 2024-11-21 19:37:23 +0100 |
commit | 03c7145a4175c452362b5d1e2fa5f83dc8a01d18 (patch) | |
tree | 15275a667cc9a80923bff9191f99005f14f071ad | |
parent | 873cffc79209119a65aa657b0d427345e52b75c3 (diff) | |
download | gcc-03c7145a4175c452362b5d1e2fa5f83dc8a01d18.zip gcc-03c7145a4175c452362b5d1e2fa5f83dc8a01d18.tar.gz gcc-03c7145a4175c452362b5d1e2fa5f83dc8a01d18.tar.bz2 |
c++: modules and tsubst_friend_class
In 20_util/function_objects/mem_fn/constexpr.cc we start to instantiate
_Mem_fn_base's friend declaration of _Bind_check_arity before we've loaded
the namespace-scope declaration, so lookup_imported_hidden_friend doesn't
find it. But then we load the namespace-scope declaration in
lookup_template_class during substitution, and so when we get around to
pushing the result of substitution, they conflict. Fixed by calling
lazy_load_pendings in lookup_imported_hidden_friend.
gcc/cp/ChangeLog:
* name-lookup.cc (lookup_imported_hidden_friend): Call
lazy_load_pendings.
-rw-r--r-- | gcc/cp/name-lookup.cc | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/gcc/cp/name-lookup.cc b/gcc/cp/name-lookup.cc index 2dca57a..7698799 100644 --- a/gcc/cp/name-lookup.cc +++ b/gcc/cp/name-lookup.cc @@ -4569,6 +4569,8 @@ lookup_imported_hidden_friend (tree friend_tmpl) || !DECL_MODULE_IMPORT_P (inner)) return NULL_TREE; + lazy_load_pendings (friend_tmpl); + tree bind = get_mergeable_namespace_binding (current_namespace, DECL_NAME (inner), DECL_MODULE_ATTACH_P (inner)); if (!bind) |