Revert "[KeepAnno] Add tracing of inlining positions"

Revert submission 89581

Reason for revert: Broke build, threading module when missing.

Reverted changes: /q/submissionid:89581

Change-Id: Ic91a7809bc455ea5db6c6a6963e67832342e348e
diff --git a/src/main/java/com/android/tools/r8/graph/UseRegistry.java b/src/main/java/com/android/tools/r8/graph/UseRegistry.java
index 6238dd5..d7d1b0b 100644
--- a/src/main/java/com/android/tools/r8/graph/UseRegistry.java
+++ b/src/main/java/com/android/tools/r8/graph/UseRegistry.java
@@ -9,7 +9,6 @@
 import com.android.tools.r8.graph.bytecodemetadata.BytecodeInstructionMetadata;
 import com.android.tools.r8.graph.lens.GraphLens;
 import com.android.tools.r8.ir.code.InvokeType;
-import com.android.tools.r8.ir.code.Position;
 import com.android.tools.r8.utils.TraversalContinuation;
 import java.util.ListIterator;
 
@@ -61,10 +60,6 @@
     return continuation;
   }
 
-  public void registerInliningPosition(Position position) {
-    assert position.hasCallerPosition();
-  }
-
   public void registerRecordFieldValues(DexField[] fields) {
     registerTypeReference(appView.dexItemFactory().objectArrayType);
   }
diff --git a/src/main/java/com/android/tools/r8/lightir/LirCode.java b/src/main/java/com/android/tools/r8/lightir/LirCode.java
index 5090346..6f93b21 100644
--- a/src/main/java/com/android/tools/r8/lightir/LirCode.java
+++ b/src/main/java/com/android/tools/r8/lightir/LirCode.java
@@ -585,11 +585,6 @@
   @Override
   public void registerCodeReferences(ProgramMethod method, UseRegistry registry) {
     assert registry.getTraversalContinuation().shouldContinue();
-    for (PositionEntry positionEntry : positionTable) {
-      if (positionEntry instanceof StructuredPositionEntry) {
-        registry.registerInliningPosition(((StructuredPositionEntry) positionEntry).position);
-      }
-    }
     LirUseRegistryCallback<EV> registryCallbacks = new LirUseRegistryCallback<>(this, registry);
     for (LirInstructionView view : this) {
       if (metadataMap != null) {
diff --git a/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java b/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java
index dd975f7..736f285 100644
--- a/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java
+++ b/src/main/java/com/android/tools/r8/shaking/DefaultEnqueuerUseRegistry.java
@@ -19,7 +19,6 @@
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexType;
 import com.android.tools.r8.graph.ProgramMethod;
-import com.android.tools.r8.ir.code.Position;
 import java.util.ListIterator;
 
 public class DefaultEnqueuerUseRegistry extends ComputeApiLevelUseRegistry {
@@ -46,12 +45,6 @@
   }
 
   @Override
-  public void registerInliningPosition(Position position) {
-    super.registerInliningPosition(position);
-    enqueuer.traceMethodPosition(position, getContext());
-  }
-
-  @Override
   public void registerInitClass(DexType clazz) {
     super.registerInitClass(clazz);
     enqueuer.traceInitClass(clazz, getContext());
diff --git a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
index 1d2e7b8..0dfda11 100644
--- a/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
+++ b/src/main/java/com/android/tools/r8/shaking/Enqueuer.java
@@ -131,6 +131,7 @@
 import com.android.tools.r8.naming.identifiernamestring.IdentifierNameStringLookupResult;
 import com.android.tools.r8.naming.identifiernamestring.IdentifierNameStringTypeLookupResult;
 import com.android.tools.r8.origin.Origin;
+import com.android.tools.r8.position.Position;
 import com.android.tools.r8.profile.rewriting.ProfileCollectionAdditions;
 import com.android.tools.r8.shaking.AnnotationMatchResult.MatchedAnnotation;
 import com.android.tools.r8.shaking.DelayedRootSetActionItem.InterfaceMethodSyntheticBridgeAction;
@@ -314,10 +315,6 @@
    */
   private final SetWithReportedReason<DexProgramClass> liveTypes = new SetWithReportedReason<>();
 
-  /** Set of effectively live items from the original program. */
-  // TODO(b/323816623): Add reason tracking.
-  private final Set<DexReference> effectivelyLiveOriginalReferences = SetUtils.newIdentityHashSet();
-
   /** Set of interfaces that have been transitioned to being instantiated indirectly. */
   private final Set<DexProgramClass> interfacesTransitionedToInstantiated =
       Sets.newIdentityHashSet();
@@ -1634,27 +1631,6 @@
         analysis -> analysis.traceInvokeVirtual(invokedMethod, resolutionResult, context));
   }
 
-  void traceMethodPosition(com.android.tools.r8.ir.code.Position position, ProgramMethod context) {
-    if (!options.testing.enableExtractedKeepAnnotations) {
-      // Currently inlining is only intended for the evaluation of keep annotation edges.
-      return;
-    }
-    while (position.hasCallerPosition()) {
-      // Any inner position should not be non-synthetic user methods.
-      assert !position.isD8R8Synthesized();
-      DexMethod method = position.getMethod();
-      // TODO(b/325014359): It might be reasonable to reduce this map size by tracking which methods
-      //  actually are used in preconditions.
-      if (effectivelyLiveOriginalReferences.add(method)) {
-        effectivelyLiveOriginalReferences.add(method.getHolderType());
-      }
-      position = position.getCallerPosition();
-    }
-    // The outer-most position should be equal to the context.
-    // No need to trace this as the method is already traced since it is invoked.
-    assert context.getReference().isIdenticalTo(position.getMethod());
-  }
-
   void traceNewInstance(DexType type, ProgramMethod context) {
     boolean skipTracing =
         registerDeferredActionForDeadProtoBuilder(
@@ -3426,35 +3402,6 @@
     return liveTypes.contains(clazz);
   }
 
-  public boolean isEffectivelyLive(DexProgramClass clazz) {
-    if (isTypeLive(clazz)) {
-      return true;
-    }
-    if (mode.isInitialTreeShaking()) {
-      return false;
-    }
-    // TODO(b/325014359): Replace this by value tracking in instructions (akin to resource values).
-    for (DexEncodedField field : clazz.fields()) {
-      if (field.getOptimizationInfo().valueHasBeenPropagated()) {
-        return true;
-      }
-    }
-    // TODO(b/325014359): Replace this by value or position tracking.
-    //  We need to be careful not to throw away such values/positions.
-    for (DexEncodedMethod method : clazz.methods()) {
-      if (method.getOptimizationInfo().returnValueHasBeenPropagated()) {
-        return true;
-      }
-    }
-    return false;
-  }
-
-  public boolean isOriginalReferenceEffectivelyLive(DexReference reference) {
-    // The effectively-live original set contains types, fields and methods witnessed by
-    // instructions, such as method inlining positions.
-    return effectivelyLiveOriginalReferences.contains(reference);
-  }
-
   public boolean isNonProgramTypeLive(DexClass clazz) {
     assert !clazz.isProgramClass();
     return liveNonProgramTypes.contains(clazz);
@@ -4724,7 +4671,7 @@
                     context,
                     new InterfaceDesugarMissingTypeDiagnostic(
                         context.getOrigin(),
-                        com.android.tools.r8.position.Position.UNKNOWN,
+                        Position.UNKNOWN,
                         missing.asClassReference(),
                         context.getType().asClassReference(),
                         null)));
diff --git a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
index 32ec312..933cc33 100644
--- a/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
+++ b/src/main/java/com/android/tools/r8/shaking/IfRuleEvaluator.java
@@ -12,6 +12,7 @@
 import com.android.tools.r8.graph.DexClassAndMethod;
 import com.android.tools.r8.graph.DexDefinition;
 import com.android.tools.r8.graph.DexEncodedField;
+import com.android.tools.r8.graph.DexEncodedMethod;
 import com.android.tools.r8.graph.DexItemFactory;
 import com.android.tools.r8.graph.DexProgramClass;
 import com.android.tools.r8.graph.DexReference;
@@ -177,7 +178,23 @@
   }
 
   private boolean isEffectivelyLive(DexProgramClass clazz) {
-    return enqueuer.isEffectivelyLive(clazz);
+    // A type is effectively live if (1) it is truly live, (2) the value of one of its fields has
+    // been inlined by the member value propagation, or (3) the return value of one of its methods
+    // has been forwarded by the member value propagation.
+    if (enqueuer.isTypeLive(clazz)) {
+      return true;
+    }
+    for (DexEncodedField field : clazz.fields()) {
+      if (field.getOptimizationInfo().valueHasBeenPropagated()) {
+        return true;
+      }
+    }
+    for (DexEncodedMethod method : clazz.methods()) {
+      if (method.getOptimizationInfo().returnValueHasBeenPropagated()) {
+        return true;
+      }
+    }
+    return false;
   }
 
   /** Determines if {@param clazz} satisfies the given if-rule class specification. */