diff options
author | Jason Merrill <jason@redhat.com> | 2015-06-23 10:08:30 -0400 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2015-06-23 10:08:30 -0400 |
commit | d88511aec7338a93753fbba2c97d18539250c491 (patch) | |
tree | b64a9cc3052b051948ce2c2171bb946a4ac81d64 /gcc/cp/tree.c | |
parent | 115ef7c52e7cae6101df2f062b4650c82e50072d (diff) | |
download | gcc-d88511aec7338a93753fbba2c97d18539250c491.zip gcc-d88511aec7338a93753fbba2c97d18539250c491.tar.gz gcc-d88511aec7338a93753fbba2c97d18539250c491.tar.bz2 |
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
Diffstat (limited to 'gcc/cp/tree.c')
-rw-r--r-- | gcc/cp/tree.c | 12 |
1 files changed, 6 insertions, 6 deletions
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)) { |