diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index af1d2e9..c8baebd 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -691,6 +691,14 @@
         }
       }
 
+      {
+        MainDexClasses finalMainDexClasses = mainDexClasses;
+        appView.withGeneratedExtensionRegistryShrinker(
+            shrinker ->
+                shrinker.postOptimizeGeneratedExtensionRegistry(
+                    new IRConverter(appView, timing, null, finalMainDexClasses)));
+      }
+
       // Add automatic main dex classes to an eventual manual list of classes.
       if (!options.mainDexKeepRules.isEmpty()) {
         application = application.builder().addToMainDexList(mainDexClasses.getClasses()).build();
diff --git a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedExtensionRegistryShrinker.java b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedExtensionRegistryShrinker.java
index e30bf58..cb915b2 100644
--- a/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedExtensionRegistryShrinker.java
+++ b/src/main/java/com/android/tools/r8/ir/analysis/proto/GeneratedExtensionRegistryShrinker.java
@@ -4,6 +4,8 @@
 
 package com.android.tools.r8.ir.analysis.proto;
 
+import static com.google.common.base.Predicates.alwaysFalse;
+
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexClass;
 import com.android.tools.r8.graph.DexEncodedField;
@@ -11,12 +13,17 @@
 import com.android.tools.r8.graph.DexField;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexMethod;
+import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexProto;
 import com.android.tools.r8.graph.DexString;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.FieldAccessInfo;
 import com.android.tools.r8.graph.FieldAccessInfoCollection;
 import com.android.tools.r8.graph.FieldAccessInfoImpl;
+import com.android.tools.r8.ir.conversion.CallSiteInformation;
+import com.android.tools.r8.ir.conversion.IRConverter;
+import com.android.tools.r8.ir.conversion.OptimizationFeedbackIgnore;
+import com.android.tools.r8.ir.optimize.Outliner;
 import com.android.tools.r8.logging.Log;
 import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import java.util.function.Consumer;
@@ -54,6 +61,7 @@
 
   static class ProtoReferences {
 
+    public final DexType extensionRegistryLiteType;
     public final DexType generatedExtensionType;
     public final DexType generatedMessageLiteType;
     public final DexType messageLiteType;
@@ -64,6 +72,8 @@
     public final DexProto findLiteExtensionByNumberProto;
 
     private ProtoReferences(DexItemFactory factory) {
+      extensionRegistryLiteType =
+          factory.createType(factory.createString("Lcom/google/protobuf/ExtensionRegistryLite;"));
       generatedExtensionType =
           factory.createType(
               factory.createString(
@@ -114,6 +124,31 @@
         });
   }
 
+  public void postOptimizeGeneratedExtensionRegistry(IRConverter converter) {
+    forEachFindLiteExtensionByNumberMethod(
+        method ->
+            converter.processMethod(
+                method,
+                OptimizationFeedbackIgnore.getInstance(),
+                alwaysFalse(),
+                CallSiteInformation.empty(),
+                Outliner::noProcessing));
+  }
+
+  private void forEachFindLiteExtensionByNumberMethod(Consumer<DexEncodedMethod> consumer) {
+    for (DexProgramClass clazz : appView.appInfo().classes()) {
+      if (clazz.superType != references.extensionRegistryLiteType) {
+        continue;
+      }
+
+      for (DexEncodedMethod method : clazz.methods()) {
+        if (references.isFindLiteExtensionByNumberMethod(method.method)) {
+          consumer.accept(method);
+        }
+      }
+    }
+  }
+
   public boolean isDeadProtoExtensionField(DexField field) {
     return isDeadProtoExtensionField(field, appView.appInfo().getFieldAccessInfoCollection());
   }
