Update of /cvsroot/sbcl/sbcl
In directory sc8-pr-cvs1:/tmp/cvs-serv28049
* Describe problems with source transformation of assotiative
RCS file: /cvsroot/sbcl/sbcl/BUGS,v
retrieving revision 1.346
retrieving revision 1.347
diff -u -d -r1.346 -r1.347
--- BUGS 13 Sep 2003 01:19:37 -0000 1.346
+++ BUGS 13 Sep 2003 10:39:27 -0000 1.347
@@ -1226,3 +1226,22 @@
strongly suspect that they would.)
288b2: SINGLE-FLOAT is distinct from DOUBLE-FLOAT. (This is
in a sense just one aspect of bug 288a.)
+289: "type checking and source-transforms"
+ (block nil (let () (funcall #'+ (eval 'nil) (eval '1) (return :good))))
+ signals type error.
+ Our policy is to check argument types at the moment of a call. It
+ disagrees with ANSI, which says that type assertions are put
+ immediately onto argument expressions, but is easier to implement in
+ IR1 and is more compatible to type inference, inline expansion,
+ etc. IR1-transforms automatically keep this policy, but source
+ transforms for associative functions (such as +), being applied
+ during IR1-convertion, do not. It may be tolerable for direct calls
+ (+ x y z), but for (FUNCALL #'+ x y z) it is non-conformant.
+ b. Another aspect of this problem is efficiency. [x y + z +]
+ requires less registers than [x y z + +]. This transformation is
+ currently performed with source transforms, but it would be good to
+ also perform it in IR1 optimization phase.
RCS file: /cvsroot/sbcl/sbcl/version.lisp-expr,v
retrieving revision 1.1242
retrieving revision 1.1243
diff -u -d -r1.1242 -r1.1243
--- version.lisp-expr 13 Sep 2003 01:19:37 -0000 1.1242
+++ version.lisp-expr 13 Sep 2003 10:39:27 -0000 1.1243
@@ -17,4 +17,4 @@
;;; checkins which aren't released. (And occasionally for internal
;;; versions, especially for internal versions off the main CVS
;;; branch, it gets hairier, e.g. "0.pre7.14.flaky4.13".)
Get latest updates about Open Source Projects, Conferences and News.