Catch shifts > 31 bits generated by the optimizer.
We already caught them in the code generator - but only if they were
between 31 and 2^31-1, but we weren't catching them when shifts by the X
register got optimized into shifts by a constant, so we need to:
1) catch it in the optimizer;
2) fix the check in the code generator.
(In the longer run, we need to clear up signed vs. unsigned stuff in the
code generator and optimizer.)
Credit to OSS-Fuzz for finding the optimizer issue (which was using a
shift constant that was "negative", thus pointing out the code generator
issue).