diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 0b8ab6c..2717f8a 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -503,7 +503,7 @@
 
       assert ArtProfileCompletenessChecker.verify(appView);
 
-      VerticalClassMerger.createForInitialClassMerging(appViewWithLiveness)
+      VerticalClassMerger.createForInitialClassMerging(appViewWithLiveness, timing)
           .runIfNecessary(executorService, timing);
       HorizontalClassMerger.createForInitialClassMerging(appViewWithLiveness)
           .runIfNecessary(
@@ -746,7 +746,7 @@
         assert appView.dexItemFactory().verifyNoCachedTypeElements();
 
         if (appView.hasLiveness()) {
-          VerticalClassMerger.createForFinalClassMerging(appView.withLiveness())
+          VerticalClassMerger.createForIntermediateClassMerging(appView.withLiveness(), timing)
               .runIfNecessary(executorService, timing);
           assert appView.dexItemFactory().verifyNoCachedTypeElements();
         }
@@ -765,6 +765,10 @@
         assert appView.dexItemFactory().verifyNoCachedTypeElements();
 
         if (appView.hasLiveness()) {
+          VerticalClassMerger.createForFinalClassMerging(appView.withLiveness(), timing)
+              .runIfNecessary(executorService, timing);
+          assert appView.dexItemFactory().verifyNoCachedTypeElements();
+
           new ProtoNormalizer(appViewWithLiveness).run(executorService, timing);
         }
       }
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java
index 67bc83a..b19cfe0 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMerger.java
@@ -60,18 +60,25 @@
   }
 
   public static VerticalClassMerger createForInitialClassMerging(
-      AppView<AppInfoWithLiveness> appView) {
+      AppView<AppInfoWithLiveness> appView, Timing timing) {
+    timing.begin("VerticalClassMerger (1/3)");
     return new VerticalClassMerger(appView, ClassMergerMode.INITIAL);
   }
 
+  public static VerticalClassMerger createForIntermediateClassMerging(
+      AppView<AppInfoWithLiveness> appView, Timing timing) {
+    timing.begin("VerticalClassMerger (2/3)");
+    return new VerticalClassMerger(appView, ClassMergerMode.FINAL);
+  }
+
   public static VerticalClassMerger createForFinalClassMerging(
-      AppView<AppInfoWithLiveness> appView) {
+      AppView<AppInfoWithLiveness> appView, Timing timing) {
+    timing.begin("VerticalClassMerger (3/3)");
     return new VerticalClassMerger(appView, ClassMergerMode.FINAL);
   }
 
   public void runIfNecessary(ExecutorService executorService, Timing timing)
       throws ExecutionException {
-    timing.begin("VerticalClassMerger (" + mode.toString() + ")");
     if (shouldRun()) {
       run(executorService, timing);
     } else {
diff --git a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerOptions.java b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerOptions.java
index 55b3b41..aaeae0e 100644
--- a/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerOptions.java
+++ b/src/main/java/com/android/tools/r8/verticalclassmerging/VerticalClassMergerOptions.java
@@ -27,7 +27,11 @@
   }
 
   public boolean isEnabled(ClassMergerMode mode) {
-    if (!enabled || !options.isOptimizing() || !options.isShrinking()) {
+    if (!enabled
+        || options.debug
+        || options.intermediate
+        || !options.isOptimizing()
+        || !options.isShrinking()) {
       return false;
     }
     if (mode.isInitial() && !enableInitial) {
