diff options
author | Jason Merrill <jason@gcc.gnu.org> | 2000-12-05 08:32:35 -0500 |
---|---|---|
committer | Jason Merrill <jason@gcc.gnu.org> | 2000-12-05 08:32:35 -0500 |
commit | 23bea145a468dba875d4788c768502c7f46ba923 (patch) | |
tree | 6fd7e16b44ee05453ea67403c3cdfb9c59a304f6 /gcc/cp/pt.c | |
parent | 85c64f78c6fd0ba6bf016c90b5a94c6110be2226 (diff) | |
download | gcc-23bea145a468dba875d4788c768502c7f46ba923.zip gcc-23bea145a468dba875d4788c768502c7f46ba923.tar.gz gcc-23bea145a468dba875d4788c768502c7f46ba923.tar.bz2 |
revert cloning patch
From-SVN: r38035
Diffstat (limited to 'gcc/cp/pt.c')
-rw-r--r-- | gcc/cp/pt.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c index 8d7f33b..d975a7d 100644 --- a/gcc/cp/pt.c +++ b/gcc/cp/pt.c @@ -5786,7 +5786,6 @@ tsubst_decl (t, args, type, in_decl) maybe_retrofit_in_chrg (r); if (DECL_CONSTRUCTOR_P (r)) grok_ctor_properties (ctx, r); - clone_function_decl(r, /*update_method_vec_p=*/0); } else if (IDENTIFIER_OPNAME_P (DECL_NAME (r))) grok_op_properties (r, DECL_VIRTUAL_P (r), DECL_FRIEND_P (r)); @@ -9225,6 +9224,15 @@ do_decl_instantiation (declspecs, declarator, storage) cp_error ("storage class `%D' applied to template instantiation", storage); + /* Under the new ABI, we need to make sure to instantiate all the + cloned versions of constructors or destructors. */ + if (flag_new_abi && + (DECL_MAYBE_IN_CHARGE_CONSTRUCTOR_P (result) || + DECL_MAYBE_IN_CHARGE_DESTRUCTOR_P (result)) && + !(TREE_CHAIN (result) && + DECL_CLONED_FUNCTION (TREE_CHAIN (result)))) + clone_function_decl(result, /*update_method_vec_p=*/0); + SET_DECL_EXPLICIT_INSTANTIATION (result); mark_decl_instantiated (result, extern_p); repo_template_instantiated (result, extern_p); |