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,