Merge "Update input to DexSplitterTests.splitFilesObfuscation"
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 69126be..3586d6d 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -758,6 +758,10 @@
       publicized = true;
     }
 
+    private void unsetPublicized() {
+      publicized = false;
+    }
+
     private void markUseIdentifierNameString() {
       useIdentifierNameString = true;
     }
@@ -835,6 +839,10 @@
     ensureMutableOI().markPublicized();
   }
 
+  synchronized public void unsetPublicized() {
+    ensureMutableOI().unsetPublicized();
+  }
+
   synchronized public void markUseIdentifierNameString() {
     ensureMutableOI().markUseIdentifierNameString();
   }
diff --git a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
index 0ed3c11..4a36895 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -940,15 +940,15 @@
     }
 
     private DexEncodedMethod buildBridgeMethod(
-        DexEncodedMethod signature, DexMethod invocationTarget) {
+        DexEncodedMethod method, DexMethod invocationTarget) {
       DexType holder = target.type;
       DexProto proto = invocationTarget.proto;
-      DexString name = signature.method.name;
-      MethodAccessFlags accessFlags = signature.accessFlags.copy();
+      DexString name = method.method.name;
+      MethodAccessFlags accessFlags = method.accessFlags.copy();
       accessFlags.setBridge();
       accessFlags.setSynthetic();
       accessFlags.unsetAbstract();
-      return new DexEncodedMethod(
+      DexEncodedMethod bridge = new DexEncodedMethod(
           application.dexItemFactory.createMethod(holder, proto, name),
           accessFlags,
           DexAnnotationSet.empty(),
@@ -956,7 +956,14 @@
           new SynthesizedCode(
               new ForwardMethodSourceCode(holder, proto, holder, invocationTarget, Type.DIRECT),
               registry -> registry.registerInvokeDirect(invocationTarget)),
-          signature.hasClassFileVersion() ? signature.getClassFileVersion() : -1);
+          method.hasClassFileVersion() ? method.getClassFileVersion() : -1);
+      if (method.getOptimizationInfo().isPublicized()) {
+        // The bridge is now the public method serving the role of the original method, and should
+        // reflect that this method was publicized.
+        bridge.markPublicized();
+        method.unsetPublicized();
+      }
+      return bridge;
     }
 
     // Returns the method that shadows the given method, or null if method is not shadowed.
diff --git a/tools/build_sample_apk.py b/tools/build_sample_apk.py
index f0c74d9..b74356b 100755
--- a/tools/build_sample_apk.py
+++ b/tools/build_sample_apk.py
@@ -165,7 +165,7 @@
   command = ['adb']
   command.extend(args)
   utils.PrintCmd(command)
-  # On M adb install-multiple exits 0 but succeed in installing.
+  # On M adb install-multiple exits 1 but succeed in installing.
   if ignore_exit:
     subprocess.call(command)
   else:
@@ -293,7 +293,7 @@
     apks.append(split_apk_path)
 
   print('Generated apks available at: %s' % ' '.join(apks))
-  if options.install:
+  if options.install or options.benchmark:
     adb_install(apks)
   grand_total = 0
   if options.benchmark: