diff options
author | Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> | 2003-01-31 16:28:06 +0000 |
---|---|---|
committer | Kriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org> | 2003-01-31 16:28:06 +0000 |
commit | db0f613dfa664a3c657ba3245f49d42a7431587e (patch) | |
tree | f7854ae8caf314696419b64a99b7f4230be96f0d /gcc | |
parent | 1824b90d080d42328675176590f8ad08e31fd5ad (diff) | |
download | gcc-db0f613dfa664a3c657ba3245f49d42a7431587e.zip gcc-db0f613dfa664a3c657ba3245f49d42a7431587e.tar.gz gcc-db0f613dfa664a3c657ba3245f49d42a7431587e.tar.bz2 |
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
Diffstat (limited to 'gcc')
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/ptrmem4.C | 20 |
4 files changed, 32 insertions, 1 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index 4589a91..5c947c3 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2003-01-31 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/8849 + * pt.c (resolve_overloaded_unification): Handle FUNCTION_DECL. + 2003-01-31 Nathan Sidwell <nathan@codesourcery.com> * cp-tree.h (BINFO_SUBVTT_INDEX, BINFO_VPTR_INDEX, diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index dc2a9e2..e3e0211 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 8704a8d..87a814f 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,8 @@ +2003-01-31 Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> + + PR c++/8849 + * g++.dg/template/ptrmem4.C: New test. + 2003-01-29 Mark Mitchell <mark@codesourcery.com> * 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 0000000..2310728 --- /dev/null +++ b/gcc/testsuite/g++.dg/template/ptrmem4.C @@ -0,0 +1,20 @@ +// { dg-do compile } + +// Origin: Scott Snyder <snyder@fnal.gov> + +// PR c++/8849 +// Pointer to member function template argument deduction ICE. + + +template <class CONT> void queryAliases(CONT& fill_me); // { dg-error "argument" } + +struct SpyExample +{ + void ready(); + void inputs(); +}; + +void SpyExample::ready() +{ + queryAliases(inputs); // { dg-error "convert" } +} |