diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch | 58 |
1 files changed, 58 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch new file mode 100644 index 0000000000..b1603c8453 --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0195-Fix-PR-c-48656.patch @@ -0,0 +1,58 @@ +From 5d622f64eff4e9fa78356c24290aed131b5c519c Mon Sep 17 00:00:00 2001 +From: dodji <dodji@138bc75d-0d04-0410-961f-82ee72b054a4> +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 <typename> struct B : A ++{ ++}; ++ ++template <typename T> struct C : B<T> ++{ ++ void ++ g() ++ { ++ A::f(); ++ } ++}; +-- +1.7.0.4 + |