Remove CfFrames if they do not pass validation

Bug: 168675474
Change-Id: Ia9e57abe354b33e7183e9c4ed64a01af7b6cbc2e
diff --git a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
index ff71ef8..263a21b 100644
--- a/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
+++ b/src/main/java/com/android/tools/r8/graph/LazyCfCode.java
@@ -212,9 +212,8 @@
 
   @Override
   public IRCode buildIR(ProgramMethod method, AppView<?> appView, Origin origin) {
-    CfCode cfCode = asCfCode();
-    cfCode.verifyFrames(method.getDefinition(), appView, origin, true);
-    return cfCode.buildIR(method, appView, origin);
+    return verifyFrames(asCfCode(), method.getDefinition(), appView, origin, true)
+        .buildIR(method, appView, origin);
   }
 
   @Override
@@ -226,11 +225,32 @@
       Position callerPosition,
       Origin origin,
       MethodProcessor methodProcessor) {
-    CfCode cfCode = asCfCode();
-    cfCode.verifyFrames(
-        method.getDefinition(), appView, origin, methodProcessor.shouldApplyCodeRewritings(method));
-    return cfCode.buildInliningIR(
-        context, method, appView, valueNumberGenerator, callerPosition, origin, methodProcessor);
+    return verifyFrames(
+            asCfCode(),
+            method.getDefinition(),
+            appView,
+            origin,
+            methodProcessor.shouldApplyCodeRewritings(method))
+        .buildInliningIR(
+            context,
+            method,
+            appView,
+            valueNumberGenerator,
+            callerPosition,
+            origin,
+            methodProcessor);
+  }
+
+  private CfCode verifyFrames(
+      CfCode cfCode,
+      DexEncodedMethod method,
+      AppView<?> appView,
+      Origin origin,
+      boolean shouldApplyCodeRewritings) {
+    if (!cfCode.verifyFrames(method, appView, origin, shouldApplyCodeRewritings)) {
+      cfCode.instructions.removeIf(CfInstruction::isFrame);
+    }
+    return cfCode;
   }
 
   @Override