Index: src/compiler/control-builders.cc |
diff --git a/src/compiler/control-builders.cc b/src/compiler/control-builders.cc |
index 6905ef589ff56c11b18ac6717969d726aee56577..dc9d7b3eca96210d27390530895d4c1c8b87f41f 100644 |
--- a/src/compiler/control-builders.cc |
+++ b/src/compiler/control-builders.cc |
@@ -36,6 +36,7 @@ void LoopBuilder::BeginLoop(BitVector* assigned, bool is_osr) { |
loop_environment_ = environment()->CopyForLoop(assigned, is_osr); |
continue_environment_ = environment()->CopyAsUnreachable(); |
break_environment_ = environment()->CopyAsUnreachable(); |
+ assigned_ = assigned; |
} |
@@ -60,6 +61,7 @@ void LoopBuilder::EndBody() { |
void LoopBuilder::EndLoop() { |
loop_environment_->Merge(environment()); |
set_environment(break_environment_); |
+ ExitLoop(); |
} |
@@ -82,6 +84,11 @@ void LoopBuilder::BreakWhen(Node* condition) { |
control_if.End(); |
} |
+void LoopBuilder::ExitLoop(Node** extra_value_to_rename) { |
+ if (environment()->IsMarkedAsUnreachable()) return; |
Michael Starzinger
2016/07/14 12:13:36
Please move the unreachability check into Environm
Jarin
2016/07/14 12:51:34
Done.
|
+ builder_->BuildLoopExit(loop_environment_->GetControlDependency(), assigned_, |
+ extra_value_to_rename); |
+} |
void SwitchBuilder::BeginSwitch() { |
body_environment_ = environment()->CopyAsUnreachable(); |