[dart2js] Fix assignment chaining

TBR=sigmund@google.com

Change-Id: Iac7e40d60b39a7dd32b8a8ecc24a68781eb716fa
Reviewed-on: https://dart-review.googlesource.com/c/93932
Reviewed-by: Stephen Adams <sra@google.com>
Commit-Queue: Stephen Adams <sra@google.com>
diff --git a/pkg/compiler/lib/src/ssa/codegen.dart b/pkg/compiler/lib/src/ssa/codegen.dart
index ebf05c2..d0ca90a 100644
--- a/pkg/compiler/lib/src/ssa/codegen.dart
+++ b/pkg/compiler/lib/src/ssa/codegen.dart
@@ -378,8 +378,7 @@
         new SsaInstructionSelection(_options, _closedWorld, _interceptorData));
     runPhase(new SsaTypeKnownRemover());
     runPhase(new SsaTrustedCheckRemover(_options));
-    // TODO(sra): Re-enable chaining.
-    // runPhase(new SsaAssignmentChaining(_options, _closedWorld));
+    runPhase(new SsaAssignmentChaining(_options, _closedWorld));
     runPhase(new SsaInstructionMerger(
         _abstractValueDomain, generateAtUseSite, _superMemberData));
     runPhase(new SsaConditionMerger(generateAtUseSite, controlFlowOperators));
diff --git a/pkg/compiler/lib/src/ssa/codegen_helpers.dart b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
index 082f46a..6c28b79 100644
--- a/pkg/compiler/lib/src/ssa/codegen_helpers.dart
+++ b/pkg/compiler/lib/src/ssa/codegen_helpers.dart
@@ -513,7 +513,7 @@
               setter.previous == value ||
               // the following tests for immediately previous phi.
               (setter.previous == null && value.block == setter.block)) {
-            use.changeUse(value, chain);
+            uses.replaceWith(chain);
           }
         }
         return next;