RFR: 8369258: C2: enable ReassociateInvariants for all loop types [v2]

Roland Westrelin roland at openjdk.org
Wed Oct 15 14:47:17 UTC 2025


On Wed, 15 Oct 2025 09:39:40 GMT, Quan Anh Mai <qamai at openjdk.org> wrote:

>> test/hotspot/jtreg/compiler/loopopts/TestReassociateInvariants.java line 63:
>> 
>>> 61:     @IR(failOn = { IRNode.COUNTED_LOOP, IRNode.LONG_COUNTED_LOOP })
>>> 62:     @IR(counts = { IRNode.LOOP, "1" })
>>> 63:     @Arguments(values = { Argument.NUMBER_42, Argument.NUMBER_42 })
>> 
>> What are we verifying here, should this fail on some kind of range check?
>
> Also, why are these not recognized as `CountedLoop`s, it seems we need to fix them, too?

Without reassociate invariants, RCE elimination doesn't happen. With it, it does happen. So the loop becomes empty and that's why there's no `CountedLoop`. No problem here with `CountedLoop` recognition.
The IR framework is not powerful enough to test this sort of things so I have to rely on some side effect that can be observed by the IR framework. In that case, reassociate invariants -> RCE optimization -> empty loop -> no `CountedLoop`.

-------------

PR Review Comment: https://git.openjdk.org/jdk/pull/27666#discussion_r2432855832


More information about the hotspot-compiler-dev mailing list