diff --git a/src/main/java/com/android/tools/r8/ir/code/DebugPosition.java b/src/main/java/com/android/tools/r8/ir/code/DebugPosition.java
index 9a8f8a5..d6063f3 100644
--- a/src/main/java/com/android/tools/r8/ir/code/DebugPosition.java
+++ b/src/main/java/com/android/tools/r8/ir/code/DebugPosition.java
@@ -50,6 +50,15 @@
   }
 
   @Override
+  public boolean equals(Object other) {
+    if (other instanceof DebugPosition) {
+      DebugPosition o = (DebugPosition) other;
+      return line == o.line && file == o.file;
+    }
+    return false;
+  }
+
+  @Override
   public int maxInValueRegister() {
     throw new Unreachable();
   }
diff --git a/src/main/java/com/android/tools/r8/ir/code/Instruction.java b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
index 466a455..eb8c972 100644
--- a/src/main/java/com/android/tools/r8/ir/code/Instruction.java
+++ b/src/main/java/com/android/tools/r8/ir/code/Instruction.java
@@ -86,6 +86,7 @@
     instruction.inValues.forEach(Value::clearUsersInfo);
     if (instruction.debugValues != null) {
       instruction.debugValues.forEach(Value::clearUsersInfo);
+      instruction.debugValues = null;
     }
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
index 18bbe0e..cbd8941 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/DexBuilder.java
@@ -150,6 +150,11 @@
 
       // Populate the builder info objects.
       numberOfInstructions = 0;
+
+      // Remove redundant debug position instructions. They would otherwise materialize as
+      // unnecessary nops.
+      removeRedundantDebugPositions();
+
       ListIterator<BasicBlock> iterator = ir.listIterator();
       assert iterator.hasNext();
       BasicBlock block = iterator.next();
@@ -237,6 +242,26 @@
     return code;
   }
 
+  private void removeRedundantDebugPositions() {
+    ListIterator<BasicBlock> iterator = ir.listIterator();
+    DebugPosition lastMoveExceptionPosition = null;
+    while (iterator.hasNext()) {
+      BasicBlock next = iterator.next();
+      InstructionListIterator it = next.listIterator();
+      while (it.hasNext()) {
+        com.android.tools.r8.ir.code.Instruction instruction = it.next();
+        if (instruction.isDebugPosition()) {
+          if (instruction.asDebugPosition().equals(lastMoveExceptionPosition)) {
+            it.remove();
+          }
+          lastMoveExceptionPosition = null;
+        } else if (instruction.isMoveException()) {
+          lastMoveExceptionPosition = instruction.asMoveException().getPosition();
+        }
+      }
+    }
+  }
+
   // Rewrite ifs with offsets that are too large for the if encoding. The rewriting transforms:
   //
   //
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
index 245a75a..8670b31 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRBuilder.java
@@ -5,7 +5,6 @@
 package com.android.tools.r8.ir.conversion;
 
 import com.android.tools.r8.ApiLevelException;
-import com.android.tools.r8.dex.Constants;
 import com.android.tools.r8.errors.CompilationError;
 import com.android.tools.r8.errors.InternalCompilerError;
 import com.android.tools.r8.errors.InvalidDebugInfoException;
