aboutsummaryrefslogtreecommitdiff
path: root/gcc/cp/pt.c
diff options
context:
space:
mode:
authorJason Merrill <jason@gcc.gnu.org>2000-12-05 08:32:35 -0500
committerJason Merrill <jason@gcc.gnu.org>2000-12-05 08:32:35 -0500
commit23bea145a468dba875d4788c768502c7f46ba923 (patch)
tree6fd7e16b44ee05453ea67403c3cdfb9c59a304f6 /gcc/cp/pt.c
parent85c64f78c6fd0ba6bf016c90b5a94c6110be2226 (diff)
downloadgcc-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.c10
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);