diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index cb8d7be..acbce17 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -1610,7 +1610,8 @@
     @Override
     public void markReturnsConstantNumber(long value) {
       assert !returnsConstantString;
-      assert !returnsConstantNumber || returnedConstantNumber == value;
+      assert !returnsConstantNumber || returnedConstantNumber == value
+          : "return constant number changed from " + returnedConstantNumber + " to " + value;
       returnsConstantNumber = true;
       returnedConstantNumber = value;
     }
@@ -1618,15 +1619,21 @@
     @Override
     public void markReturnsConstantString(DexString value) {
       assert !returnsConstantNumber;
-      assert !returnsConstantString || returnedConstantString == value;
+      assert !returnsConstantString || returnedConstantString == value
+          : "return constant string changed from " + returnedConstantString + " to " + value;
       returnsConstantString = true;
       returnedConstantString = value;
     }
 
     @Override
-    public void markReturnsObjectOfType(TypeLatticeElement type) {
+    public void markReturnsObjectOfType(AppView<?> appView, TypeLatticeElement type) {
       assert type != null;
-      assert returnsObjectOfType == UNKNOWN_TYPE || returnsObjectOfType == type;
+      // We may get more precise type information if the method is reprocessed (e.g., due to
+      // optimization info collected from all call sites), and hence the `returnsObjectOfType` is
+      // allowed to become more precise.
+      assert returnsObjectOfType == UNKNOWN_TYPE
+          || type.lessThanOrEqual(returnsObjectOfType, appView)
+          : "return type changed from " + returnsObjectOfType + " to " + type;
       returnsObjectOfType = type;
     }
 
diff --git a/src/main/java/com/android/tools/r8/graph/UpdatableMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/graph/UpdatableMethodOptimizationInfo.java
index c8e7f32..601bc7b 100644
--- a/src/main/java/com/android/tools/r8/graph/UpdatableMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/graph/UpdatableMethodOptimizationInfo.java
@@ -24,7 +24,7 @@
 
   void markReturnsConstantString(DexString value);
 
-  void markReturnsObjectOfType(TypeLatticeElement type);
+  void markReturnsObjectOfType(AppView<?> appView, TypeLatticeElement type);
 
   void markAsPropagated();
 
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index ee9d779..1ba87f9 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -1392,7 +1392,7 @@
       // If the dynamic return type is not more precise than the static return type there is no need
       // to record it.
       if (dynamicReturnType.strictlyLessThan(staticReturnType, appView)) {
-        feedback.methodReturnsObjectOfType(method, dynamicReturnType);
+        feedback.methodReturnsObjectOfType(method, appView, dynamicReturnType);
       }
     }
   }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedback.java b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedback.java
index ce519e5..c5bff88 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedback.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedback.java
@@ -4,6 +4,7 @@
 
 package com.android.tools.r8.ir.conversion;
 
+import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexEncodedMethod.ClassInlinerEligibility;
 import com.android.tools.r8.graph.DexEncodedMethod.TrivialInitializer;
@@ -28,7 +29,8 @@
 
   void methodReturnsConstantString(DexEncodedMethod method, DexString value);
 
-  void methodReturnsObjectOfType(DexEncodedMethod method, TypeLatticeElement type);
+  void methodReturnsObjectOfType(
+      DexEncodedMethod method, AppView<?> appView, TypeLatticeElement type);
 
   void methodMayNotHaveSideEffects(DexEncodedMethod method);
 
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackDelayed.java b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackDelayed.java
index 9652598..5b900d2 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackDelayed.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackDelayed.java
@@ -4,6 +4,7 @@
 
 package com.android.tools.r8.ir.conversion;
 
+import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexEncodedMethod.ClassInlinerEligibility;
 import com.android.tools.r8.graph.DexEncodedMethod.TrivialInitializer;
@@ -65,8 +66,8 @@
 
   @Override
   public synchronized void methodReturnsObjectOfType(
-      DexEncodedMethod method, TypeLatticeElement type) {
-    getOptimizationInfoForUpdating(method).markReturnsObjectOfType(type);
+      DexEncodedMethod method, AppView<?> appView, TypeLatticeElement type) {
+    getOptimizationInfoForUpdating(method).markReturnsObjectOfType(appView, type);
   }
 
   @Override
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackIgnore.java b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackIgnore.java
index d20f34b..a2d7387 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackIgnore.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackIgnore.java
@@ -4,6 +4,7 @@
 
 package com.android.tools.r8.ir.conversion;
 
+import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexEncodedMethod.ClassInlinerEligibility;
 import com.android.tools.r8.graph.DexEncodedMethod.TrivialInitializer;
@@ -42,7 +43,8 @@
   public void methodReturnsConstantString(DexEncodedMethod method, DexString value) {}
 
   @Override
-  public void methodReturnsObjectOfType(DexEncodedMethod method, TypeLatticeElement type) {}
+  public void methodReturnsObjectOfType(
+      DexEncodedMethod method, AppView<?> appView, TypeLatticeElement type) {}
 
   @Override
   public void methodMayNotHaveSideEffects(DexEncodedMethod method) {}
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackSimple.java b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackSimple.java
index 60df80c..024c815 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackSimple.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/OptimizationFeedbackSimple.java
@@ -4,6 +4,7 @@
 
 package com.android.tools.r8.ir.conversion;
 
+import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexEncodedMethod.ClassInlinerEligibility;
 import com.android.tools.r8.graph.DexEncodedMethod.TrivialInitializer;
@@ -44,7 +45,8 @@
   }
 
   @Override
-  public void methodReturnsObjectOfType(DexEncodedMethod method, TypeLatticeElement type) {
+  public void methodReturnsObjectOfType(
+      DexEncodedMethod method, AppView<?> appView, TypeLatticeElement type) {
     // Ignored.
   }
 
