hotspot/src/jdk.internal.vm.compiler/share/classes/org.graalvm.compiler.core.test/src/org/graalvm/compiler/core/test/ConditionalEliminationTest10.java
changeset 46344 694c102fd8ed
parent 43972 1ade39b8381b
child 46459 7d4e637d3f21
--- 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());
     }
 }