Run ProguardMapApplier after MemberRebindingAnalysis
Running ProguardMapApplier prior to MemberRebindingAnalysis causes the following tests to fail:
- com.android.tools.r8.naming.ApplyMappingTest > test044_obfuscate_and_apply
- com.android.tools.r8.naming.ApplyMappingTest > test044_apply
- com.android.tools.r8.jdwp.RunJdwpTests > testMethod_LineTableTest_Java
- com.android.tools.r8.jdwp.RunJdwpTests > testExtra_LineTableDuplicatesTest_Java
Change-Id: I0b2a6a6a0b4c98d139e4cbacd05e3c0050d8e222
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java
index 484bfe8..3239dbe 100644
--- a/src/main/java/com/android/tools/r8/R8.java
+++ b/src/main/java/com/android/tools/r8/R8.java
@@ -331,14 +331,6 @@
GraphLense graphLense = GraphLense.getIdentityLense();
if (appInfo.hasLiveness()) {
- if (options.proguardConfiguration.hasApplyMappingFile()) {
- SeedMapper seedMapper =
- SeedMapper.seedMapperFromFile(options.proguardConfiguration.getApplyMappingFile());
- timing.begin("apply-mapping");
- graphLense =
- new ProguardMapApplier(appInfo.withLiveness(), graphLense, seedMapper).run(timing);
- timing.end();
- }
graphLense = new MemberRebindingAnalysis(appInfo.withLiveness(), graphLense).run();
// Class merging requires inlining.
if (options.enableClassMerging && options.enableInlining) {
@@ -351,6 +343,14 @@
appInfo = appInfo.withLiveness()
.prunedCopyFrom(application, classMerger.getRemovedClasses());
}
+ if (options.proguardConfiguration.hasApplyMappingFile()) {
+ SeedMapper seedMapper =
+ SeedMapper.seedMapperFromFile(options.proguardConfiguration.getApplyMappingFile());
+ timing.begin("apply-mapping");
+ graphLense =
+ new ProguardMapApplier(appInfo.withLiveness(), graphLense, seedMapper).run(timing);
+ timing.end();
+ }
application = application.asDirect().rewrittenWithLense(graphLense);
appInfo = appInfo.withLiveness().rewrittenWithLense(application.asDirect(), graphLense);
// Collect switch maps and ordinals maps.