Revert "Reland "Allow inlining when the optimize flag is set"""

This reverts commit 1f2e116731aaf69474e9408a6e70763904c74527.

Reason for revert: jctf

Change-Id: I5bcbe7ac19660df2401d7b8019ce72fa6f63ad46
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/CallGraphBuilderBase.java b/src/main/java/com/android/tools/r8/ir/conversion/CallGraphBuilderBase.java
index 2be47ca..1e5a344 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/CallGraphBuilderBase.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/CallGraphBuilderBase.java
@@ -144,11 +144,10 @@
         // We don't care about calls to native methods.
         return;
       }
-      if (!appView.getKeepInfo(callee).isInliningAllowed(appView.options())) {
-        // Since the callee is kept and optimizations are disallowed, we cannot inline it into the
-        // caller, and we also cannot collect any optimization info for the method. Therefore, we
-        // drop the call edge to reduce the total number of call graph edges, which should lead to
-        // fewer call graph cycles.
+      if (appView.appInfo().isPinned(callee.getReference())) {
+        // Since the callee is kept, we cannot inline it into the caller, and we also cannot collect
+        // any optimization info for the method. Therefore, we drop the call edge to reduce the
+        // total number of call graph edges, which should lead to fewer call graph cycles.
         return;
       }
       getOrCreateNode(callee).addCallerConcurrently(currentMethod, likelySpuriousCallEdge);
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
index 5bde78e..0235660 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/IRConverter.java
@@ -1288,7 +1288,6 @@
           .libraryMethodOptimizer()
           .optimize(code, feedback, methodProcessor, methodProcessingContext);
       timing.end();
-      previous = printMethod(code, "IR after class library method optimizer (SSA)", previous);
       assert code.isConsistentSSA();
     }
 
@@ -1299,7 +1298,6 @@
       timing.begin("Devirtualize invoke interface");
       devirtualizer.devirtualizeInvokeInterface(code);
       timing.end();
-      previous = printMethod(code, "IR after devirtualizer (SSA)", previous);
     }
 
     assert code.verifyTypes(appView);
@@ -1376,14 +1374,12 @@
       timing.begin("Rewrite throw NPE");
       codeRewriter.rewriteThrowNullPointerException(code);
       timing.end();
-      previous = printMethod(code, "IR after rewrite throw null (SSA)", previous);
     }
 
     timing.begin("Optimize class initializers");
     ClassInitializerDefaultsResult classInitializerDefaultsResult =
         classInitializerDefaultsOptimization.optimize(code, feedback);
     timing.end();
-    previous = printMethod(code, "IR after class initializer optimisation (SSA)", previous);
 
     if (Log.ENABLED) {
       Log.debug(getClass(), "Intermediate (SSA) flow graph for %s:\n%s",
@@ -1395,7 +1391,7 @@
     deadCodeRemover.run(code, timing);
     assert code.isConsistentSSA();
 
-    previous = printMethod(code, "IR after dead code removal (SSA)", previous);
+    previous = printMethod(code, "IR after lambda desugaring (SSA)", previous);
 
     assert code.verifyTypes(appView);
 
@@ -1576,7 +1572,7 @@
       timing.end();
     }
 
-    if (appView.getKeepInfo(code.context()).isPinned(options)) {
+    if (appView.getKeepInfo().getMethodInfo(code.context()).isPinned(options)) {
       return;
     }
 
@@ -1698,7 +1694,8 @@
         || definition.getOptimizationInfo().isReachabilitySensitive()) {
       return false;
     }
-    if (!appView.getKeepInfo(method).isInliningAllowed(options)) {
+    if (appView.appInfo().hasLiveness()
+        && appView.appInfo().withLiveness().isPinned(method.getReference())) {
       return false;
     }
     return true;
diff --git a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
index 7bf0e38..0ddc915 100644
--- a/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
+++ b/src/main/java/com/android/tools/r8/ir/optimize/Inliner.java
@@ -118,7 +118,7 @@
       WhyAreYouNotInliningReporter whyAreYouNotInliningReporter) {
     AppInfoWithLiveness appInfo = appView.appInfo();
     DexMethod singleTargetReference = singleTarget.getReference();
-    if (!appView.getKeepInfo(singleTarget).isInliningAllowed(appView.options())) {
+    if (appInfo.isPinned(singleTargetReference)) {
       whyAreYouNotInliningReporter.reportPinned();
       return true;
     }
diff --git a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
index 242a08c..a46bf38 100644
--- a/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
+++ b/src/main/java/com/android/tools/r8/shaking/AppInfoWithLiveness.java
@@ -937,8 +937,7 @@
     if (!options().enableValuePropagation || neverPropagateValue.contains(method)) {
       return false;
     }
-    if (!method.getReturnType().isAlwaysNull(this)
-        && !getKeepInfo().getMethodInfo(method, this).isInliningAllowed(options())) {
+    if (isPinned(method) && !method.getReturnType().isAlwaysNull(this)) {
       return false;
     }
     return true;
@@ -1320,11 +1319,7 @@
       if (refinedReceiverClass.isProgramClass()) {
         DexClassAndMethod clazzAndMethod =
             resolution.lookupVirtualDispatchTarget(refinedReceiverClass.asProgramClass(), this);
-        if (clazzAndMethod == null
-            || (clazzAndMethod.isProgramMethod()
-                && !getKeepInfo()
-                    .getMethodInfo(clazzAndMethod.asProgramMethod())
-                    .isOptimizationAllowed(options()))) {
+        if (clazzAndMethod == null || isPinned(clazzAndMethod.getDefinition().getReference())) {
           // TODO(b/150640456): We should maybe only consider program methods.
           return DexEncodedMethod.SENTINEL;
         }
diff --git a/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java b/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java
index 79fac0a..dd4226c 100644
--- a/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java
+++ b/src/main/java/com/android/tools/r8/shaking/KeepMethodInfo.java
@@ -54,10 +54,6 @@
     return this.equals(bottom());
   }
 
-  public boolean isInliningAllowed(GlobalKeepInfoConfiguration configuration) {
-    return isOptimizationAllowed(configuration);
-  }
-
   public static class Builder extends KeepInfo.Builder<Builder, KeepMethodInfo> {
 
     private Builder() {
diff --git a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
index 7a05fc7..2af9e9a 100644
--- a/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
+++ b/src/test/java/com/android/tools/r8/R8RunArtTestsTest.java
@@ -792,13 +792,6 @@
                   TestCondition.tools(DexTool.DX),
                   TestCondition.compilers(CompilerUnderTest.D8),
                   TestCondition.runtimes(DexVm.Version.V4_0_4)))
-          // TODO(b/199142666): Reenable after we fix R8 to not inline into methods with invalid
-          // calls.
-          .put(
-              "077-method-override",
-              TestCondition.match(
-                  TestCondition.compilers(CompilerUnderTest.R8),
-                  TestCondition.runtimes(DexVm.Version.V4_0_4, DexVm.Version.V4_4_4)))
           .build();
 
   // Tests where the output of R8/D8 runs in Art but produces different output than the expected.txt
diff --git a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaInStacktraceTest.java b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaInStacktraceTest.java
index 31f87d9..640796d 100644
--- a/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaInStacktraceTest.java
+++ b/src/test/java/com/android/tools/r8/desugar/lambdas/LambdaInStacktraceTest.java
@@ -102,7 +102,6 @@
             .addKeepAttributeSourceFile()
             .addKeepRules("-renamesourcefileattribute SourceFile")
             .noTreeShaking()
-            .addDontOptimize()
             .run(parameters.getRuntime(), TestRunner.class, Boolean.toString(isDalvik))
             .assertSuccess()
             .getStdOut();
diff --git a/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java b/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java
deleted file mode 100644
index 0c0bac6..0000000
--- a/src/test/java/com/android/tools/r8/ir/optimize/inliner/InliningOptimize.java
+++ /dev/null
@@ -1,47 +0,0 @@
-// Copyright (c) 2021, the R8 project authors. Please see the AUTHORS file
-// for details. All rights reserved. Use of this source code is governed by a
-// BSD-style license that can be found in the LICENSE file.
-package com.android.tools.r8.ir.optimize.inliner;
-
-import static org.junit.Assert.assertFalse;
-
-import com.android.tools.r8.TestBase;
-import com.android.tools.r8.utils.codeinspector.InstructionSubject;
-import org.junit.Test;
-
-class Foobar {
-  public static void main(String[] args) {
-    System.out.println("Value: " + (new Bar()).returnPlusConstant(42));
-  }
-}
-
-class Bar {
-  public int returnPlusConstant(int value) {
-    return value + 42;
-  }
-}
-
-public class InliningOptimize extends TestBase {
-
-  @Test
-  public void test() throws Exception {
-    testForR8(Backend.DEX)
-        .addProgramClasses(Bar.class, Foobar.class)
-        .addKeepRules("-keep,allowoptimization class ** {\n" + "*;\n" + "}")
-        .compile()
-        .inspect(
-            inspector -> {
-              inspector
-                  .clazz(Foobar.class)
-                  .mainMethod()
-                  .iterateInstructions(InstructionSubject::isInvoke)
-                  .forEachRemaining(
-                      invoke -> {
-                        assertFalse(
-                            invoke.getMethod().name.toString().contains("returnPlusConstant"));
-                      });
-            })
-        .run(Foobar.class)
-        .assertSuccessWithOutputLines("Value: 84");
-  }
-}
diff --git a/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java b/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java
index 42cd647..bcea2fe 100644
--- a/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java
+++ b/src/test/java/com/android/tools/r8/maindexlist/MainDexTracingTest.java
@@ -391,7 +391,6 @@
         .setMinApi(minSdk)
         .noMinification()
         .noTreeShaking()
-        .addDontOptimize()
         .setMainDexListConsumer(ToolHelper.consumeString(r8MainDexListOutput::set))
         .allowDiagnosticMessages()
         .compileWithExpectedDiagnostics(
diff --git a/src/test/java/com/android/tools/r8/retrace/RetraceLambdaTest.java b/src/test/java/com/android/tools/r8/retrace/RetraceLambdaTest.java
index d68447d..252dcc5 100644
--- a/src/test/java/com/android/tools/r8/retrace/RetraceLambdaTest.java
+++ b/src/test/java/com/android/tools/r8/retrace/RetraceLambdaTest.java
@@ -105,7 +105,6 @@
         .addKeepMainRule(Main.class)
         .addKeepPackageNamesRule(getClass().getPackage())
         .noTreeShaking()
-        .addDontOptimize()
         .addKeepAttributeSourceFile()
         .addKeepAttributeLineNumberTable()
         .setMinApi(parameters.getApiLevel())
diff --git a/src/test/java/com/android/tools/r8/smali/OutlineTest.java b/src/test/java/com/android/tools/r8/smali/OutlineTest.java
index c9d30fd..21501d0 100644
--- a/src/test/java/com/android/tools/r8/smali/OutlineTest.java
+++ b/src/test/java/com/android/tools/r8/smali/OutlineTest.java
@@ -85,8 +85,6 @@
     return options -> {
       // Disable inlining to make sure that code looks as expected.
       options.enableInlining = false;
-      // Disable the devirtulizer to not remove the super calls
-      options.enableDevirtualization = false;
       // Disable string concatenation optimization to not bother outlining of StringBuilder usage.
       options.enableStringConcatenationOptimization = false;
       // Also apply outline options.