-
Bug
-
Resolution: Fixed
-
P2
-
15, 16
-
b14
-
Verified
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8253045 | 15.0.2 | Roland Westrelin | P2 | Closed | Fixed | b01 |
I see that with the following loop
for (int i = 0; i < stop; i ++) {
if (flag1) {
System.arraycopy(src, 0, dst, 0, j);
v = dst[9];
if (flag2) {
src[9] = 0x42;
}
}
}
the value of v that's loaded can be wrong (0x42 when flag2 is true) because of missing anti-dependence between the load (once transformed to a load on src) and store.
for (int i = 0; i < stop; i ++) {
if (flag1) {
System.arraycopy(src, 0, dst, 0, j);
v = dst[9];
if (flag2) {
src[9] = 0x42;
}
}
}
the value of v that's loaded can be wrong (0x42 when flag2 is true) because of missing anti-dependence between the load (once transformed to a load on src) and store.
- backported by
-
JDK-8253045 8240795 may cause anti-dependence to be missed
- Closed
- relates to
-
JDK-8240795 [REDO] 8238384 CTW: C2 compilation fails with "assert(store != load->find_exact_control(load->in(0))) failed: dependence cycle found"
- Resolved