X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=tests%2Fcompiler.pure.lisp;h=ff5d41b99112496e79475dabe3150532834f9599;hb=ff257d8d6acc59dee58eca6a284aced4506f727b;hp=52187e5f7b74d60df2ae3803168480bace452314;hpb=34a6f9c3f9d476e766c45fcfcad80c8926ebd7c1;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index 52187e5..ff5d41b 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -3503,34 +3503,31 @@ (* x -1.0d0))) 1)))) -(with-test (:name :data-vector-ref-with-offset-neg-index) - (let ((fun (compile nil - `(lambda () - (let ((table (make-array 7 - :element-type 'fixnum - :initial-contents '(0 1 2 3 4 5 6)))) - (loop for n from -3 upto 3 - collect (aref table (+ 3 n)))))))) - (assert (equal '(0 1 2 3 4 5 6) (funcall fun))))) - -(with-test (:name :aref-bignum-offset-and-index) - ;; These don't get the data-vector-ref-with-offset vop. - (let ((fun (compile nil - `(lambda () - (let ((table (make-array 7 - :element-type 'fixnum - :initial-contents '(0 1 2 3 4 5 6)))) - (loop for n from most-negative-fixnum upto (+ most-negative-fixnum 6) - collect (aref table (+ #.(1+ most-positive-fixnum) n)))))))) - (assert (equal '(0 1 2 3 4 5 6) (funcall fun)))) - (let ((fun (compile nil - `(lambda () - (let ((table (make-array 7 - :element-type 'fixnum - :initial-contents '(0 1 2 3 4 5 6)))) - (loop for n from (+ most-positive-fixnum 1) upto (+ most-positive-fixnum 7) - collect (aref table (- n (+ most-positive-fixnum 1))))))))) - (assert (equal '(0 1 2 3 4 5 6) (funcall fun))))) - (with-test (:name :dotimes-non-integer-counter-value) (assert (raises-error? (dotimes (i 8.6)) type-error))) + +(with-test (:name :bug-454681) + ;; This used to break due to reference to a dead lambda-var during + ;; inline expansion. + (assert (compile nil + `(lambda () + (multiple-value-bind (iterator+977 getter+978) + (does-not-exist-but-does-not-matter) + (flet ((iterator+976 () + (funcall iterator+977))) + (declare (inline iterator+976)) + (let ((iterator+976 #'iterator+976)) + (funcall iterator+976)))))))) + +(with-test (:name :complex-float-local-fun-args) + ;; As of 1.0.27.14, the lambda below failed to compile due to the + ;; compiler attempting to pass unboxed complex floats to Z and the + ;; MOVE-ARG method not expecting the register being used as a + ;; temporary frame pointer. Reported by sykopomp in #lispgames, + ;; reduced test case provided by _3b`. + (compile nil '(lambda (a) + (labels ((z (b c) + (declare ((complex double-float) b c)) + (* b (z b c)))) + (loop for i below 10 do + (setf a (z a a)))))))