From 01807e5203a1c27c98c93b26eea3bd6562817f4f Mon Sep 17 00:00:00 2001 From: Christophe Rhodes Date: Sun, 26 Oct 2003 13:14:09 +0000 Subject: [PATCH] 0.8.5.6: Fix for LOGAND OPTIMIZER and 0s ... use UNSIGNED-BYTE* --- NEWS | 3 +++ src/compiler/srctran.lisp | 2 +- tests/compiler.pure.lisp | 5 +++++ version.lisp-expr | 2 +- 4 files changed, 10 insertions(+), 2 deletions(-) diff --git a/NEWS b/NEWS index ebf76c7..0b8c6c4 100644 --- a/NEWS +++ b/NEWS @@ -2175,6 +2175,9 @@ changes in sbcl-0.8.6 relative to sbcl-0.8.5: SBCL binary built from CLISP) * fixed a compiler bug: MV-LET convertion did not check references to the "max args" entry point. (reported by Brian Downing) + * fixed some bugs revealed by Paul Dietz' test suite: + ** compiler failure in compiling LOGAND expressions including a + constant 0. planned incompatible changes in 0.8.x: * (not done yet, but planned:) When the profiling interface settles diff --git a/src/compiler/srctran.lisp b/src/compiler/srctran.lisp index 1fcfe78..67c8956 100644 --- a/src/compiler/srctran.lisp +++ b/src/compiler/srctran.lisp @@ -2545,7 +2545,7 @@ (not (and (eq fun-name 'logand) (csubtypep (single-value-type (node-derived-type node)) - (specifier-type `(unsigned-byte ,width)))))) + (specifier-type `(unsigned-byte* ,width)))))) (binding* ((name (etypecase modular-fun ((eql :good) fun-name) (modular-fun-info diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index ad1853d..89b8925 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -690,3 +690,8 @@ (* x 24))) 178956970) 4294967280)) + +;;; bug in modular arithmetic and type specifiers +(assert (= (funcall (compile nil (lambda (x) (logand x x 0))) + -1) + 0)) diff --git a/version.lisp-expr b/version.lisp-expr index ab40d4c..07a3e59 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -17,4 +17,4 @@ ;;; checkins which aren't released. (And occasionally for internal ;;; versions, especially for internal versions off the main CVS ;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.8.5.5" +"0.8.5.6" -- 1.7.10.4