20 * or visit www.oracle.com if you need additional information or have any |
20 * or visit www.oracle.com if you need additional information or have any |
21 * questions. |
21 * questions. |
22 */ |
22 */ |
23 package org.graalvm.compiler.core.test; |
23 package org.graalvm.compiler.core.test; |
24 |
24 |
25 import org.junit.Test; |
|
26 |
|
27 import org.graalvm.compiler.nodes.GuardNode; |
25 import org.graalvm.compiler.nodes.GuardNode; |
28 import org.graalvm.compiler.nodes.StructuredGraph; |
26 import org.graalvm.compiler.nodes.StructuredGraph; |
29 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; |
27 import org.graalvm.compiler.nodes.StructuredGraph.AllowAssumptions; |
30 import org.graalvm.compiler.nodes.spi.LoweringTool; |
28 import org.graalvm.compiler.nodes.spi.LoweringTool; |
31 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
29 import org.graalvm.compiler.phases.common.CanonicalizerPhase; |
32 import org.graalvm.compiler.phases.common.DominatorConditionalEliminationPhase; |
|
33 import org.graalvm.compiler.phases.common.FloatingReadPhase; |
30 import org.graalvm.compiler.phases.common.FloatingReadPhase; |
34 import org.graalvm.compiler.phases.common.LoweringPhase; |
31 import org.graalvm.compiler.phases.common.LoweringPhase; |
|
32 import org.graalvm.compiler.phases.common.ConditionalEliminationPhase; |
35 import org.graalvm.compiler.phases.tiers.PhaseContext; |
33 import org.graalvm.compiler.phases.tiers.PhaseContext; |
|
34 import org.junit.Test; |
36 |
35 |
37 /** |
36 /** |
38 * Collection of tests for |
37 * Collection of tests for {@link org.graalvm.compiler.phases.common.ConditionalEliminationPhase} |
39 * {@link org.graalvm.compiler.phases.common.DominatorConditionalEliminationPhase} including those |
38 * including those that triggered bugs in this phase. |
40 * that triggered bugs in this phase. |
|
41 */ |
39 */ |
42 public class ConditionalEliminationTest2 extends ConditionalEliminationTestBase { |
40 public class ConditionalEliminationTest2 extends ConditionalEliminationTestBase { |
43 |
41 |
44 public static Object field; |
42 public static Object field; |
45 |
43 |
101 PhaseContext context = new PhaseContext(getProviders()); |
99 PhaseContext context = new PhaseContext(getProviders()); |
102 |
100 |
103 new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); |
101 new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); |
104 canonicalizer.apply(graph, context); |
102 canonicalizer.apply(graph, context); |
105 new FloatingReadPhase().apply(graph); |
103 new FloatingReadPhase().apply(graph); |
106 DominatorConditionalEliminationPhase.create(true).apply(graph, context); |
104 new ConditionalEliminationPhase(true).apply(graph, context); |
107 canonicalizer.apply(graph, context); |
105 canonicalizer.apply(graph, context); |
108 |
106 |
109 assertDeepEquals(1, graph.getNodes().filter(GuardNode.class).count()); |
107 assertDeepEquals(1, graph.getNodes().filter(GuardNode.class).count()); |
110 } |
108 } |
111 |
109 |
123 CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); |
121 CanonicalizerPhase canonicalizer = new CanonicalizerPhase(); |
124 PhaseContext context = new PhaseContext(getProviders()); |
122 PhaseContext context = new PhaseContext(getProviders()); |
125 |
123 |
126 new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); |
124 new LoweringPhase(canonicalizer, LoweringTool.StandardLoweringStage.HIGH_TIER).apply(graph, context); |
127 canonicalizer.apply(graph, context); |
125 canonicalizer.apply(graph, context); |
128 DominatorConditionalEliminationPhase.create(true).apply(graph, context); |
126 new ConditionalEliminationPhase(true).apply(graph, context); |
129 canonicalizer.apply(graph, context); |
127 canonicalizer.apply(graph, context); |
130 |
128 |
131 assertDeepEquals(0, graph.getNodes().filter(GuardNode.class).count()); |
129 assertDeepEquals(0, graph.getNodes().filter(GuardNode.class).count()); |
132 } |
130 } |
133 |
131 |