anchor.diff:  
         SsaDeadCodeEliminator dce = new SsaDeadCodeEliminator(compiler, this);
         runPhase(dce);
  -      if (dce.eliminatedSideEffects) {
  +      if (codeMotion.movedCode || dce.eliminatedSideEffects) {
           phases = <OptimizationPhase>[
             new SsaTypePropagator(compiler),
             new SsaGlobalValueNumberer(compiler),
  
positive.code:             if (toRewrite != instruction) {
                successor.rewriteWithBetterUser(toRewrite, instruction);
                successor.remove(toRewrite);
              }
            }
          }
  
negative.code:         // After GVN, some instructions might need their type to be
          // updated because they now have different inputs.
          new SsaTypePropagator(compiler),
          codeMotion = new SsaCodeMotion(),
          new SsaLoadElimination(compiler),
          new SsaRedundantPhiEliminator(),
          new SsaDeadPhiEliminator(),
  