RFR: 8330158: C2: Loop strip mining uses ABS with min int
Roland Westrelin
roland at openjdk.org
Wed Apr 17 10:50:23 UTC 2024
This fixes 3 calls to ABS with a min int argument. I think all of them
are harmless:
- in `PhaseIdealLoop::exact_limit()`, I removed the call to ABS. The
check is for a stride of 1 or -1.
- in `OuterStripMinedLoopNode::adjust_strip_mined_loop()`, for the
computation of `scaled_iters_long`, the stride is passed to `ABS()`
and then implicitly casted to long. I now cast the stride to long
before `ABS()`. For a min int stride, `LoopStripMiningIter * stride`
overflows the int range for all values of `LoopStripMiningIter`
except 0 or 1. Those values are handled early on in that method. So
for a min in stride:
```
(jlong)scaled_iters != scaled_iters_long
```
is always true and the method returns early.
- in `OuterStripMinedLoopNode::adjust_strip_mined_loop()`, the
computation of `short_scaled_iters` also calls `ABS()` with the
stride as argument. But the result of that computation is only used
if the test for:
```
(jlong)scaled_iters != scaled_iters_long
```
doesn't cause an early return of the method. I reordered statmements
so the `ABS()` calls happens after that test which will cause an early
return if the stride is min int.
-------------
Commit messages:
- fix
Changes: https://git.openjdk.org/jdk/pull/18813/files
Webrev: https://webrevs.openjdk.org/?repo=jdk&pr=18813&range=00
Issue: https://bugs.openjdk.org/browse/JDK-8330158
Stats: 11 lines in 1 file changed: 6 ins; 0 del; 5 mod
Patch: https://git.openjdk.org/jdk/pull/18813.diff
Fetch: git fetch https://git.openjdk.org/jdk.git pull/18813/head:pull/18813
PR: https://git.openjdk.org/jdk/pull/18813
More information about the hotspot-compiler-dev
mailing list