| Index: src/compiler/pipeline.cc | 
| diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc | 
| index 19f0d6c45d725c0765a5ca3da3ca5a270cc1e18f..83b784f8060568978cf25515abcc31e15f756aef 100644 | 
| --- a/src/compiler/pipeline.cc | 
| +++ b/src/compiler/pipeline.cc | 
| @@ -15,6 +15,7 @@ | 
| #include "src/compiler/change-lowering.h" | 
| #include "src/compiler/code-generator.h" | 
| #include "src/compiler/common-operator-reducer.h" | 
| +#include "src/compiler/control-flow-optimizer.h" | 
| #include "src/compiler/control-reducer.h" | 
| #include "src/compiler/graph-replay.h" | 
| #include "src/compiler/graph-visualizer.h" | 
| @@ -544,6 +545,16 @@ struct SimplifiedLoweringPhase { | 
| }; | 
|  | 
|  | 
| +struct ControlFlowOptimizationPhase { | 
| +  static const char* phase_name() { return "control flow optimization"; } | 
| + | 
| +  void Run(PipelineData* data, Zone* temp_zone) { | 
| +    ControlFlowOptimizer optimizer(data->jsgraph(), temp_zone); | 
| +    optimizer.Optimize(); | 
| +  } | 
| +}; | 
| + | 
| + | 
| struct ChangeLoweringPhase { | 
| static const char* phase_name() { return "change lowering"; } | 
|  | 
| @@ -961,6 +972,12 @@ Handle<Code> Pipeline::GenerateCode() { | 
| Run<SimplifiedLoweringPhase>(); | 
| RunPrintAndVerify("Lowered simplified"); | 
|  | 
| +    // Optimize control flow. | 
| +    if (FLAG_turbo_switch) { | 
| +      Run<ControlFlowOptimizationPhase>(); | 
| +      RunPrintAndVerify("Control flow optimized"); | 
| +    } | 
| + | 
| // Lower changes that have been inserted before. | 
| Run<ChangeLoweringPhase>(); | 
| // // TODO(jarin, rossberg): Remove UNTYPED once machine typing works. | 
|  |