commit | aec2ecefbe299ae5dd5178530ac73d56642f0b6b | [log] [tgz] |
---|---|---|
author | Christoffer Quist Adamsen <christofferqa@google.com> | Thu Dec 17 14:57:11 2020 +0100 |
committer | Christoffer Quist Adamsen <christofferqa@google.com> | Mon Dec 21 10:35:38 2020 +0000 |
tree | 651035617df36dc22333fe50f1d5844febaf9db9 | |
parent | 1264c75334d183d9df2c01d2436d964449bdb1a1 [diff] |
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. }