Change over to use new style pass mechanism, now passes only expose small

creation functions in their public header file, unless they can help it.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@1816 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
Chris Lattner
2002-02-26 21:46:54 +00:00
parent 3b2541424f
commit bd0ef77cde
32 changed files with 528 additions and 512 deletions

View File

@ -13,6 +13,7 @@
#include "llvm/Type.h"
#include "llvm/BasicBlock.h"
#include "llvm/ConstantVals.h"
#include "llvm/Pass.h"
#include "llvm/Support/CFG.h"
#include "Support/STLExtras.h"
@ -186,19 +187,29 @@ static bool TransformLoop(cfg::LoopInfo *Loops, cfg::Loop *Loop) {
return Changed;
}
bool InductionVariableSimplify::doit(Method *M, cfg::LoopInfo &Loops) {
static bool doit(Method *M, cfg::LoopInfo &Loops) {
// Induction Variables live in the header nodes of the loops of the method...
return reduce_apply_bool(Loops.getTopLevelLoops().begin(),
Loops.getTopLevelLoops().end(),
std::bind1st(std::ptr_fun(TransformLoop), &Loops));
}
bool InductionVariableSimplify::runOnMethod(Method *M) {
return doit(M, getAnalysis<cfg::LoopInfo>());
namespace {
struct InductionVariableSimplify : public MethodPass {
virtual bool runOnMethod(Method *M) {
return doit(M, getAnalysis<cfg::LoopInfo>());
}
virtual void getAnalysisUsageInfo(Pass::AnalysisSet &Required,
Pass::AnalysisSet &Destroyed,
Pass::AnalysisSet &Provided) {
Required.push_back(cfg::LoopInfo::ID);
}
};
}
void InductionVariableSimplify::getAnalysisUsageInfo(Pass::AnalysisSet &Req,
Pass::AnalysisSet &Dest,
Pass::AnalysisSet &Prov) {
Req.push_back(cfg::LoopInfo::ID);
Pass *createIndVarSimplifyPass() {
return new InductionVariableSimplify();
}