Index: test/cctest/compiler/test-scheduler.cc |
diff --git a/test/cctest/compiler/test-scheduler.cc b/test/cctest/compiler/test-scheduler.cc |
index 0f7e248efb2ee88d1939b2277a3d708d3ebe75ff..0b7cdab99648bb988b54419ecf11bff646d118c1 100644 |
--- a/test/cctest/compiler/test-scheduler.cc |
+++ b/test/cctest/compiler/test-scheduler.cc |
@@ -1810,7 +1810,6 @@ TEST(NestedFloatingDiamondWithLoop) { |
HandleAndZoneScope scope; |
Graph graph(scope.main_zone()); |
CommonOperatorBuilder common(scope.main_zone()); |
- SimplifiedOperatorBuilder simplified(scope.main_zone()); |
Node* start = graph.NewNode(common.Start(2)); |
graph.SetStart(start); |
@@ -1849,7 +1848,6 @@ TEST(LoopedFloatingDiamond1) { |
HandleAndZoneScope scope; |
Graph graph(scope.main_zone()); |
CommonOperatorBuilder common(scope.main_zone()); |
- SimplifiedOperatorBuilder simplified(scope.main_zone()); |
Node* start = graph.NewNode(common.Start(2)); |
graph.SetStart(start); |
@@ -1887,7 +1885,6 @@ TEST(LoopedFloatingDiamond2) { |
HandleAndZoneScope scope; |
Graph graph(scope.main_zone()); |
CommonOperatorBuilder common(scope.main_zone()); |
- SimplifiedOperatorBuilder simplified(scope.main_zone()); |
Node* start = graph.NewNode(common.Start(2)); |
graph.SetStart(start); |
@@ -1922,11 +1919,60 @@ TEST(LoopedFloatingDiamond2) { |
} |
+TEST(LoopedFloatingDiamond3) { |
+ HandleAndZoneScope scope; |
+ Graph graph(scope.main_zone()); |
+ CommonOperatorBuilder common(scope.main_zone()); |
+ |
+ Node* start = graph.NewNode(common.Start(2)); |
+ graph.SetStart(start); |
+ |
+ Node* p0 = graph.NewNode(common.Parameter(0), start); |
+ |
+ Node* c = graph.NewNode(common.Int32Constant(7)); |
+ Node* loop = graph.NewNode(common.Loop(2), start, start); |
+ Node* ind = graph.NewNode(common.Phi(kMachAnyTagged, 2), p0, p0, loop); |
+ |
+ Node* br1 = graph.NewNode(common.Branch(), p0, graph.start()); |
+ Node* t1 = graph.NewNode(common.IfTrue(), br1); |
+ Node* f1 = graph.NewNode(common.IfFalse(), br1); |
+ |
+ Node* loop1 = graph.NewNode(common.Loop(2), t1, start); |
+ Node* ind1 = graph.NewNode(common.Phi(kMachAnyTagged, 2), p0, p0, loop); |
+ |
+ Node* add1 = graph.NewNode(&kIntAdd, ind1, c); |
+ Node* br2 = graph.NewNode(common.Branch(), add1, loop1); |
+ Node* t2 = graph.NewNode(common.IfTrue(), br2); |
+ Node* f2 = graph.NewNode(common.IfFalse(), br2); |
+ |
+ loop1->ReplaceInput(1, t2); // close inner loop. |
+ ind1->ReplaceInput(1, ind1); // close inner induction variable. |
+ |
+ Node* m1 = graph.NewNode(common.Merge(2), f1, f2); |
+ Node* phi1 = graph.NewNode(common.Phi(kMachAnyTagged, 2), c, ind1, m1); |
+ |
+ Node* add = graph.NewNode(&kIntAdd, ind, phi1); |
+ |
+ Node* br = graph.NewNode(common.Branch(), add, loop); |
+ Node* t = graph.NewNode(common.IfTrue(), br); |
+ Node* f = graph.NewNode(common.IfFalse(), br); |
+ |
+ loop->ReplaceInput(1, t); // close loop. |
+ ind->ReplaceInput(1, add); // close induction variable. |
+ |
+ Node* ret = graph.NewNode(common.Return(), ind, start, f); |
+ Node* end = graph.NewNode(common.End(), ret, f); |
+ |
+ graph.SetEnd(end); |
+ |
+ ComputeAndVerifySchedule(28, &graph); |
+} |
+ |
+ |
TEST(PhisPushedDownToDifferentBranches) { |
HandleAndZoneScope scope; |
Graph graph(scope.main_zone()); |
CommonOperatorBuilder common(scope.main_zone()); |
- SimplifiedOperatorBuilder simplified(scope.main_zone()); |
Node* start = graph.NewNode(common.Start(2)); |
graph.SetStart(start); |