0.7.6:
[sbcl.git] / BUGS
diff --git a/BUGS b/BUGS
index 08bfbdc..b53b355 100644 (file)
--- a/BUGS
+++ b/BUGS
@@ -584,11 +584,6 @@ WORKAROUND:
   GC, so that thereafter memory usage can never be reduced below that
   level.
 
-96:
-  The TRACE facility can't be used on some kinds of functions.
-  (Basically, the breakpoint facility was incompletely implemented
-  in the X86 port of CMU CL, and hasn't been fixed in SBCL.)
-
 98:
   In sbcl-0.6.11.41 (and in all earlier SBCL, and in CMU
   CL), out-of-line structure slot setters are horribly inefficient
@@ -1369,17 +1364,6 @@ WORKAROUND:
   however, compiling and loading the same expression in a file works
   as expected.
 
-186: "Undercautious FILL transform"
-  Compiling and loading the following code:
-  (declare (optimize (safety 3) (speed 2) (space 1)))
-  (defun foo (x)
-    (fill (make-string 10) x))
-  and then running
-  * (foo 4097)
-  "@@@@@@@@@@"
-  This is probably due to insufficient checking in the IR1
-  deftransform for FILL
-
 187: "type inference confusion around DEFTRANSFORM time"
   (reported even more verbosely on sbcl-devel 2002-06-28 as "strange
   bug in DEFTRANSFORM")
@@ -1437,6 +1421,53 @@ WORKAROUND:
       ;; go away.) 
       (sb-c::%dvai v i))
 
+188: "compiler performance fiasco involving type inference and UNION-TYPE"
+  In sbcl-0.7.5.11 on a 700 MHz Pentium III, 
+    (time (compile
+           nil
+           '(lambda ()
+              (declare (optimize (safety 3)))
+              (declare (optimize (compilation-speed 2)))
+              (declare (optimize (speed 1) (debug 1) (space 1)))
+              (let ((fn "if-this-file-exists-the-universe-is-strange"))
+                (load fn :if-does-not-exist nil)
+                (load (concatenate 'string fn ".lisp") :if-does-not-exist nil)
+                (load (concatenate 'string fn ".fasl") :if-does-not-exist nil)
+                (load (concatenate 'string fn ".misc-garbage")
+                      :if-does-not-exist nil)))))
+  reports  
+                134.552 seconds of real time
+                133.35156 seconds of user run time
+                0.03125 seconds of system run time
+                   [Run times include 2.787 seconds GC run time.]
+                0 page faults and
+                246883368 bytes consed.
+  BACKTRACE from Ctrl-C in the compilation shows that the compiler is
+  thinking about type relationships involving types like
+     #<UNION-TYPE
+       (OR (INTEGER 576 576)
+           (INTEGER 1192 1192)
+           (INTEGER 2536 2536)
+           (INTEGER 1816 1816)
+           (INTEGER 2752 2752)
+           (INTEGER 1600 1600)
+           (INTEGER 2640 2640)
+           (INTEGER 1808 1808)
+           (INTEGER 1296 1296)
+           ...)>)[:EXTERNAL]
+
+189: "ignored NOTINLINE for functions defined by FLET or LABELS"
+  According to the ANSI definition of the NOTINLINE declaration, 
+    NOTINLINE specifies that it is undesirable to compile the functions
+    named by FUNCTION-NAMES in-line. A compiler is not free to ignore
+    this declaration; calls to the specified functions must be implemented
+    as out-of-line subroutine calls. 
+  However, as of sbcl-0.7.5.22, Python ignores this declaration for 
+  functions defined by LABELS and FLET, and merrily optimizes away the
+  LAMBDAs. (This is an annoyance not just for language lawyers, but for
+  people who want a useful BACKTRACE for functions which, for whatever
+  reason, are constrained to be implemented as LABELS or LET.)
+
 DEFUNCT CATEGORIES OF BUGS
   IR1-#:
     These labels were used for bugs related to the old IR1 interpreter.