Fix AssertionError in If#toString when cleaned for removal

Change-Id: I800038419e05875e01f0c945df785b76a2232969
diff --git a/src/main/java/com/android/tools/r8/ir/code/If.java b/src/main/java/com/android/tools/r8/ir/code/If.java
index 0149b70..b0ecd2d 100644
--- a/src/main/java/com/android/tools/r8/ir/code/If.java
+++ b/src/main/java/com/android/tools/r8/ir/code/If.java
@@ -125,15 +125,22 @@
 
   @Override
   public String toString() {
-    return super.toString()
-        + " "
-        + type
-        + (isZeroTest() ? "Z" : " ")
-        + " block "
-        + getTrueTarget().getNumberAsString()
-        + " (fallthrough "
-        + fallthroughBlock().getNumberAsString()
-        + ")";
+    StringBuilder builder =
+        new StringBuilder(super.toString())
+            .append(' ')
+            .append(type)
+            .append(isZeroTest() ? 'Z' : ' ');
+    // If this instruction is in a block that has been marked for removal, but not yet removed from
+    // the IR, make sure we can still print the code.
+    if (getBlock().exit() == this && getBlock().getSuccessors().size() >= 2) {
+      builder
+          .append(" block ")
+          .append(getTrueTarget().getNumberAsString())
+          .append(" (fallthrough ")
+          .append(fallthroughBlock().getNumberAsString())
+          .append(')');
+    }
+    return builder.toString();
   }
 
   @Override