229:
(subtypep 'function '(function)) => nil, t.
-233:
- Bug in constraint propagation:
-
+233: bugs in constraint propagation
+ a.
(defun foo (x)
(declare (optimize (speed 2) (safety 3)))
(let ((y 0d0))
(see usage of CONTINUATION-ASSERTED-TYPE in USE-RESULT-CONSTRAINTS)
+ b.
+ (declaim (optimize (speed 2) (safety 3)))
+ (defun foo (x y)
+ (if (typep (prog1 x (setq x y)) 'double-float)
+ (+ x 1d0)
+ (+ x 2)))
+ (foo 1d0 5) => segmentation violation
+
234:
(fixed in sbcl-0.7.10.36)
* And why two moves?
--------------------------------------------------------------------------------
+(loop repeat 1.5)
+
+uses generic arithmetic
+--------------------------------------------------------------------------------
+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
+09:49:28 <jtra> see
+ http://www.bagley.org/~doug/shootout/bench/nestedloop/nestedloop.cmucl
+09:50:30 <jtra> if you add declarations to dotimes, generated code is
+ almost optimal, but most inner loops run out of registers and use
+ memory location for iteration variable
+
+;;; -*- mode: lisp -*-
+;;; $Id$
+;;; http://www.bagley.org/~doug/shootout/
+;;; from Friedrich Dominicus
+
+(defun main ()
+ (let ((n (parse-integer (or (car (last extensions:*command-line-strings*)) "1")))
+ (x 0))
+ (declare (fixnum n)
+ (fixnum x)
+ (optimize (speed 3) (debug 0) (safety 0)))
+ (dotimes (a n)
+ (dotimes (b n)
+ (dotimes (c n)
+ (dotimes (d n)
+ (dotimes (e n)
+ (dotimes (f n)
+ (incf x)))))))
+ (format t "~A~%" x)))
+--------------------------------------------------------------------------------
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
-"0.7.11"
+"0.7.11.1"