Handle (aref v (+ i k)), with i negative
authorPaul Khuong <pvk@pvk.ca>
Sat, 8 Jun 2013 05:39:10 +0000 (01:39 -0400)
committerPaul Khuong <pvk@pvk.ca>
Sat, 8 Jun 2013 06:34:58 +0000 (02:34 -0400)
commita3b10e4bd291d1b07cb805a58cf8fe03156bdb3b
tree588a5192579213770c887cee9a3d6ff048260fa1
parent56d227c6c574ca512501202fa1d24384e293c5d2
Handle (aref v (+ i k)), with i negative

 * Update the fndb to allow negative index values for foo-ref-with-offset
   and foo-set-with-offset.

 * Adjust VOPs accordingly.

 * Fix fold-index-addressing: only fold constant offsets if the resulting
   index argument would be a fixnum, and compute the new offset correctly
   for subtractions.

 * Unmark the corresponding test as an expected feailure, and add a test
   to make sure VOPs for data-vector-{ref,set}-with-offset  accept negative
   index values (unless the element size is too small
   to fold offsets in an EA).

 * Un-package-qualify a few spurious test-util:with-test.
NEWS
src/compiler/fndb.lisp
src/compiler/generic/vm-fndb.lisp
src/compiler/generic/vm-tran.lisp
src/compiler/x86-64/array.lisp
src/compiler/x86/array.lisp
tests/compiler.pure.lisp