X-Git-Url: http://repo.macrolet.net/gitweb/?a=blobdiff_plain;f=OPTIMIZATIONS;h=a53233acfffed439424660d2696194b5cf6a6e52;hb=f601ededaa926a19ca60f95e8bc6f7f0d966f9d1;hp=a89eb5a6830e90fb1661e359a82c9be22e723544;hpb=ed85afcccb1d054691bcc7ed2242ad0257d251a0;p=sbcl.git diff --git a/OPTIMIZATIONS b/OPTIMIZATIONS index a89eb5a..a53233a 100644 --- a/OPTIMIZATIONS +++ b/OPTIMIZATIONS @@ -80,7 +80,6 @@ uses generic arithmetic memory location for iteration variable ;;; -*- mode: lisp -*- -;;; $Id$ ;;; http://www.bagley.org/~doug/shootout/ ;;; from Friedrich Dominicus @@ -128,7 +127,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 +143,26 @@ 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) +-------------------------------------------------------------------------------- +#12 +(typep (truly-the (simple-array * (*)) x) 'simple-vector) + +tests lowtag. +-------------------------------------------------------------------------------- +#13 +FAST-+/FIXNUM and similar should accept unboxed arguments in interests +of representation selection. Problem: inter-TN dependencies. --------------------------------------------------------------------------------