diff --git a/pcl/boot.lisp b/pcl/boot.lisp
index 008967825e514bf1aba17600f1c03da1d8addf16..48c560a7bfcfb911a08cc0c433af6db4c9d998f5 100644
--- a/pcl/boot.lisp
+++ b/pcl/boot.lisp
@@ -26,7 +26,7 @@
 ;;;
 
 (ext:file-comment
- "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/boot.lisp,v 1.20 1999/05/30 23:13:51 pw Exp $")
+ "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/boot.lisp,v 1.21 2000/08/01 15:04:31 pw Exp $")
 
 (in-package :pcl)
 
@@ -163,6 +163,12 @@ work during bootstrapping.
 ;;;
 ;;;
 ;;;
+(defun tell-compiler-about-gf (function-specifier lambda-list)
+  ;; Supress any undefined function warnings from compiler.
+  ;; I had originally lifted some code from c::%%defun but this
+  ;; seems to do the job just as well.
+  (proclaim-defgeneric function-specifier lambda-list))
+
 (defmacro defgeneric (function-specifier lambda-list &body options)
   (expand-defgeneric function-specifier lambda-list options))
 
@@ -217,6 +223,9 @@ work during bootstrapping.
 
 	(let ((declarations (initarg :declarations)))
 	  (when declarations (initarg :declarations `',declarations))))
+
+      (tell-compiler-about-gf function-specifier lambda-list)
+
     `(progn 
        (proclaim-defgeneric ',function-specifier ',lambda-list)
        ,(make-top-level-form
@@ -306,6 +315,7 @@ work during bootstrapping.
 	(let ((initargs-form (make-method-initargs-form 
 			      proto-gf proto-method
 			      method-function-lambda initargs env)))
+	  (tell-compiler-about-gf name lambda-list)
 	  `(progn
 	     (proclaim-defgeneric ',name ',lambda-list)
 	     ,@(when *make-instance-function-keys*