Remove redundant dead code check in LibraryMemberOptimizer
LibraryMemberOptimizer's job isn't to generically remove unused
side-effect free invokes. We can leave that to the dead code remover.
Change-Id: I4ed76c27cbc29c00759b5ce0425aae32eb4a8a52
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMemberOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMemberOptimizer.java
index af730b3..788cbf6 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMemberOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/LibraryMemberOptimizer.java
@@ -162,13 +162,6 @@
continue;
}
- if (invoke.hasUnusedOutValue()
- && !singleTarget.getDefinition().isInstanceInitializer()
- && !invoke.instructionMayHaveSideEffects(appView, code.context())) {
- instructionIterator.removeOrReplaceByDebugLocalRead();
- continue;
- }
-
LibraryMethodModelCollection.State optimizationState =
optimizationStates.computeIfAbsent(
optimizer, LibraryMethodModelCollection::createInitialState);
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/library/primitive/PrimitiveMethodOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/library/primitive/PrimitiveMethodOptimizer.java
index 96d23ce..65a5583 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/library/primitive/PrimitiveMethodOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/library/primitive/PrimitiveMethodOptimizer.java
@@ -98,10 +98,11 @@
void optimizeUnboxMethod(
IRCode code, InstructionListIterator instructionIterator, InvokeMethod unboxInvoke) {
Value firstArg = unboxInvoke.getFirstArgument();
+ Value outValue = unboxInvoke.outValue();
AbstractValue abstractValue = firstArg.getAbstractValue(appView, code.context());
if (isMatchingSingleBoxedPrimitive(abstractValue)) {
// Optimize Primitive.box(cst).unbox() into cst, possibly inter-procedurally.
- if (unboxInvoke.hasOutValue()) {
+ if (outValue != null) {
SingleBoxedPrimitiveValue singleBoxedNumber = abstractValue.asSingleBoxedPrimitive();
instructionIterator.replaceCurrentInstruction(
singleBoxedNumber
@@ -118,7 +119,9 @@
// Optimize Primitive.box(unboxed).unbox() into unboxed.
InvokeMethod boxInvoke = firstArg.getAliasedValue().getDefinition().asInvokeMethod();
assert boxInvoke.isInvokeStatic();
- unboxInvoke.outValue().replaceUsers(boxInvoke.getFirstArgument());
+ if (outValue != null) {
+ outValue.replaceUsers(boxInvoke.getFirstArgument());
+ }
instructionIterator.replaceCurrentInstructionByNullCheckIfPossible(appView, code.context());
}
}