Support for setting optimization info for synthesized methods

Change-Id: I1b24de0bbc5630497f341891026a914a340c505b
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 b4a382f..82f09f8 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -1675,6 +1675,11 @@
       return this;
     }
 
+    public Builder setOptimizationInfo(MethodOptimizationInfo optimizationInfo) {
+      this.optimizationInfo = optimizationInfo;
+      return this;
+    }
+
     public Builder modifyOptimizationInfo(
         BiConsumer<DexEncodedMethod, MutableMethodOptimizationInfo> consumer) {
       return addBuildConsumer(
diff --git a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
index d81a03f..56a9d20 100644
--- a/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
+++ b/src/main/java/com/android/tools/r8/synthesis/SyntheticMethodBuilder.java
@@ -17,6 +17,8 @@
 import com.android.tools.r8.graph.GenericSignature.MethodTypeSignature;
 import com.android.tools.r8.graph.MethodAccessFlags;
 import com.android.tools.r8.graph.ParameterAnnotationsList;
+import com.android.tools.r8.ir.optimize.info.DefaultMethodOptimizationInfo;
+import com.android.tools.r8.ir.optimize.info.MethodOptimizationInfo;
 import com.android.tools.r8.synthesis.SyntheticNaming.SyntheticKind;
 import com.android.tools.r8.utils.AndroidApiLevel;
 
@@ -39,6 +41,7 @@
   private ParameterAnnotationsList parameterAnnotationsList = ParameterAnnotationsList.empty();
   private AndroidApiLevel apiLevelForDefinition = NOT_SET;
   private AndroidApiLevel apiLevelForCode = NOT_SET;
+  private MethodOptimizationInfo optimizationInfo = DefaultMethodOptimizationInfo.getInstance();
 
   private boolean checkAndroidApiLevels = true;
 
@@ -65,6 +68,11 @@
     return this;
   }
 
+  public SyntheticMethodBuilder setOptimizationInfo(MethodOptimizationInfo optimizationInfo) {
+    this.optimizationInfo = optimizationInfo;
+    return this;
+  }
+
   public SyntheticMethodBuilder setProto(DexProto proto) {
     this.proto = proto;
     return this;
@@ -132,6 +140,7 @@
             .setClassFileVersion(classFileVersion)
             .setApiLevelForDefinition(apiLevelForDefinition)
             .setApiLevelForCode(apiLevelForCode)
+            .setOptimizationInfo(optimizationInfo)
             .applyIf(!checkAndroidApiLevels, DexEncodedMethod.Builder::disableAndroidApiLevelCheck)
             .build();
     assert isValidSyntheticMethod(method, syntheticKind);