push
github
FFI: Fix 64 bit shift fold rules. Thanks to Peter Cawley. (cherry picked from commit 9e0437240) For `IR_BSHR`, `IR_BROL`, `IR_BROR` during `kfold_int64arith()` the left argument is truncated down to 32 bits, which leads to incorrect results if the right argument is >= 2^32. Also, `IR_BSAR` does an unsigned shift rather than a signed shift, but since this case branch is unreachable, it is harmless for now. This patch fixes all misbehaviours (including possible for `IR_BSAR`) to preserve IR semantics. Sergey Kaplun: * added the description and the test for the problem Part of tarantool/tarantool#10199
5692 of 6032 branches covered (94.36%)
Branch coverage included in aggregate %.
21704 of 23445 relevant lines covered (92.57%)
2930197.3 hits per line