1.0.42.22: x86-64: Add test case for unboxed complex float arguments.
authorAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 2 Sep 2010 00:34:13 +0000 (00:34 +0000)
committerAlastair Bridgewater <lisphacker@users.sourceforge.net>
Thu, 2 Sep 2010 00:34:13 +0000 (00:34 +0000)
  * This has been broken since 1.0.27.14.

tests/compiler.pure.lisp
version.lisp-expr

index 8be6ff1..118fce2 100644 (file)
                           (declare (inline iterator+976))
                           (let ((iterator+976 #'iterator+976))
                             (funcall iterator+976))))))))
+
+(with-test (:name :complex-float-local-fun-args :fails-on :x86-64)
+  ;; 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)))))))
index 9c49959..c403779 100644 (file)
@@ -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".)
-"1.0.42.21"
+"1.0.42.22"