anchor.diff:      }
     }
   
  +  void checkNewGvnCandidates(HInstruction instruction, HInstruction existing) {
  +    if (newGvnCandidates) return;
  +    bool hasUseGvn(HInstruction insn) => insn.nonCheck().useGvn();
  +    if (instruction.usedBy.any(hasUseGvn) && existing.usedBy.any(hasUseGvn)) {
  +      newGvnCandidates = true;
  +    }
  +  }
  +
     void visitFieldGet(HFieldGet instruction) {
       if (instruction.isNullCheck) return;
       FieldEntity element = instruction.element;
  
positive.code:     HInstruction existing =
          memorySet.lookupKeyedValue(receiver, instruction.index);
      if (existing != null) {
        instruction.block.rewriteWithBetterUser(instruction, existing);
        instruction.block.remove(instruction);
      } else {
  
negative.code:         // updated because they now have different inputs.
          new SsaTypePropagator(compiler, closedWorld),
          codeMotion = new SsaCodeMotion(),
          loadElimination =
              new SsaLoadElimination(backend, compiler, closedWorld),
          new SsaRedundantPhiEliminator(),
          new SsaDeadPhiEliminator(),
          // After GVN and load elimination the same value may be used in code
  