anchor.diff:          // After GVN, some instructions might need their type to be
           // updated because they now have different inputs.
           new SsaTypePropagator(compiler),
  -        new SsaCodeMotion(),
  +        codeMotion = new SsaCodeMotion(),
           new SsaLoadElimination(compiler),
           new SsaRedundantPhiEliminator(),
           new SsaDeadPhiEliminator(),
  
positive.code:       } else {
          block.rewriteWithBetterUser(current, existing);
          block.remove(current);
        }
      }
    }
  
negative.code:     ConstantSystem constantSystem = compiler.backend.constantSystem;
      bool trustPrimitives = compiler.options.trustPrimitives;
      Set<HInstruction> boundsChecked = new Set<HInstruction>();
      SsaCodeMotion codeMotion;
      measure(() {
        List<OptimizationPhase> phases = <OptimizationPhase>[
          // Run trivial instruction simplification first to optimize
  