Don't remove switch map in rare cases

Bug: b/231804008
Change-Id: Id4e78628a745fc78ce3fd2a7ce1074f9b57ef087
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java
index f2fbb4c..9a88b2e 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumValueOptimizer.java
@@ -221,6 +221,12 @@
 
       int fallthroughBlockIndex = switchInsn.getFallthroughBlockIndex();
       if (ordinalToTargetMap.size() < switchInsn.numberOfKeys()) {
+        if (block.numberOfNormalSuccessors() != switchInsn.numberOfKeys() + 1) {
+          // This can happen in extremely rare cases where several switch targets are the same
+          // block (See b/231804008).
+          // TODO(b/249052389): Support removing switch map for such switches.
+          continue;
+        }
         // There is at least one dead switch case. This can happen when some dependencies use
         // different versions of the same enum.
         int numberOfNormalSuccessors = switchInsn.numberOfKeys() + 1;