diff options
Diffstat (limited to 'lib/Analysis/LoopInfo.cpp')
-rw-r--r-- | lib/Analysis/LoopInfo.cpp | 9 |
1 files changed, 8 insertions, 1 deletions
diff --git a/lib/Analysis/LoopInfo.cpp b/lib/Analysis/LoopInfo.cpp index e46be981fc..5d5f5066b3 100644 --- a/lib/Analysis/LoopInfo.cpp +++ b/lib/Analysis/LoopInfo.cpp @@ -44,6 +44,10 @@ static cl::opt<bool,true> VerifyLoopInfoX("verify-loop-info", cl::location(VerifyLoopInfo), cl::desc("Verify loop info (time consuming)")); +static cl::opt<bool> +StableLoopInfo("stable-loops", cl::Hidden, cl::init(false), + cl::desc("Compute a stable loop tree.")); + char LoopInfo::ID = 0; INITIALIZE_PASS_BEGIN(LoopInfo, "loops", "Natural Loop Information", true, true) INITIALIZE_PASS_DEPENDENCY(DominatorTree) @@ -512,7 +516,10 @@ Loop *UnloopUpdater::getNearestLoop(BasicBlock *BB, Loop *BBLoop) { // bool LoopInfo::runOnFunction(Function &) { releaseMemory(); - LI.Calculate(getAnalysis<DominatorTree>().getBase()); // Update + if (StableLoopInfo) + LI.Analyze(getAnalysis<DominatorTree>().getBase()); + else + LI.Calculate(getAnalysis<DominatorTree>().getBase()); // Update return false; } |