-
Bug
-
Resolution: Fixed
-
P3
-
11, 16
-
b28
Issue | Fix Version | Assignee | Priority | Status | Resolution | Resolved In Build |
---|---|---|---|---|---|---|
JDK-8258563 | 11.0.11-oracle | Dukebot | P3 | Resolved | Fixed | b01 |
JDK-8259770 | 11.0.11 | Roland Westrelin | P3 | Resolved | Fixed | b01 |
# Internal Error (/home/roland/jdk-jdk/src/hotspot/share/opto/loopnode.cpp:1812), pid=1215818, tid=1215833
# assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
from a ctw run but also reproducible with:
/**
* @test
*
* @run main/othervm -XX:LoopUnrollLimit=0 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestEliminatedLoadPinnedOnBackedge::notInlined
* -XX:CompileCommand=inline,TestEliminatedLoadPinnedOnBackedge::inlined TestEliminatedLoadPinnedOnBackedge
*
*/
public class TestEliminatedLoadPinnedOnBackedge {
private static Object field2;
final static int iters = 2000;
public static void main(String[] args) {
boolean[] flags = new boolean[iters];
for (int i = 0; i < iters; i++) {
flags[i] = i < iters/2;
}
for (int i = 0; i < 20_000; i++) {
test1(flags);
inlined(new Object(), 1);
inlined(new Object(), 4);
inlined2(42);
inlined2(0x42);
}
}
static int field;
private static int test1(boolean[] flags) {
int k = 2;
for (; k < 4; k *= 2) {
}
int[] array = new int[10];
notInlined(array);
int v = array[0];
array[1] = 42;
Object o = new Object();
inlined(o, k);
int i = 0;
for (; ; ) {
synchronized (array) {
}
if (i >= iters) {
break;
}
v = array[0];
if (flags[i]) {
inlined2(array[1]);
}
i++;
}
return v;
}
}
# assert(outer->outcnt() >= phis + 2 && outer->outcnt() <= phis + 2 + stores + 1) failed: only phis
from a ctw run but also reproducible with:
/**
* @test
*
* @run main/othervm -XX:LoopUnrollLimit=0 -XX:-UseOnStackReplacement -XX:-BackgroundCompilation -XX:CompileCommand=dontinline,TestEliminatedLoadPinnedOnBackedge::notInlined
* -XX:CompileCommand=inline,TestEliminatedLoadPinnedOnBackedge::inlined TestEliminatedLoadPinnedOnBackedge
*
*/
public class TestEliminatedLoadPinnedOnBackedge {
private static Object field2;
final static int iters = 2000;
public static void main(String[] args) {
boolean[] flags = new boolean[iters];
for (int i = 0; i < iters; i++) {
flags[i] = i < iters/2;
}
for (int i = 0; i < 20_000; i++) {
test1(flags);
inlined(new Object(), 1);
inlined(new Object(), 4);
inlined2(42);
inlined2(0x42);
}
}
static int field;
private static int test1(boolean[] flags) {
int k = 2;
for (; k < 4; k *= 2) {
}
int[] array = new int[10];
notInlined(array);
int v = array[0];
array[1] = 42;
Object o = new Object();
inlined(o, k);
int i = 0;
for (; ; ) {
synchronized (array) {
}
if (i >= iters) {
break;
}
v = array[0];
if (flags[i]) {
inlined2(array[1]);
}
i++;
}
return v;
}
}
- backported by
-
JDK-8258563 C2: "failed: only phis" assert failure in loop strip mining verification
- Resolved
-
JDK-8259770 C2: "failed: only phis" assert failure in loop strip mining verification
- Resolved
- relates to
-
JDK-8186027 C2: loop strip mining
- Resolved
-
JDK-8264360 Loop strip mining verification fails with "should be on the backedge"
- Resolved
(1 links to)