Extend the supported LIR phase until second tree shaking

Bug: b/225838009
Change-Id: I16a06326186617c4308c94e068cb0bb6b3c36eb5
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 90f1dd2..080447c 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -544,6 +544,9 @@
       appView.setGraphLens(new AppliedGraphLens(appView));
       timing.end();
 
+      // TODO(b/225838009): Support tracing and building LIR in Enqueuer.
+      PrimaryR8IRConverter.finalizeLirToOutputFormat(appView, timing, executorService);
+
       if (options.shouldRerunEnqueuer()) {
         timing.begin("Post optimization code stripping");
         try {
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/PrimaryR8IRConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/PrimaryR8IRConverter.java
index 77cfdd8..93ce2a2 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/PrimaryR8IRConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/PrimaryR8IRConverter.java
@@ -45,11 +45,6 @@
     try {
       DexApplication application =
           internalOptimize(appView.withLiveness(), executorService).asDirect();
-
-      // TODO(b/225838009): Support rebuilding app info with LIR code.
-      //  (R8KotlinDataClassTest changes status if moved below app rebuild.)
-      PrimaryR8IRConverter.finalizeLirToOutputFormat(appView, timing, executorService);
-
       AppInfoWithClassHierarchy newAppInfo =
           appView.appInfo().rebuildWithClassHierarchy(previous -> application);
       appView.withClassHierarchy().setAppInfo(newAppInfo);
diff --git a/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java b/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java
index 0ff1942..0c4f1fd 100644
--- a/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java
+++ b/src/test/java/com/android/tools/r8/kotlin/R8KotlinDataClassTest.java
@@ -4,7 +4,7 @@
 
 package com.android.tools.r8.kotlin;
 
-
+import com.android.tools.r8.KotlinCompilerTool.KotlinCompilerVersion;
 import com.android.tools.r8.KotlinTestParameters;
 import com.android.tools.r8.TestParameters;
 import com.android.tools.r8.kotlin.TestKotlinClass.Visibility;
@@ -131,6 +131,15 @@
                     .addKeepRules(keepClassMethod(mainClassName, testMethodSignature))
                     .addOptionsModification(o -> o.testing.enableLir())
                     .addOptionsModification(disableClassInliner))
-        .inspect(inspector -> checkClassIsRemoved(inspector, TEST_DATA_CLASS.getClassName()));
+        .inspect(
+            inspector -> {
+              // This changes depending on when we dead-code eliminate.
+              if (kotlinParameters.is(KotlinCompilerVersion.KOTLINC_1_6_0)
+                  || testParameters.isDexRuntime()) {
+                checkClassIsRemoved(inspector, TEST_DATA_CLASS.getClassName());
+              } else {
+                checkClassIsKept(inspector, TEST_DATA_CLASS.getClassName());
+              }
+            });
   }
 }