RFR(S): 8080976: Unexpected AIOOB thrown from 1.9.0-ea-b64 on (regression)
Berg, Michael C
michael.c.berg at intel.com
Thu May 28 17:18:34 UTC 2015
Roland I would add a condition so that we save a step, and a comment or two:
bool ok = false;
for (unsigned j = 1; j < def_node->req(); j++) {
Node* in = def_node->in(j);
if (in == phi) {
ok = true;
break;
}
}
// do nothing if we did not match the initial criteria
if (ok == false) {
continue;
}
// The result of the reduction must not be used in the loop
for (DUIterator_Fast imax, i = def_node->fast_outs(imax); i < imax && ok; i++) {
Node* u = def_node->fast_out(i);
if (has_ctrl(u) && !loop->is_member(get_loop(get_ctrl(u)))) {
continue;
}
if (u == phi) {
continue;
}
ok = false;
}
// iff the uses conform
if (ok) {
def_node->add_flag(Node::Flag_is_reduction);
}
I checked the resultant code for the bug, as is the case for the change in the webrev, the reduction is no longer emitted. I also checked the relevant micros and verified the desired behavior is still present.
Regards,
-Michael
-----Original Message-----
From: Berg, Michael C
Sent: Thursday, May 28, 2015 9:43 AM
To: 'Vladimir Kozlov'; hotspot-compiler-dev at openjdk.java.net
Subject: RE: RFR(S): 8080976: Unexpected AIOOB thrown from 1.9.0-ea-b64 on (regression)
I will also review the change, thx, it will be just a bit.
-----Original Message-----
From: hotspot-compiler-dev [mailto:hotspot-compiler-dev-bounces at openjdk.java.net] On Behalf Of Vladimir Kozlov
Sent: Thursday, May 28, 2015 9:33 AM
To: hotspot-compiler-dev at openjdk.java.net
Subject: Re: RFR(S): 8080976: Unexpected AIOOB thrown from 1.9.0-ea-b64 on (regression)
Looks good. Thank you for fixing this.
Vladimir
On 5/28/15 6:55 AM, Roland Westrelin wrote:
> http://cr.openjdk.java.net/~roland/8080976/webrev.00/
>
> A loop where the result of the reduction is used in the loop shouldn’t be vectorized.
>
> Roland.
>
More information about the hotspot-compiler-dev
mailing list