+2000-11-22 Mark Mitchell <mark@codesourcery.com>
+
+ * pt.c (do_decl_instantiate): Explicitly clone constructors and
+ destructors that haven't already been cloned.
+
2000-11-20 Richard Henderson <rth@redhat.com>
* parse.y (yyparse_1): Rename the parser entry point.
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);
--- /dev/null
+// Additional sources: ctor1-aux.cc
+// Origin: Mark Mitchell <mark@codesourcery.com>
+
+template <class T>
+struct S {
+ template <class U>
+ S (U);
+};
+
+template <class T>
+template <class U>
+S<T>::S (U) {}
+
+template S<int>::S (double);