-
Bug
-
Resolution: Fixed
-
P3
-
17, 19, 21, 22, 23, 24
-
master
When searching for load anti-dependences in GCM, the memory state for the load is sometimes represented not only by the memory node input of the load, but also other memory nodes. Because PhaseCFG::insert_anti_dependences searches for anti-dependences only from the load's memory input, it is, therefore, possible to sometimes overlook anti-dependences. The result is that loads are potentially scheduled too late, after stores that redefine the memory states of the loads.
Consider the attached ideal graph [1,2]. 64 membar_release is a critical anti-dependence. We search for anti-dependences from the load's direct memory input, 107 Phi. The search stops immediately at Phis, and thus ends at 106 Phi. This is not sufficient to find 64 membar_release.
Also, consider another example [3,4]. Here, the required anti-dependence is 75 Phi (or, rather, the last block on the path between 76 Phi and 75 Phi = B9). We search for anti-dependences from 18 MachProj, and therefore stop at 76 Phi and 77 Phi. This is not sufficient to raise the LCA as required.
[1] failure-graph-1.png
[2] failure-blocks-1.png
[3] failure-graph-2.png
[4] failure-blocks-2.png
# Original description
Nothing to go on, the problem seems to be the r11 test
----------System.err:(15/908)----------
java.lang.RuntimeException: assertEquals expected: 1 but was: 2
at jdk.test.lib.Asserts.fail(Asserts.java:691)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:204)
at jdk.test.lib.Asserts.assertEquals(Asserts.java:191)
at applications.javafuzzer.JavaFuzzerRunner.reportResults(JavaFuzzerRunner.java:232)
at applications.javafuzzer.JavaFuzzerRunner.runWithConfigurations(JavaFuzzerRunner.java:253)
at applications.javafuzzer.JavaFuzzerRunner.main(JavaFuzzerRunner.java:275)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at com.sun.javatest.regtest.agent.MainActionHelper$AgentVMRunnable.run(MainActionHelper.java:333)
at java.base/java.lang.Thread.run(Thread.java:1575)
r11- 300: 186 passed, 0 crashes, 1 fails, 0 hangs, 0 incorrect tests, 113 Reference Java failures
Saving result: fails 288
Failed!
Test r11-288 FAILED
r11-288 (239 lines) [177 passed, 0 crashes, 1 fails, 0 hangs, 0 incorrect tests, 110 Reference Java failures] - 96%/300
- duplicates
-
JDK-8339171 javafuzzer/BigTest.java fails with difference in rt_out_C2_STRESS.diff
-
- Closed
-
- relates to
-
JDK-8349930 C2: verify memory liveness invariants after scheduling
-
- In Progress
-
-
JDK-8351568 Improve source code documentation for PhaseCFG::insert_anti_dependences
-
- In Progress
-
-
JDK-8252372 Check if cloning is required to move loads out of loops in PhaseIdealLoop::split_if_with_blocks_post()
-
- Resolved
-
-
JDK-8287840 Dead copy region node blocks IfNode's fold-compares
-
- Resolved
-
- links to
-
Commit(master) openjdk/jdk/b40be225
-
Review(master) openjdk/jdk/22852
-
Review(master) openjdk/jdk/23691