X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;ds=sidebyside;f=tests%2Fcompiler.pure.lisp;h=52e4c129118886f554229ab84570a0cd001a3a7b;hb=de19b78acd2ecb0f6caedaaedee35031f0c61c1c;hp=eb60efd035ca42058ee0d69ab479e29976a4fafc;hpb=930e3879538d196aeb8c08e9d1b223f641f533d6;p=sbcl.git diff --git a/tests/compiler.pure.lisp b/tests/compiler.pure.lisp index eb60efd..52e4c12 100644 --- a/tests/compiler.pure.lisp +++ b/tests/compiler.pure.lisp @@ -4096,3 +4096,39 @@ (declare (type keyword p3)) (tree-equal p1 (cons 1 2) (the (member :test) p3) p4))))) (assert (funcall fun (cons 1.0 2.0) :test '=)))) + +(with-test (:name :truncate-wild-values) + (multiple-value-bind (q r) + (handler-bind ((warning #'error)) + (let ((sb-c::*check-consistency* t)) + (funcall (compile nil + `(lambda (a) + (declare (type (member 1d0 2d0) a)) + (block return-value-tag + (funcall + (the function + (catch 'debug-catch-tag + (return-from return-value-tag + (progn (truncate a))))))))) + 2d0))) + (assert (eql 2 q)) + (assert (eql 0d0 r)))) + +(with-test (:name :boxed-fp-constant-for-full-call) + (let ((fun (compile nil + `(lambda (x) + (declare (double-float x)) + (unknown-fun 1.0d0 (+ 1.0d0 x)))))) + (assert (equal '(1.0d0) (ctu:find-code-constants fun :type 'double-float))))) + +(with-test (:name :fixnum+float-coerces-fixnum + :skipped-on :x86) + (let ((fun (compile nil + `(lambda (x y) + (declare (fixnum x) + (single-float y)) + (+ x y))))) + (assert (not (ctu:find-named-callees fun))) + (assert (not (search "GENERIC" + (with-output-to-string (s) + (disassemble fun :stream s)))))))