0.pre8.31:
authorAlexey Dejneka <adejneka@comail.ru>
Thu, 3 Apr 2003 09:09:39 +0000 (09:09 +0000)
committerAlexey Dejneka <adejneka@comail.ru>
Thu, 3 Apr 2003 09:09:39 +0000 (09:09 +0000)
        When EXTRACT-FUN-ARGS replaces inner function with the dummy
        LIST, mark the inner combination as known.

OPTIMIZATIONS
src/compiler/ir1util.lisp
version.lisp-expr

index a89eb5a..99d40ea 100644 (file)
@@ -128,7 +128,7 @@ The initial binding is effectless, and without it X is of type
 DOUBLE-FLOAT. Unhopefully, IR1 does not optimize away effectless
 SETs/bindings, and IR2 does not perform type inference.
 --------------------------------------------------------------------------------
-#9
+#9 "Multi-path constant folding"
 (defun foo (x)
   (if (= (cond ((irgh x) 0)
                ((buh x) 1)
@@ -144,8 +144,17 @@ This code could be optimized to
         ((buh x) :no)
         (t :no)))
 --------------------------------------------------------------------------------
-#10
-Reported by Robert E. Brown on sbcl-devel 2003-01-21:
+#11
+(inverted variant of #9)
 
-(this is really a bug, fixed in 0.pre8.26)
+(lambda (x)
+  (let ((y (sap-alien x c-string)))
+    (list (alien-sap y)
+          (alien-sap y))))
+
+It could be optimized to
+
+(lambda (x) (list x x))
+
+(if Y were used only once, the current compiler would optimize it)
 --------------------------------------------------------------------------------
index f9884bd..7336b6d 100644 (file)
                (append before-args inside-args after-args))
          (change-ref-leaf (continuation-use inside-fun)
                           (find-free-fun 'list "???"))
-         (setf (combination-kind inside) :full)
+         (setf (combination-kind inside)
+                (info :function :info 'list))
          (setf (node-derived-type inside) *wild-type*)
          (flush-dest cont)
          (setf (continuation-asserted-type cont) *wild-type*)
index 75de076..f2dcce9 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.pre8.30"
+"0.pre8.31"