Merge "Transfer publicized bit to bridge in class merger"
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.