From: Christophe R. <cr...@us...> - 2008-05-04 20:14:40
|
Update of /cvsroot/sbcl/sbcl/tests In directory sc8-pr-cvs8.sourceforge.net:/tmp/cvs-serv11156/tests Modified Files: compiler.pure.lisp Log Message: 1.0.16.16: Use declared element type in AREF short-circuit transform The short-circuit transformation introduced in 1.0.2.17 removed the system's understanding of the declared array element type (as opposed to the upgraded array element type). Reintroduce the cleverness, and hope that the use of type= doesn't remove all the slowdown. (Issue noted by vy on #lisp afternoon 2008-05-04 BST) Index: compiler.pure.lisp =================================================================== RCS file: /cvsroot/sbcl/sbcl/tests/compiler.pure.lisp,v retrieving revision 1.171 retrieving revision 1.172 diff -u -d -r1.171 -r1.172 --- compiler.pure.lisp 17 Mar 2008 17:13:41 -0000 1.171 +++ compiler.pure.lisp 4 May 2008 20:14:35 -0000 1.172 @@ -528,11 +528,19 @@ (funcall f y 1) (assert (equal y #*10)))) +;;; use of declared array types (handler-bind ((sb-ext:compiler-note #'error)) (compile nil '(lambda (x) - (declare (type (simple-array (simple-string 3) (5)) x)) + (declare (type (simple-array (simple-string 3) (5)) x) + (optimize speed)) (aref (aref x 0) 0)))) +(handler-bind ((sb-ext:compiler-note #'error)) + (compile nil '(lambda (x) + (declare (type (simple-array (simple-array bit (10)) (10)) x) + (optimize speed)) + (1+ (aref (aref x 0) 0))))) + ;;; compiler failure (let ((f (compile nil '(lambda (x) (typep x '(not (member 0d0))))))) (assert (funcall f 1d0))) |