0.8.6.5
[sbcl.git] / BUGS
diff --git a/BUGS b/BUGS
index c74909d..f47e869 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -1201,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.