-
Bug
-
Resolution: Fixed
-
P3
-
11, 17, 19, 20, 21
-
b20
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8335265 | 17.0.13 | Martin Balao Alonso | P3 | Resolved | Fixed | b01 |
JDK-8336519 | 17.0.12 | Martin Balao Alonso | P3 | Resolved | Fixed | b07 |
JDK-8335264 | 11.0.25 | Martin Balao Alonso | P3 | Resolved | Fixed | b01 |
JDK-8336527 | 11.0.24 | Martin Balao Alonso | P3 | Resolved | Fixed | b08 |
JDK-8335472 | openjdk8u432 | Martin Balao Alonso | P3 | Resolved | Fixed | b01 |
JDK-8336575 | openjdk8u422 | Martin Balao Alonso | P3 | Resolved | Fixed | b05 |
https://github.com/openjdk/jdk/blob/8f195ff236000d9c019f8beb2b13355083e211b5/src/hotspot/share/opto/compile.cpp#L3992
I set an assert at that position, and debugged it quickly. The issue seems to be that there is an IfNode with only one Proj output. This is obviously a BUG. Going futher back, it seems the second projection was removed during dead code removal.
Run with
./java -XX:CompileCommand=compileonly,Test::test -XX:MaxVectorSize=64 -Xcomp -XX:CompileCommand=dontinline,Test::* -XX:+UnlockExperimentalVMOptions -XX:PerMethodSpecTrapLimit=0 -XX:PerMethodTrapLimit=0 -XX:+PrintCompilation -XX:CompileCommand=quiet Test.java
In the PrintCompilation log, one can find this:
made not compilable on level 3 Test::run (11 bytes) excluded by CompileCommand
4123 84 b 3 Test::test (32 bytes)
4124 85 b 4 Test::test (32 bytes)
4163 85 b 4 Test::test (32 bytes) COMPILE SKIPPED: malformed control flow (retry at different tier)
I found this bug during my work of
We should probably add
assert(false, "reason")
to as many bailout locations as possible, so that we can detect bugs in debug mode, rather than just ignoring broken graphs.
- backported by
-
JDK-8335264 C2: failed: malformed control flow. Limit type made precise with MaxL/MinL
- Resolved
-
JDK-8335265 C2: failed: malformed control flow. Limit type made precise with MaxL/MinL
- Resolved
-
JDK-8335472 C2: failed: malformed control flow. Limit type made precise with MaxL/MinL
- Resolved
-
JDK-8336519 C2: failed: malformed control flow. Limit type made precise with MaxL/MinL
- Resolved
-
JDK-8336527 C2: failed: malformed control flow. Limit type made precise with MaxL/MinL
- Resolved
-
JDK-8336575 C2: failed: malformed control flow. Limit type made precise with MaxL/MinL
- Resolved
- relates to
-
JDK-8308504 C2: "malformed control flow" after JDK-8303466
- Open
-
JDK-8286625 C2 fails with assert(!n->is_Store() && !n->is_LoadStore()) failed: no node with a side effect
- Resolved
-
JDK-8298935 fix independence bug in create_pack logic in SuperWord::find_adjacent_refs
- Resolved
-
JDK-8335552 [8u] JDK-8303466 backport to 8u requires 3 ::Identity signature fixes
- Resolved
-
JDK-8303951 Add asserts before record_method_not_compilable where possible
- Resolved
-
JDK-8339303 SIGSEGV in Node_Backward_Iterator::next() during PhaseCFG::schedule_late
- Open
-
JDK-8307131 C2: assert(false) failed: malformed control flow
- Resolved
- links to
-
Commit openjdk/jdk8u-dev/54f7734c
-
Commit openjdk/jdk11u-dev/8578e12c
-
Commit openjdk/jdk17u-dev/445aba4e
-
Commit openjdk/jdk/cc894d84
-
Review openjdk/jdk8u-dev/529
-
Review openjdk/jdk11u-dev/2814
-
Review openjdk/jdk17u-dev/2635
-
Review openjdk/jdk/13269