Recently we found that in some loops with scaled array accesses, array range checks are not hoisted by loop predication. A typical case is below.
for (int i = 0; i < size; i++) {
b[3 * i] = a[3 * i];
}
Initial investigation found that GVN optimizes the array index "3 * i" into "i << 1 + i" so it's regarded as non-linear.
for (int i = 0; i < size; i++) {
b[3 * i] = a[3 * i];
}
Initial investigation found that GVN optimizes the array index "3 * i" into "i << 1 + i" so it's regarded as non-linear.
- is cloned by
-
JDK-8291669 [REDO] Fix array range check hoisting for some scaled loop iv
-
- Resolved
-
- relates to
-
JDK-8291466 C2: assert(false) failed: infinite loop in PhaseIterGVN::transform_old with -XX:+StressIGVN
-
- Resolved
-
-
JDK-8291474 PPC64: compiler/rangechecks/TestRangeCheckHoistingScaledIV.java fails
-
- Closed
-
-
JDK-8291597 [BACKOUT] JDK-8289996: Fix array range check hoisting for some scaled loop iv
-
- Resolved
-
-
JDK-8314838 3 compiler tests ignore vm flags
-
- Resolved
-
-
JDK-8291510 Failed test compiler/c2/cr7200264/TestSSE2IntVect.java after JDK-8289996
-
- Closed
-
(1 relates to, 2 links to)