I recently did some work on making weakening type-checks
more conservative, but I have to say I feel uneasy about weakening
them at all:
(defun foo (v x)
(declare (optimize speed))
(aref (the (vector t 10) v) (the (integer 0 (10)) x)))
(foo (vector 0 1 2 3 4 5 6 7 8 9) 12) => random garbage
...amusingly, I got the SB-C:COMPILER-ERROR symbol. :)
At the very least the compiler needs to be thought to take the
weakened type into account, instead of trusting the original type.
Get latest updates about Open Source Projects, Conferences and News.