Also consider array casts in class inliner Bug: 175863158 Change-Id: I5cce47c2e08acd9f773b843ff039c7a40263f982
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java index e080808..143d776 100644 --- a/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java +++ b/src/main/java/com/android/tools/r8/ir/optimize/classinliner/InlineCandidateProcessor.java
@@ -237,8 +237,11 @@ for (Instruction user : currentUsers) { if (user.isAssume() || user.isCheckCast()) { if (user.isCheckCast()) { + CheckCast checkCast = user.asCheckCast(); + // TODO(b/175863158): Allow unsafe casts by rewriting into throw new ClassCastException. boolean isCheckCastUnsafe = - !appView.appInfo().isSubtype(eligibleClass.type, user.asCheckCast().getType()); + !checkCast.getType().isClassType() + || !appView.appInfo().isSubtype(eligibleClass.type, checkCast.getType()); if (isCheckCastUnsafe) { return user; // Not eligible. }