Only insert AssumeDynamicType instructions for methods not returning one of the arguments
Bug: 127461806
Change-Id: If923c53aba5616b9e10bb729a5dd0ba2fcfd190b
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/DynamicTypeOptimization.java b/src/main/java/com/android/tools/r8/ir/optimize/DynamicTypeOptimization.java
index 0f047c1..d90d213 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/DynamicTypeOptimization.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/DynamicTypeOptimization.java
@@ -7,6 +7,7 @@
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexEncodedMethod;
import com.android.tools.r8.graph.DexType;
+import com.android.tools.r8.graph.OptimizationInfo;
import com.android.tools.r8.ir.analysis.type.TypeLatticeElement;
import com.android.tools.r8.ir.code.Assume;
import com.android.tools.r8.ir.code.Assume.DynamicTypeAssumption;
@@ -72,8 +73,12 @@
continue;
}
- TypeLatticeElement dynamicReturnType =
- singleTarget.getOptimizationInfo().getDynamicReturnType();
+ OptimizationInfo optimizationInfo = singleTarget.getOptimizationInfo();
+ if (optimizationInfo.returnsArgument()) {
+ continue;
+ }
+
+ TypeLatticeElement dynamicReturnType = optimizationInfo.getDynamicReturnType();
if (dynamicReturnType == null
|| !dynamicReturnType.strictlyLessThan(outValue.getTypeLattice(), appView)) {
continue;