ART: Fix test breakage

Recent commit changed the direction of iteration over safepoints in
the register allocator but contained a bug that skipped some of them
at the boundaries of interval siblings. This patch fixes the bug.

Change-Id: Ia7d4892536b5198e01c9bc3034f448227794ff72
diff --git a/compiler/optimizing/register_allocator.cc b/compiler/optimizing/register_allocator.cc
index 0e9c4d6..748ab22 100644
--- a/compiler/optimizing/register_allocator.cc
+++ b/compiler/optimizing/register_allocator.cc
@@ -1425,13 +1425,13 @@
     // At each safepoint, we record stack and register information.
     // We iterate backwards to test safepoints in ascending order of positions,
     // which is what LiveInterval::Covers is optimized for.
-    while (safepoint_index > 0) {
-      HInstruction* safepoint = safepoints_.Get(--safepoint_index);
+    for (; safepoint_index > 0; --safepoint_index) {
+      HInstruction* safepoint = safepoints_.Get(safepoint_index - 1);
       size_t position = safepoint->GetLifetimePosition();
 
       // Test that safepoints are ordered in the optimal way.
-      DCHECK(safepoint_index == 0
-             || safepoints_.Get(safepoint_index - 1)->GetLifetimePosition() >= position);
+      DCHECK(safepoint_index == safepoints_.Size()
+             || safepoints_.Get(safepoint_index)->GetLifetimePosition() <= position);
 
       if (current->IsDeadAt(position)) {
         break;