diff options
author | Patrick Palka <ppalka@redhat.com> | 2020-09-09 09:21:09 -0400 |
---|---|---|
committer | Patrick Palka <ppalka@redhat.com> | 2020-09-09 09:21:09 -0400 |
commit | 4e03e2e08b94f65f2be3db17f880c205ec262f87 (patch) | |
tree | 5374563ac2681eda05b43e4349fcc27042e963c8 /gcc/cp/decl2.c | |
parent | 58905f90434ba9a64abac56324131d67c53910ae (diff) | |
download | gcc-4e03e2e08b94f65f2be3db17f880c205ec262f87.zip gcc-4e03e2e08b94f65f2be3db17f880c205ec262f87.tar.gz gcc-4e03e2e08b94f65f2be3db17f880c205ec262f87.tar.bz2 |
c++: Fix resolving the address of overloaded pmf [PR96647]
In resolve_address_of_overloaded_function, currently only the second
pass over the overload set (which considers just the function templates
in the overload set) checks constraints and performs return type
deduction when necessary. But as the testcases below show, we need to
do the same when considering non-template functions during the first
pass.
gcc/cp/ChangeLog:
PR c++/96647
* class.c (resolve_address_of_overloaded_function): Check
constraints_satisfied_p and perform return-type deduction via
maybe_instantiate_decl when considering non-template functions
in the overload set.
* cp-tree.h (maybe_instantiate_decl): Declare.
* decl2.c (maybe_instantiate_decl): Remove static.
gcc/testsuite/ChangeLog:
PR c++/96647
* g++.dg/cpp0x/auto-96647.C: New test.
* g++.dg/cpp0x/error9.C: New test.
* g++.dg/cpp2a/concepts-fn6.C: New test.
Diffstat (limited to 'gcc/cp/decl2.c')
-rw-r--r-- | gcc/cp/decl2.c | 3 |
1 files changed, 1 insertions, 2 deletions
diff --git a/gcc/cp/decl2.c b/gcc/cp/decl2.c index 33c8377..50a042e 100644 --- a/gcc/cp/decl2.c +++ b/gcc/cp/decl2.c @@ -81,7 +81,6 @@ static void import_export_class (tree); static tree get_guard_bits (tree); static void determine_visibility_from_class (tree, tree); static bool determine_hidden_inline (tree); -static void maybe_instantiate_decl (tree); /* A list of static class variables. This is needed, because a static class variable can be declared inside the class without @@ -5386,7 +5385,7 @@ possibly_inlined_p (tree decl) them instantiated for reduction clauses which inline them by hand directly. */ -static void +void maybe_instantiate_decl (tree decl) { if (DECL_LANG_SPECIFIC (decl) |