From: Christophe Rhodes Date: Sat, 31 Aug 2002 09:52:16 +0000 (+0000) Subject: 0.7.7.5: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=c0380faa04d989735579753b12a8881f71112295;p=sbcl.git 0.7.7.5: Minor HPPA fix ... get the SC-OFFSET right for the HPPA port Include APD's test case for the (IF TEST ) bogus constraint propagation Note in BUGS about autodeclaration of slot accessors --- diff --git a/BUGS b/BUGS index bd6adba..ffc5ebb 100644 --- a/BUGS +++ b/BUGS @@ -1299,6 +1299,13 @@ WORKAROUND: results in a STYLE-WARNING: undefined-function SB-SLOT-ACCESSOR-NAME::|COMMON-LISP-USER A-CLASS-X slot READER| + + APD's fix for this was checked in to sbcl-0.7.6.20, but Pierre + Mai points out that the declamation of functions is in fact + incorrect in some cases (most notably for structure + classes). This means that at present erroneous attempts to use + WITH-SLOTS and the like on classes with metaclass STRUCTURE-CLASS + won't get the corresponding STYLE-WARNING. c. the examples in CLHS 7.6.5.1 (regarding generic function lambda lists and &KEY arguments) do not signal errors when they should. diff --git a/src/runtime/hppa-assem.S b/src/runtime/hppa-assem.S index 073e0dc..107140a 100644 --- a/src/runtime/hppa-assem.S +++ b/src/runtime/hppa-assem.S @@ -306,7 +306,7 @@ undefined_tramp: .byte 4 .byte UNDEFINED_FUN_ERROR .byte 254 - .byte (0x40 + sc_DescriptorReg) + .byte (0x20 + sc_DescriptorReg) .byte 1 .align 4 diff --git a/tests/compiler.impure.lisp b/tests/compiler.impure.lisp index 02cda0e..63273bf 100644 --- a/tests/compiler.impure.lisp +++ b/tests/compiler.impure.lisp @@ -281,13 +281,29 @@ (compile nil '(lambda () (symbol-macrolet ((*standard-input* nil)) *standard-input*))) (assert failure-p) (assert (raises-error? (funcall function) program-error))) -#| +#|| BUG 48c, not yet fixed: (multiple-value-bind (function warnings-p failure-p) (compile nil '(lambda () (symbol-macrolet ((s nil)) (declare (special s)) s))) (assert failure-p) (assert (raises-error? (funcall function) program-error))) -|# +||# + +;;; bug 120a: Turned out to be constraining code looking like (if foo +;;; ) where was optimized by the compiler to be the exact +;;; same block in both cases, but not turned into (PROGN FOO ). +;;; Fixed by APD in sbcl-0.7.7.2, who provided this test: +(declaim (inline dont-constrain-if-too-much)) +(defun dont-constrain-if-too-much (frame up-frame) + (declare (optimize (speed 3) (safety 1) (debug 1))) + (if (or (not frame) t) + frame + "bar")) +(defun dont-constrain-if-too-much-aux (x y) + (declare (optimize (speed 3) (safety 1) (debug 1))) + (if x t (if y t (dont-constrain-if-too-much x y)))) + +(assert (null (dont-constrain-if-too-much-aux nil nil))) ;;;; tests not in the problem domain, but of the consistency of the ;;;; compiler machinery itself diff --git a/version.lisp-expr b/version.lisp-expr index d909a0b..2b267bd 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -18,4 +18,4 @@ ;;; for internal versions, especially for internal versions off the ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) -"0.7.7.4" +"0.7.7.5"