* (baz t)
1
+220:
+ Sbcl 0.7.9 fails to compile
+
+ (multiple-value-call #'list
+ (the integer (helper))
+ nil)
+
+ Type check for INTEGER is inserted, the result of which serves as
+ the first argument of M-V-C, is inserted after evaluation of NIL. So
+ arguments of M-V-C are pushed in the wrong order. As a temporary
+ workaround type checking was disabled for M-V-Cs in 0.7.9.13. A
+ better solution would be to put a check between evaluation of
+ arguments, but it could be tricky to check result types of PROG1, IF
+ etc.
+
DEFUNCT CATEGORIES OF BUGS
IR1-#:
These labels were used for bugs related to the old IR1 interpreter.
(let ((kind (basic-combination-kind dest)))
(cond ((eq cont (basic-combination-fun dest)) t)
((eq kind :local) t)
+ ((mv-combination-p dest)
+ ;; See bug 220
+ nil)
((not (eq (continuation-asserted-type cont)
(continuation-externally-checkable-type cont)))
;; There is an explicit assertion.
(make-array 3 :element-type t :initial-element 0))
nil))
+;;; bug 220: type check inserted after all arguments in MV-CALL caused
+;;; failure of stack analysis
+(defun bug220-helper ()
+ 13)
+(assert (equal (multiple-value-call #'list
+ (the integer (bug220-helper))
+ nil)
+ '(13 nil)))
+
(sb-ext:quit :unix-status 104) ; success
+
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.9.12"
+"0.7.9.13"