diff --git a/src/main/java/com/android/tools/r8/ir/code/IRCode.java b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
index 964ce8a..cc54a60 100644
--- a/src/main/java/com/android/tools/r8/ir/code/IRCode.java
+++ b/src/main/java/com/android/tools/r8/ir/code/IRCode.java
@@ -4,13 +4,17 @@
 package com.android.tools.r8.ir.code;
 
 import com.android.tools.r8.errors.Unreachable;
+import com.android.tools.r8.graph.AppInfoWithSubtyping;
 import com.android.tools.r8.graph.AppView;
 import com.android.tools.r8.graph.DebugLocalInfo;
 import com.android.tools.r8.graph.DexEncodedMethod;
+import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.ir.analysis.TypeChecker;
+import com.android.tools.r8.ir.analysis.type.ClassTypeLatticeElement;
 import com.android.tools.r8.ir.analysis.type.TypeLatticeElement;
 import com.android.tools.r8.ir.conversion.IRBuilder;
 import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.shaking.VerticalClassMerger.VerticallyMergedClasses;
 import com.android.tools.r8.utils.CfgPrinter;
 import com.android.tools.r8.utils.InternalOptions;
 import com.google.common.collect.ImmutableList;
@@ -474,6 +478,24 @@
     return true;
   }
 
+  public boolean hasNoVerticallyMergedClasses(AppView<? extends AppInfoWithSubtyping> appView) {
+    VerticallyMergedClasses verticallyMergedClasses = appView.verticallyMergedClasses();
+    if (verticallyMergedClasses == null) {
+      return true;
+    }
+    for (Instruction instruction : instructions()) {
+      if (instruction.outValue != null && instruction.outValue.getTypeLattice().isClassType()) {
+        ClassTypeLatticeElement classTypeLattice =
+            instruction.outValue.getTypeLattice().asClassTypeLatticeElement();
+        assert !verticallyMergedClasses.hasBeenMergedIntoSubtype(classTypeLattice.getClassType());
+        for (DexType itf : classTypeLattice.getInterfaces()) {
+          assert !verticallyMergedClasses.hasBeenMergedIntoSubtype(itf);
+        }
+      }
+    }
+    return true;
+  }
+
   public boolean isConsistentGraph() {
     assert noColorsInUse();
     assert consistentBlockNumbering();
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
index 959e9b7..772c70c 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LensCodeRewriter.java
@@ -410,6 +410,7 @@
       new TypeAnalysis(appView, method).widening(newSSAValues);
     }
     assert code.isConsistentSSA();
+    assert code.hasNoVerticallyMergedClasses(appView);
   }
 
   // If the given invoke is on the form "invoke-direct A.<init>, v0, ..." and the definition of
