Optimize %CHECK-BOUND away.
Previously %CHECK-BOUND was translated to just (the (integer 0
(bound)) index) which was able to get optimized away, but didn't
retain any relevant information about the array for good error
messages.
Recently it was changed to
(progn (%check-bound-vop array bound index) (truly-the (integer 0 (bound)) index)),
but now only the cast was deleted away when types matched.
Introducing, BOUND-CAST, a subtype of CAST which always follows a
%CHECK-BOUND combination and they are deleted together and still
provides good errors and warnings.