diff options
author | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-09 17:57:46 +0000 |
---|---|---|
committer | jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> | 2011-03-09 17:57:46 +0000 |
commit | e030f9cc67a888009cbccb9b202e9e4e0a93c9b0 (patch) | |
tree | 1bd3aa9449d81f488521c0a82f051bdd39085608 | |
parent | 32578a980af524adf13bf6f27093d1f1ec4439e6 (diff) | |
download | gcc-e030f9cc67a888009cbccb9b202e9e4e0a93c9b0.tar.gz |
PR c++/44629
* pt.c (unify): An unresolved overload is a nondeduced context.
git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/trunk@170824 138bc75d-0d04-0410-961f-82ee72b054a4
-rw-r--r-- | gcc/cp/ChangeLog | 5 | ||||
-rw-r--r-- | gcc/cp/pt.c | 3 | ||||
-rw-r--r-- | gcc/testsuite/ChangeLog | 4 | ||||
-rw-r--r-- | gcc/testsuite/g++.dg/template/nontype22.C | 11 |
4 files changed, 23 insertions, 0 deletions
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog index b0adb8f7af6..789b2cf62c8 100644 --- a/gcc/cp/ChangeLog +++ b/gcc/cp/ChangeLog @@ -1,3 +1,8 @@ +2011-03-09 Jason Merrill <jason@redhat.com> + + PR c++/44629 + * pt.c (unify): An unresolved overload is a nondeduced context. + 2011-03-09 Martin Jambor <mjambor@suse.cz> PR tree-optimization/47714 diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 2ca2cd0c0c2..ac91698ad72 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -15688,6 +15688,9 @@ unify (tree tparms, tree targs, tree parm, tree arg, int strict) return 1; default: + /* An unresolved overload is a nondeduced context. */ + if (type_unknown_p (parm)) + return 0; gcc_assert (EXPR_P (parm)); /* We must be looking at an expression. This can happen with diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog index ba746dab752..0c30b083f35 100644 --- a/gcc/testsuite/ChangeLog +++ b/gcc/testsuite/ChangeLog @@ -1,3 +1,7 @@ +2011-03-09 Jason Merrill <jason@redhat.com> + + * g++.dg/template/nontype22.C: New. + 2011-03-09 Martin Jambor <mjambor@suse.cz> PR tree-optimization/47714 diff --git a/gcc/testsuite/g++.dg/template/nontype22.C b/gcc/testsuite/g++.dg/template/nontype22.C new file mode 100644 index 00000000000..f2c8c46e9fc --- /dev/null +++ b/gcc/testsuite/g++.dg/template/nontype22.C @@ -0,0 +1,11 @@ +// PR c++/44629 +// The proper mangling is unclear. + +template<typename T> int cmp1(T a, T b); +template<typename T, int (*cmp)(T, T) = cmp1> struct A { }; +template <typename T> void f (A<T> &); // { dg-bogus "" "" { xfail *-*-* } } +void g() +{ + A<char> a; + f(a); +} |