private static void coInterferePhis(SsaMethod ssaMeth, InterferenceGraph interference) {
    for (SsaBasicBlock b : ssaMeth.getBlocks()) {
      List<SsaInsn> phis = b.getPhiInsns();

      int szPhis = phis.size();

      for (int i = 0; i < szPhis; i++) {
        for (int j = 0; j < szPhis; j++) {
          if (i == j) {
            continue;
          }

          SsaInsn first = phis.get(i);
          SsaInsn second = phis.get(j);
          coInterferePhiRegisters(interference, first.getResult(), second.getSources());
          coInterferePhiRegisters(interference, second.getResult(), first.getSources());
          interference.add(first.getResult().getReg(), second.getResult().getReg());
        }
      }
    }
  }
Ensures that all the phi result registers for all the phis in the same basic block interfere
with each other, and also that a phi's source registers interfere with the result registers
from other phis. This is needed since the dead code remover has allowed through "dead-end phis"
whose results are not used except as local assignments. Without this step, a the result of a
dead-end phi might be assigned the same register as the result of another phi, and the phi
removal move scheduler may generate moves that over-write the live result.

@param ssaMeth {@code non-null;} method to process
@param interference {@code non-null;} interference graph
android/android_framework/dex-maker/src/main/java/com/android/dx/ssa/back/LivenessAnalyzer.java