X-Git-Url: http://demsky.eecs.uci.edu/git/?a=blobdiff_plain;f=lib%2FTransforms%2FUtils%2FMem2Reg.cpp;h=f4ca81af6d87d6314ea5f2f41a8c52bff0a8d51c;hb=d7e0b7cdc59d04bec6cf5273cde3d2a16b13800e;hp=941660436b46c349dffb78328d54b9bf297afa14;hpb=046e78ce55a7c3d82b7b6758d2d77f2d99f970bf;p=oota-llvm.git diff --git a/lib/Transforms/Utils/Mem2Reg.cpp b/lib/Transforms/Utils/Mem2Reg.cpp index 941660436b4..f4ca81af6d8 100644 --- a/lib/Transforms/Utils/Mem2Reg.cpp +++ b/lib/Transforms/Utils/Mem2Reg.cpp @@ -27,18 +27,17 @@ STATISTIC(NumPromoted, "Number of alloca's promoted"); namespace { struct PromotePass : public FunctionPass { static char ID; // Pass identification, replacement for typeid - PromotePass() : FunctionPass(&ID) {} + PromotePass() : FunctionPass(ID) { + initializePromotePassPass(*PassRegistry::getPassRegistry()); + } // runOnFunction - To run this pass, first we calculate the alloca // instructions that are safe for promotion, then we promote each one. // virtual bool runOnFunction(Function &F); - // getAnalysisUsage - We need dominance frontiers - // virtual void getAnalysisUsage(AnalysisUsage &AU) const { AU.addRequired(); - AU.addRequired(); AU.setPreservesCFG(); // This is a cluster of orthogonal Transforms AU.addPreserved(); @@ -49,7 +48,11 @@ namespace { } // end of anonymous namespace char PromotePass::ID = 0; -static RegisterPass X("mem2reg", "Promote Memory to Register"); +INITIALIZE_PASS_BEGIN(PromotePass, "mem2reg", "Promote Memory to Register", + false, false) +INITIALIZE_PASS_DEPENDENCY(DominatorTree) +INITIALIZE_PASS_END(PromotePass, "mem2reg", "Promote Memory to Register", + false, false) bool PromotePass::runOnFunction(Function &F) { std::vector Allocas; @@ -59,7 +62,6 @@ bool PromotePass::runOnFunction(Function &F) { bool Changed = false; DominatorTree &DT = getAnalysis(); - DominanceFrontier &DF = getAnalysis(); while (1) { Allocas.clear(); @@ -73,7 +75,7 @@ bool PromotePass::runOnFunction(Function &F) { if (Allocas.empty()) break; - PromoteMemToReg(Allocas, DT, DF, F.getContext()); + PromoteMemToReg(Allocas, DT); NumPromoted += Allocas.size(); Changed = true; } @@ -81,8 +83,6 @@ bool PromotePass::runOnFunction(Function &F) { return Changed; } -// Publically exposed interface to pass... -const PassInfo *const llvm::PromoteMemoryToRegisterID = &X; // createPromoteMemoryToRegister - Provide an entry point to create this pass. // FunctionPass *llvm::createPromoteMemoryToRegisterPass() {