Temporarily disable horizontal class merging in presence of unused argument removal

Change-Id: Id1ef52e70090f4704210fd40b1cbfc4308e9b4db
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
index 0821a4c..6db4dc6 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
@@ -27,6 +27,7 @@
 import com.android.tools.r8.horizontalclassmerging.policies.NoNativeMethods;
 import com.android.tools.r8.horizontalclassmerging.policies.NoServiceLoaders;
 import com.android.tools.r8.horizontalclassmerging.policies.NoStaticClassInitializer;
+import com.android.tools.r8.horizontalclassmerging.policies.NoUnusedArguments;
 import com.android.tools.r8.horizontalclassmerging.policies.NotMatchedByNoHorizontalClassMerging;
 import com.android.tools.r8.horizontalclassmerging.policies.NotVerticallyMergedIntoSubtype;
 import com.android.tools.r8.horizontalclassmerging.policies.PreserveMethodCharacteristics;
@@ -121,6 +122,7 @@
         new NoKeepRules(appView),
         new NoKotlinMetadata(),
         new NoKotlinLambdas(appView),
+        new NoUnusedArguments(appView),
         new NoServiceLoaders(appView),
         new NotVerticallyMergedIntoSubtype(appView),
         new NoDirectRuntimeTypeChecks(runtimeTypeCheckInfo),
diff --git a/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoUnusedArguments.java b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoUnusedArguments.java
new file mode 100644
index 0000000..907c855
--- /dev/null
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/policies/NoUnusedArguments.java
@@ -0,0 +1,33 @@
+// Copyright (c) 2020, the R8 project authors. Please see the AUTHORS file
+// for details. All rights reserved. Use of this source code is governed by a
+// BSD-style license that can be found in the LICENSE file.
+
+package com.android.tools.r8.horizontalclassmerging.policies;
+
+import com.android.tools.r8.graph.AppView;
+import com.android.tools.r8.graph.DexEncodedMethod;
+import com.android.tools.r8.graph.DexProgramClass;
+import com.android.tools.r8.graph.RewrittenPrototypeDescription;
+import com.android.tools.r8.horizontalclassmerging.SingleClassPolicy;
+import com.android.tools.r8.shaking.AppInfoWithLiveness;
+
+public class NoUnusedArguments extends SingleClassPolicy {
+
+  private final AppView<AppInfoWithLiveness> appView;
+
+  public NoUnusedArguments(AppView<AppInfoWithLiveness> appView) {
+    this.appView = appView;
+  }
+
+  @Override
+  public boolean canMerge(DexProgramClass program) {
+    for (DexEncodedMethod method : program.methods()) {
+      RewrittenPrototypeDescription prototypeChanges =
+          appView.graphLens().lookupPrototypeChangesForMethodDefinition(method.getReference());
+      if (prototypeChanges.getArgumentInfoCollection().numberOfRemovedArguments() > 0) {
+        return false;
+      }
+    }
+    return true;
+  }
+}