master: constant-sequence-element-type: ignore circular lists

stassats via Sbcl-commits <[email protected]> Thu, 04 Jun 2026 23:16:56 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  ac5a3f378a16d1b3a7a002eb1194d958f49fe0f2 (commit)
      from  b378f284eab221c5c1dc914d5c12e67dc0ed4cf0 (commit)

- Log -----------------------------------------------------------------
commit ac5a3f378a16d1b3a7a002eb1194d958f49fe0f2
Author: Stas Boukarev <[email protected]>
Date:   Fri Jun 5 02:13:20 2026 +0300

    constant-sequence-element-type: ignore circular lists
---
 src/compiler/array-tran.lisp | 4 +++-
 1 file changed, 3 insertions(+), 1 deletion(-)

diff --git a/src/compiler/array-tran.lisp b/src/compiler/array-tran.lisp
index e0d5364ba..c88f9aacd 100644
--- a/src/compiler/array-tran.lisp
+++ b/src/compiler/array-tran.lisp
@@ -198,7 +198,9 @@
         (cdr-type *empty-type*)
         cdr-min cdr-max cdr-symbols)
     (if (if (listp sequence)
-            (null sequence)
+            (or (null sequence)
+                (unless (proper-or-dotted-list-p sequence)
+                  (return-from constant-sequence-element-type *universal-type*)))
             (= (array-total-size sequence) 0))
         *empty-type*
         (let ()

-----------------------------------------------------------------------


hooks/post-receive
-- 
SBCL