Index: src/compiler/pipeline.cc |
diff --git a/src/compiler/pipeline.cc b/src/compiler/pipeline.cc |
index 1c1bcd848f6ae712d7848ffbd666c31ee973994e..3e3b87951d141ae3e3e736574f316bab83aae5d2 100644 |
--- a/src/compiler/pipeline.cc |
+++ b/src/compiler/pipeline.cc |
@@ -945,6 +945,14 @@ struct RepresentationSelectionPhase { |
} |
}; |
+struct LoopExitEliminationPhase { |
+ static const char* phase_name() { return "loop exit elimination"; } |
+ |
+ void Run(PipelineData* data, Zone* temp_zone) { |
+ LoopPeeler::EliminateLoopExits(data->graph(), temp_zone); |
+ } |
+}; |
+ |
struct EarlyOptimizationPhase { |
static const char* phase_name() { return "early optimization"; } |
@@ -1433,6 +1441,10 @@ bool PipelineImpl::CreateGraph() { |
Run<TypedLoweringPhase>(); |
RunPrintAndVerify("Lowered typed"); |
+ // Eventually, loop peeling will be done here. |
+ Run<LoopExitEliminationPhase>(); |
+ RunPrintAndVerify("Loop exits eliminated", true); |
+ |
if (FLAG_turbo_stress_loop_peeling) { |
Run<StressLoopPeelingPhase>(); |
RunPrintAndVerify("Loop peeled"); |