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 | c3c8703c3bf0d4fff3420ee3ce00caea992a354c (patch) | |
tree | 3f196f9a88f48e79cdf4366bac2bbc38bf66f325 /lib/Transforms/Utils/LoopExtractor.cpp | |
parent | 2ed306362540a2a44fe4fdda6fa0af137925dd7c (diff) |
Move to the IPO library. Utils shouldn't contain passes.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12372 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib/Transforms/Utils/LoopExtractor.cpp')
-rw-r--r-- | lib/Transforms/Utils/LoopExtractor.cpp | 68 |
1 files changed, 0 insertions, 68 deletions
diff --git a/lib/Transforms/Utils/LoopExtractor.cpp b/lib/Transforms/Utils/LoopExtractor.cpp deleted file mode 100644 index 3eda45265d..0000000000 --- a/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(); -} |