Index: src/compiler/live-range-separator.cc |
diff --git a/src/compiler/live-range-separator.cc b/src/compiler/live-range-separator.cc |
index 47116b9a2d25c901f9e7a3090b990fc04ebbb396..52f0b8cf442b7c87e184b66e7be5d2b814ac1b9a 100644 |
--- a/src/compiler/live-range-separator.cc |
+++ b/src/compiler/live-range-separator.cc |
@@ -118,7 +118,8 @@ void SplinterRangesInDeferredBlocks(RegisterAllocationData *data) { |
if (!block->IsDeferred()) continue; |
RpoNumber last_deferred = block->last_deferred(); |
- i = last_deferred.ToInt(); |
+ // last_deferred + 1 is not deferred, so no point in visiting it. |
+ i = last_deferred.ToInt() + 1; |
LifetimePosition first_cut = LifetimePosition::GapFromInstructionIndex( |
block->first_instruction_index()); |
@@ -126,7 +127,7 @@ void SplinterRangesInDeferredBlocks(RegisterAllocationData *data) { |
LifetimePosition last_cut = LifetimePosition::GapFromInstructionIndex( |
static_cast<int>(code->instructions().size())); |
- const BitVector *in_set = in_sets[i]; |
+ const BitVector *in_set = in_sets[block->rpo_number().ToInt()]; |
InstructionBlock *last = code->InstructionBlockAt(last_deferred); |
const BitVector *out_set = LiveRangeBuilder::ComputeLiveOut(last, data); |
last_cut = LifetimePosition::GapFromInstructionIndex( |