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()); + } }