Revert "Eliminate debug-moves if their preceding phi-move is sufficient."

This reverts commit 6bbbad5385eadc465e509ee80972a07303940f87.

R=tamaskenez@google.com, zerny@google.com

Bug: b/64831882
Change-Id: I0e4379a810c895969e80d9e00262019b22b202a9
diff --git a/src/main/java/com/android/tools/r8/ir/code/Value.java b/src/main/java/com/android/tools/r8/ir/code/Value.java
index 618c879..44bd9d4 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Value.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Value.java
@@ -71,7 +71,7 @@
   private boolean isThis = false;
   private boolean isArgument = false;
   private LongInterval valueRange;
-  private DebugData debugData;
+  private final DebugData debugData;
 
   public Value(int number, MoveType type, DebugInfo debugInfo) {
     this.number = number;
@@ -95,12 +95,6 @@
     return type.requiredRegisters();
   }
 
-  public void setDebugInfo(DebugInfo info) {
-    assert info != null;
-    assert debugData == null;
-    debugData = new DebugData(info);
-  }
-
   public DebugInfo getDebugInfo() {
     return debugData == null ? null : new DebugInfo(debugData.local, debugData.previousLocalValue);
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index a68f29b..fad378e 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -438,10 +438,6 @@
     printC1VisualizerHeader(method);
     printMethod(code, "Initial IR (SSA)");
 
-    if (options.debug) {
-      codeRewriter.simplifyDebugLocals(code);
-    }
-
     if (!method.isProcessed()) {
       if (protoLiteRewriter != null && protoLiteRewriter.appliesTo(method)) {
         protoLiteRewriter.rewriteProtoLiteSpecialMethod(code, method);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index b4aaa86..78d8369 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -37,7 +37,6 @@
 import com.android.tools.r8.ir.code.ConstInstruction;
 import com.android.tools.r8.ir.code.ConstNumber;
 import com.android.tools.r8.ir.code.ConstString;
-import com.android.tools.r8.ir.code.DebugLocalWrite;
 import com.android.tools.r8.ir.code.DominatorTree;
 import com.android.tools.r8.ir.code.Goto;
 import com.android.tools.r8.ir.code.IRCode;
@@ -1147,37 +1146,6 @@
     }
   }
 
-  public void simplifyDebugLocals(IRCode code) {
-    for (BasicBlock block : code.blocks) {
-      for (Phi phi : block.getPhis()) {
-        if (phi.getDebugInfo() == null && phi.numberOfUsers() == 1 && phi.numberOfAllUsers() == 1) {
-          Instruction instruction = phi.uniqueUsers().iterator().next();
-          if (instruction.isDebugLocalWrite()) {
-            removeDebugWriteOfPhi(phi, instruction.asDebugLocalWrite());
-          }
-        }
-      }
-    }
-  }
-
-  private void removeDebugWriteOfPhi(Phi phi, DebugLocalWrite write) {
-    assert write.src() == phi;
-    Value previousLocalValue = write.getPreviousLocalValue();
-    if (previousLocalValue != null) {
-      if (phi.getOperands().contains(previousLocalValue)) {
-        // The phi is explicitly redefining the local already.
-        previousLocalValue.removeDebugUser(write);
-      } else {
-        // If the phi would redefine a local the debug-write instruction must remain.
-        return;
-      }
-    }
-    phi.setDebugInfo(write.getDebugInfo());
-    phi.removeUser(write);
-    write.outValue().replaceUsers(phi);
-    write.getBlock().removeInstruction(write);
-  }
-
   private static class ExpressionEquivalence extends Equivalence<Instruction> {
 
     @Override