From: Patrick S. <pa...@nk...> - 2012-05-16 03:00:16
|
So, there's no accounting for the fact that this division might have side-effects? … Patrick On May 15, 2012, at 9:52 PM, Stas Boukarev wrote: > Patrick Stein <pa...@nk...> writes: > >> In looking over the errors generated by a cl-test-grid run, I looked >> into the trivial-backtrace test that was failing. [1] I think that >> I've uncovered a subtle bug in the SBCL compiler. >> >> [1] http://cl-test-grid.appspot.com/blob?key=100025 >> >> I'm using almost-the-latest SBCL (1.0.55.0-abb03f9-dirty) compiled for >> 64-bit with threading on MacOSX Lion (10.7.3). >> >> This is the simplest I can seem to get the same problem to arise is >> this: >> >> (defun absorbs () >> (let ((ret 'no-error)) >> (handler-case >> (let ((y 0)) >> (/ y)) >> (division-by-zero (c) (setf ret c))) >> ret)) >> >> When that compiles, it gives no warnings. When invoked, it returns >> NO-ERROR. > Yes, this is intended, the compiler elides division operations when > the result is not used, and when safety is not high enough, even if it's > divided by zero. Add (declare (optimize safety )) to get the error. > > -- > With best regards, Stas. |