Revert fix dynamicType in fixClassType change

Change-Id: I7234747840fcb3a91ce631ab19aae7b1f467b273
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
index aec188b..2a33935 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/info/MutableMethodOptimizationInfo.java
@@ -13,7 +13,9 @@
 import com.android.tools.r8.graph.lens.GraphLens;
 import com.android.tools.r8.ir.analysis.inlining.NeverSimpleInliningConstraint;
 import com.android.tools.r8.ir.analysis.inlining.SimpleInliningConstraint;
+import com.android.tools.r8.ir.analysis.type.ClassTypeElement;
 import com.android.tools.r8.ir.analysis.type.DynamicType;
+import com.android.tools.r8.ir.analysis.type.DynamicTypeWithUpperBound;
 import com.android.tools.r8.ir.analysis.type.TypeElement;
 import com.android.tools.r8.ir.analysis.value.AbstractValue;
 import com.android.tools.r8.ir.analysis.value.UnknownValue;
@@ -183,14 +185,30 @@
   public MutableMethodOptimizationInfo fixupClassTypeReferences(
       AppView<AppInfoWithLiveness> appView, GraphLens lens, Set<DexType> prunedTypes) {
     DynamicType rewrittenDynamicType = dynamicType.rewrittenWithLens(appView, lens, prunedTypes);
-    assert !(rewrittenDynamicType.hasDynamicUpperBoundType()
-        && rewrittenDynamicType
-            .asDynamicTypeWithUpperBound()
-            .getDynamicUpperBoundType()
-            .isPrimitiveType());
+    if (rewrittenDynamicType.hasDynamicUpperBoundType()) {
+      DynamicTypeWithUpperBound rewrittenDynamicTypeWithUpperBound =
+          rewrittenDynamicType.asDynamicTypeWithUpperBound();
+      if (rewrittenDynamicTypeWithUpperBound.getDynamicUpperBoundType().isPrimitiveType()) {
+        // Do not store primitive dynamic types.
+        assert verifyDynamicTypeIsUnboxedEnum(appView, dynamicType);
+        return unsetDynamicType();
+      }
+    }
     return setDynamicType(rewrittenDynamicType);
   }
 
+  private static boolean verifyDynamicTypeIsUnboxedEnum(
+      AppView<?> appView, DynamicType dynamicType) {
+    assert dynamicType.isDynamicTypeWithUpperBound();
+    DynamicTypeWithUpperBound dynamicTypeWithUpperBound = dynamicType.asDynamicTypeWithUpperBound();
+    TypeElement dynamicUpperBoundType = dynamicTypeWithUpperBound.getDynamicUpperBoundType();
+    assert dynamicUpperBoundType.isClassType();
+    ClassTypeElement dynamicUpperBoundClassType = dynamicUpperBoundType.asClassType();
+    assert appView.hasUnboxedEnums();
+    assert appView.unboxedEnums().isUnboxedEnum(dynamicUpperBoundClassType.getClassType());
+    return true;
+  }
+
   public MutableMethodOptimizationInfo fixupAbstractReturnValue(
       AppView<AppInfoWithLiveness> appView,
       DexEncodedMethod method,