diff --git a/src/main/java/com/android/tools/r8/L8Command.java b/src/main/java/com/android/tools/r8/L8Command.java
index b552bb2..4c235d9 100644
--- a/src/main/java/com/android/tools/r8/L8Command.java
+++ b/src/main/java/com/android/tools/r8/L8Command.java
@@ -21,6 +21,7 @@
 import com.android.tools.r8.utils.Reporter;
 import com.android.tools.r8.utils.StringDiagnostic;
 import com.android.tools.r8.utils.ThreadUtils;
+import com.google.common.collect.ImmutableList;
 import java.nio.file.Path;
 import java.util.ArrayList;
 import java.util.Collection;
@@ -315,6 +316,9 @@
         }
         r8Builder.addProguardConfiguration(
             libraryConfiguration.getExtraKeepRules(), Origin.unknown());
+        // TODO(b/180903899): Remove rule when -dontwarn sun.misc.Unsafe is part of config.
+        r8Builder.addProguardConfiguration(
+            ImmutableList.of("-dontwarn sun.misc.Unsafe"), Origin.unknown());
         r8Builder.addProguardConfigurationFiles(proguardConfigFiles);
         r8Builder.setDisableDesugaring(true);
         r8Builder.skipDump();
diff --git a/src/main/java/com/android/tools/r8/shaking/MissingClasses.java b/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
index 03c022e..ba25312 100644
--- a/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
+++ b/src/main/java/com/android/tools/r8/shaking/MissingClasses.java
@@ -73,10 +73,6 @@
     // if the same type is in newMissingClasses in which case it is reported regardless.
     private final Set<DexType> newIgnoredMissingClasses = Sets.newIdentityHashSet();
 
-    private Builder() {
-      this(Sets.newIdentityHashSet());
-    }
-
     private Builder(Set<DexType> alreadyMissingClasses) {
       this.alreadyMissingClasses = alreadyMissingClasses;
     }
@@ -133,9 +129,7 @@
           getMissingClassesToBeReported(appView, synthesizingContextOracle);
       if (!missingClassesToBeReported.isEmpty()) {
         MissingDefinitionsDiagnostic diagnostic = createDiagnostic(missingClassesToBeReported);
-        InternalOptions options = appView.options();
-        // TODO(b/180903899): Remove L8 special handling when -dontwarn sun.misc.Unsafe is in place.
-        if (options.ignoreMissingClasses || options.isDesugaredLibraryCompilation()) {
+        if (appView.options().ignoreMissingClasses) {
           appView.reporter().warning(diagnostic);
         } else {
           throw appView.reporter().fatalError(diagnostic);
