-
Bug
-
Resolution: Fixed
-
P3
-
11.0.18-oracle, 15, 16, 17
-
b10
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8293652 | 11.0.18-oracle | Fairoz Matte | P3 | Resolved | Fixed | b01 |
JDK-8294205 | 11.0.18 | Goetz Lindenmaier | P3 | Resolved | Fixed | b01 |
Original RFE description:
In the fix forJDK-8238438 it was not clear if the code to select the first memory state is dead or not. The assertion code was never hit in testing:
if (!independent(current, ld)) {
assert(false, "")
return first_mem; // A later store depends on this load, pick memory state of first load
}
We could also not think of an example where we should pick the first memory state instead of the last. Therefore, we left an assert(false) in that code path in the fix forJDK-8238438. If it later turns out that there is a valid use case where we need to select the first memory state, we can simply remove the assert again. Otherwise, we could clean this code up later for JDK 16 and always go with the last memory state. The code to check if the first memory state should be picked could be left as assertion code.
Edit for JDK 17:
We found a fuzzer test case (attached) in which we must take the first memory state of a load pack to guarantee a correct result. Picking the last memory state instead results in a wrong execution. Therefore, we can removed the assertion code added withJDK-8238438 as we are now sure that we need the first memory state for some cases. Turning this into a bug.
In the fix for
if (!independent(current, ld)) {
assert(false, "")
return first_mem; // A later store depends on this load, pick memory state of first load
}
We could also not think of an example where we should pick the first memory state instead of the last. Therefore, we left an assert(false) in that code path in the fix for
Edit for JDK 17:
We found a fuzzer test case (attached) in which we must take the first memory state of a load pack to guarantee a correct result. Picking the last memory state instead results in a wrong execution. Therefore, we can removed the assertion code added with
- backported by
-
JDK-8293652 Remove failing assertion code when selecting first memory state in SuperWord::co_locate_pack
- Resolved
-
JDK-8294205 Remove failing assertion code when selecting first memory state in SuperWord::co_locate_pack
- Resolved
- relates to
-
JDK-8238438 SuperWord::co_locate_pack picks memory state of first instead of last load
- Resolved
- links to
-
Commit openjdk/jdk11u-dev/bcdcc9f3
-
Commit openjdk/jdk/0a89987a
-
Review openjdk/jdk11u-dev/1362
-
Review openjdk/jdk/2495
(2 links to)