Use same intermediate constructor name in horizontal and vertical merging

Change-Id: I8fd0653d8165440239861ae6e2a9a3a0a153bb47
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 e5a4d6b..6f7d998 100644
--- a/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/shaking/VerticalClassMerger.java
@@ -3,6 +3,7 @@
 // BSD-style license that can be found in the LICENSE file.
 package com.android.tools.r8.shaking;
 
+import static com.android.tools.r8.dex.Constants.TEMPORARY_INSTANCE_INITIALIZER_PREFIX;
 import static com.android.tools.r8.graph.DexProgramClass.asProgramClassOrNull;
 import static com.android.tools.r8.ir.code.Invoke.Type.DIRECT;
 import static com.android.tools.r8.ir.code.Invoke.Type.STATIC;
@@ -902,8 +903,6 @@
 
   private class ClassMerger {
 
-    private static final String CONSTRUCTOR_NAME = "constructor";
-
     private final DexProgramClass source;
     private final DexProgramClass target;
     private final VerticalClassMergerGraphLens.Builder deferredRenamings =
@@ -1366,7 +1365,7 @@
       DexMethod newSignature;
       int count = 1;
       do {
-        DexString newName = getFreshName(CONSTRUCTOR_NAME, count, oldHolder);
+        DexString newName = getFreshName(TEMPORARY_INSTANCE_INITIALIZER_PREFIX, count, oldHolder);
         newSignature =
             application.dexItemFactory.createMethod(target.type, method.method.proto, newName);
         count++;
diff --git a/src/test/examples/classmerging/ConflictInGeneratedNameTest.java b/src/test/examples/classmerging/ConflictInGeneratedNameTest.java
index 6d566ec..396e73c 100644
--- a/src/test/examples/classmerging/ConflictInGeneratedNameTest.java
+++ b/src/test/examples/classmerging/ConflictInGeneratedNameTest.java
@@ -15,11 +15,11 @@
 
     public A() {
       print("In A.<init>()");
-      constructor$classmerging$ConflictInGeneratedNameTest$A();
+      $r8$constructor$classmerging$ConflictInGeneratedNameTest$A();
     }
 
-    private void constructor$classmerging$ConflictInGeneratedNameTest$A() {
-      print("In A.constructor$classmerging$ConflictInGeneratedNameTest$A()");
+    private void $r8$constructor$classmerging$ConflictInGeneratedNameTest$A() {
+      print("In A.$r8$constructor$classmerging$ConflictInGeneratedNameTest$A()");
     }
 
     public void printState() {
diff --git a/src/test/java/com/android/tools/r8/classmerging/vertical/VerticalClassMergerTest.java b/src/test/java/com/android/tools/r8/classmerging/vertical/VerticalClassMergerTest.java
index 2fb36cd..8dc4e01 100644
--- a/src/test/java/com/android/tools/r8/classmerging/vertical/VerticalClassMergerTest.java
+++ b/src/test/java/com/android/tools/r8/classmerging/vertical/VerticalClassMergerTest.java
@@ -253,6 +253,7 @@
                 testForR8(parameters.getBackend())
                     .addKeepRules(getProguardConfig(EXAMPLE_KEEP))
                     .addOptionsModification(this::configure)
+                    .addOptionsModification(options -> options.enableValuePropagation = false)
                     .addOptionsModification(
                         options ->
                             options.testing.validInliningReasons = ImmutableSet.of(Reason.FORCE))
@@ -276,10 +277,11 @@
     assertThat(clazzSubject.field("java.lang.String", "name" + suffix), isPresent());
     assertThat(clazzSubject.field("java.lang.String", "name" + suffix + "2"), isPresent());
 
-    // The direct method "constructor$classmerging$ConflictInGeneratedNameTest$A" is processed after
-    // the method "<init>" is renamed to exactly that name. Therefore the conflict should have been
-    // resolved by appending [suffix] to it.
-    assertThat(clazzSubject.method("void", "constructor" + suffix + suffix, EMPTY), isPresent());
+    // The direct method "$r8$constructor$classmerging$ConflictInGeneratedNameTest$A" is processed
+    // after the method "<init>" is renamed to exactly that name. Therefore the conflict should have
+    // been resolved by appending [suffix] to it.
+    assertThat(
+        clazzSubject.method("void", "$r8$constructor" + suffix + suffix, EMPTY), isPresent());
 
     // There should be two foo's.
     assertThat(clazzSubject.method("void", "foo", EMPTY), isPresent());