diff options
Diffstat (limited to 'lib/CodeGen/MachineLoopInfo.cpp')
-rw-r--r-- | lib/CodeGen/MachineLoopInfo.cpp | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/CodeGen/MachineLoopInfo.cpp b/lib/CodeGen/MachineLoopInfo.cpp index b5d5ad9be9..b7298e48ee 100644 --- a/lib/CodeGen/MachineLoopInfo.cpp +++ b/lib/CodeGen/MachineLoopInfo.cpp @@ -18,6 +18,7 @@ #include "llvm/CodeGen/MachineDominators.h" #include "llvm/CodeGen/Passes.h" #include "llvm/Analysis/LoopInfoImpl.h" +#include "llvm/Support/CommandLine.h" #include "llvm/Support/Debug.h" using namespace llvm; @@ -25,6 +26,10 @@ using namespace llvm; template class llvm::LoopBase<MachineBasicBlock, MachineLoop>; template class llvm::LoopInfoBase<MachineBasicBlock, MachineLoop>; +static cl::opt<bool> +StableLoopInfo("stable-machine-loops", cl::Hidden, cl::init(false), + cl::desc("Compute a stable loop tree.")); + char MachineLoopInfo::ID = 0; INITIALIZE_PASS_BEGIN(MachineLoopInfo, "machine-loops", "Machine Natural Loop Construction", true, true) @@ -36,7 +41,10 @@ char &llvm::MachineLoopInfoID = MachineLoopInfo::ID; bool MachineLoopInfo::runOnMachineFunction(MachineFunction &) { releaseMemory(); - LI.Calculate(getAnalysis<MachineDominatorTree>().getBase()); // Update + if (StableLoopInfo) + LI.Analyze(getAnalysis<MachineDominatorTree>().getBase()); + else + LI.Calculate(getAnalysis<MachineDominatorTree>().getBase()); // Update return false; } |