Index: src/compiler/scheduler.cc |
diff --git a/src/compiler/scheduler.cc b/src/compiler/scheduler.cc |
index 88caf988e90494ab3a6011f6511fb52163602dcd..8c169368e54d5e8883e6184d542d7b02e5a34c18 100644 |
--- a/src/compiler/scheduler.cc |
+++ b/src/compiler/scheduler.cc |
@@ -763,7 +763,7 @@ class SpecialRPONumberer : public ZoneObject { |
static_cast<int>(frame->index - block->SuccessorCount()); |
LoopInfo* info = &loops_[GetLoopNumber(block)]; |
DCHECK(loop != info); |
- if (info->outgoing != NULL && |
+ if (block != entry && info->outgoing != NULL && |
outgoing_index < info->outgoing->length()) { |
succ = info->outgoing->at(outgoing_index); |
frame->index++; |
@@ -871,6 +871,15 @@ class SpecialRPONumberer : public ZoneObject { |
// Computes loop membership from the backedges of the control flow graph. |
void ComputeLoopInfo(ZoneVector<SpecialRPOStackFrame>& queue, |
size_t num_loops, ZoneList<Backedge>* backedges) { |
+ // Extend existing loop membership vectors. |
+ for (LoopInfo& loop : loops_) { |
+ BitVector* new_members = new (zone_) |
+ BitVector(static_cast<int>(schedule_->BasicBlockCount()), zone_); |
+ new_members->CopyFrom(*loop.members); |
+ loop.members = new_members; |
+ } |
+ |
+ // Extend loop information vector. |
loops_.resize(num_loops, LoopInfo()); |
// Compute loop membership starting from backedges. |