RFR(M): 8210215: C2 should optimize trichotomy calculations
tobias.hartmann at oracle.com
Wed Oct 3 07:41:16 UTC 2018
On 02.10.2018 19:35, Vladimir Kozlov wrote:
> Okay. My point is that such optimization should be handled separately and not part of
> optimize_trichotomy(). You can have multi-inputs Region (not just 2 or 3) with the same If nodes case.
Yes but in the case of multi-input regions it gets more complicated because we need to search all
inputs for an if that feeds both projections into the region and then need to check the
corresponding phi user inputs for equality. We might also want to support multiple phi users which
adds an additional level of complexity. In optimize_trichotomy() we get these checks for free for
the 2 and 3 inputs case.
This change is intended to optimize a quite specific and common code shape. It's already more
complex than initially intended, so I don't think we should add yet another optimization with this.
I can file a separate enhancement and remove the "useless if" part once that optimization is in. Or
I can remove it which will prevent optimization of some of the shapes.
Here's the latest webrev that includes John's suggestions:
And here's a version without the "useless if" part (since we are not modifying 'this' anymore, we
don't need to set 'modified'):
What do you think?
More information about the hotspot-compiler-dev