Better field value propagation of constant $r8$classId fields

Bug: 173340579
Change-Id: I7738c1eec95407258103234551508c07b6f7f716
diff --git a/src/main/java/com/android/tools/r8/graph/ObjectAllocationInfoCollectionImpl.java b/src/main/java/com/android/tools/r8/graph/ObjectAllocationInfoCollectionImpl.java
index c0cc708..686d7d5 100644
--- a/src/main/java/com/android/tools/r8/graph/ObjectAllocationInfoCollectionImpl.java
+++ b/src/main/java/com/android/tools/r8/graph/ObjectAllocationInfoCollectionImpl.java
@@ -302,8 +302,7 @@
         // We already gave up on tracking the allocation sites for `clazz` previously.
         return false;
       }
-      // We currently only use allocation site information for instance field value propagation.
-      return !clazz.instanceFields().isEmpty();
+      return true;
     }
 
     /**
diff --git a/src/test/examples/classmerging/ProguardFieldMapTest.java b/src/test/examples/classmerging/ProguardFieldMapTest.java
index e512173..98ca7b2 100644
--- a/src/test/examples/classmerging/ProguardFieldMapTest.java
+++ b/src/test/examples/classmerging/ProguardFieldMapTest.java
@@ -13,7 +13,7 @@
 
   public static class A {
 
-    public String f = "A.f";
+    public String f = System.currentTimeMillis() > 0 ? "A.f" : null;
   }
 
   @NeverClassInline
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/fields/SwitchOnConstantClassIdAfterBranchPruningTest.java b/src/test/java/com/android/tools/r8/ir/optimize/fields/SwitchOnConstantClassIdAfterBranchPruningTest.java
index 894e148..9ddf887 100644
--- a/src/test/java/com/android/tools/r8/ir/optimize/fields/SwitchOnConstantClassIdAfterBranchPruningTest.java
+++ b/src/test/java/com/android/tools/r8/ir/optimize/fields/SwitchOnConstantClassIdAfterBranchPruningTest.java
@@ -50,15 +50,13 @@
             inspector -> {
               ClassSubject aClassSubject = inspector.clazz(A.class);
               assertThat(aClassSubject, isPresent());
-              // TODO(b/173340579): $r8$classId field should have been removed.
-              assertEquals(1, aClassSubject.allInstanceFields().size());
+              assertEquals(0, aClassSubject.allInstanceFields().size());
 
               MethodSubject mMethodSubject =
                   aClassSubject.uniqueMethodThatMatches(FoundMethodSubject::isVirtual);
               assertThat(mMethodSubject, isPresent());
-              // TODO(b/173340579): Branches should have been removed.
               assertTrue(
-                  mMethodSubject.streamInstructions().anyMatch(x -> x.isIf() || x.isSwitch()));
+                  mMethodSubject.streamInstructions().noneMatch(x -> x.isIf() || x.isSwitch()));
             })
         .run(parameters.getRuntime(), Main.class)
         .assertSuccessWithOutputLines("A");