diff options
author | Kriang Lerdsuwanakij <lerdsuwa@users.sourceforge.net> | 2003-03-09 14:30:18 +0000 |
---|---|---|
committer | Kriang Lerdsuwanakij <lerdsuwa@gcc.gnu.org> | 2003-03-09 14:30:18 +0000 |
commit | ca9e13823c9e8cf547dbcd98416e1b4dfcced5fa (patch) | |
tree | 023dc3d8583203ef9854baf4a70e196dfabefbe6 /gcc/cp/decl.c | |
parent | c5979bc6a244692449d277e24083da7849f78bd7 (diff) | |
download | gcc-ca9e13823c9e8cf547dbcd98416e1b4dfcced5fa.zip gcc-ca9e13823c9e8cf547dbcd98416e1b4dfcced5fa.tar.gz gcc-ca9e13823c9e8cf547dbcd98416e1b4dfcced5fa.tar.bz2 |
re PR c++/9970 (previously declared inline friend can't access members)
PR c++/9970
* decl.c (duplicate_decls): Only copy DECL_THUNKS for virtual
functions.
* g++.dg/lookup/friend1.C: New test.
From-SVN: r64029
Diffstat (limited to 'gcc/cp/decl.c')
-rw-r--r-- | gcc/cp/decl.c | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/gcc/cp/decl.c b/gcc/cp/decl.c index fb36313..639c5d0 100644 --- a/gcc/cp/decl.c +++ b/gcc/cp/decl.c @@ -3554,7 +3554,10 @@ duplicate_decls (tree newdecl, tree olddecl) DECL_BEFRIENDING_CLASSES (newdecl) = chainon (DECL_BEFRIENDING_CLASSES (newdecl), DECL_BEFRIENDING_CLASSES (olddecl)); - DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl); + /* DECL_THUNKS is only valid for virtual functions, + otherwise it is a DECL_FRIEND_CONTEXT. */ + if (DECL_VIRTUAL_P (newdecl)) + DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl); } } |