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());
     }
   }