Merge "Disable check-cast removal"
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 232a945..2eb37a2 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -574,7 +574,8 @@
method, code, typeEnvironment, isProcessedConcurrently, callSiteInformation);
}
// TODO(b/69962188): MethodDevirtualizer can perform optimizations using type analysis.
- codeRewriter.removeCasts(code, typeEnvironment);
+ // TODO(72930905): Disable check cast removal until this bug is fixed.
+ //codeRewriter.removeCasts(code, typeEnvironment);
codeRewriter.rewriteLongCompareAndRequireNonNull(code, options);
codeRewriter.commonSubexpressionElimination(code);
codeRewriter.simplifyArrayConstruction(code);
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/CheckCastRemovalTest.java b/src/test/java/com/android/tools/r8/ir/optimize/CheckCastRemovalTest.java
index 675c457..253fd62 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/CheckCastRemovalTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/CheckCastRemovalTest.java
@@ -7,10 +7,13 @@
import static org.junit.Assert.assertNotNull;
import com.android.tools.r8.code.AgetObject;
+import com.android.tools.r8.code.AputObject;
import com.android.tools.r8.code.CheckCast;
-import com.android.tools.r8.code.Const;
+import com.android.tools.r8.code.Const4;
+import com.android.tools.r8.code.ConstString;
import com.android.tools.r8.code.InvokeDirect;
import com.android.tools.r8.code.InvokeVirtual;
+import com.android.tools.r8.code.NewArray;
import com.android.tools.r8.code.NewInstance;
import com.android.tools.r8.code.ReturnVoid;
import com.android.tools.r8.graph.DexCode;
@@ -29,6 +32,7 @@
private final String CLASS_NAME = "Example";
@Test
+ @Ignore("b/72930905")
public void exactMatch() throws Exception {
JasminBuilder builder = new JasminBuilder();
ClassBuilder classBuilder = builder.addClass(CLASS_NAME);
@@ -56,6 +60,7 @@
}
@Test
+ @Ignore("b/72930905")
public void upCasts() throws Exception {
JasminBuilder builder = new JasminBuilder();
// A < B < C
@@ -91,6 +96,7 @@
}
@Test
+ @Ignore("b/72930905")
public void downCasts() throws Exception {
JasminBuilder builder = new JasminBuilder();
// C < B < A
@@ -131,8 +137,7 @@
}
@Test
- @Ignore("b/72930905")
- public void arrayCasts() throws Exception {
+ public void b72930905() throws Exception {
JasminBuilder builder = new JasminBuilder();
ClassBuilder classBuilder = builder.addClass(CLASS_NAME);
MethodSignature main = classBuilder.addMainMethod(
@@ -153,7 +158,6 @@
List<String> pgConfigs = ImmutableList.of(
"-keep class " + CLASS_NAME + " { *; }",
- "-dontoptimize",
"-dontshrink");
AndroidApp app = compileWithR8(builder, pgConfigs, null);
@@ -164,8 +168,12 @@
DexCode code = method.getCode().asDexCode();
checkInstructions(code, ImmutableList.of(
+ Const4.class,
+ NewArray.class,
+ ConstString.class,
+ Const4.class,
+ AputObject.class,
CheckCast.class,
- Const.class,
AgetObject.class,
CheckCast.class,
InvokeVirtual.class,