Check visibility of a single target before checking side-effects.

Change-Id: Ic2ee8f8708f596088fd88febc3924804af9e5378
diff --git a/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java b/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java
index acfb6da..3bc7380 100644
--- a/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java
+++ b/src/main/java/com/android/tools/r8/ir/code/InvokeVirtual.java
@@ -3,6 +3,8 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.ir.code;
 
+import static com.android.tools.r8.optimize.MemberRebindingAnalysis.isMemberVisibleFromOriginalContext;
+
 import com.android.tools.r8.cf.code.CfInvoke;
 import com.android.tools.r8.code.InvokeVirtualRange;
 import com.android.tools.r8.graph.AppInfoWithSubtyping;
@@ -148,6 +150,12 @@
         return true;
       }
 
+      // Verify that the target method is accessible in the current context.
+      if (!isMemberVisibleFromOriginalContext(
+          appView, context, target.method.holder, target.accessFlags)) {
+        return true;
+      }
+
       // Verify that the target method does not have side-effects.
       boolean targetMayHaveSideEffects;
       if (appViewWithLiveness.appInfo().noSideEffects.containsKey(target.method)) {