Version 0.1.19. Merge: Fix register hints code to work when register is revoked. CL: https://r8-review.googlesource.com/c/r8/+/8700 R=sgjesse@google.com Change-Id: Ia6ff5ff6f3de3f108e90e80501e57066ccb6c0af
diff --git a/src/main/java/com/android/tools/r8/D8.java b/src/main/java/com/android/tools/r8/D8.java index a3985a9..99ac5e2 100644 --- a/src/main/java/com/android/tools/r8/D8.java +++ b/src/main/java/com/android/tools/r8/D8.java
@@ -55,7 +55,7 @@ */ public final class D8 { - private static final String VERSION = "v0.1.18"; + private static final String VERSION = "v0.1.19"; private static final int STATUS_ERROR = 1; private D8() {}
diff --git a/src/main/java/com/android/tools/r8/GenerateMainDexList.java b/src/main/java/com/android/tools/r8/GenerateMainDexList.java index a90ee59..66415ec 100644 --- a/src/main/java/com/android/tools/r8/GenerateMainDexList.java +++ b/src/main/java/com/android/tools/r8/GenerateMainDexList.java
@@ -28,7 +28,7 @@ import java.util.stream.Collectors; public class GenerateMainDexList { - private static final String VERSION = "v0.1.18"; + private static final String VERSION = "v0.1.19"; private final Timing timing = new Timing("maindex"); private final InternalOptions options;
diff --git a/src/main/java/com/android/tools/r8/R8.java b/src/main/java/com/android/tools/r8/R8.java index dd47e37..0a16436 100644 --- a/src/main/java/com/android/tools/r8/R8.java +++ b/src/main/java/com/android/tools/r8/R8.java
@@ -71,7 +71,7 @@ public class R8 { - private static final String VERSION = "v0.1.18"; + private static final String VERSION = "v0.1.19"; private final Timing timing = new Timing("R8"); private final InternalOptions options;
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 0f43ee5..d99e854 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
@@ -1274,6 +1274,12 @@ // Attempt to allocate the hint register to the unhandled intervals. private boolean tryHint(LiveIntervals unhandledInterval, int registerConstraint, RegisterPositions freePositions, boolean needsRegisterPair, int register) { + // At some point after the hint has been added, the register allocator can + // decide to redo allocation for the hint interval. In that case, the hint will be + // reset to NO_REGISTER and provides no hinting info. + if (register == NO_REGISTER) { + return false; + } if (register + (needsRegisterPair ? 1 : 0) <= registerConstraint) { int freePosition = freePositions.get(register); if (needsRegisterPair) {