diff options
author | Chris Lattner <sabre@nondot.org> | 2006-08-27 22:42:52 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2006-08-27 22:42:52 +0000 |
commit | 7f8897f22e88271cfa114998a4d6088e7c8e8e11 (patch) | |
tree | bf5610a6be6233216bdaa701a92527bc23b86cff | |
parent | 21a82e6fc718b4a2cc0281a4a43477ba940d3586 (diff) |
eliminate RegisterOpt. It does the same thing as RegisterPass.
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@29925 91177308-0d34-0410-b5e6-96231b3b80d8
76 files changed, 107 insertions, 149 deletions
diff --git a/include/llvm/PassSupport.h b/include/llvm/PassSupport.h index 95702c0cfa..5f8a1458c2 100644 --- a/include/llvm/PassSupport.h +++ b/include/llvm/PassSupport.h @@ -208,53 +208,6 @@ struct RegisterPass : public RegisterPassBase { } }; -/// RegisterOpt - Register something that is to show up in Opt, this is just a -/// shortcut for specifying RegisterPass... -/// -template<typename PassName> -struct RegisterOpt : public RegisterPassBase { - RegisterOpt(const char *PassArg, const char *Name, bool CFGOnly = false) - : RegisterPassBase(Name, PassArg, typeid(PassName), - callDefaultCtor<PassName>) { - if (CFGOnly) setOnlyUsesCFG(); - } - - /// Register Pass using default constructor explicitly... - /// - RegisterOpt(const char *PassArg, const char *Name, Pass *(*ctor)(), - bool CFGOnly = false) - : RegisterPassBase(Name, PassArg, typeid(PassName), ctor) { - if (CFGOnly) setOnlyUsesCFG(); - } - - /// Register FunctionPass using default constructor explicitly... - /// - RegisterOpt(const char *PassArg, const char *Name, FunctionPass *(*ctor)(), - bool CFGOnly = false) - : RegisterPassBase(Name, PassArg, typeid(PassName), - static_cast<Pass*(*)()>(ctor)) { - if (CFGOnly) setOnlyUsesCFG(); - } - - /// Register Pass using TargetMachine constructor... - /// - RegisterOpt(const char *PassArg, const char *Name, - Pass *(*targetctor)(TargetMachine &), bool CFGOnly = false) - : RegisterPassBase(Name, PassArg, typeid(PassName), 0, targetctor) { - if (CFGOnly) setOnlyUsesCFG(); - } - - /// Register FunctionPass using TargetMachine constructor... - /// - RegisterOpt(const char *PassArg, const char *Name, - FunctionPass *(*targetctor)(TargetMachine &), - bool CFGOnly = false) - : RegisterPassBase(Name, PassArg, typeid(PassName), 0, - static_cast<Pass*(*)(TargetMachine&)>(targetctor)) { - if (CFGOnly) setOnlyUsesCFG(); - } -}; - /// RegisterAnalysisGroup - Register a Pass as a member of an analysis _group_. /// Analysis groups are used to define an interface (which need not derive from diff --git a/lib/Analysis/AliasAnalysisCounter.cpp b/lib/Analysis/AliasAnalysisCounter.cpp index 8c8cb3e1d4..562b4f50b8 100644 --- a/lib/Analysis/AliasAnalysisCounter.cpp +++ b/lib/Analysis/AliasAnalysisCounter.cpp @@ -109,7 +109,7 @@ namespace { } }; - RegisterOpt<AliasAnalysisCounter> + RegisterPass<AliasAnalysisCounter> X("count-aa", "Count Alias Analysis Query Responses"); RegisterAnalysisGroup<AliasAnalysis, AliasAnalysisCounter> Y; } diff --git a/lib/Analysis/AliasAnalysisEvaluator.cpp b/lib/Analysis/AliasAnalysisEvaluator.cpp index f42fde8997..9f5a46df10 100644 --- a/lib/Analysis/AliasAnalysisEvaluator.cpp +++ b/lib/Analysis/AliasAnalysisEvaluator.cpp @@ -70,7 +70,7 @@ namespace { bool doFinalization(Module &M); }; - RegisterOpt<AAEval> + RegisterPass<AAEval> X("aa-eval", "Exhaustive Alias Analysis Precision Evaluator"); } diff --git a/lib/Analysis/AliasSetTracker.cpp b/lib/Analysis/AliasSetTracker.cpp index 16c652117f..6d09b65c6b 100644 --- a/lib/Analysis/AliasSetTracker.cpp +++ b/lib/Analysis/AliasSetTracker.cpp @@ -568,5 +568,5 @@ namespace { return false; } }; - RegisterOpt<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer"); + RegisterPass<AliasSetPrinter> X("print-alias-sets", "Alias Set Printer"); } diff --git a/lib/Analysis/BasicAliasAnalysis.cpp b/lib/Analysis/BasicAliasAnalysis.cpp index e2b8ed198d..2c5fc81b15 100644 --- a/lib/Analysis/BasicAliasAnalysis.cpp +++ b/lib/Analysis/BasicAliasAnalysis.cpp @@ -72,7 +72,7 @@ namespace { }; // Register this pass... - RegisterOpt<NoAA> + RegisterPass<NoAA> U("no-aa", "No Alias Analysis (always returns 'may' alias)"); // Declare that we implement the AliasAnalysis interface @@ -117,7 +117,7 @@ namespace { }; // Register this pass... - RegisterOpt<BasicAliasAnalysis> + RegisterPass<BasicAliasAnalysis> X("basicaa", "Basic Alias Analysis (default AA impl)"); // Declare that we implement the AliasAnalysis interface diff --git a/lib/Analysis/DataStructure/DataStructureAA.cpp b/lib/Analysis/DataStructure/DataStructureAA.cpp index 1ea1d88947..bbb2ba21f3 100644 --- a/lib/Analysis/DataStructure/DataStructureAA.cpp +++ b/lib/Analysis/DataStructure/DataStructureAA.cpp @@ -96,7 +96,7 @@ namespace { }; // Register the pass... - RegisterOpt<DSAA> X("ds-aa", "Data Structure Graph Based Alias Analysis"); + RegisterPass<DSAA> X("ds-aa", "Data Structure Graph Based Alias Analysis"); // Register as an implementation of AliasAnalysis RegisterAnalysisGroup<AliasAnalysis, DSAA> Y; diff --git a/lib/Analysis/DataStructure/DataStructureOpt.cpp b/lib/Analysis/DataStructure/DataStructureOpt.cpp index c464aee1a1..56748832ab 100644 --- a/lib/Analysis/DataStructure/DataStructureOpt.cpp +++ b/lib/Analysis/DataStructure/DataStructureOpt.cpp @@ -47,7 +47,7 @@ namespace { bool OptimizeGlobals(Module &M); }; - RegisterOpt<DSOpt> X("ds-opt", "DSA-based simple optimizations"); + RegisterPass<DSOpt> X("ds-opt", "DSA-based simple optimizations"); } ModulePass *llvm::createDSOptPass() { return new DSOpt(); } diff --git a/lib/Analysis/DataStructure/Steensgaard.cpp b/lib/Analysis/DataStructure/Steensgaard.cpp index 8a8391ff2a..8a98022869 100644 --- a/lib/Analysis/DataStructure/Steensgaard.cpp +++ b/lib/Analysis/DataStructure/Steensgaard.cpp @@ -73,8 +73,8 @@ namespace { }; // Register the pass... - RegisterOpt<Steens> X("steens-aa", - "Steensgaard's alias analysis (DSGraph based)"); + RegisterPass<Steens> X("steens-aa", + "Steensgaard's alias analysis (DSGraph based)"); // Register as an implementation of AliasAnalysis RegisterAnalysisGroup<AliasAnalysis, Steens> Y; diff --git a/lib/Analysis/IPA/Andersens.cpp b/lib/Analysis/IPA/Andersens.cpp index 1fc70e62a3..bc80f5b956 100644 --- a/lib/Analysis/IPA/Andersens.cpp +++ b/lib/Analysis/IPA/Andersens.cpp @@ -336,8 +336,8 @@ namespace { void visitInstruction(Instruction &I); }; - RegisterOpt<Andersens> X("anders-aa", - "Andersen's Interprocedural Alias Analysis"); + RegisterPass<Andersens> X("anders-aa", + "Andersen's Interprocedural Alias Analysis"); RegisterAnalysisGroup<AliasAnalysis, Andersens> Y; } diff --git a/lib/Analysis/IPA/CallGraph.cpp b/lib/Analysis/IPA/CallGraph.cpp index 23a7599ce5..8836807bfc 100644 --- a/lib/Analysis/IPA/CallGraph.cpp +++ b/lib/Analysis/IPA/CallGraph.cpp @@ -182,7 +182,7 @@ private: }; RegisterAnalysisGroup<CallGraph> X("Call Graph"); -RegisterOpt<BasicCallGraph> Y("basiccg", "Basic CallGraph Construction"); +RegisterPass<BasicCallGraph> Y("basiccg", "Basic CallGraph Construction"); RegisterAnalysisGroup<CallGraph, BasicCallGraph, true> Z; } //End anonymous namespace diff --git a/lib/Analysis/IPA/GlobalsModRef.cpp b/lib/Analysis/IPA/GlobalsModRef.cpp index 4765b096b3..6739dfbf0e 100644 --- a/lib/Analysis/IPA/GlobalsModRef.cpp +++ b/lib/Analysis/IPA/GlobalsModRef.cpp @@ -135,8 +135,8 @@ namespace { std::vector<Function*> &Writers); }; - RegisterOpt<GlobalsModRef> X("globalsmodref-aa", - "Simple mod/ref analysis for globals"); + RegisterPass<GlobalsModRef> X("globalsmodref-aa", + "Simple mod/ref analysis for globals"); RegisterAnalysisGroup<AliasAnalysis, GlobalsModRef> Y; } diff --git a/lib/Analysis/LoadValueNumbering.cpp b/lib/Analysis/LoadValueNumbering.cpp index 7169b3c168..bac80c8d98 100644 --- a/lib/Analysis/LoadValueNumbering.cpp +++ b/lib/Analysis/LoadValueNumbering.cpp @@ -81,7 +81,7 @@ namespace { }; // Register this pass... - RegisterOpt<LoadVN> X("load-vn", "Load Value Numbering"); + RegisterPass<LoadVN> X("load-vn", "Load Value Numbering"); // Declare that we implement the ValueNumbering interface RegisterAnalysisGroup<ValueNumbering, LoadVN> Y; diff --git a/lib/Analysis/ProfileInfo.cpp b/lib/Analysis/ProfileInfo.cpp index fa3af80044..b8ab88b8f2 100644 --- a/lib/Analysis/ProfileInfo.cpp +++ b/lib/Analysis/ProfileInfo.cpp @@ -85,7 +85,7 @@ namespace { struct NoProfileInfo : public ImmutablePass, public ProfileInfo {}; // Register this pass... - RegisterOpt<NoProfileInfo> + RegisterPass<NoProfileInfo> X("no-profile", "No Profile Information"); // Declare that we implement the ProfileInfo interface diff --git a/lib/Analysis/ProfileInfoLoaderPass.cpp b/lib/Analysis/ProfileInfoLoaderPass.cpp index 354c871ff2..57e3627c53 100644 --- a/lib/Analysis/ProfileInfoLoaderPass.cpp +++ b/lib/Analysis/ProfileInfoLoaderPass.cpp @@ -49,7 +49,7 @@ namespace { virtual bool runOnModule(Module &M); }; - RegisterOpt<LoaderPass> + RegisterPass<LoaderPass> X("profile-loader", "Load profile information from llvmprof.out"); RegisterAnalysisGroup<ProfileInfo, LoaderPass> Y; diff --git a/lib/Analysis/ValueNumbering.cpp b/lib/Analysis/ValueNumbering.cpp index c534bba4dc..fb3bed0553 100644 --- a/lib/Analysis/ValueNumbering.cpp +++ b/lib/Analysis/ValueNumbering.cpp @@ -60,7 +60,7 @@ namespace { }; // Register this pass... - RegisterOpt<BasicVN> + RegisterPass<BasicVN> X("basicvn", "Basic Value Numbering (default GVN impl)"); // Declare that we implement the ValueNumbering interface diff --git a/lib/CodeGen/UnreachableBlockElim.cpp b/lib/CodeGen/UnreachableBlockElim.cpp index fe334849ac..951deb60d9 100644 --- a/lib/CodeGen/UnreachableBlockElim.cpp +++ b/lib/CodeGen/UnreachableBlockElim.cpp @@ -35,7 +35,7 @@ namespace { class VISIBILITY_HIDDEN UnreachableBlockElim : public FunctionPass { virtual bool runOnFunction(Function &F); }; - RegisterOpt<UnreachableBlockElim> + RegisterPass<UnreachableBlockElim> X("unreachableblockelim", "Remove unreachable blocks from the CFG"); } diff --git a/lib/Transforms/Hello/Hello.cpp b/lib/Transforms/Hello/Hello.cpp index 804c3a70b2..cfa879a32d 100644 --- a/lib/Transforms/Hello/Hello.cpp +++ b/lib/Transforms/Hello/Hello.cpp @@ -34,7 +34,7 @@ namespace { return false; } }; - RegisterOpt<Hello> X("hello", "Hello World Pass"); + RegisterPass<Hello> X("hello", "Hello World Pass"); // Hello2 - The second implementation with getAnalysisUsage implemented. struct Hello2 : public FunctionPass { @@ -52,5 +52,6 @@ namespace { AU.setPreservesAll(); }; }; - RegisterOpt<Hello2> Y("hello2", "Hello World Pass (with getAnalysisUsage implemented)"); + RegisterPass<Hello2> Y("hello2", + "Hello World Pass (with getAnalysisUsage implemented)"); } diff --git a/lib/Transforms/IPO/ArgumentPromotion.cpp b/lib/Transforms/IPO/ArgumentPromotion.cpp index 960e36ba54..5183d43bc7 100644 --- a/lib/Transforms/IPO/ArgumentPromotion.cpp +++ b/lib/Transforms/IPO/ArgumentPromotion.cpp @@ -72,8 +72,8 @@ namespace { Function *DoPromotion(Function *F, std::vector<Argument*> &ArgsToPromote); }; - RegisterOpt<ArgPromotion> X("argpromotion", - "Promote 'by reference' arguments to scalars"); + RegisterPass<ArgPromotion> X("argpromotion", + "Promote 'by reference' arguments to scalars"); } ModulePass *llvm::createArgumentPromotionPass() { diff --git a/lib/Transforms/IPO/ConstantMerge.cpp b/lib/Transforms/IPO/ConstantMerge.cpp index 220d0d8722..aca42fe23b 100644 --- a/lib/Transforms/IPO/ConstantMerge.cpp +++ b/lib/Transforms/IPO/ConstantMerge.cpp @@ -33,7 +33,7 @@ namespace { bool runOnModule(Module &M); }; - RegisterOpt<ConstantMerge> X("constmerge","Merge Duplicate Global Constants"); + RegisterPass<ConstantMerge>X("constmerge","Merge Duplicate Global Constants"); } ModulePass *llvm::createConstantMergePass() { return new ConstantMerge(); } diff --git a/lib/Transforms/IPO/DeadArgumentElimination.cpp b/lib/Transforms/IPO/DeadArgumentElimination.cpp index e1feed922e..08d92a5c63 100644 --- a/lib/Transforms/IPO/DeadArgumentElimination.cpp +++ b/lib/Transforms/IPO/DeadArgumentElimination.cpp @@ -93,7 +93,7 @@ namespace { void RemoveDeadArgumentsFromFunction(Function *F); }; - RegisterOpt<DAE> X("deadargelim", "Dead Argument Elimination"); + RegisterPass<DAE> X("deadargelim", "Dead Argument Elimination"); /// DAH - DeadArgumentHacking pass - Same as dead argument elimination, but /// deletes arguments to functions which are external. This is only for use diff --git a/lib/Transforms/IPO/DeadTypeElimination.cpp b/lib/Transforms/IPO/DeadTypeElimination.cpp index 005d6bd600..57e5fa3109 100644 --- a/lib/Transforms/IPO/DeadTypeElimination.cpp +++ b/lib/Transforms/IPO/DeadTypeElimination.cpp @@ -36,7 +36,7 @@ namespace { AU.addRequired<FindUsedTypes>(); } }; - RegisterOpt<DTE> X("deadtypeelim", "Dead Type Elimination"); + RegisterPass<DTE> X("deadtypeelim", "Dead Type Elimination"); Statistic<> NumKilled("deadtypeelim", "Number of unused typenames removed from symtab"); } diff --git a/lib/Transforms/IPO/FunctionResolution.cpp b/lib/Transforms/IPO/FunctionResolution.cpp index d8b1a862ea..a514b92b5f 100644 --- a/lib/Transforms/IPO/FunctionResolution.cpp +++ b/lib/Transforms/IPO/FunctionResolution.cpp @@ -43,7 +43,7 @@ namespace { bool runOnModule(Module &M); }; - RegisterOpt<FunctionResolvingPass> X("funcresolve", "Resolve Functions"); + RegisterPass<FunctionResolvingPass> X("funcresolve", "Resolve Functions"); } ModulePass *llvm::createFunctionResolvingPass() { @@ -314,7 +314,8 @@ bool FunctionResolvingPass::runOnModule(Module &M) { Globals[F->getName()].push_back(F); } - for (Module::global_iterator I = M.global_begin(), E = M.global_end(); I != E; ) { + for (Module::global_iterator I = M.global_begin(), E = M.global_end(); + I != E; ) { GlobalVariable *GV = I++; if (GV->use_empty() && GV->isExternal()) { |