src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.test/src/org/graalvm/compiler/loop/test/LoopPartialUnrollTest.java
--- a/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.test/src/org/graalvm/compiler/loop/test/LoopPartialUnrollTest.java Thu Jul 25 11:44:37 2019 -0700
+++ b/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.loop.test/src/org/graalvm/compiler/loop/test/LoopPartialUnrollTest.java Thu Jul 25 17:35:58 2019 -0400
@@ -26,7 +26,9 @@
import java.util.ListIterator;
+import org.graalvm.compiler.api.directives.GraalDirectives;
import org.graalvm.compiler.core.common.CompilationIdentifier;
+import org.graalvm.compiler.core.common.GraalOptions;
import org.graalvm.compiler.core.test.GraalCompilerTest;
import org.graalvm.compiler.debug.DebugContext;
import org.graalvm.compiler.graph.iterators.NodeIterable;
@@ -216,6 +218,25 @@
test("testSignExtensionSnippet", 9L);
}
+ public static Object objectPhi(int n) {
+ Integer v = Integer.valueOf(200);
+ GraalDirectives.blackhole(v); // Prevents PEA
+ Integer r = 1;
+
+ for (int i = 0; iterationCount(100, i < n); i++) {
+ GraalDirectives.blackhole(r); // Create a phi of two loop invariants
+ r = v;
+ }
+
+ return r;
+ }
+
+ @Test
+ public void testObjectPhi() {
+ OptionValues options = new OptionValues(getInitialOptions(), GraalOptions.LoopPeeling, false);
+ test(options, "objectPhi", 1);
+ }
+
@Override
protected Suites createSuites(OptionValues opts) {
Suites suites = super.createSuites(opts).copy();