Ensure trivial goto removal for consistent SSA

Change-Id: I45e11cd0fe5223044e88e4822bceb37c4c837c4c
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRToDexFinalizer.java b/src/main/java/com/android/tools/r8/ir/conversion/IRToDexFinalizer.java
index 84dbfb0..20ba9f1 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRToDexFinalizer.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRToDexFinalizer.java
@@ -50,7 +50,7 @@
   }
 
   private void workaroundBugs(IRCode code, Timing timing) {
-    RuntimeWorkaroundCodeRewriter.workaroundNumberConversionRegisterAllocationBug(code, options);
+    RuntimeWorkaroundCodeRewriter.workaroundNumberConversionRegisterAllocationBug(appView, code);
     RuntimeWorkaroundCodeRewriter.workaroundDex2OatInliningIssue(appView, code);
     if (RuntimeWorkaroundCodeRewriter.workaroundInstanceOfTypeWeakeningInVerifier(appView, code)) {
       deadCodeRemover.run(code, timing);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/KotlinInlineMarkerRewriter.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/KotlinInlineMarkerRewriter.java
index 34c0451..909b114 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/KotlinInlineMarkerRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/KotlinInlineMarkerRewriter.java
@@ -51,6 +51,9 @@
         }
       }
     }
+    if (changed) {
+      code.removeRedundantBlocks();
+    }
     return CodeRewriterResult.hasChanged(changed);
   }
 }
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/ThrowCatchOptimizer.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/ThrowCatchOptimizer.java
index 23a66a3..4e6eb88 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/ThrowCatchOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/ThrowCatchOptimizer.java
@@ -361,7 +361,9 @@
     }
     if (hasUnlinkedCatchHandlers) {
       code.removeUnreachableBlocks();
+      code.removeRedundantBlocks();
     }
+    assert code.isConsistentSSA(appView);
   }
 
   private boolean isSingleHandlerTrivial(BasicBlock firstBlock, IRCode code) {
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
index 3438304..9629859 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/CodeRewriter.java
@@ -180,6 +180,7 @@
         }
       }
     }
+    code.removeRedundantBlocks();
     assert code.isConsistentSSA(appView);
   }
 
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java b/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
index 2262154..0756ee0 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/RuntimeWorkaroundCodeRewriter.java
@@ -294,12 +294,12 @@
 
   // See comment for InternalOptions.canHaveNumberConversionRegisterAllocationBug().
   public static void workaroundNumberConversionRegisterAllocationBug(
-      IRCode code, InternalOptions options) {
-    if (!options.canHaveNumberConversionRegisterAllocationBug()) {
+      AppView<?> appView, IRCode code) {
+    if (!appView.options().canHaveNumberConversionRegisterAllocationBug()) {
       return;
     }
 
-    DexItemFactory dexItemFactory = options.dexItemFactory();
+    DexItemFactory dexItemFactory = appView.dexItemFactory();
     ListIterator<BasicBlock> blocks = code.listIterator();
     while (blocks.hasNext()) {
       BasicBlock block = blocks.next();
@@ -345,6 +345,8 @@
         }
       }
     }
+    code.removeRedundantBlocks();
+    assert code.isConsistentSSA(appView);
   }
 
   private static void ensureInstructionBefore(
diff --git a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
index 4417b2a..ac6868b 100644
--- a/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
+++ b/src/main/java/com/android/tools/r8/naming/IdentifierNameStringMarker.java
@@ -155,6 +155,9 @@
         }
       }
     }
+    if (result.hasChanged().isPossiblyTrue()) {
+      code.removeRedundantBlocks();
+    }
     return result;
   }