X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.pure.lisp;h=a528b67a34165e447e079edeee5d9015f55aa4cc;hb=ebc0f0ebf9efd39519ab86ba28c33abdb25443e0;hp=c64843282c29337dfd6a94ab60b4761722330bcc;hpb=80358be9e8be2f1ac08e39a9547b798a07266cc9;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index c648432..a528b67 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -2036,8 +2036,7 @@ ;; Reported by John Wiseman, sbcl-devel ;; Subject: [Sbcl-devel] float type derivation bug? ;; Date: Tue, 4 Apr 2006 15:28:15 -0700 -(with-test (:name (:type-derivation :float-bounds) - :fails-on :sbcl) +(with-test (:name (:type-derivation :float-bounds)) (compile nil '(lambda (bits) (let* ((s (if (= (ash bits -31) 0) 1 -1)) (e (logand (ash bits -23) #xff)) @@ -2049,8 +2048,7 @@ ;; Reported by James Knight ;; Subject: [Sbcl-devel] AVER: "(EQ (SB-NAME (SC-SB (TN-SC TN))) 'REGISTERS)" ;; Date: Fri, 24 Mar 2006 19:30:00 -0500 -(with-test (:name (:compiler :type-derivation :float-bounds) - :fails-on :x86) +(with-test (:name :logbitp-vop) (compile nil '(lambda (days shift) (declare (type fixnum shift days)) @@ -2069,3 +2067,49 @@ (- (+ source-day canonicalized-shift) 7))))))) result)))) + +;;; MISC.637: incorrect delaying of conversion of optional entries +;;; with hairy constant defaults +(let ((f '(lambda () + (labels ((%f11 (f11-2 &key key1) + (labels ((%f8 (f8-2 &optional (f8-5 (if nil (return-from %f11 0) 0))) + :bad1)) + (%f8 (%f8 0))) + :bad2)) + :good)))) + (assert (eq (funcall (compile nil f)) :good))) + +;;; MISC.555: new reference to an already-optimized local function +(let* ((l '(lambda (p1) + (declare (optimize (speed 1) (safety 2) (debug 2) (space 0)) (type keyword p1)) + (keywordp p1))) + (f (compile nil l))) + (assert (funcall f :good)) + (assert (nth-value 1 (ignore-errors (funcall f 42))))) + +;;; Check that the compiler doesn't munge *RANDOM-STATE*. +(let* ((state (make-random-state)) + (*random-state* (make-random-state state)) + (a (random most-positive-fixnum))) + (setf *random-state* state) + (compile nil `(lambda (x a) + (declare (single-float x) + (type (simple-array double-float) a)) + (+ (loop for i across a + summing i) + x))) + (assert (= a (random most-positive-fixnum)))) + +;;; MISC.641: LET-conversion after physical environment analysis lost NLX-INFOs +(let ((form '(lambda () + (declare (optimize (speed 1) (space 0) (debug 2) + (compilation-speed 0) (safety 1))) + (flet ((%f3 (f3-1 &key (key1 (count (floor 0 (min -74 0)) #()))) + 0)) + (apply #'%f3 0 nil))))) + (assert (zerop (funcall (compile nil form))))) + +;;; size mismatch: # disp=1> is a :DWORD and # is a :QWORD. on x86-64 +(compile nil '(lambda () + (let ((x (make-array '(1) :element-type '(signed-byte 32)))) + (setf (aref x 0) 1))))