Account for missing classes in workaround for ART instance-of weakening
Bug: b/349857231
Bug: b/350689668
Change-Id: I85f86f63b402a77a118126e6151d8bba96f32f41
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
index 188c5ef..bcb57ce 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
@@ -109,7 +109,8 @@
instanceOf.type().toTypeElement(appView, valueType.nullability());
if (instanceOfType.isClassType(t -> t.getClassType().isNotIdenticalTo(objectType))
&& !instanceOfType.lessThanOrEqual(valueType, appView)
- && !valueType.lessThanOrEqual(instanceOfType, appView)) {
+ && !valueType.lessThanOrEqual(instanceOfType, appView)
+ && !valueType.isBasedOnMissingClass(appView.withClassHierarchy())) {
instructionIterator.replaceCurrentInstructionWithConstFalse(code);
didReplaceInstructions = true;
}