mirror of git://gcc.gnu.org/git/gcc.git
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
This commit is contained in:
parent
bc569aa142
commit
21a092a900
|
|
@ -1,5 +1,10 @@
|
||||||
2012-10-11 Jason Merrill <jason@redhat.com>
|
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
|
* decl.c (grokdeclarator): Set DECL_GNU_TLS_P for static data
|
||||||
members, too.
|
members, too.
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -2378,7 +2378,11 @@ struct GTY((variable_size)) lang_decl {
|
||||||
|
|
||||||
/* The thunks associated with NODE, a FUNCTION_DECL. */
|
/* The thunks associated with NODE, a FUNCTION_DECL. */
|
||||||
#define DECL_THUNKS(NODE) \
|
#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. */
|
/* Nonzero if NODE is a thunk, rather than an ordinary function. */
|
||||||
#define DECL_THUNK_P(NODE) \
|
#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,
|
/* DECL_THUNKS is only valid for virtual functions,
|
||||||
otherwise it is a DECL_FRIEND_CONTEXT. */
|
otherwise it is a DECL_FRIEND_CONTEXT. */
|
||||||
if (DECL_VIRTUAL_P (newdecl))
|
if (DECL_VIRTUAL_P (newdecl))
|
||||||
DECL_THUNKS (newdecl) = DECL_THUNKS (olddecl);
|
SET_DECL_THUNKS (newdecl, DECL_THUNKS (olddecl));
|
||||||
}
|
}
|
||||||
/* Only variables have this field. */
|
/* Only variables have this field. */
|
||||||
else if (TREE_CODE (newdecl) == VAR_DECL
|
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));
|
FUNCTION_DECL, NULL_TREE, TREE_TYPE (function));
|
||||||
DECL_LANG_SPECIFIC (thunk) = DECL_LANG_SPECIFIC (function);
|
DECL_LANG_SPECIFIC (thunk) = DECL_LANG_SPECIFIC (function);
|
||||||
cxx_dup_lang_specific_decl (thunk);
|
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);
|
DECL_CONTEXT (thunk) = DECL_CONTEXT (function);
|
||||||
TREE_READONLY (thunk) = TREE_READONLY (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. */
|
/* Add it to the list of thunks associated with FUNCTION. */
|
||||||
DECL_CHAIN (thunk) = DECL_THUNKS (function);
|
DECL_CHAIN (thunk) = DECL_THUNKS (function);
|
||||||
DECL_THUNKS (function) = thunk;
|
SET_DECL_THUNKS (function, thunk);
|
||||||
|
|
||||||
return thunk;
|
return thunk;
|
||||||
}
|
}
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue