From 87fd9c7cb4170e7e4b19ab6d52373437e807d866 Mon Sep 17 00:00:00 2001
From: ram <ram>
Date: Fri, 20 Apr 1990 14:39:08 +0000
Subject: [PATCH] Fixed TRULY-THE to set the NODE-DERIVED-TYPE only on uses of
 the CONT that are within the enclosed form.  This was causing uses of
 (TRULY-THE NIL ...) in XEPs to have truly bizarre effects (we "proved" that
 the XEP calls returned NIL, wich allowed us to assume that all non-fixed-arg
 functions return 1 value.)

---
 compiler/ir1tran.lisp | 6 ++++--
 1 file changed, 4 insertions(+), 2 deletions(-)

diff --git a/compiler/ir1tran.lisp b/compiler/ir1tran.lisp
index d9ed4dc03..f5faa7378 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
-- 
GitLab