0.7.9.13:
authorAlexey Dejneka <adejneka@comail.ru>
Tue, 29 Oct 2002 17:28:06 +0000 (17:28 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Tue, 29 Oct 2002 17:28:06 +0000 (17:28 +0000)
        Disabled type checking of arguments in MV-COMBINATION

BUGS
src/compiler/checkgen.lisp
tests/compiler-1.impure-cload.lisp
version.lisp-expr

diff --git a/BUGS b/BUGS
index fb9a754..a67ed1b 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1290,6 +1290,21 @@ WORKAROUND:
   * (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.
index 6ada02b..f824823 100644 (file)
           (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.
index e062958..a873e69 100644 (file)
             (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
+
index 4f7fb70..e697733 100644 (file)
@@ -18,4 +18,4 @@
 ;;; 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"