Strengthen nullability after instanceof checks
Fixes: b/425880420
Change-Id: I19244cd837a6e96e9661db46d63f74efdf53aa02
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/AssumeInserter.java b/src/main/java/com/android/tools/r8/ir/optimize/AssumeInserter.java
index 287930f..c7950f6 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/AssumeInserter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/AssumeInserter.java
@@ -204,7 +204,7 @@
Value value = instanceOf.value();
DynamicTypeWithUpperBound dynamicType =
DynamicType.create(
- appView, instanceOf.type().toTypeElement(appView, value.getType().nullability()));
+ appView, instanceOf.type().toTypeElement(appView, definitelyNotNull()));
DynamicTypeWithUpperBound staticType = DynamicType.create(appView, value.getType());
if (dynamicType.strictlyLessThan(staticType, appView)
&& hasOtherNonDebugUsers(value, instanceOf)) {
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NotNullAfterInstanceOfTest.java b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NotNullAfterInstanceOfTest.java
index d3771d8..ef60c95 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NotNullAfterInstanceOfTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/membervaluepropagation/NotNullAfterInstanceOfTest.java
@@ -41,7 +41,7 @@
MethodSubject mainMethodSubject = inspector.clazz(Main.class).mainMethod();
assertThat(mainMethodSubject, isPresent());
assertEquals(
- 3,
+ 2,
mainMethodSubject.streamInstructions().filter(InstructionSubject::isIf).count());
})
.run(parameters.getRuntime(), Main.class)