- 
    Bug 
- 
    Resolution: Fixed
- 
     P2 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
 
-