| Index: src/compiler/scheduler.cc
|
| diff --git a/src/compiler/scheduler.cc b/src/compiler/scheduler.cc
|
| index 16773c5cba00b290045ea02a5a14d8750c77bbe7..42ee0c4fb44ea8eb4f240877533197136e09b9ca 100644
|
| --- a/src/compiler/scheduler.cc
|
| +++ b/src/compiler/scheduler.cc
|
| @@ -283,6 +283,9 @@ class CFGBuilder {
|
| }
|
|
|
| void ConnectMerge(Node* merge) {
|
| + // Don't connect the special merge at the end to its predecessors.
|
| + if (IsFinalMerge(merge)) return;
|
| +
|
| BasicBlock* block = schedule_->block(merge);
|
| DCHECK(block != NULL);
|
| // For all of the merge's control inputs, add a goto at the end to the
|
| @@ -290,10 +293,8 @@ class CFGBuilder {
|
| for (InputIter j = merge->inputs().begin(); j != merge->inputs().end();
|
| ++j) {
|
| BasicBlock* predecessor_block = schedule_->block(*j);
|
| - if ((*j)->opcode() != IrOpcode::kReturn) {
|
| - TraceConnect(merge, predecessor_block, block);
|
| - schedule_->AddGoto(predecessor_block, block);
|
| - }
|
| + TraceConnect(merge, predecessor_block, block);
|
| + schedule_->AddGoto(predecessor_block, block);
|
| }
|
| }
|
|
|
| @@ -314,6 +315,10 @@ class CFGBuilder {
|
| block->id().ToInt(), succ->id().ToInt());
|
| }
|
| }
|
| +
|
| + bool IsFinalMerge(Node* node) {
|
| + return (node == scheduler_->graph_->end()->InputAt(0));
|
| + }
|
| };
|
|
|
|
|
|
|