diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 3bfd7f1e4b254179dc5b1d2905d0a82054241c72..7119dddff5b644fbc2d1de596e1d1f4f32b4f30d 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,8 @@
+2010-06-07  Jason Merrill  <jason@redhat.com>
+
+	* pt.c (lookup_template_class): Don't mess with
+	DECL_TEMPLATE_INSTANTIATIONS except for partial instantiations.
+
 2010-06-07  Jakub Jelinek  <jakub@redhat.com>
 
 	PR c++/44444
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index b95fdf728bd0c7ef27d02b64872ef26dd88472ee..fd93b1b3dc15621b8b87e0a9e27e8c76a33c3c7b 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -6723,9 +6723,10 @@ lookup_template_class (tree d1,
 
       /* Note this use of the partial instantiation so we can check it
 	 later in maybe_process_partial_specialization.  */
-      DECL_TEMPLATE_INSTANTIATIONS (templ)
-	= tree_cons (arglist, t,
-		     DECL_TEMPLATE_INSTANTIATIONS (templ));
+      if (use_partial_inst_tmpl)
+	DECL_TEMPLATE_INSTANTIATIONS (templ)
+	  = tree_cons (arglist, t,
+		       DECL_TEMPLATE_INSTANTIATIONS (templ));
 
       if (TREE_CODE (t) == ENUMERAL_TYPE && !is_dependent_type)
 	/* Now that the type has been registered on the instantiations