Upstream-Status: Inappropriate [Backport] From 5d622f64eff4e9fa78356c24290aed131b5c519c Mon Sep 17 00:00:00 2001 From: dodji Date: Thu, 28 Apr 2011 19:46:34 +0000 Subject: [PATCH 195/200] Fix PR c++/48656 gcc/cp/ * semantics.c (finish_call_expr): Don't forget BASELINK nodes when considering call expressions involving a member function. gcc/testsuite/ * gcc/testsuite/g++.dg/template/inherit7.C: New test case. git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@173131 138bc75d-0d04-0410-961f-82ee72b054a4 index 0d80771..b5c0b80 100644 --- a/gcc/cp/semantics.c +++ b/gcc/cp/semantics.c @@ -2041,7 +2041,8 @@ finish_call_expr (tree fn, VEC(tree,gc) **args, bool disallow_virtual, is not included in *ARGS even though it is considered to be part of the list of arguments. Note that this is related to CWG issues 515 and 1005. */ - || ((TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE) + || (((TREE_CODE (TREE_TYPE (fn)) == METHOD_TYPE) + || BASELINK_P (fn)) && current_class_ref && type_dependent_expression_p (current_class_ref))) { new file mode 100644 index 0000000..67afbca --- /dev/null +++ b/gcc/testsuite/g++.dg/template/inherit7.C @@ -0,0 +1,21 @@ +// Origin: PR c++/48656 +// { dg-options "-std=c++0x" } +// { dg-do compile } + +struct A { + int f(); + int f(int); +}; + +template struct B : A +{ +}; + +template struct C : B +{ + void + g() + { + A::f(); + } +}; -- 1.7.0.4