diff --git a/code/extfmts.lisp b/code/extfmts.lisp
index ca35ac53d08c3bd42bb05d61b85707fee924024e..d140d0529c4a30178597d5bd3f5759e23ac3f5b5 100644
--- a/code/extfmts.lisp
+++ b/code/extfmts.lisp
@@ -5,7 +5,7 @@
 ;;; domain.
 ;;; 
 (ext:file-comment
- "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/extfmts.lisp,v 1.35.4.1 2010/08/04 12:12:09 rtoy Exp $")
+ "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/code/extfmts.lisp,v 1.35.4.2 2010/08/14 23:51:08 rtoy Exp $")
 ;;;
 ;;; **********************************************************************
 ;;;
@@ -649,9 +649,12 @@ character and illegal outputs are replaced by a question mark.")
   (code-to-octets (code state output error)
     `(,output (if (> ,code 255)
 		  (if ,error
-		      (funcall ,error
-			       (intl:gettext "Cannot output codepoint #x~X to ISO8859-1 stream")
-			       ,code 1)
+		      (locally
+			  ;; No warnings about fdefinition
+			  (declare (optimize (ext:inhibit-warnings 3)))
+			(funcall ,error
+				 (intl:gettext "Cannot output codepoint #x~X to ISO8859-1 stream")
+				 ,code 1))
 		      #x3F)
 		  ,code))))
 
diff --git a/pcl/simple-streams/external-formats/ascii.lisp b/pcl/simple-streams/external-formats/ascii.lisp
index b3c2cbe37c8dbde4248286ba51874c81a48abbd1..ee8474e5ef3f26943cb8ddc5ad684d9fc3c2e39d 100644
--- a/pcl/simple-streams/external-formats/ascii.lisp
+++ b/pcl/simple-streams/external-formats/ascii.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Raymond Toy and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/ascii.lisp,v 1.6 2010/07/12 14:42:11 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/ascii.lisp,v 1.6.4.1 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -19,13 +19,19 @@ replaced with a question mark.")
        (values (if (< ,c #x80)
 		   ,c
 		   (if ,error
-		       (funcall ,error "Invalid octet #x~4,'0X for ASCII" ,c 1)
+		       (locally
+			   ;; No warnings about fdefinition
+			   (declare (optimize (ext:inhibit-warnings 3)))
+			 (funcall ,error "Invalid octet #x~4,'0X for ASCII" ,c 1))
 		       +replacement-character-code+))
 	       1)))
   (code-to-octets (code state output error)
     `(,output (if (> ,code #x7F)
 		  (if ,error
-		      (funcall ,error "Cannot output codepoint #x~X to ASCII stream" ,code)
+		      (locally
+			  ;; No warnings about fdefinition
+			  (declare (optimize (ext:inhibit-warnings 3)))
+			(funcall ,error "Cannot output codepoint #x~X to ASCII stream" ,code))
 		      #x3F)
 		  ,code))))
 
diff --git a/pcl/simple-streams/external-formats/mac-roman.lisp b/pcl/simple-streams/external-formats/mac-roman.lisp
index 9e3bc1aa1c4e8e0d370ce11124d82637f57838c6..cb32e57661c477e7b5d622c7ca45261e9fb0f83b 100644
--- a/pcl/simple-streams/external-formats/mac-roman.lisp
+++ b/pcl/simple-streams/external-formats/mac-roman.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Paul Foley and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-roman.lisp,v 1.8 2010/07/12 14:42:11 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/mac-roman.lisp,v 1.8.4.1 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -44,6 +44,9 @@ character and illegal outputs are replaced by a question mark.")
 		    (if ,present
 			(+ (the (unsigned-byte 7) ,present) 128)
 			(if ,error
-			    (funcall ,error "Cannot output codepoint #x~X to MAC-ROMAN stream"
-				     ,code)
+			    (locally
+				;; No warnings about fdefinition
+				(declare (optimize (ext:inhibit-warnings 3)))
+			      (funcall ,error "Cannot output codepoint #x~X to MAC-ROMAN stream"
+				       ,code))
 			    #x3F)))))))
diff --git a/pcl/simple-streams/external-formats/utf-16-be.lisp b/pcl/simple-streams/external-formats/utf-16-be.lisp
index 59e8064a4720a57520e8059cb00fdb01c1c33297..0fbb5a5d42d820d0be113c6e6ffbb8096d3ff6d9 100644
--- a/pcl/simple-streams/external-formats/utf-16-be.lisp
+++ b/pcl/simple-streams/external-formats/utf-16-be.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Paul Foley and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-be.lisp,v 1.10.4.1 2010/08/13 01:52:53 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-be.lisp,v 1.10.4.2 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -36,7 +36,10 @@ Unicode replacement character.")
 			,state nil)
 		  (setf ,code
 			(if ,error
-			    (funcall ,error "Bare low surrogate #x~4,'0X" ,code 2)
+			    (locally
+				;; No warnings about fdefinition
+				(declare (optimize (ext:inhibit-warnings 3)))
+			      (funcall ,error "Bare low surrogate #x~4,'0X" ,code 2))
 			    +replacement-character-code+))))
 	     ((lisp::surrogatep ,code :high)
 	      ;; Remember the high surrogate in case we bail out
@@ -55,13 +58,20 @@ Unicode replacement character.")
 		    (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400))
 		    (setf ,code
 			  (if ,error
-			      (funcall ,error "High surrogate followed by #x~4,'0X instead of low surrogate" ,next 2)
+			      (locally
+				  ;; No warnings about fdefinition
+				  (declare (optimize (ext:inhibit-warnings 3)))
+				(funcall ,error "High surrogate followed by #x~4,'0X ~
+                                                 instead of low surrogate" ,next 2))
 			      +replacement-character-code+)))))
 	     ((= ,code #xFFFE)
 	      ;; Replace with REPLACEMENT CHARACTER.  
 	      (setf ,code
 		    (if ,error
-			(funcall ,error "BOM is not valid within a UTF-16 stream" ,code 2)
+			(locally
+			    ;; No warnings about fdefinition
+			    (declare (optimize (ext:inhibit-warnings 3)))
+			  (funcall ,error "BOM is not valid within a UTF-16 stream" ,code 2))
 			+replacement-character-code+)))
 	     (t (setf ,state nil)))
        (values ,code 2)))
@@ -87,9 +97,12 @@ Unicode replacement character.")
 	 (when ,c
 	   (,output (if (lisp::surrogatep ,c)
 			(if ,error
-			    (funcall ,error
-				     "Flushing bare surrogate #x~4,'0X is illegal for UTF-16"
-				     (char-code ,c))
+			    (locally
+				;; No warnings about fdefinition
+				(declare (optimize (ext:inhibit-warnings 3)))
+			      (funcall ,error
+				       "Flushing bare surrogate #x~4,'0X is illegal for UTF-16"
+				       (char-code ,c)))
 			    +replacement-character-code+)
 			,c))))))
   (copy-state (state)
diff --git a/pcl/simple-streams/external-formats/utf-16-le.lisp b/pcl/simple-streams/external-formats/utf-16-le.lisp
index a053a36fc57464eb2f1e3dda52d99d23f43aafbd..343234030ea1ef0d6651a0e3c6e5e265afa6b245 100644
--- a/pcl/simple-streams/external-formats/utf-16-le.lisp
+++ b/pcl/simple-streams/external-formats/utf-16-le.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Paul Foley and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-le.lisp,v 1.10.4.1 2010/08/13 01:52:53 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16-le.lisp,v 1.10.4.2 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -38,7 +38,10 @@ Unicode replacement character.")
 			,state nil)
 		  (setf ,code
 			(if ,error
-			    (funcall ,error "Bare low surrogate #x~4,'0X" ,code 2)
+			    (locally
+				;; No warnings about fdefinition
+				(declare (optimize (ext:inhibit-warnings 3)))
+			      (funcall ,error "Bare low surrogate #x~4,'0X" ,code 2))
 			    +replacement-character-code+))))
 	     ((lisp::surrogatep ,code :high)
 	      ;; Remember the high surrogate in case we bail out
@@ -56,13 +59,20 @@ Unicode replacement character.")
 		    (setq ,code (+ (ash (- ,code #xD800) 10) ,next #x2400))
 		    (setq ,code
 			  (if ,error
-			      (funcall ,error "High surrogate followed by #x~4,'0X instead of low surrogate" ,next 2)
+			      (locally
+				  ;; No warnings about fdefinition
+				  (declare (optimize (ext:inhibit-warnings 3)))
+				(funcall ,error "High surrogate followed by #x~4,'0X ~
+                                                 instead of low surrogate" ,next 2))
 			      +replacement-character-code+)))))
 	     ((= ,code #xFFFE)
 	      ;; replace with REPLACEMENT CHARACTER.
 	      (setf ,code
 		    (if ,error
-			(funcall ,error "BOM is not valid within a UTF-16 stream" ,code 2)
+			(locally
+			    ;; No warnings about fdefinition
+			    (declare (optimize (ext:inhibit-warnings 3)))
+			  (funcall ,error "BOM is not valid within a UTF-16 stream" ,code 2))
 			+replacement-character-code+)))
 	     (t (setf ,state nil)))
       (values ,code 2)))
@@ -88,9 +98,12 @@ Unicode replacement character.")
 	 (when ,c
 	   (,output (if (lisp::surrogatep ,c)
 			(if ,error
-			    (funcall ,error
-				     "Flushing bare surrogate #x~4,'0X is illegal for UTF-16"
-				     (char-code ,c))
+			    (locally
+				;; No warnings about fdefinition
+				(declare (optimize (ext:inhibit-warnings 3)))
+			      (funcall ,error
+				       "Flushing bare surrogate #x~4,'0X is illegal for UTF-16"
+				       (char-code ,c)))
 			    +replacement-character-code+)
 			,c))))))
   (copy-state (state)
diff --git a/pcl/simple-streams/external-formats/utf-16.lisp b/pcl/simple-streams/external-formats/utf-16.lisp
index efd7944692957d568f41b9e6104c5ee3083607cb..92afdef19a2b53fbcc25eead3e4f711b564733b4 100644
--- a/pcl/simple-streams/external-formats/utf-16.lisp
+++ b/pcl/simple-streams/external-formats/utf-16.lisp
@@ -1,7 +1,7 @@
 ;;; -*- Mode: LISP; Syntax: ANSI-Common-Lisp; Package: STREAM -*-
 ;;;
 ;;; **********************************************************************
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16.lisp,v 1.12.4.1 2010/08/13 01:52:54 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-16.lisp,v 1.12.4.2 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -66,7 +66,10 @@ Unicode replacement character.")
 			     ,state nil)
 		       (setf ,code
 			     (if ,error
-				 (funcall ,error "Bare low surrogate #x~4,'0X" ,code 2)
+				 (locally
+				     ;; No warnings about fdefinition
+				     (declare (optimize (ext:inhibit-warnings 3)))
+				   (funcall ,error "Bare low surrogate #x~4,'0X" ,code 2))
 				 +replacement-character-code+))))
 		  ((lisp::surrogatep ,code :high)
 		   ;; Save the high (leading) code in the state, in
@@ -90,7 +93,10 @@ Unicode replacement character.")
 			       ,wd 4)
 			 (setf ,code
 			       (if ,error
-				   (funcall ,error "High surrogate followed by #x~4,'0X instead of low surrogate" ,next ,wd)
+				   (locally
+				       ;; No warnings about fdefinition
+				       (declare (optimize (ext:inhibit-warnings 3)))
+				     (funcall ,error "High surrogate followed by #x~4,'0X instead of low surrogate" ,next ,wd))
 				   +replacement-character-code+)))))
 		  ((and (= ,code #xFFFE) (zerop ,st))
 		   (setf (car ,state) 1) (go :again))
@@ -100,7 +106,10 @@ Unicode replacement character.")
 		   ;; Replace with REPLACEMENT CHARACTER.  
 		   (setf ,code
 			 (if ,error
-			     (funcall ,error "BOM is not valid within a UTF-16 stream" ,code ,wd)
+			     (locally
+				 ;; No warnings about fdefinition
+				 (declare (optimize (ext:inhibit-warnings 3)))
+			       (funcall ,error "BOM is not valid within a UTF-16 stream" ,code ,wd))
 			     +replacement-character-code+))))
 	    (return (values ,code ,wd))))))
   (code-to-octets (code state output error c c1 c2)
@@ -129,9 +138,12 @@ Unicode replacement character.")
 	 (when ,c
 	   (out (if (lisp::surrogatep ,c)
 		    (if ,error
-			(funcall ,error
-				 "Flushing bare surrogate #x~4,'0X is illegal for UTF-16"
-				 (char-code ,c))
+			(locally
+			    ;; No warnings about fdefinition
+			    (declare (optimize (ext:inhibit-warnings 3)))
+			  (funcall ,error
+				   "Flushing bare surrogate #x~4,'0X is illegal for UTF-16"
+				   (char-code ,c)))
 			+replacement-character-code+)
 		    ,c))))))
   (copy-state (state)
diff --git a/pcl/simple-streams/external-formats/utf-32-be.lisp b/pcl/simple-streams/external-formats/utf-32-be.lisp
index a07b708ceaf8c0adff77793968367118206ace87..527187351f9924cd623b8580f0ca4199cb4612dc 100644
--- a/pcl/simple-streams/external-formats/utf-32-be.lisp
+++ b/pcl/simple-streams/external-formats/utf-32-be.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Raymond Toy and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32-be.lisp,v 1.9.4.1 2010/08/13 01:52:54 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32-be.lisp,v 1.9.4.2 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -35,9 +35,12 @@ Unicode replacement character.")
 		  (lisp::surrogatep ,c))
 	      ;; Surrogates are illegal.  Use replacement character.
 	      (values (if ,error
-			  (if (>= ,c lisp:codepoint-limit)
-			      (funcall ,error "Illegal codepoint #x~4,'0X" ,c 4)
-			      (funcall ,error "Surrogate #x~4,'0X not allowed in UTF32" ,c 4))
+			  (locally
+			      ;; No warnings about fdefinition
+			      (declare (optimize (ext:inhibit-warnings 3)))
+			    (if (>= ,c lisp:codepoint-limit)
+				(funcall ,error "Illegal codepoint #x~4,'0X" ,c 4)
+				(funcall ,error "Surrogate #x~4,'0X not allowed in UTF32" ,c 4)))
 			  +replacement-character-code+)
 		      4))
 	     (t
@@ -51,8 +54,11 @@ Unicode replacement character.")
 		(,output (ldb (byte 8 (* 8 (- 3 ,i))) ,c)))))
        (cond ((lisp::surrogatep ,code)
 	      (out (if ,error
-		       (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
-				,code)
+		       (locally
+			   ;; No warnings about fdefinition
+			   (declare (optimize (ext:inhibit-warnings 3)))
+			 (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
+				  ,code))
 		       +replacement-character-code+)))
 	     (t
 	      (out ,code))))))
diff --git a/pcl/simple-streams/external-formats/utf-32-le.lisp b/pcl/simple-streams/external-formats/utf-32-le.lisp
index 6924ad512a79c23f234ee4dee8db193f258e3280..cd4fd0448f8629667ce19a9832f44c50b3faef17 100644
--- a/pcl/simple-streams/external-formats/utf-32-le.lisp
+++ b/pcl/simple-streams/external-formats/utf-32-le.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Raymond Toy and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32-le.lisp,v 1.9.4.1 2010/08/13 01:52:54 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32-le.lisp,v 1.9.4.2 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -35,10 +35,13 @@ Unicode replacement character.")
 		  (lisp::surrogatep ,c))
 	      ;; Surrogates are illegal.  Use replacement character.
 	      (values (if ,error
-			  (if (>= ,c lisp:codepoint-limit)
-			      (funcall ,error "Illegal codepoint #x~4,'0X" ,c 4)
-			      (funcall ,error "Surrogate #x~4,'0X not allowed in UTF32"
-				       ,c 4))
+			  (locally
+			      ;; No warnings about fdefinition
+			      (declare (optimize (ext:inhibit-warnings 3)))
+			    (if (>= ,c lisp:codepoint-limit)
+				(funcall ,error "Illegal codepoint #x~4,'0X" ,c 4)
+				(funcall ,error "Surrogate #x~4,'0X not allowed in UTF32"
+					 ,c 4)))
 			  +replacement-character-code+)
 		      4))
 	     (t
@@ -52,8 +55,11 @@ Unicode replacement character.")
 		(,output (ldb (byte 8 (* 8 ,i)) ,c)))))
        (cond ((lisp::surrogatep ,code)
 	      (out (if ,error
-		       (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
-				,code)
+		       (locally
+			   ;; No warnings about fdefinition
+			   (declare (optimize (ext:inhibit-warnings 3)))
+			 (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
+				  ,code))
 		       +replacement-character-code+)))
 	     (t
 	      (out ,code))))))
diff --git a/pcl/simple-streams/external-formats/utf-32.lisp b/pcl/simple-streams/external-formats/utf-32.lisp
index e0f00ab8ade284398b5882a1e594339f5de40b28..ae64866d030e65e7305d5bd356aa06518a47f63d 100644
--- a/pcl/simple-streams/external-formats/utf-32.lisp
+++ b/pcl/simple-streams/external-formats/utf-32.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Raymond Toy and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32.lisp,v 1.11 2010/07/12 14:42:11 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-32.lisp,v 1.11.4.1 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -70,10 +70,13 @@ Unicode replacement character.")
 		   ;; character.
 		   (setf ,code
 			 (if ,error
-			     (if (>= ,code lisp:codepoint-limit)
-				 (funcall ,error "Illegal codepoint #x~4,'0X" ,code 4)
-				 (funcall ,error "Surrogate #x~4,'0X not allowed in UTF32"
-					  ,code 4))
+			     (locally
+				 ;; No warnings about fdefinition
+				 (declare (optimize (ext:inhibit-warnings 3)))
+			       (if (>= ,code lisp:codepoint-limit)
+				   (funcall ,error "Illegal codepoint #x~4,'0X" ,code 4)
+				   (funcall ,error "Surrogate #x~4,'0X not allowed in UTF32"
+					    ,code 4)))
 			     +replacement-character-code+)))
 		  ((and  (zerop ,st) (= ,code #xFFFE0000))
 		   ;; BOM for little-endian
@@ -97,8 +100,11 @@ Unicode replacement character.")
 	 (setf ,state t))
        (cond ((lisp::surrogatep ,code)
 	      (out (if ,error
-		       (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
-				,code)
+		       (locally
+			   ;; No warnings about fdefinition
+			   (declare (optimize (ext:inhibit-warnings 3)))
+			 (funcall ,error "Surrogate code #x~4,'0X is illegal for UTF32 output"
+				  ,code))
 		       +replacement-character-code+)))
 	     (t
 	      (out ,code)))))
diff --git a/pcl/simple-streams/external-formats/utf-8.lisp b/pcl/simple-streams/external-formats/utf-8.lisp
index d95f1f6523ef73de4aec433d983560c73d795d0c..832565543fbdbaeae90734277f414578ca1d92bc 100644
--- a/pcl/simple-streams/external-formats/utf-8.lisp
+++ b/pcl/simple-streams/external-formats/utf-8.lisp
@@ -4,7 +4,7 @@
 ;;; This code was written by Paul Foley and has been placed in the public
 ;;; domain.
 ;;;
-(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-8.lisp,v 1.14 2010/07/12 14:42:11 rtoy Exp $")
+(ext:file-comment "$Header: /Volumes/share2/src/cmucl/cvs2git/cvsroot/src/pcl/simple-streams/external-formats/utf-8.lisp,v 1.14.4.1 2010/08/14 23:51:08 rtoy Exp $")
 
 (in-package "STREAM")
 (intl:textdomain "cmucl")
@@ -40,10 +40,13 @@ replacement character.")
 			    (,unput 1)
 			    (return
 			      (values
-			       (if ,error
-				   (funcall ,error "Invalid utf8 octet #x~X at offset ~D"
-					    ,c (1+ ,j))
-				   +replacement-character-code+)
+			       (locally
+				   ;; No warnings about fdefinition
+				   (declare (optimize (ext:inhibit-warnings 3)))
+				 (if ,error
+				     (funcall ,error "Invalid utf8 octet #x~X at offset ~D"
+					      ,c (1+ ,j))
+				     +replacement-character-code+))
 			       (1+ ,j)))))))))
 	      (check (,n ,i)
 		(declare (type (unsigned-byte 31) ,n)
@@ -62,12 +65,21 @@ replacement character.")
 		      (values (if ,error
 				  (cond
 				    ((>= ,n lisp:codepoint-limit)
-				     (funcall ,error "Invalid codepoint #x~X of ~D octets"
-					      ,n (1+ ,i)))
+				     (locally
+					 ;; No warnings about fdefinition
+					 (declare (optimize (ext:inhibit-warnings 3)))
+				       (funcall ,error "Invalid codepoint #x~X of ~D octets"
+						,n (1+ ,i))))
 				    ((lisp::surrogatep ,n)
-				     (funcall ,error "Invalid surrogate code #x~X" ,n (1+ ,i)))
+				     (locally
+					 ;; No warnings about fdefinition
+					 (declare (optimize (ext:inhibit-warnings 3)))
+				       (funcall ,error "Invalid surrogate code #x~X" ,n (1+ ,i))))
 				    (t
-				     (funcall ,error "Overlong utf8 sequence of ~*~D octets" nil (1+ ,i))))
+				     (locally
+					 ;; No warnings about fdefinition
+					 (declare (optimize (ext:inhibit-warnings 3)))
+				       (funcall ,error "Overlong utf8 sequence of ~*~D octets" nil (1+ ,i)))))
 				  +replacement-character-code+)
 			      (1+ ,i)))
 		    (values ,n (1+ ,i)))))
@@ -76,18 +88,26 @@ replacement character.")
 	(cond ((null ,c) (values nil 0))
 	      ((< ,c #b10000000) (values ,c 1))
 	      ((< ,c #b11000010)
-	       (values (if ,error
-			   (funcall ,error "Invalid initial utf8 octet: #x~X" ,c 1)
-			   +replacement-character-code+)
+	       (values
+		(locally
+		    ;; No warnings about fdefinition
+		    (declare (optimize (ext:inhibit-warnings 3)))
+		  (if ,error
+		      (funcall ,error "Invalid initial utf8 octet: #x~X" ,c 1)
+		      +replacement-character-code+))
 		       1))
 	      ((< ,c #b11100000) (utf8 ,c 1))
 	      ((< ,c #b11110000) (utf8 ,c 2))
 	      ((< ,c #b11111000) (utf8 ,c 3))
 	      (t
-	       (values (if ,error
-			   (funcall ,error "Invalid initial utf8 octet: #x~X" ,c 1)
-			   +replacement-character-code+)
-		       1))))))
+	       (values
+		(locally
+		    ;; No warnings about fdefinition
+		    (declare (optimize (ext:inhibit-warnings 3)))
+		  (if ,error
+		      (funcall ,error "Invalid initial utf8 octet: #x~X" ,c 1)
+		      +replacement-character-code+))
+		1))))))
   (code-to-octets (code state output error i j n p init)
     `(flet ((utf8 (,n ,i)
           (let* ((,j (- 6 ,i))