Update of /cvsroot/sbcl/sbcl/tests
In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv15420/tests
Modified Files:
compiler.impure-cload.lisp
Log Message:
0.8.7.56:
Fix for bug revealed by ITERATE on PPC
... the powerpc backend has no branch delay slot, so putting the
last defaulting operation after the branch doesn't work
so well
... neither does the alpha, so fix that too, even though with a
higher REGISTER-ARG-COUNT value it's not exposed by
ITERATE
... cook up a test case that's likely to catch the problem
elsewhere, if present
Index: compiler.impure-cload.lisp
===================================================================
RCS file: /cvsroot/sbcl/sbcl/tests/compiler.impure-cload.lisp,v
retrieving revision 1.16
retrieving revision 1.17
diff -u -d -r1.16 -r1.17
--- compiler.impure-cload.lisp 26 Oct 2003 11:36:25 -0000 1.16
+++ compiler.impure-cload.lisp 19 Feb 2004 00:09:06 -0000 1.17
@@ -340,5 +340,25 @@
(DECLARE (IGNORE OTHER-1))))
(continuation-1)))
+;;; reported by antifuchs/bdowning/etc on #lisp: ITERATE failure on
+;;; (iter (for i in '(1 2 3)) (+ i 50))
+(defun values-producer () (values 1 2 3 4 5 6 7))
+
+(defun values-consumer (fn)
+ (let (a b c d e f g h)
+ (multiple-value-bind (aa bb cc dd ee ff gg hh) (funcall fn)
+ (setq a aa)
+ (setq b bb)
+ (setq c cc)
+ (setq d dd)
+ (setq e ee)
+ (setq f ff)
+ (setq g gg)
+ (setq h hh)
+ (values a b c d e f g h))))
+
+(let ((list (multiple-value-list (values-consumer #'values-producer))))
+ (assert (= (length list) 8))
+ (assert (null (nth 7 list))))
(sb-ext:quit :unix-status 104)
|