Enable R8 partial in EnumSwitchOldSyntaxTest
Fixes: b/405902452
Change-Id: I7e3943e87a8a8199c52a134dad97c7a4407022a1
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java b/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java
index 70e6ff9..474fbbf 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/LirConverter.java
@@ -265,10 +265,14 @@
GlobalSyntheticsStrategy.forNonSynthesizing(),
appView.appInfo().getClassToFeatureSplitMap());
AppView<AppInfo> d8AppView = AppView.createForD8(d8AppInfo);
+ d8AppView.setNamingLens(appView.getNamingLens());
DeadCodeRemover deadCodeRemover = new DeadCodeRemover(d8AppView);
CodeRewriterPassCollection codeRewriterPassCollection =
new CodeRewriterPassCollection(
- new StringSwitchRemover(d8AppView), new FilledNewArrayRewriter(d8AppView));
+ // Must run before DexItemBasedConstStringRemover.
+ new StringSwitchRemover(d8AppView),
+ new DexItemBasedConstStringRemover(d8AppView),
+ new FilledNewArrayRewriter(d8AppView));
ThreadUtils.processItems(
subCompilationConfiguration.getDexingOutputClasses(),
clazz ->
diff --git a/src/main/java/com/android/tools/r8/ir/conversion/passes/DexItemBasedConstStringRemover.java b/src/main/java/com/android/tools/r8/ir/conversion/passes/DexItemBasedConstStringRemover.java
index 15a4793..3e92dbf 100644
--- a/src/main/java/com/android/tools/r8/ir/conversion/passes/DexItemBasedConstStringRemover.java
+++ b/src/main/java/com/android/tools/r8/ir/conversion/passes/DexItemBasedConstStringRemover.java
@@ -3,7 +3,7 @@
// BSD-style license that can be found in the LICENSE file.
package com.android.tools.r8.ir.conversion.passes;
-import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
+import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexString;
import com.android.tools.r8.ir.code.DexItemBasedConstString;
@@ -12,9 +12,9 @@
import com.android.tools.r8.ir.conversion.MethodProcessor;
import com.android.tools.r8.ir.conversion.passes.result.CodeRewriterResult;
-public class DexItemBasedConstStringRemover extends CodeRewriterPass<AppInfoWithClassHierarchy> {
+public class DexItemBasedConstStringRemover extends CodeRewriterPass<AppInfo> {
- public DexItemBasedConstStringRemover(AppView<? extends AppInfoWithClassHierarchy> appView) {
+ public DexItemBasedConstStringRemover(AppView<?> appView) {
super(appView);
}
diff --git a/src/main/java/com/android/tools/r8/ir/synthetic/TypeSwitchSyntheticCfCodeProvider.java b/src/main/java/com/android/tools/r8/ir/synthetic/TypeSwitchSyntheticCfCodeProvider.java
index 2b7c39c..e30629b 100644
--- a/src/main/java/com/android/tools/r8/ir/synthetic/TypeSwitchSyntheticCfCodeProvider.java
+++ b/src/main/java/com/android/tools/r8/ir/synthetic/TypeSwitchSyntheticCfCodeProvider.java
@@ -196,7 +196,8 @@
assert enumFieldCache != null;
instructions.add(new CfStaticFieldRead(enumFieldCache));
instructions.add(new CfConstNumber(enumIndex.getAndIncrement(), ValueType.INT));
- if (appView.enableWholeProgramOptimizations()) {
+ if (appView.enableWholeProgramOptimizations()
+ || appView.options().partialSubCompilationConfiguration != null) {
instructions.add(
new CfDexItemBasedConstString(
type,
diff --git a/src/main/java/com/android/tools/r8/naming/dexitembasedstring/NameComputationInfo.java b/src/main/java/com/android/tools/r8/naming/dexitembasedstring/NameComputationInfo.java
index 9e30fef..41193e8 100644
--- a/src/main/java/com/android/tools/r8/naming/dexitembasedstring/NameComputationInfo.java
+++ b/src/main/java/com/android/tools/r8/naming/dexitembasedstring/NameComputationInfo.java
@@ -4,7 +4,6 @@
package com.android.tools.r8.naming.dexitembasedstring;
-import com.android.tools.r8.graph.AppInfoWithClassHierarchy;
import com.android.tools.r8.graph.AppView;
import com.android.tools.r8.graph.DexDefinitionSupplier;
import com.android.tools.r8.graph.DexReference;
@@ -23,8 +22,7 @@
RECORD_MISMATCH
}
- public final DexString computeNameFor(
- DexReference reference, AppView<? extends AppInfoWithClassHierarchy> appView) {
+ public final DexString computeNameFor(DexReference reference, AppView<?> appView) {
return computeNameFor(reference, appView, appView.getNamingLens());
}
diff --git a/src/test/java23/com/android/tools/r8/java23/switchpatternmatching/EnumSwitchOldSyntaxTest.java b/src/test/java23/com/android/tools/r8/java23/switchpatternmatching/EnumSwitchOldSyntaxTest.java
index d3e530b..2c14b4b 100644
--- a/src/test/java23/com/android/tools/r8/java23/switchpatternmatching/EnumSwitchOldSyntaxTest.java
+++ b/src/test/java23/com/android/tools/r8/java23/switchpatternmatching/EnumSwitchOldSyntaxTest.java
@@ -26,8 +26,7 @@
.withCfRuntimesStartingFromIncluding(CfVm.JDK23)
.withDexRuntimes()
.withAllApiLevelsAlsoForCf()
- // TODO(b/405902452(: Enable partial compilation.
- // .withPartialCompilation()
+ .withPartialCompilation()
.build();
}