Fix unboxed enum ordinal retrieval during <clinit> rewriting

Change-Id: I165a2e056c73937fc183008c3e7949deaf208152
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java
index 3ce42b6..fe45c93 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/enums/EnumUnboxingTreeFixer.java
@@ -172,14 +172,24 @@
                     .getInstanceInitializerInfo(constructorInvoke)
                     .fieldInitializationInfos()
                     .get(ordinalField);
-            assert ordinalInitializationInfo.isArgumentInitializationInfo();
 
-            Value ordinalValue =
-                constructorInvoke
-                    .getArgument(
-                        ordinalInitializationInfo.asArgumentInitializationInfo().getArgumentIndex())
-                    .getAliasedValue();
-            assert ordinalValue.isDefinedByInstructionSatisfying(Instruction::isConstNumber);
+            int ordinal;
+            if (ordinalInitializationInfo.isArgumentInitializationInfo()) {
+              Value ordinalValue =
+                  constructorInvoke
+                      .getArgument(
+                          ordinalInitializationInfo
+                              .asArgumentInitializationInfo()
+                              .getArgumentIndex())
+                      .getAliasedValue();
+              assert ordinalValue.isDefinedByInstructionSatisfying(Instruction::isConstNumber);
+              ordinal = ordinalValue.getDefinition().asConstNumber().getIntValue();
+            } else {
+              assert ordinalInitializationInfo.isSingleValue();
+              assert ordinalInitializationInfo.asSingleValue().isSingleNumberValue();
+              ordinal =
+                  ordinalInitializationInfo.asSingleValue().asSingleNumberValue().getIntValue();
+            }
 
             // Replace by an instruction that produces a value of class type UnboxedEnum (for the
             // code to type check), which can easily be rewritten to a const-number instruction in
@@ -187,7 +197,7 @@
             instructionIterator.replaceCurrentInstruction(
                 new NewUnboxedEnumInstance(
                     unboxedEnum.getType(),
-                    ordinalValue.getDefinition().asConstNumber().getIntValue(),
+                    ordinal,
                     code.createValue(
                         ClassTypeElement.create(
                             unboxedEnum.getType(), definitelyNotNull(), appView))));