Propagate library-override information for non-live methods
Change-Id: I0f0db184d12932bd9368a669362e7d358cdeb2e5
diff --git a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
index 89b608e..0d2dc1b 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -846,6 +846,7 @@
assert !accessFlags.isStatic();
return builder(this)
.modifyAccessFlags(MethodAccessFlags::setAbstract)
+ .setIsLibraryMethodOverrideIfKnown(isLibraryMethodOverride())
.unsetCode()
.addBuildConsumer(
method -> OptimizationFeedbackSimple.getInstance().unsetBridgeInfo(method))
@@ -1490,6 +1491,19 @@
return this;
}
+ public Builder setIsLibraryMethodOverrideIf(
+ boolean condition, OptionalBool isLibraryMethodOverride) {
+ if (condition) {
+ return setIsLibraryMethodOverride(isLibraryMethodOverride);
+ }
+ return this;
+ }
+
+ public Builder setIsLibraryMethodOverrideIfKnown(OptionalBool isLibraryMethodOverride) {
+ return setIsLibraryMethodOverrideIf(
+ !isLibraryMethodOverride.isUnknown(), isLibraryMethodOverride);
+ }
+
public Builder setParameterAnnotations(ParameterAnnotationsList parameterAnnotations) {
this.parameterAnnotations = parameterAnnotations;
return this;