From: Alexey Dejneka Date: Thu, 3 Apr 2003 09:09:39 +0000 (+0000) Subject: 0.pre8.31: X-Git-Url: http://repo.macrolet.net/gitweb/?a=commitdiff_plain;h=37496d2b1c2adb6bd77b2c6c90329af871e97dd5;p=sbcl.git 0.pre8.31: When EXTRACT-FUN-ARGS replaces inner function with the dummy LIST, mark the inner combination as known. --- diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index a89eb5a..99d40ea 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -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) -------------------------------------------------------------------------------- diff --git a/src/compiler/ir1util.lisp b/src/compiler/ir1util.lisp index f9884bd..7336b6d 100644 --- a/src/compiler/ir1util.lisp +++ b/src/compiler/ir1util.lisp @@ -1240,7 +1240,8 @@ (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*) diff --git a/version.lisp-expr b/version.lisp-expr index 75de076..f2dcce9 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.pre8.30" +"0.pre8.31"