diff options
| author | Chris Lattner <sabre@nondot.org> | 2004-03-14 02:32:27 +0000 |
|---|---|---|
| committer | Chris Lattner <sabre@nondot.org> | 2004-03-14 02:32:27 +0000 |
| commit | 41ec709e006e48e8ba717c2001c762e466c4b2fb (patch) | |
| tree | 9846c49830377ed8120efe3b2fa6d608cfc8a4d1 /llvm/lib/Transforms/Utils | |
| parent | 96a7fbd5031365a4b9d40703c4d0155efd62a717 (diff) | |
| download | bcm5719-llvm-41ec709e006e48e8ba717c2001c762e466c4b2fb.tar.gz bcm5719-llvm-41ec709e006e48e8ba717c2001c762e466c4b2fb.zip | |
Move to the IPO library. Utils shouldn't contain passes.
llvm-svn: 12372
Diffstat (limited to 'llvm/lib/Transforms/Utils')
| -rw-r--r-- | llvm/lib/Transforms/Utils/LoopExtractor.cpp | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/llvm/lib/Transforms/Utils/LoopExtractor.cpp b/llvm/lib/Transforms/Utils/LoopExtractor.cpp deleted file mode 100644 index 3eda45265d2..00000000000 --- a/llvm/lib/Transforms/Utils/LoopExtractor.cpp +++ /dev/null @@ -1,68 +0,0 @@ -//===- LoopExtractor.cpp - Extract each loop into a new function ----------===// -// -// A pass wrapper around the ExtractLoop() scalar transformation to extract each -// top-level loop into its own new function. If the loop is the ONLY loop in a -// given function, it is not touched. This is a pass most useful for debugging -// via bugpoint. -// -//===----------------------------------------------------------------------===// - -#include "llvm/Module.h" -#include "llvm/Pass.h" -#include "llvm/Analysis/LoopInfo.h" -#include "llvm/Transforms/Scalar.h" -#include "llvm/Transforms/Utils/FunctionUtils.h" -#include <vector> -using namespace llvm; - -namespace { - -// FIXME: PassManager should allow Module passes to require FunctionPasses -struct LoopExtractor : public FunctionPass { - -public: - LoopExtractor() {} - virtual bool run(Module &M); - virtual bool runOnFunction(Function &F); - - virtual void getAnalysisUsage(AnalysisUsage &AU) const { - AU.addRequired<LoopInfo>(); - } - -}; - -RegisterOpt<LoopExtractor> -X("loop-extract", "Extract loops into new functions"); - -bool LoopExtractor::run(Module &M) { - bool Changed = false; - for (Module::iterator i = M.begin(), e = M.end(); i != e; ++i) - Changed |= runOnFunction(*i); - return Changed; -} - -bool LoopExtractor::runOnFunction(Function &F) { - std::cerr << F.getName() << "\n"; - - LoopInfo &LI = getAnalysis<LoopInfo>(); - - // We don't want to keep extracting the only loop of a function into a new one - if (LI.begin() == LI.end() || LI.begin() + 1 == LI.end()) - return false; - - bool Changed = false; - - // Try to move each loop out of the code into separate function - for (LoopInfo::iterator i = LI.begin(), e = LI.end(); i != e; ++i) - Changed |= (ExtractLoop(*i) != 0); - - return Changed; -} - -} // End anonymous namespace - -/// createLoopExtractorPass -/// -FunctionPass* llvm::createLoopExtractorPass() { - return new LoopExtractor(); -} |

