diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index b692225..7c38555 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -55,7 +55,7 @@
  */
 public final class D8 {
 
-  private static final String VERSION = "v0.1.12";
+  private static final String VERSION = "v0.1.13";
   private static final int STATUS_ERROR = 1;
 
   private D8() {}
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index deb4987..a2fcbf1 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -71,7 +71,7 @@
 
 public class R8 {
 
-  private static final String VERSION = "v0.1.12";
+  private static final String VERSION = "v0.1.13";
   private final Timing timing = new Timing("R8");
   private final InternalOptions options;
 
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 da067d8..95db3e8 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
@@ -827,15 +827,25 @@
       int source = builder.getInfo(jump).getOffset();
       Info targetInfo = builder.getTargetInfo(jump.getTarget());
       int relativeOffset = targetInfo.getOffset() - source;
-      // We should never generate a goto to the following instruction or two consecutive returns.
-      // TODO(b/34726595): We might have a goto to the following instruction if we fail to DCE.
-      // assert relativeOffset != size;
-      Instruction dex;
       // Emit a return if the target is a return and the size of the return is the computed
       // size of this instruction.
       if (targetInfo.getIR().isReturn() && size == targetInfo.getSize()) {
-        dex = targetInfo.getIR().asReturn().createDexInstruction(builder);
+        Instruction dex = targetInfo.getIR().asReturn().createDexInstruction(builder);
+        dex.setOffset(getOffset()); // for better printing of the dex code.
+        instructions.add(dex);
+      } else if (size == relativeOffset) {
+        // We should never generate a goto targeting the next instruction. However, if we do
+        // we replace it with nops. This works around a dalvik bug where the dalvik tracing
+        // jit crashes on 'goto next instruction' on Android 4.1.1.
+        // TODO(b/34726595): We currently do hit this case and we should see if we can avoid that.
+        for (int i = 0; i < size; i++) {
+          Instruction dex = new Nop();
+          assert dex.getSize() == 1;
+          dex.setOffset(getOffset() + i); // for better printing of the dex code.
+          instructions.add(dex);
+        }
       } else {
+        Instruction dex;
         switch (size) {
           case 1:
             assert relativeOffset != 0;
@@ -856,9 +866,9 @@
           default:
             throw new Unreachable("Unexpected size for goto instruction: " + size);
         }
+        dex.setOffset(getOffset()); // for better printing of the dex code.
+        instructions.add(dex);
       }
-      dex.setOffset(getOffset()); // for better printing of the dex code.
-      instructions.add(dex);
     }
   }
 
