Integrated: 8256823: C2 compilation fails with "assert(isShiftCount(imm8 >> 1)) failed: illegal shift count"
Tobias Hartmann
thartmann at openjdk.java.net
Tue Nov 24 16:55:53 UTC 2020
On Mon, 23 Nov 2020 13:26:30 GMT, Tobias Hartmann <thartmann at openjdk.org> wrote:
> The ideal transformation added by [JDK-8254872](https://bugs.openjdk.java.net/browse/JDK-8254872) converts `RotateLeftNode(val, shift)` into `RotateRightNode(val, 32/64 - (shift & 31/63))`. If `shift` later becomes zero, we end up trying to emit a rotate with a 32/64 shift value which triggers an assert.
>
> I've added an identity transformation similar to what is implemented for ShiftNodes that takes care of this. I've also noticed that the corresponding assert is not strong enough for `roll` and `rorl` (probably the author used the assert corresponding to the 64-bit version by accident). The patch also includes some refactoring.
>
> Thanks,
> Tobias
This pull request has now been integrated.
Changeset: 1c4c99ea
Author: Tobias Hartmann <thartmann at openjdk.org>
URL: https://git.openjdk.java.net/jdk/commit/1c4c99ea
Stats: 185 lines in 5 files changed: 120 ins; 5 del; 60 mod
8256823: C2 compilation fails with "assert(isShiftCount(imm8 >> 1)) failed: illegal shift count"
Reviewed-by: vlivanov, kvn, chagedorn
-------------
PR: https://git.openjdk.java.net/jdk/pull/1384
More information about the hotspot-compiler-dev
mailing list