c++: Fix SFINAE for invalid non-type tparm types.

Just missing the usual SFINAE pattern here.  This was fixed for GCC 10 as a
drive-by in r277902.

gcc/cp/ChangeLog
2020-03-05  Jason Merrill  <jason@redhat.com>

	PR c++/90338
	* pt.c (invalid_nontype_parm_type_p): Check complain for non-literal
	and mutable errors.
diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 6c4a775..bf0d9b3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,9 @@
+2020-03-05  Jason Merrill  <jason@redhat.com>
+
+	PR c++/90338
+	* pt.c (invalid_nontype_parm_type_p): Check complain for non-literal
+	and mutable errors.
+
 2020-03-04  Jason Merrill  <jason@redhat.com>
 
 	PR c++/91607
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index 43d9660..4787747 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -25341,15 +25341,20 @@
 	return true;
       if (!literal_type_p (type))
 	{
-	  error ("%qT is not a valid type for a template non-type parameter "
-		 "because it is not literal", type);
-	  explain_non_literal_class (type);
+	  if (complain & tf_error)
+	    {
+	      auto_diagnostic_group d;
+	      error ("%qT is not a valid type for a template non-type parameter "
+		     "because it is not literal", type);
+	      explain_non_literal_class (type);
+	    }
 	  return true;
 	}
       if (cp_has_mutable_p (type))
 	{
-	  error ("%qT is not a valid type for a template non-type parameter "
-		 "because it has a mutable member", type);
+	  if (complain & tf_error)
+	    error ("%qT is not a valid type for a template non-type parameter "
+		   "because it has a mutable member", type);
 	  return true;
 	}
       /* FIXME check op<=> and strong structural equality once spaceship is