Order of evaluation in expression with BOOLE in compiled code <http://abcl.org/trac/ticket/455>
(eval '(let ((a 15)) (boole boole-2 (logior 0 (setf a 14)) a))) ==> 14
(eval (funcall (compile nil '(lambda () (let ((a 15)) (boole boole-2 (logior 0 (setf a 14)) a)))))) ==> 15
Not order of evaluation, the (setf a 14) effect is left out because of some bogus short-circuiting in p2-logior - removing the case in lines 4444-4447 fixes this (for example, that might not be a good way to fix it).
To follow up on that, something like https://github.com/Ferada/abcl/commit/b73738abdfdc310fa67f7ae7c95572746df7d592 would solve this while being a tiny bit worse since what could be done is forcing the compilation of the side effects while also returning the already calculated result as well (discarding the return value of the side effect).