master: More specifier-type type mismatches

stassats via Sbcl-commits <[email protected]> Sat, 23 May 2026 23:52:04 +0000
Newsgroups gmane.lisp.steel-bank.cvs
Message-ID <[email protected]>
The branch "master" has been updated in SBCL:
       via  8bd18308746d7212b1e02e81fc1a75573baee400 (commit)
      from  9bebe3a3950961de344b03c21cd527ab93accb44 (commit)

- Log -----------------------------------------------------------------
commit 8bd18308746d7212b1e02e81fc1a75573baee400
Author: Stas Boukarev <[email protected]>
Date:   Sun May 24 02:47:50 2026 +0300

    More specifier-type type mismatches
---
 src/compiler/bitops-derive-type.lisp | 22 +++++++++++-----------
 1 file changed, 11 insertions(+), 11 deletions(-)

diff --git a/src/compiler/bitops-derive-type.lisp b/src/compiler/bitops-derive-type.lisp
index 2b8a96f0f..ca9d5ab3e 100644
--- a/src/compiler/bitops-derive-type.lisp
+++ b/src/compiler/bitops-derive-type.lisp
@@ -378,7 +378,7 @@
                                     (specifier-type '(integer 1)))))
                          (if type
                              (type-intersection type r)
-                             (specifier-type r))))))
+                             r)))))
                  ;; (logxor x (1+ x)) is positive, except -1 => -1.
                  (multiple-value-bind (name combination args)
                      (combination-matches* '(+) '(* 1) (lvar-uses y) :cast-type (specifier-type 'integer))
@@ -390,22 +390,22 @@
                                     (specifier-type '(integer 1)))))
                          (if type
                              (type-intersection type r)
-                             (specifier-type r))))))
+                             r)))))
                  ;; (logxor x (- x)) is <= 0
                  (combination-case (x :cast (specifier-type 'integer))
                    (%negate (*)
                     (when (same-leaf-ref-p (car args) y)
                       (multiple-value-bind (len pos neg low high) (integer-type-length (lvar-type y))
                         (declare (ignore pos neg))
-                        (let* ((int (if len
-                                        (make-numeric-type 'integer
-                                                           (ash -1 (integer-length (max (abs low) (abs high))))
-                                                           (if (<= low 0 high)
-                                                               0
-                                                               -2))
-                                        (if (types-equal-or-intersect (lvar-type y) (specifier-type '(eql 0)))
-                                            (specifier-type '(integer * 0))
-                                            (specifier-type '(integer * -2))))))
+                        (let ((int (if len
+                                       (make-numeric-type 'integer
+                                                          (ash -1 (integer-length (max (abs low) (abs high))))
+                                                          (if (<= low 0 high)
+                                                              0
+                                                              -2))
+                                       (if (types-equal-or-intersect (lvar-type y) (specifier-type '(eql 0)))
+                                           (specifier-type '(integer * 0))
+                                           (specifier-type '(integer * -2))))))
                           (if type
                               (type-intersection type int)
                               int)))))))))

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


hooks/post-receive
-- 
SBCL