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");
