Ignore class initialization for dead field elimination
Change-Id: I7d66607127461ab0b03f65cc57cf782151b3a661
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
index 27ba1a1..e95cb5e 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedField.java
@@ -161,7 +161,14 @@
// Types that are a super type of the current context are guaranteed to be initialized
// already.
type -> appView.isSubtype(context, type).isTrue())) {
- return null;
+ // Ignore class initialization side-effects for dead proto extension fields to ensure that
+ // we force replace these field reads by null.
+ boolean ignore =
+ appView.withGeneratedExtensionRegistryShrinker(
+ shrinker -> shrinker.isDeadProtoExtensionField(field), false);
+ if (!ignore) {
+ return null;
+ }
}
}