Only run MoveSorter once per register allocation

Fixes: b/409506545
Change-Id: I992789d404c8a7048c783f5a47c23ff345b1c3c4
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 b091a88..6803b23 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
@@ -874,7 +874,13 @@
         minimumRequiredRegisters <= Constants.U4BIT_MAX
             ? ArgumentReuseMode.ALLOW_ARGUMENT_REUSE_U4BIT
             : ArgumentReuseMode.ALLOW_ARGUMENT_REUSE_U8BIT;
-    performAllocation(initialMode, false);
+    ArgumentReuseMode result = performAllocation(initialMode, false);
+
+    assert !result.is4Bit() || highestUsedRegister() <= Constants.U4BIT_MAX;
+    assert !result.is8Bit() || highestUsedRegister() <= Constants.U8BIT_MAX;
+    assert !result.is16Bit() || highestUsedRegister() <= Constants.U16BIT_MAX;
+
+    new MoveSorter(code).sortMovesForSuffixSharing();
   }
 
   private ArgumentReuseMode retryAllocation(ArgumentReuseMode mode) {
@@ -1000,13 +1006,6 @@
         assert highestUsedRegister() <= Constants.U16BIT_MAX;
         break;
     }
-
-    assert !result.is4Bit() || highestUsedRegister() <= Constants.U4BIT_MAX;
-    assert !result.is8Bit() || highestUsedRegister() <= Constants.U8BIT_MAX;
-    assert !result.is16Bit() || highestUsedRegister() <= Constants.U16BIT_MAX;
-
-    new MoveSorter(code).sortMovesForSuffixSharing();
-
     return result;
   }