X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=BUGS;h=f47e869efa0495e97887dcbb2b59dc7dcd437dae;hb=dcf5978d9d33098e868ae6eea28e1b310038c03d;hp=fed7fc371bee3e11a7489a93c6efcb53d43d08b3;hpb=7f321020769583880612fe291367b0141a88ab2a;p=sbcl.git diff --git a/BUGS b/BUGS index fed7fc3..f47e869 100644 --- a/BUGS +++ b/BUGS @@ -447,7 +447,9 @@ WORKAROUND: * '``(FOO ,@',@S) ``(FOO SB-IMPL::BACKQ-COMMA-AT S) - b. (fixed in 0.8.4.7) + c. (reported by Paul F. Dietz) + * '`(lambda ,x) + `(LAMBDA (SB-IMPL::BACKQ-COMMA X)) 143: (reported by Jesse Bouwman 2001-10-24 through the unfortunately @@ -1199,3 +1201,30 @@ WORKAROUND: (0))). However, an integral value of X should be legal, because successive adds of integers to double-floats produces double-floats, so none of the type restrictions in the code is violated. + +298: (aka PFD MISC.183) + Compiler fails on + + (defun foo () + (multiple-value-call #'bar + (ext) + (catch 'tag (return-from foo (int))))) + + This program violates "unknown values LVAR stack discipline": if INT + returns, values returned by (EXT) must be removed from under that of + (INT). + +299: (aka PFD MISC.186) + * (defun foo () + (declare (optimize (debug 1))) + (multiple-value-call #'list + (if (eval t) (eval '(values :a :b :c)) nil) ; (*) + (catch 'foo (throw 'foo (values :x :y))))) + FOO + * (foo) + (:X :Y) + + Operator THROW is represented with a call of a not returning funny + function %THROW, unknown values stack after the call is empty, so + the unknown values LVAR (*) is considered to be dead after the call + and, thus, before it and is popped by the stack analysis.