diff options
Diffstat (limited to 'meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch')
-rw-r--r-- | meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch | 53 |
1 files changed, 53 insertions, 0 deletions
diff --git a/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch new file mode 100644 index 0000000000..d5bdf2ca9d --- /dev/null +++ b/meta/recipes-devtools/gcc/gcc-4.6.0/gcc-4_6-branch-backports/0322-PR-c-47336.patch @@ -0,0 +1,53 @@ +From cabe6e4db49d70512f795dd87a2c6e67f2587648 Mon Sep 17 00:00:00 2001 +From: jason <jason@138bc75d-0d04-0410-961f-82ee72b054a4> +Date: Wed, 25 May 2011 01:08:24 +0000 +Subject: [PATCH] PR c++/47336 + * error.c (dump_template_bindings): Suppress access control. + +git-svn-id: svn+ssh://gcc.gnu.org/svn/gcc/branches/gcc-4_6-branch@174160 138bc75d-0d04-0410-961f-82ee72b054a4 + +index 28305d2..2477123 100644 +--- a/gcc/cp/error.c ++++ b/gcc/cp/error.c +@@ -312,7 +312,9 @@ dump_template_bindings (tree parms, tree args, VEC(tree,gc)* typenames) + pp_cxx_whitespace (cxx_pp); + pp_equal (cxx_pp); + pp_cxx_whitespace (cxx_pp); ++ push_deferring_access_checks (dk_no_check); + t = tsubst (t, args, tf_none, NULL_TREE); ++ pop_deferring_access_checks (); + /* Strip typedefs. We can't just use TFF_CHASE_TYPEDEF because + pp_simple_type_specifier doesn't know about it. */ + t = strip_typedefs (t); +new file mode 100644 +index 0000000..e7da961 +--- /dev/null ++++ b/gcc/testsuite/g++.dg/cpp0x/error3.C +@@ -0,0 +1,24 @@ ++// PR c++/47336 ++// { dg-options -std=c++0x } ++ ++template <typename T> ++void g(T t) ++{ ++ t+1; // { dg-error "no match" } ++} ++ ++template <typename S> ++class C ++{ ++ struct D {} d; ++public: ++ decltype(g(d)) h() ++ { ++ return g(d); ++ } ++}; ++ ++int main() ++{ ++ C<int>().h(); ++} +-- +1.7.0.4 + |