* On X86 I is represented as a tagged integer.
-* EQL uses "CMP reg,reg" instead of "CMP reg,im". This causes
- allocation of an extra register and an extra move.
-
* Unnecessary move:
3: SLOT S!11[EDX] {SB-C::VECTOR-LENGTH 1 7} => t23[EAX]
4: MOVE t23[EAX] => t24[EBX]
* And why two moves?
--------------------------------------------------------------------------------
-#5
-(loop repeat 1.5)
-
-uses generic arithmetic
---------------------------------------------------------------------------------
#6
09:49:05 <jtra> I have found a case in those where suboptimal code is
generate with nested loops, it might be moderately easy to fix that
memory location for iteration variable
;;; -*- mode: lisp -*-
-;;; $Id$
;;; http://www.bagley.org/~doug/shootout/
;;; from Friedrich Dominicus
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)
((buh x) :no)
(t :no)))
--------------------------------------------------------------------------------
-#10
-Reported by Robert E. Brown on sbcl-devel 2003-01-21:
-
-(defstruct trace-info
- (foo nil :type (or null function)))
+#11
+(inverted variant of #9)
-(defun bad (x)
- (declare (optimize (speed 3) (safety 0)))
- (let ((wow (trace-info-foo x)))
- (or (not wow) (funcall wow 1 2 3))))
+(lambda (x)
+ (let ((y (sap-alien x c-string)))
+ (list (alien-sap y)
+ (alien-sap y))))
-Python does not derive that FUNCALL is applied to FUNCTION.
+It could be optimized to
-(OR ...) is equivalent to
+(lambda (x) (list x x))
-(LET ((G2407 (NOT WOW)))
- (IF G2407 G2407 (FUNCALL WOW 1 2 3)))
-
-or to
-
-(LET ((G2407 (IF WOW NIL T)))
- (IF G2407 G2407 (FUNCALL WOW 1 2 3)))
+(if Y were used only once, the current compiler would optimize it)
+--------------------------------------------------------------------------------
+#12
+(typep (truly-the (simple-array * (*)) x) 'simple-vector)
-so this is similar to #9.
+tests lowtag.
+--------------------------------------------------------------------------------
+#13
+FAST-+/FIXNUM and similar should accept unboxed arguments in interests
+of representation selection. Problem: inter-TN dependencies.
--------------------------------------------------------------------------------