Strengthen enum unboxing bail-out for invokes with null receiver

Change-Id: Ib81dca220175514a7c23277507ef9194ba8633de
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
index 3875ddf..d35c7b7 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxerImpl.java
@@ -247,7 +247,7 @@
             }
           }
           if (outValue.getType().isNullType()) {
-            addNullDependencies(code, outValue.uniqueUsers(), eligibleEnums);
+            addNullDependencies(code, outValue, eligibleEnums);
           }
         } else {
           if (instruction.isInvokeMethod()) {
@@ -290,7 +290,7 @@
           }
         }
         if (phi.getType().isNullType()) {
-          addNullDependencies(code, phi.uniqueUsers(), eligibleEnums);
+          addNullDependencies(code, phi, eligibleEnums);
         }
       }
     }
@@ -520,8 +520,8 @@
         || method == factory.classMethods.getSimpleName;
   }
 
-  private void addNullDependencies(IRCode code, Set<Instruction> uses, Set<DexType> eligibleEnums) {
-    for (Instruction use : uses) {
+  private void addNullDependencies(IRCode code, Value nullValue, Set<DexType> eligibleEnums) {
+    for (Instruction use : nullValue.uniqueUsers()) {
       if (use.isInvokeMethod()) {
         InvokeMethod invokeMethod = use.asInvokeMethod();
         DexMethod invokedMethod = invokeMethod.getInvokedMethod();
@@ -530,7 +530,8 @@
             eligibleEnums.add(paramType);
           }
         }
-        if (invokeMethod.isInvokeMethodWithReceiver()) {
+        if (invokeMethod.isInvokeMethodWithReceiver()
+            && invokeMethod.asInvokeMethodWithReceiver().getReceiver() == nullValue) {
           DexProgramClass enumClass = getEnumUnboxingCandidateOrNull(invokedMethod.holder);
           if (enumClass != null) {
             markEnumAsUnboxable(Reason.ENUM_METHOD_CALLED_WITH_NULL_RECEIVER, enumClass);