RFR(M): 8220376: C2: Int >0 not recognized as !=0 for div by 0 check
dean.long at oracle.com
dean.long at oracle.com
Thu Nov 14 05:12:22 UTC 2019
Hi Patric. I was expecting the fix to allow the following existing
logic in DivINode::Ideal to work:
// Check for excluding div-zero case
if (in(0) && (ti->_hi < 0 || ti->_lo > 0)) {
set_req(0, NULL); // Yank control input
return this;
}
by making sure the range of "ti" has been sharpened by the previous
if-node. I was just wondering if you looked at that solution and
thought it was feasible. I see Parse::sharpen_type_after_if() is almost
doing the right thing, but only handles BoolTest::eq.
dl
On 11/12/19 6:16 AM, Patric Hedlin wrote:
> Dear all,
>
> I would like to ask for help to review the following change/update:
>
> Issue: https://bugs.openjdk.java.net/browse/JDK-8220376
> Webrev: http://cr.openjdk.java.net/~phedlin/tr8220376/
>
> 8220376: C2: Int >0 not recognized as !=0 for div by 0 check
>
> Adding a simple subsumption test to IfNode::Ideal to enable a local
> short-circuit for (obviously) redundant if-nodes.
>
> Testing: hs-tier1-4, hs-precheckin-comp
>
>
> Best regards,
> Patric
>
More information about the hotspot-compiler-dev
mailing list