From d88511aec7338a93753fbba2c97d18539250c491 Mon Sep 17 00:00:00 2001 From: Jason Merrill Date: Tue, 23 Jun 2015 10:08:30 -0400 Subject: re PR c++/65879 (Bogus linkage errors for member class of anonymous class) PR c++/65879 * decl.c (grokfndecl): Check the linkage of ctype, not just TYPE_ANONYMOUS_P. * tree.c (no_linkage_check): Skip the 'this' pointer. From-SVN: r224844 --- gcc/cp/tree.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) (limited to 'gcc/cp/tree.c') diff --git a/gcc/cp/tree.c b/gcc/cp/tree.c index a9c9214..bc8428d 100644 --- a/gcc/cp/tree.c +++ b/gcc/cp/tree.c @@ -2299,14 +2299,14 @@ no_linkage_check (tree t, bool relaxed_p) return no_linkage_check (TYPE_PTRMEM_CLASS_TYPE (t), relaxed_p); case METHOD_TYPE: - r = no_linkage_check (TYPE_METHOD_BASETYPE (t), relaxed_p); - if (r) - return r; - /* Fall through. */ case FUNCTION_TYPE: { - tree parm; - for (parm = TYPE_ARG_TYPES (t); + tree parm = TYPE_ARG_TYPES (t); + if (TREE_CODE (t) == METHOD_TYPE) + /* The 'this' pointer isn't interesting; a method has the same + linkage (or lack thereof) as its enclosing class. */ + parm = TREE_CHAIN (parm); + for (; parm && parm != void_list_node; parm = TREE_CHAIN (parm)) { -- cgit v1.1