Annotate synthetics in L8 cf-to-cf desugar build
Bug: 181846319
Change-Id: I0af2fba5f3f5426a137ea07c8b0b9616a84cd8d8
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index f12d33c..8470275 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -97,6 +97,8 @@
// Desugar to class file format and turn off switch optimizations, as the final
// compilation with D8 or R8 will do that.
options.cfToCfDesugar = true;
+ assert !options.forceAnnotateSynthetics;
+ options.forceAnnotateSynthetics = true;
assert options.enableSwitchRewriting;
options.enableSwitchRewriting = false;
assert options.enableStringSwitchConversion;
@@ -105,6 +107,7 @@
desugar(app, options, executorService);
options.cfToCfDesugar = false;
+ options.forceAnnotateSynthetics = false;
options.enableSwitchRewriting = true;
options.enableStringSwitchConversion = true;
});
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
index ed9d843..8f883ea 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticFinalization.java
@@ -453,10 +453,10 @@
private static boolean shouldAnnotateSynthetics(InternalOptions options) {
// Only intermediate builds have annotated synthetics to allow later sharing.
- // This is currently also disabled on CF to CF desugaring to avoid missing class references to
- // the annotated classes.
+ // This is currently also disabled on non-L8 CF to CF desugaring to avoid missing class
+ // references to the annotated classes.
// TODO(b/147485959): Find an alternative encoding for synthetics to avoid missing-class refs.
- return options.intermediate && !options.cfToCfDesugar;
+ return options.intermediate && (!options.cfToCfDesugar || options.forceAnnotateSynthetics);
}
private <T extends SyntheticDefinition<?, T, ?>>
diff --git a/src/main/java/com/android/tools/r8/utils/InternalOptions.java b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
index 961dd52..210ae9b 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -270,6 +270,7 @@
public boolean encodeChecksums = false;
public BiPredicate<String, Long> dexClassChecksumFilter = (name, checksum) -> true;
public boolean cfToCfDesugar = false;
+ public boolean forceAnnotateSynthetics = false;
public int callGraphLikelySpuriousCallEdgeThreshold = 50;