From 50e3f88d38d93edcec9047322da8ed43aefc9e3d Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Mon, 22 Jul 2002 02:10:07 +0000 Subject: Convert command line option processing code over to use the syntax supported by the CommandLine 2.0 library git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@2984 91177308-0d34-0410-b5e6-96231b3b80d8 --- tools/analyze/analyze.cpp | 59 ++++++++++++++++++++++------------------------- 1 file changed, 28 insertions(+), 31 deletions(-) diff --git a/tools/analyze/analyze.cpp b/tools/analyze/analyze.cpp index f22f734..363f111 100644 --- a/tools/analyze/analyze.cpp +++ b/tools/analyze/analyze.cpp @@ -79,15 +79,13 @@ class PassPrinter; // Do not implement template class PassPrinter : public Pass { - const string Message; const AnalysisID ID; public: - PassPrinter(const string &M, AnalysisID id) : Message(M), ID(id) {} + PassPrinter(AnalysisID id) : ID(id) {} const char *getPassName() const { return "IP Pass Printer"; } virtual bool run(Module &M) { - std::cout << Message << "\n"; printPass(getAnalysis(ID), std::cout, M); return false; } @@ -99,15 +97,14 @@ public: template class PassPrinter : public FunctionPass { - const string Message; const AnalysisID ID; public: - PassPrinter(const string &M, AnalysisID id) : Message(M), ID(id) {} + PassPrinter(AnalysisID id) : ID(id) {} const char *getPassName() const { return "Function Pass Printer"; } virtual bool runOnFunction(Function &F) { - std::cout << Message << " on function '" << F.getName() << "'\n"; + std::cout << "Running on function '" << F.getName() << "'\n"; printPass(getAnalysis(ID), std::cout, F); return false; } @@ -121,19 +118,19 @@ public: template -Pass *New(const string &Message) { - return new PassPrinter(Message, ID); +Pass *New() { + return new PassPrinter(ID); } template -Pass *New(const string &Message) { - return new PassPrinter(Message, PassName::ID); +Pass *New() { + return new PassPrinter(PassName::ID); } -Pass *createPrintFunctionPass(const string &Message) { - return new PrintFunctionPass(Message, &std::cout); +Pass *createPrintFunctionPass() { + return new PrintFunctionPass("", &std::cout); } -Pass *createPrintModulePass(const string &Message) { +Pass *createPrintModulePass() { return new PrintModulePass(&std::cout); } @@ -205,13 +202,11 @@ struct Exprs : public FunctionPass { template -class PrinterPass : public TraitClass { - const string Message; -public: - PrinterPass(const string &M) : Message(M) {} +struct PrinterPass : public TraitClass { + PrinterPass() {} virtual bool runOnFunction(Function &F) { - std::cout << Message << " on function '" << F.getName() << "'\n"; + std::cout << "Running on function '" << F.getName() << "'\n"; TraitClass::doit(F); return false; @@ -220,8 +215,8 @@ public: template -Pass *Create(const string &Message) { - return new PassClass(Message); +Pass *Create() { + return new PassClass(); } @@ -238,10 +233,16 @@ enum Ans { postdomset, postidom, postdomtree, postdomfrontier, }; -cl::String InputFilename ("", "Load file to analyze", cl::NoFlags, "-"); -cl::Flag Quiet ("q", "Don't print analysis pass names"); -cl::Alias QuietA ("quiet", "Alias for -q", cl::NoFlags, Quiet); -cl::EnumList AnalysesList(cl::NoFlags, +static cl::opt +InputFilename(cl::Positional, cl::desc(""), cl::init("-"), + cl::value_desc("filename")); + +static cl::opt Quiet("q", cl::desc("Don't print analysis pass names")); +static cl::alias QuietA("quiet", cl::desc("Alias for -q"), + cl::aliasopt(Quiet)); + +static cl::list +AnalysesList(cl::values( clEnumVal(print , "Print each function"), clEnumVal(intervals , "Print Interval Partitions"), clEnumVal(exprs , "Classify Expressions"), @@ -265,12 +266,12 @@ cl::EnumList AnalysesList(cl::NoFlags, clEnumVal(postidom , "Print Immediate Postdominators"), clEnumVal(postdomtree , "Print Post Dominator Tree"), clEnumVal(postdomfrontier, "Print Postdominance Frontier"), -0); +0)); struct { enum Ans AnID; - Pass *(*PassConstructor)(const string &Message); + Pass *(*PassConstructor)(); } AnTable[] = { // Global analyses { print , createPrintFunctionPass }, @@ -326,11 +327,7 @@ int main(int argc, char **argv) { for (unsigned j = 0; j < sizeof(AnTable)/sizeof(AnTable[0]); ++j) { if (AnTable[j].AnID == AnalysisPass) { - string Message; - if (!Quiet) - Message = "\nRunning: '" + - string(AnalysesList.getArgDescription(AnalysisPass)) + "' analysis"; - Analyses.add(AnTable[j].PassConstructor(Message)); + Analyses.add(AnTable[j].PassConstructor()); break; // get an error later } } -- cgit v1.1