X-Git-Url: http://plrg.eecs.uci.edu/git/?p=oota-llvm.git;a=blobdiff_plain;f=lib%2FTransforms%2FUtils%2FLCSSA.cpp;h=5959324da6c574aea950dca1d6be99a810d65711;hp=546f4b160a5ee22a7362587118ee6a7a8d482d9f;hb=5ea4a545518b5fe1dbd1decc6435c8de35ec9ed1;hpb=efbb39740c32b6b8311d27b0f279a7d523fbdf2d diff --git a/lib/Transforms/Utils/LCSSA.cpp b/lib/Transforms/Utils/LCSSA.cpp index 546f4b160a5..5959324da6c 100644 --- a/lib/Transforms/Utils/LCSSA.cpp +++ b/lib/Transforms/Utils/LCSSA.cpp @@ -226,6 +226,19 @@ bool llvm::formLCSSA(Loop &L, DominatorTree &DT, ScalarEvolution *SE) { return Changed; } +/// Process a loop nest depth first. +bool llvm::formLCSSARecursively(Loop &L, DominatorTree &DT, + ScalarEvolution *SE) { + bool Changed = false; + + // Recurse depth-first through inner loops. + for (Loop::iterator LI = L.begin(), LE = L.end(); LI != LE; ++LI) + Changed |= formLCSSARecursively(**LI, DT, SE); + + Changed |= formLCSSA(L, DT, SE); + return Changed; +} + namespace { struct LCSSA : public FunctionPass { static char ID; // Pass identification, replacement for typeid @@ -278,20 +291,8 @@ bool LCSSA::runOnFunction(Function &F) { // Simplify each loop nest in the function. for (LoopInfo::iterator I = LI->begin(), E = LI->end(); I != E; ++I) - Changed |= processLoop(**I); - - return Changed; -} - -/// Process a loop nest depth first. -bool LCSSA::processLoop(Loop &L) { - bool Changed = false; - - // Recurse depth-first through inner loops. - for (Loop::iterator LI = L.begin(), LE = L.end(); LI != LE; ++LI) - Changed |= processLoop(**LI); + Changed |= formLCSSARecursively(**I, *DT, SE); - Changed |= formLCSSA(L, *DT, SE); return Changed; }