Fix inadequate type propagation in lens code rewriter
Change-Id: I110a789e2927fec7545f99c712dcf4e6b920cbda
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index 688a21e..0356381 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -631,6 +631,7 @@
TypeElement substituted = type.rewrittenWithLens(appView, graphLens);
if (substituted != type) {
assert type.isArrayType() || type.isClassType();
+ affectedPhis.addAll(assume.outValue().uniquePhiUsers());
if (substituted.isPrimitiveType()) {
assert type.isClassType();
assert appView.unboxedEnums().isUnboxedEnum(type.asClassType().getClassType());
@@ -643,7 +644,6 @@
// Non-null assumptions on a class array type being converted to a primitive
// array type remains, but dynamic type becomes irrelevant.
assume.unsetDynamicTypeAssumption();
- affectedPhis.addAll(assume.outValue().uniquePhiUsers());
if (assume.hasNonNullAssumption()) {
assume.outValue().setType(substituted);
} else {
@@ -654,7 +654,6 @@
assert !substituted.isPrimitiveType();
assert !substituted.isPrimitiveArrayType();
current.outValue().setType(substituted);
- affectedPhis.addAll(current.outValue().uniquePhiUsers());
}
}
}