Chromium Code Reviews| Index: pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
| diff --git a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
| index 90456e9c4193559aec08a6d646af1ca4d23c63ca..acd2f0c346954894e012048defdb7b92a25f1105 100644 |
| --- a/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
| +++ b/pkg/compiler/lib/src/tree_ir/tree_ir_builder.dart |
| @@ -258,12 +258,10 @@ class Builder implements cps_ir.Visitor<Node> { |
| internalError(CURRENT_ELEMENT_SPANNABLE, 'Unexpected IR node: $node'); |
| } |
| - Statement visitSetField(cps_ir.SetField node) { |
| - return new ExpressionStatement( |
| - new SetField(getVariableUse(node.object), |
| - node.field, |
| - getVariableUse(node.value)), |
| - visit(node.body)); |
| + Expression visitSetField(cps_ir.SetField node) { |
| + return new SetField(getVariableUse(node.object), |
| + node.field, |
| + getVariableUse(node.value)); |
| } |
| Expression visitInterceptor(cps_ir.Interceptor node) { |
| @@ -300,12 +298,12 @@ class Builder implements cps_ir.Visitor<Node> { |
| Statement visitLetPrim(cps_ir.LetPrim node) { |
| Variable variable = getVariable(node.primitive); |
| - |
| - // Don't translate unused primitives. |
| - if (variable == null) return visit(node.body); |
|
asgerf
2015/07/20 13:35:23
This was dead code, left behind after another refa
|
| - |
| Expression value = visit(node.primitive); |
| - return Assign.makeStatement(variable, value, visit(node.body)); |
| + if (node.primitive.hasAtLeastOneUse) { |
| + return Assign.makeStatement(variable, value, visit(node.body)); |
| + } else { |
| + return new ExpressionStatement(value, visit(node.body)); |
| + } |
| } |
| Statement visitLetCont(cps_ir.LetCont node) { |
| @@ -416,10 +414,10 @@ class Builder implements cps_ir.Visitor<Node> { |
| return getMutableVariableUse(node.variable); |
| } |
| - Statement visitSetMutableVariable(cps_ir.SetMutableVariable node) { |
| + Expression visitSetMutableVariable(cps_ir.SetMutableVariable node) { |
| Variable variable = getMutableVariable(node.variable.definition); |
| Expression value = getVariableUse(node.value); |
| - return Assign.makeStatement(variable, value, visit(node.body)); |
| + return new Assign(variable, value); |
| } |
| Statement visitTypeCast(cps_ir.TypeCast node) { |
| @@ -586,12 +584,11 @@ class Builder implements cps_ir.Visitor<Node> { |
| return continueWithExpression(node.continuation, value); |
| } |
| - Statement visitSetStatic(cps_ir.SetStatic node) { |
| - SetStatic setStatic = new SetStatic( |
| + Expression visitSetStatic(cps_ir.SetStatic node) { |
| + return new SetStatic( |
| node.element, |
| getVariableUse(node.value), |
| node.sourceInformation); |
| - return new ExpressionStatement(setStatic, visit(node.body)); |
| } |
| Expression visitApplyBuiltinOperator(cps_ir.ApplyBuiltinOperator node) { |