Disable horizontal class merging without inlining

Bug: 163311975
Change-Id: If33df39b68939a115fc56caf209b8d0220175054
diff --git a/src/main/java/com/android/tools/r8/R8Command.java b/src/main/java/com/android/tools/r8/R8Command.java
index 0375b6b..f9c2050 100644
--- a/src/main/java/com/android/tools/r8/R8Command.java
+++ b/src/main/java/com/android/tools/r8/R8Command.java
@@ -868,6 +868,12 @@
       internal.enableEnumUnboxing = false;
     }
 
+    if (!internal.enableInlining) {
+      // If R8 cannot perform inlining, then the synthetic constructors would not inline the called
+      // constructors, producing invalid code.
+      internal.enableHorizontalClassMerging = false;
+    }
+
     // Amend the proguard-map consumer with options from the proguard configuration.
     internal.proguardMapConsumer =
         wrapStringConsumer(
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 50ceee2..ef58b3a 100644
--- a/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/horizontalclassmerging/HorizontalClassMerger.java
@@ -49,6 +49,7 @@
       MainDexTracingResult mainDexTracingResult,
       ClassMergingEnqueuerExtension classMergingEnqueuerExtension) {
     this.appView = appView;
+    assert appView.options().enableInlining;
 
     List<Policy> policies =
         ImmutableList.of(