hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTest10.java
--- a/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTest10.java Mon Dec 12 16:16:27 2016 +0300
+++ b/hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTest10.java Wed Mar 22 13:42:45 2017 -0700
@@ -44,14 +44,17 @@
*/
public class ConditionalEliminationTest10 extends ConditionalEliminationTestBase {
+ private static boolean condition1;
+ private static boolean condition2;
+
private static class TestClass {
int x;
}
@SuppressWarnings("all")
- public static int testSnippet(int a, TestClass t) {
+ public static int testSnippet1(TestClass t) {
int result = 0;
- if (a == 0) {
+ if (condition1) {
GraalDirectives.controlFlowAnchor();
result = t.x;
}
@@ -61,11 +64,38 @@
@Test
public void test1() {
- StructuredGraph graph = parseEager("testSnippet", AllowAssumptions.YES);
+ test("testSnippet1", 1);
+ }
+
+ @SuppressWarnings("all")
+ public static int testSnippet2(TestClass t) {
+ int result = 0;
+ if (condition1) {
+ GraalDirectives.controlFlowAnchor();
+ result = t.x;
+ } else {
+ GraalDirectives.controlFlowAnchor();
+ result = t.x;
+ }
+
+ if (condition2) {
+ result = t.x;
+ GraalDirectives.controlFlowAnchor();
+ }
+
+ return result;
+ }
+
+ @Test
+ public void test2() {
+ test("testSnippet2", 1);
+ }
+
+ private void test(String snippet, int guardCount) {
+ StructuredGraph graph = parseEager(snippet, AllowAssumptions.YES);
PhaseContext context = new PhaseContext(getProviders());
new LoweringPhase(new CanonicalizerPhase(), LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context);
- Assert.assertEquals(2, graph.getNodes().filter(GuardNode.class).count());
- new DominatorConditionalEliminationPhase(true).apply(graph, context);
- Assert.assertEquals(1, graph.getNodes().filter(GuardNode.class).count());
+ DominatorConditionalEliminationPhase.create(true).apply(graph, context);
+ Assert.assertEquals(guardCount, graph.getNodes().filter(GuardNode.class).count());
}
}