c++: unifying FUNCTION_DECLs [PR93740]
commitc822ad86984e752734b9c371f9cfef9330334ec4
authorPatrick Palka <ppalka@redhat.com>
Wed, 13 Dec 2023 20:55:01 +0000 (13 15:55 -0500)
committerPatrick Palka <ppalka@redhat.com>
Wed, 13 Dec 2023 20:55:01 +0000 (13 15:55 -0500)
tree482989747017054bdb743a22cdbdc5d8803e547c
parentff35f1d4daa37e74f7a68e87c1a6c180d9a91f10
c++: unifying FUNCTION_DECLs [PR93740]

unify currently always returns success when unifying two FUNCTION_DECLs
(due to the is_overloaded_fn deferment within the default case), which
means for the below testcase we incorrectly unify &A::foo and &A::bar
leading to deduction failure for the index_of calls due to a bogus base
class ambiguity.

This patch makes unify handle FUNCTION_DECL naturally like other decls.

PR c++/93740

gcc/cp/ChangeLog:

* pt.cc (unify) <case FUNCTION_DECL>: Handle it like FIELD_DECL
and TEMPLATE_DECL.

gcc/testsuite/ChangeLog:

* g++.dg/template/ptrmem34.C: New test.
gcc/cp/pt.cc
gcc/testsuite/g++.dg/template/ptrmem34.C [new file with mode: 0644]