Roland Westrelin
Roland Westrelin
In `IfNode::fold_compares_helper()`, `adjusted_val` is: ``` (SubI (AddI top constant) 0) ``` which is then transformed to the `top` node. The code, next, tries to destroy the `adjusted_val` node i.e. the...
In the test case: ``` long i; for (; i > 0; i--) { res += 42 / ((int) i); ``` The long counted loop phi has type `[1..100]`. As...
This change implements C2 optimizations for calls to ScopedValue.get(). Indeed, in: ``` v1 = scopedValue.get(); ... v2 = scopedValue.get(); ``` `v2` can be replaced by `v1` and the second call...
The issue occurs when a `Mod` node is processed during final_graph_reshaping: if a `Div` node is found with the same inputs, the `Mod` is replaced either by a `DivMod` node...
The failure occurs because a load barrier is expanded on the backedge of the counted loop. That breaks the expected counted loop shape. The fix I propose is to replace...
8334647: C2: CastII added by PhaseIdealLoop::add_template_assertion_predicate() should have control
`PhaseIdealLoop::add_template_assertion_predicate()` creates a new `CastII` but doesn't set its control. I think it's good practice to always set the control of a `CastII` when it narrows the type of its...
Superword creates a `Replicate` node at a `ConvL2I` node and uses the type of the result of the `ConvL2I` to pick the type of the `Replicate` instead of the type...
To optimize a long counted loop and long range checks in a long or int counted loop, the loop is turned into a loop nest. When the loop has few...