Commit 21a092a9 by Jason Merrill Committed by Jason Merrill

cp-tree.h (DECL_THUNKS): NULL_TREE for non-virtual functions.

	* cp-tree.h (DECL_THUNKS): NULL_TREE for non-virtual functions.
	(SET_DECL_THUNKS): New.
	* decl.c (duplicate_decls): Adjust.
	* method.c (make_thunk): Adjust.

From-SVN: r192368
parent bc569aa1
2012-10-11 Jason Merrill <jason@redhat.com>
* cp-tree.h (DECL_THUNKS): NULL_TREE for non-virtual functions.
(SET_DECL_THUNKS): New.
* decl.c (duplicate_decls): Adjust.
* method.c (make_thunk): Adjust.
* decl.c (grokdeclarator): Set DECL_GNU_TLS_P for static data
members, too.
......
......@@ -2378,7 +2378,11 @@ struct GTY((variable_size)) lang_decl {
/* The thunks associated with NODE, a FUNCTION_DECL. */
#define DECL_THUNKS(NODE) \
(LANG_DECL_FN_CHECK (NODE)->context)
(DECL_VIRTUAL_P (NODE) ? LANG_DECL_FN_CHECK (NODE)->context : NULL_TREE)
/* Set DECL_THUNKS. */
#define SET_DECL_THUNKS(NODE,THUNKS) \
(LANG_DECL_FN_CHECK (NODE)->context = (THUNKS))
/* Nonzero if NODE is a thunk, rather than an ordinary function. */
#define DECL_THUNK_P(NODE) \
......
......@@ -2052,7 +2052,7 @@ duplicate_decls (tree newdecl, tree olddecl, bool newdecl_is_friend)
/* 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);
SET_DECL_THUNKS (newdecl, DECL_THUNKS (olddecl));
}
/* Only variables have this field. */
else if (TREE_CODE (newdecl) == VAR_DECL
......
......@@ -126,7 +126,8 @@ make_thunk (tree function, bool this_adjusting,
FUNCTION_DECL, NULL_TREE, TREE_TYPE (function));
DECL_LANG_SPECIFIC (thunk) = DECL_LANG_SPECIFIC (function);
cxx_dup_lang_specific_decl (thunk);
DECL_THUNKS (thunk) = NULL_TREE;
DECL_VIRTUAL_P (thunk) = true;
SET_DECL_THUNKS (thunk, NULL_TREE);
DECL_CONTEXT (thunk) = DECL_CONTEXT (function);
TREE_READONLY (thunk) = TREE_READONLY (function);
......@@ -157,7 +158,7 @@ make_thunk (tree function, bool this_adjusting,
/* Add it to the list of thunks associated with FUNCTION. */
DECL_CHAIN (thunk) = DECL_THUNKS (function);
DECL_THUNKS (function) = thunk;
SET_DECL_THUNKS (function, thunk);
return thunk;
}
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment