diff --git a/llvm/include/llvm/CodeGen/MachineScheduler.h b/llvm/include/llvm/CodeGen/MachineScheduler.h --- a/llvm/include/llvm/CodeGen/MachineScheduler.h +++ b/llvm/include/llvm/CodeGen/MachineScheduler.h @@ -186,6 +186,9 @@ // first. bool DisableLatencyHeuristic = false; + // Compute DFSResult for use in scheduling heuristics. + bool ComputeDFSResult = false; + MachineSchedPolicy() = default; }; diff --git a/llvm/lib/CodeGen/MachineScheduler.cpp b/llvm/lib/CodeGen/MachineScheduler.cpp --- a/llvm/lib/CodeGen/MachineScheduler.cpp +++ b/llvm/lib/CodeGen/MachineScheduler.cpp @@ -2733,6 +2733,9 @@ SchedModel = DAG->getSchedModel(); TRI = DAG->TRI; + if (RegionPolicy.ComputeDFSResult) + DAG->computeDFSResult(); + Rem.init(DAG, SchedModel); Top.init(DAG, SchedModel, &Rem); Bot.init(DAG, SchedModel, &Rem);