Raise an internal error if force inlining may not happen.

Bug: 74189420
Change-Id: I865a36fcc91968bb30548e692e4cb50f439e6c95
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 39f9f90..357de74 100644
--- a/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
+++ b/src/main/java/com/android/tools/r8/graph/DexEncodedMethod.java
@@ -24,6 +24,7 @@
 import com.android.tools.r8.dex.IndexedItemCollection;
 import com.android.tools.r8.dex.JumboStringRewriter;
 import com.android.tools.r8.dex.MixedSectionCollection;
+import com.android.tools.r8.errors.InternalCompilerError;
 import com.android.tools.r8.errors.Unreachable;
 import com.android.tools.r8.graph.AppInfo.ResolutionResult;
 import com.android.tools.r8.graph.ParameterUsagesInfo.ParameterUsage;
@@ -266,7 +267,11 @@
     }
     if (inliningReason == Reason.FORCE) {
       // Make sure we would be able to inline this normally.
-      assert isInliningCandidate(containerType, Reason.SIMPLE, appInfo);
+      if (!isInliningCandidate(containerType, Reason.SIMPLE, appInfo)) {
+        // If not, raise a flag, because some optimizations that depend on force inlining would
+        // silently produce an invalid code, which is worse than an internal error.
+        throw new InternalCompilerError("FORCE inlining on non-inlinable: " + toSourceString());
+      }
       return true;
     }
     // TODO(b/111080693): inlining candidate should satisfy all states if multiple states are there.