diff --git a/gcc/cp/ChangeLog b/gcc/cp/ChangeLog
index 233f804fe7e21be16a869346324497be7fbd1e09..42d2ae174a5c2ac1476a4e9245eafed18da0bad3 100644
--- a/gcc/cp/ChangeLog
+++ b/gcc/cp/ChangeLog
@@ -1,3 +1,7 @@
+2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+	* pt.c (determine_specialization): Ignore artificial functions.
+
 2001-05-20  Neil Booth  <neil@daikokuya.demon.co.uk>
 
 	* cp-tree.h (struct lang_identifier, C_RID_YYCODE): Update.
diff --git a/gcc/cp/pt.c b/gcc/cp/pt.c
index c0cd2ebc42dafd3827dc548a6441fc7b0d9bbb83..da0b0a664630efc458daa7c3cf2d12bd5b65add2 100644
--- a/gcc/cp/pt.c
+++ b/gcc/cp/pt.c
@@ -1023,6 +1023,9 @@ determine_specialization (template_id, decl, targs_out,
 	/* This is just an ordinary non-member function.  Nothing can
 	   be a specialization of that.  */
 	continue;
+      else if (DECL_ARTIFICIAL (fn))
+	/* Cannot specialize functions that are created implicitly.  */
+	continue;
       else
 	{
 	  tree decl_arg_types;
diff --git a/gcc/testsuite/ChangeLog b/gcc/testsuite/ChangeLog
index ac40b1441d2cc5428cfb73ce888929301d233fe7..a39d8cca15c04d503bfb43964c6d5a739ad610aa 100644
--- a/gcc/testsuite/ChangeLog
+++ b/gcc/testsuite/ChangeLog
@@ -1,3 +1,7 @@
+2001-05-20  Kriang Lerdsuwanakij  <lerdsuwa@users.sourceforge.net>
+
+	* g++.old-deja/g++.pt/spec41.C: New test.
+
 2001-05-19  Joseph S. Myers  <jsm28@cam.ac.uk>
 
 	* gcc.c-torture/compile/20010114-1.x: Remove.
diff --git a/gcc/testsuite/g++.old-deja/g++.pt/spec41.C b/gcc/testsuite/g++.old-deja/g++.pt/spec41.C
new file mode 100644
index 0000000000000000000000000000000000000000..aab53c074c17eac2cac83cdd5ac967220f46518d
--- /dev/null
+++ b/gcc/testsuite/g++.old-deja/g++.pt/spec41.C
@@ -0,0 +1,10 @@
+// Build don't link:
+
+// Origin: <mikes@nilenet.com>
+
+// Bug: Specialization of implicitly created function should be
+// rejected.
+
+template<class T> class blah{};
+blah<char>::blah(){}		// ERROR - invalid specialization
+int main(){}