-
Enhancement
-
Resolution: Unresolved
-
P4
-
25
Violation of memory liveness invariants can lead to subtle miscompilation issues such as JDK-8333393, JDK-8255763, and JDK-8288975. This RFE proposes adding debug-only verification code after scheduling (GCM and LCM) that computes liveness information for the memory subgraph and checks that certain invariants hold.
Examples of candidate invariants to be explored are that "all-memory" (<Bot> in the notation given in memnode.cpp) definitions do not interfere, or that a MergeMem definition using a certain memory state does not interfere with that particular memory state later on.
Examples of candidate invariants to be explored are that "all-memory" (<Bot> in the notation given in memnode.cpp) definitions do not interfere, or that a MergeMem definition using a certain memory state does not interfere with that particular memory state later on.
- relates to
-
JDK-8351468 C2: array fill optimization assigns wrong type to intrinsic call
-
- Open
-
-
JDK-8255763 C2: OSR miscompilation caused by invalid memory instruction placement
-
- Resolved
-
-
JDK-8258894 C2: Forbid GCM to move stores into loops
-
- Resolved
-
-
JDK-8333393 PhaseCFG::insert_anti_dependences can fail to raise LCAs and to add necessary anti-dependence edges
-
- Resolved
-
-
JDK-8288975 Incorrect result with C2 compiled code
-
- Closed
-