diff --git a/compiler/ir1tran.lisp b/compiler/ir1tran.lisp
index d9ed4dc0315ad6f0d31c670b29be7665d5a5765c..f5faa7378a85f1540af436b499e142dcf0ae9f1f 100644
--- a/compiler/ir1tran.lisp
+++ b/compiler/ir1tran.lisp
@@ -2576,10 +2576,12 @@
   Like the THE special form, except that it believes whatever you tell it.  It
   will never generate a type check, but will cause a warning if the compiler
   can prove the assertion is wrong."
-  (let ((type (specifier-type type)))
+  (let ((type (specifier-type type))
+	(old (find-uses cont)))
     (ir1-convert start cont value)
     (do-uses (use cont)
-      (derive-node-type use type))))
+      (unless (member use old)
+	(derive-node-type use type)))))
 
 
 ;;;; Setq