From: Alexey Dejneka Date: Tue, 29 Oct 2002 17:28:06 +0000 (+0000) Subject: 0.7.9.13: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=7317109e5f23cb96289e104df95b0ef10985d2c0;p=sbcl.git 0.7.9.13: Disabled type checking of arguments in MV-COMBINATION --- diff --git a/BUGS b/BUGS index fb9a754..a67ed1b 100644 --- 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. diff --git a/src/compiler/checkgen.lisp b/src/compiler/checkgen.lisp index 6ada02b..f824823 100644 --- a/src/compiler/checkgen.lisp +++ b/src/compiler/checkgen.lisp @@ -260,6 +260,9 @@ (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. diff --git a/tests/compiler-1.impure-cload.lisp b/tests/compiler-1.impure-cload.lisp index e062958..a873e69 100644 --- a/tests/compiler-1.impure-cload.lisp +++ b/tests/compiler-1.impure-cload.lisp @@ -106,4 +106,14 @@ (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 + diff --git a/version.lisp-expr b/version.lisp-expr index 4f7fb70..e697733 100644 --- a/version.lisp-expr +++ b/version.lisp-expr @@ -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"