From db0f613dfa664a3c657ba3245f49d42a7431587e Mon Sep 17 00:00:00 2001 From: Kriang Lerdsuwanakij Date: Fri, 31 Jan 2003 16:28:06 +0000 Subject: [PATCH] re PR c++/8849 (ICE in resolve_overloaded_unification for invalid code) PR c++/8849 * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL. * g++.dg/template/ptrmem4.C: New test. From-SVN: r62181 --- gcc/cp/ChangeLog | 5 +++++ gcc/cp/pt.c | 3 ++- gcc/testsuite/ChangeLog | 5 +++++ gcc/testsuite/g++.dg/template/ptrmem4.C | 20 ++++++++++++++++++++ 4 files changed, 32 insertions(+), 1 deletion(-) create mode 100644 gcc/testsuite/g++.dg/template/ptrmem4.C diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4589a912fd1..5c947c33127 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-01-31 Kriang Lerdsuwanakij + + PR c++/8849 + * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL. + 2003-01-31 Nathan Sidwell * cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index dc2a9e28177..e3e02112b30 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -8910,7 +8910,8 @@ resolve_overloaded_unification (tparms, targs, parm, arg, strict, } } } - else if (TREE_CODE (arg) == OVERLOAD) + else if (TREE_CODE (arg) == OVERLOAD + || TREE_CODE (arg) == FUNCTION_DECL) { for (; arg; arg = OVL_NEXT (arg)) { diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index 8704a8df8ee..87a814f50fc 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-01-31 Kriang Lerdsuwanakij + + PR c++/8849 + * g++.dg/template/ptrmem4.C: New test. + 2003-01-29 Mark Mitchell * g++.dg/parser/constant1.C: New test. diff --git a/gcc/testsuite/g++.dg/template/ptrmem4.C b/gcc/testsuite/g++.dg/template/ptrmem4.C new file mode 100644 index 00000000000..23107286913 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/ptrmem4.C @@ -0,0 +1,20 @@ +// { dg-do compile } + +// Origin: Scott Snyder + +// PR c++/8849 +// Pointer to member function template argument deduction ICE. + + +template void queryAliases(CONT& fill_me); // { dg-error "argument" } + +struct SpyExample +{ + void ready(); + void inputs(); +}; + +void SpyExample::ready() +{ + queryAliases(inputs); // { dg-error "convert" } +} -- 2.30.2