From: Christophe R. <cr...@us...> - 2002-05-03 14:59:18
|
Update of /cvsroot/sbcl/sbcl In directory usw-pr-cvs1:/tmp/cvs-serv22658 Modified Files: BUGS version.lisp-expr Log Message: 0.7.3.8: Fix bug 31, mostly by s/array-type-element-type/array-type-specialized-element-type/ (though not in all uses -- only those where the return value of an access is in question) Things motivated by building under OpenMCL ... add another yucky #+ for *host-obj-suffix* ... delete dead *backend-fasl-file-type* variable Index: BUGS =================================================================== RCS file: /cvsroot/sbcl/sbcl/BUGS,v retrieving revision 1.133 retrieving revision 1.134 diff -C2 -d -r1.133 -r1.134 *** BUGS 30 Apr 2002 01:23:23 -0000 1.133 --- BUGS 3 May 2002 14:59:14 -0000 1.134 *************** *** 158,177 **** I haven't noticed a repeatable case of this yet. - 31: - In some cases the compiler believes type declarations on array - elements without checking them, e.g. - (DECLAIM (OPTIMIZE (SAFETY 3) (SPEED 1) (SPACE 1))) - (DEFSTRUCT FOO A B) - (DEFUN BAR (X) - (DECLARE (TYPE (SIMPLE-ARRAY CONS 1) X)) - (WHEN (CONSP (AREF X 0)) - (PRINT (AREF X 0)))) - (BAR (VECTOR (MAKE-FOO :A 11 :B 12))) - prints - #S(FOO :A 11 :B 12) - in SBCL 0.6.5 (and also in CMU CL 18b). This does not happen for - all cases, e.g. the type assumption *is* checked if the array - elements are declared to be of some structure type instead of CONS. - 32: The printer doesn't report closures very well. This is true in --- 158,161 ---- *************** *** 1248,1251 **** --- 1232,1255 ---- for, viz: '(real 4 7). + 165: + Array types with element-types of some unknown type are falsely being + assumed to be of type (ARRAY T) by the compiler in some cases. The + following code demonstrates the problem: + + (defun foo (x) + (declare (type (vector bar) x)) + (aref x 1)) + (deftype bar () 'single-float) + (foo (make-array 3 :element-type 'bar)) + -> TYPE-ERROR "The value #(0.0 0.0 0.0) is not of type (VECTOR BAR)." + (typep (make-array 3 :element-type 'bar) '(vector bar)) + -> T + + The easy solution is to make the functions which depend on knowing + the upgraded-array-element-type (in compiler/array-tran and + compiler/generic/vm-tran as of sbcl-0.7.3.x) be slightly smarter about + unknown types; an alternative is to have the + specialized-element-type slot in the ARRAY-TYPE structure be + *WILD-TYPE* for UNKNOWN-TYPE element types. DEFUNCT CATEGORIES OF BUGS Index: version.lisp-expr =================================================================== RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v retrieving revision 1.401 retrieving revision 1.402 diff -C2 -d -r1.401 -r1.402 *** version.lisp-expr 1 May 2002 13:56:51 -0000 1.401 --- version.lisp-expr 3 May 2002 14:59:14 -0000 1.402 *************** *** 19,21 **** ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) ! "0.7.3.7" --- 19,21 ---- ;;; main CVS branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".) ! "0.7.3.8" |