Index: pkg/compiler/lib/src/cps_ir/redundant_phi.dart |
diff --git a/pkg/compiler/lib/src/cps_ir/redundant_phi.dart b/pkg/compiler/lib/src/cps_ir/redundant_phi.dart |
index 183f8e36ff2e6fe9815e65b94389b4d851a62ccc..693b612d6858c901c18fec4f69a8858e74027ad8 100644 |
--- a/pkg/compiler/lib/src/cps_ir/redundant_phi.dart |
+++ b/pkg/compiler/lib/src/cps_ir/redundant_phi.dart |
@@ -15,13 +15,16 @@ import 'optimizers.dart'; |
/// (except for feedback). Redundant parameters are removed from the |
/// continuation signature, all invocations, and replaced within the |
/// continuation body. |
-class RedundantPhiEliminator extends TrampolineRecursiveVisitor implements Pass { |
+class RedundantPhiEliminator extends RecursiveVisitor implements Pass { |
String get passName => 'Redundant phi elimination'; |
final Set<Continuation> workSet = new Set<Continuation>(); |
@override |
void rewrite(FunctionDefinition root) { |
+ // Set all parent pointers. |
+ new ParentVisitor().visit(root); |
+ |
// Traverse the tree once to build the work set. |
visit(root); |