Version 1.0.8.

Merge: Fix types when translating dup2_x2 from the jar frontend.
CL: https://r8-review.googlesource.com/15761

Merge: Add regression test for dup2_x2 bug.
CL: https://r8-review.googlesource.com/15762

R=zerny@google.com

Change-Id: I49b8d7b2996819e7b89a92d5d621a567f812e19c
diff --git a/src/main/java/com/android/tools/r8/Version.java b/src/main/java/com/android/tools/r8/Version.java
index 29fce2f..eba3f9e 100644
--- a/src/main/java/com/android/tools/r8/Version.java
+++ b/src/main/java/com/android/tools/r8/Version.java
@@ -11,7 +11,7 @@
 
   // This field is accessed from release scripts using simple pattern matching.
   // Therefore, changing this field could break our release scripts.
-  public static final String LABEL = "v1.0.7";
+  public static final String LABEL = "v1.0.8";
 
   private Version() {
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
index 117bc6f..69ecb83 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarSourceCode.java
@@ -2372,7 +2372,7 @@
     builder.addMove(valueType(value1.type), stack0, stack2);
     builder.addMove(valueType(value2.type), stack1, stack3);
     builder.addMove(valueType(value3.type), stack2, stack4);
-    builder.addMove(valueType(value3.type), stack3, stack5);
+    builder.addMove(valueType(value4.type), stack3, stack5);
     builder.addMove(valueType(value1.type), stack4, stack0);
     builder.addMove(valueType(value2.type), stack5, stack1);
   }
diff --git a/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java b/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java
new file mode 100644
index 0000000..97331c8
--- /dev/null
+++ b/src/test/java/com/android/tools/r8/jasmin/Regress72758525.java
@@ -0,0 +1,61 @@
+// Copyright (c) 2018, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.jasmin;
+
+import com.android.tools.r8.jasmin.JasminBuilder.ClassFileVersion;
+import org.junit.Test;
+
+public class Regress72758525 extends JasminTestBase {
+
+  private JasminBuilder buildClass() {
+    JasminBuilder builder = new JasminBuilder(ClassFileVersion.JDK_1_4);
+    JasminBuilder.ClassBuilder clazz = builder.addClass("Test");
+
+    clazz.addDefaultConstructor();
+
+    clazz.addMainMethod(
+        ".limit stack 25",
+        ".limit locals 1",
+        "aload 0",
+        "dup",
+        "lconst_0",
+        "dconst_1",
+        "fconst_0",
+        "lconst_1",
+        "iconst_5",
+        "fconst_1",
+        "dconst_1",
+        "new Test",
+        "dup",
+        "invokespecial Test/<init>()V",
+        "lconst_0",
+        "new java/lang/Object",
+        "dup",
+        "invokespecial java/lang/Object/<init>()V",
+        "iconst_m1",
+        "dup2",
+        "dup2_x2",
+        "L0:",
+        "ineg",
+        "new java/lang/Object",
+        "dup",
+        "invokespecial java/lang/Object/<init>()V",
+        "dup2_x2",
+        "pop2",
+        "pop",
+        "aload 0",
+        "ifnull L0",
+        "i2f",
+        "invokestatic java/lang/Float/isNaN(F)Z",
+        "return");
+    return builder;
+  }
+
+  @Test
+  public void test() throws Exception {
+    JasminBuilder builder = buildClass();
+    runOnArtD8(builder, "Test");
+  }
+}