diff --git a/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java b/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java
index 8aaf078..d8c3142 100644
--- a/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java
+++ b/src/main/java/com/android/tools/r8/graph/GenericSignatureCorrectnessHelper.java
@@ -21,6 +21,9 @@
 import com.android.tools.r8.graph.GenericSignature.ReturnType;
 import com.android.tools.r8.graph.GenericSignature.TypeSignature;
 import com.android.tools.r8.graph.GenericSignatureContextBuilder.TypeParameterContext;
+import com.android.tools.r8.shaking.KeepClassInfo;
+import com.android.tools.r8.shaking.KeepFieldInfo;
+import com.android.tools.r8.shaking.KeepMethodInfo;
 import com.android.tools.r8.utils.ListUtils;
 import java.util.List;
 import java.util.function.Consumer;
@@ -127,7 +130,12 @@
     SignatureEvaluationResult result =
         genericSignatureContextEvaluator.evaluateClassSignatureForContext(typeParameterContext);
     if (result.isInvalid() && mode.clearIfInvalid()) {
-      if (appView.hasLiveness() && appView.getKeepInfo().getClassInfo(clazz).isPinned()) {
+      // Only report info messages for classes that are kept explicitly. This is to ensure we do not
+      // spam the developer with messages they can do nothing about.
+      KeepClassInfo classInfo = appView.getKeepInfo().getClassInfo(clazz);
+      if (appView.hasLiveness() && !classInfo.isShrinkingAllowed(appView.options())) {
+        // If/when this no longer holds it should be moved into the condition.
+        assert !classInfo.isSignatureAttributeRemovalAllowed(appView.options());
         appView
             .options()
             .reporter
@@ -149,8 +157,13 @@
                       genericSignatureContextEvaluator.visitMethodSignature(
                           methodSignature, typeParameterContext),
                   invalidResult -> {
+                    // Only report info messages for methods that are kept explicitly. This is to
+                    // ensure we do not spam the developer with messages they can do nothing about.
+                    KeepMethodInfo methodInfo = appView.getKeepInfo().getMethodInfo(method, clazz);
                     if (appView.hasLiveness()
-                        && appView.getKeepInfo().getMethodInfo(method, clazz).isPinned()) {
+                        && !methodInfo.isShrinkingAllowed(appView.options())) {
+                      // If/when this no longer holds it should be moved into the condition.
+                      assert !methodInfo.isSignatureAttributeRemovalAllowed(appView.options());
                       appView
                           .options()
                           .reporter
@@ -173,8 +186,12 @@
                       genericSignatureContextEvaluator.visitFieldTypeSignature(
                           fieldSignature, typeParameterContext),
                   invalidResult -> {
-                    if (appView.hasLiveness()
-                        && appView.getKeepInfo().getFieldInfo(field, clazz).isPinned()) {
+                    KeepFieldInfo fieldInfo = appView.getKeepInfo().getFieldInfo(field, clazz);
+                    // Only report info messages for fields that are kept explicitly. This is to
+                    // ensure we do not spam the developer with messages they can do nothing about.
+                    if (appView.hasLiveness() && !fieldInfo.isShrinkingAllowed(appView.options())) {
+                      // If/when this no longer holds it should be moved into the condition.
+                      assert !fieldInfo.isSignatureAttributeRemovalAllowed(appView.options());
                       appView
                           .options()
                           .reporter
diff --git a/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java b/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java
index 59460b6..588ad23 100644
--- a/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java
+++ b/src/test/java/com/android/tools/r8/graph/genericsignature/GenericSignatureCorrectnessHelperTests.java
@@ -18,6 +18,7 @@
 import com.android.tools.r8.graph.GenericSignatureContextBuilder;
 import com.android.tools.r8.graph.GenericSignatureCorrectnessHelper;
 import com.android.tools.r8.graph.GenericSignatureCorrectnessHelper.SignatureEvaluationResult;
+import com.android.tools.r8.shaking.AppInfoWithLiveness;
 import com.android.tools.r8.shaking.ProguardConfiguration;
 import com.android.tools.r8.shaking.ProguardKeepAttributes;
 import com.android.tools.r8.transformers.ClassFileTransformer.MethodPredicate;
@@ -188,8 +189,8 @@
       Class<?> classToVerify,
       SignatureEvaluationResult expected)
       throws Exception {
-    AppView<AppInfoWithClassHierarchy> appView =
-        computeAppViewWithClassHierarchy(
+    AppView<AppInfoWithLiveness> appView =
+        computeAppViewWithLiveness(
             buildClasses(classes)
                 .addClassProgramData(transformations)
                 .addLibraryFile(ToolHelper.getJava8RuntimeJar())
