Throw compilation error when getting register of value without register
Bug: 124543737
Change-Id: Iee6fca4e848365f1ec19dffc08d2881c8dd5d92b
diff --git a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
index 51f9de0..c0008dc 100644
--- a/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
+++ b/src/main/java/com/android/tools/r8/ir/regalloc/LinearScanRegisterAllocator.java
@@ -9,6 +9,7 @@
import com.android.tools.r8.cf.FixedLocalValue;
import com.android.tools.r8.dex.Constants;
+import com.android.tools.r8.errors.CompilationError;
import com.android.tools.r8.graph.AppInfo;
import com.android.tools.r8.graph.DebugLocalInfo;
import com.android.tools.r8.ir.analysis.type.TypeLatticeElement;
@@ -618,6 +619,13 @@
return realRegisterNumberFromAllocated(value.asFixedRegisterValue().getRegister());
}
LiveIntervals intervals = value.getLiveIntervals();
+ if (intervals == null) {
+ throw new CompilationError(
+ "Unexpected attempt to get register for a value without a register in method `"
+ + code.method.method.toSourceString()
+ + "`.",
+ code.origin);
+ }
if (intervals.hasSplits()) {
intervals = intervals.getSplitCovering(instructionNumber);
}