Merge "Don't require compatibility of array element types" to 0.1 branch.
Changes merged: https://r8-review.googlesource.com/c/r8/+/5240
R=zerny@google.com
Change-Id: I2d5c220d7cddca2b3cd540cb883f393e5e15539d
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index a3d6012..d452bc9 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.2";
+ private static final String VERSION = "v0.1.3";
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 bf82830..c54936a 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.2";
+ private static final String VERSION = "v0.1.3";
private final Timing timing = new Timing("R8");
private final InternalOptions options;
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/JarState.java b/src/main/java/com/android/tools/r8/ir/conversion/JarState.java
index 2a3e431..0801216 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/JarState.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/JarState.java
@@ -134,8 +134,7 @@
return (sort == Type.OBJECT && otherSort == Type.ARRAY)
|| (sort == Type.ARRAY && otherSort == Type.OBJECT)
|| (sort == Type.OBJECT && otherSort == Type.OBJECT)
- || (sort == Type.ARRAY && otherSort == Type.ARRAY
- && isReferenceCompatible(getArrayElementType(type), getArrayElementType(other)));
+ || (sort == Type.ARRAY && otherSort == Type.ARRAY);
}
}
diff --git a/src/test/debugTestResources/Locals.java b/src/test/debugTestResources/Locals.java
index d42dd61..65969bd 100644
--- a/src/test/debugTestResources/Locals.java
+++ b/src/test/debugTestResources/Locals.java
@@ -244,6 +244,14 @@
return sum + x + y;
}
+ public static String regression65039701(boolean createIntNotLong) {
+ Object a = createIntNotLong ? new int[1] : new long[1];
+ if (a instanceof int []) {
+ ((int [])a)[0] = 0;
+ }
+ return "OK";
+ }
+
public static void main(String[] args) {
noLocals();
unusedLocals();
@@ -259,5 +267,6 @@
stepNonEmptyForLoopBody(3);
tempInCase(42);
localSwap(1, 2);
+ regression65039701(true);
}
}
diff --git a/src/test/java/com/android/tools/r8/debug/LocalsTest.java b/src/test/java/com/android/tools/r8/debug/LocalsTest.java
index 02fb694..caf6849 100644
--- a/src/test/java/com/android/tools/r8/debug/LocalsTest.java
+++ b/src/test/java/com/android/tools/r8/debug/LocalsTest.java
@@ -470,4 +470,22 @@
checkNoLocal("t"),
run());
}
+
+ @Test
+ public void regression65039701() throws Throwable {
+ runDebugTest(
+ "Locals",
+ breakpoint("Locals", "regression65039701"),
+ run(),
+ checkLine(SOURCE_FILE, 248),
+ checkLocal("createIntNotLong", Value.createBoolean(true)),
+ stepOver(),
+ checkLine(SOURCE_FILE, 249),
+ checkLocal("a"),
+ stepOver(),
+ checkLine(SOURCE_FILE, 250),
+ stepOver(),
+ checkLine(SOURCE_FILE, 252),
+ run());
+ }
}