Move calls to disableGlobalOptimization into commands

Change-Id: Id02e4064d7792f9df6b0980e4c6711c07edcd9c3
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java
index d0a210f..b54e34d 100644
--- a/src/main/java/com/android/tools/r8/D8.java
+++ b/src/main/java/com/android/tools/r8/D8.java
@@ -190,9 +190,6 @@
     }
     Timing timing = Timing.create("D8", options);
     try {
-      // Disable global optimizations.
-      options.disableGlobalOptimizations();
-
       // Synthetic assertion to check that testing assertions works and can be enabled.
       assert forTesting(options, () -> !options.testing.testEnableTestAssertions);
 
diff --git a/src/main/java/com/android/tools/r8/D8Command.java b/src/main/java/com/android/tools/r8/D8Command.java
index bf3cf6f..583c6bb 100644
--- a/src/main/java/com/android/tools/r8/D8Command.java
+++ b/src/main/java/com/android/tools/r8/D8Command.java
@@ -488,13 +488,6 @@
     assert !internal.outline.enabled;
     assert !internal.enableTreeShakingOfLibraryMethodOverrides;
 
-    // TODO(b/187675788): Enable class merging for synthetics in D8.
-    HorizontalClassMergerOptions horizontalClassMergerOptions =
-        internal.horizontalClassMergerOptions();
-    horizontalClassMergerOptions.disable();
-    assert !horizontalClassMergerOptions.isEnabled(HorizontalClassMerger.Mode.INITIAL);
-    assert !horizontalClassMergerOptions.isEnabled(HorizontalClassMerger.Mode.FINAL);
-
     internal.desugarState = getDesugarState();
     internal.encodeChecksums = getIncludeClassesChecksum();
     internal.dexClassChecksumFilter = getDexClassChecksumFilter();
@@ -520,6 +513,16 @@
       internal.threadCount = getThreadCount();
     }
 
+    // Disable global optimizations.
+    internal.disableGlobalOptimizations();
+
+    // TODO(b/187675788): Enable class merging for synthetics in D8.
+    HorizontalClassMergerOptions horizontalClassMergerOptions =
+        internal.horizontalClassMergerOptions();
+    horizontalClassMergerOptions.disable();
+    assert !horizontalClassMergerOptions.isEnabled(HorizontalClassMerger.Mode.INITIAL);
+    assert !horizontalClassMergerOptions.isEnabled(HorizontalClassMerger.Mode.FINAL);
+
     internal.setDumpInputFlags(getDumpInputFlags(), skipDump);
     internal.dumpOptions = dumpOptions();
 
diff --git a/src/main/java/com/android/tools/r8/L8.java b/src/main/java/com/android/tools/r8/L8.java
index 9d25f47..430d811 100644
--- a/src/main/java/com/android/tools/r8/L8.java
+++ b/src/main/java/com/android/tools/r8/L8.java
@@ -128,8 +128,6 @@
     Timing timing = Timing.create("L8 desugaring", options);
     assert options.cfToCfDesugar;
     try {
-      // Disable global optimizations.
-      options.disableGlobalOptimizations();
       // Since L8 Cf representation is temporary, just disable long running back-end optimizations
       // on it.
       options.enableLoadStoreOptimization = false;
diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index 2abd98f..f4bb9c2 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -214,6 +214,9 @@
       internal.threadCount = getThreadCount();
     }
 
+    // Disable global optimizations.
+    internal.disableGlobalOptimizations();
+
     internal.setDumpInputFlags(getDumpInputFlags(), false);
     internal.dumpOptions = dumpOptions();
 
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 a11e201..672e322 100644
--- a/src/main/java/com/android/tools/r8/utils/InternalOptions.java
+++ b/src/main/java/com/android/tools/r8/utils/InternalOptions.java
@@ -178,7 +178,7 @@
     enableMinification = false;
   }
 
-  // Constructor for D8.
+  // Constructor for D8, L8, Lint and other non-shrinkers.
   public InternalOptions(DexItemFactory factory, Reporter reporter) {
     assert reporter != null;
     assert factory != null;