Changes in directory llvm/tools/opt:
Makefile updated: 1.57 -> 1.58 opt.cpp updated: 1.115 -> 1.116 --- Log message: Merge the 'analyze' mode code with the 'opt' mode code. Eliminate the 'autodetect .ll files' functionality. --- Diffs of the changes: (+26 -76) Makefile | 2 - opt.cpp | 100 +++++++++++++++------------------------------------------------ 2 files changed, 26 insertions(+), 76 deletions(-) Index: llvm/tools/opt/Makefile diff -u llvm/tools/opt/Makefile:1.57 llvm/tools/opt/Makefile:1.58 --- llvm/tools/opt/Makefile:1.57 Fri Aug 18 01:34:30 2006 +++ llvm/tools/opt/Makefile Sun Aug 27 17:07:01 2006 @@ -10,7 +10,7 @@ TOOLNAME = opt REQUIRES_EH := 1 -USEDLIBS = LLVMAsmParser.a LLVMBCReader.a LLVMBCWriter.a LLVMInstrumentation.a \ +USEDLIBS = LLVMBCReader.a LLVMBCWriter.a LLVMInstrumentation.a \ LLVMScalarOpts.a LLVMipo.a LLVMipa.a LLVMDataStructure \ LLVMTransforms.a LLVMTarget.a LLVMTransformUtils.a LLVMAnalysis.a \ LLVMCore.a LLVMSupport.a LLVMbzip2.a LLVMSystem.a Index: llvm/tools/opt/opt.cpp diff -u llvm/tools/opt/opt.cpp:1.115 llvm/tools/opt/opt.cpp:1.116 --- llvm/tools/opt/opt.cpp:1.115 Mon Aug 21 00:34:03 2006 +++ llvm/tools/opt/opt.cpp Sun Aug 27 17:07:01 2006 @@ -13,7 +13,6 @@ //===----------------------------------------------------------------------===// #include "llvm/Module.h" -#include "llvm/Assembly/Parser.h" #include "llvm/PassManager.h" #include "llvm/Bytecode/Reader.h" #include "llvm/Bytecode/WriteBytecodePass.h" @@ -37,9 +36,8 @@ // The OptimizationList is automatically populated with registered Passes by the // PassNameParser. // -static cl::list<const PassInfo*, bool, - FilteredPassNameParser<PassInfo::Optimization> > -OptimizationList(cl::desc("Optimizations available:")); +static cl::list<const PassInfo*, bool, PassNameParser> +PassList(cl::desc("Optimizations available:")); // Other command line options... @@ -74,12 +72,6 @@ static cl::opt<bool> AnalyzeOnly("analyze", cl::desc("Only perform analysis, no optimization")); -// The AnalysesList is automatically populated with registered Passes by the -// PassNameParser. -static - cl::list<const PassInfo*, bool, FilteredPassNameParser<PassInfo::Analysis> > - AnalysesList(cl::desc("Analyses available:")); - static Timer BytecodeLoadTimer("Bytecode Loader"); // ---------- Define Printers for module and function passes ------------ @@ -166,57 +158,7 @@ " llvm .bc -> .bc modular optimizer and analysis printer \n"); sys::PrintStackTraceOnErrorSignal(); - if (AnalyzeOnly) { - Module *CurMod = 0; -#if 0 - TimeRegion RegionTimer(BytecodeLoadTimer); -#endif - CurMod = ParseBytecodeFile(InputFilename); - ParseError Err; - if (!CurMod && !(CurMod = ParseAssemblyFile(InputFilename,&Err))){ - std::cerr << argv[0] << ": " << Err.getMessage() << "\n"; - return 1; - } - - // Create a PassManager to hold and optimize the collection of passes we - // are about to build... - PassManager Passes; - - // Add an appropriate TargetData instance for this module... - Passes.add(new TargetData(CurMod)); - - // Make sure the input LLVM is well formed. - if (!NoVerify) - Passes.add(createVerifierPass()); - - // Create a new optimization pass for each one specified on the - // command line - for (unsigned i = 0; i < AnalysesList.size(); ++i) { - const PassInfo *Analysis = AnalysesList[i]; - - if (Analysis->getNormalCtor()) { - Pass *P = Analysis->getNormalCtor()(); - Passes.add(P); - - if (BasicBlockPass *BBP = dynamic_cast<BasicBlockPass*>(P)) - Passes.add(new BasicBlockPassPrinter(Analysis)); - else if (FunctionPass *FP = dynamic_cast<FunctionPass*>(P)) - Passes.add(new FunctionPassPrinter(Analysis)); - else - Passes.add(new ModulePassPrinter(Analysis)); - - } else - std::cerr << argv[0] << ": cannot create pass: " - << Analysis->getPassName() << "\n"; - } - - Passes.run(*CurMod); - - delete CurMod; - return 0; - } - - // Allocate a full target machine description only if necessary... + // Allocate a full target machine description only if necessary. // FIXME: The choice of target should be controllable on the command line. std::auto_ptr<TargetMachine> target; @@ -275,22 +217,30 @@ Passes.add(new TargetData(M.get())); // Create a new optimization pass for each one specified on the command line - for (unsigned i = 0; i < OptimizationList.size(); ++i) { - const PassInfo *Opt = OptimizationList[i]; - - if (Opt->getNormalCtor()) - Passes.add(Opt->getNormalCtor()()); - else if (Opt->getTargetCtor()) { -#if 0 - if (target.get() == NULL) - target.reset(allocateSparcTargetMachine()); // FIXME: target option -#endif + for (unsigned i = 0; i < PassList.size(); ++i) { + const PassInfo *PassInf = PassList[i]; + Pass *P = 0; + if (PassInf->getNormalCtor()) + P = PassInf->getNormalCtor()(); + else if (PassInf->getTargetCtor()) { assert(target.get() && "Could not allocate target machine!"); - Passes.add(Opt->getTargetCtor()(*target.get())); + P = PassInf->getTargetCtor()(*target.get()); } else - std::cerr << argv[0] << ": cannot create pass: " << Opt->getPassName() - << "\n"; - + std::cerr << argv[0] << ": cannot create pass: " + << PassInf->getPassName() << "\n"; + if (P) { + Passes.add(P); + + if (AnalyzeOnly) { + if (BasicBlockPass *BBP = dynamic_cast<BasicBlockPass*>(P)) + Passes.add(new BasicBlockPassPrinter(PassInf)); + else if (FunctionPass *FP = dynamic_cast<FunctionPass*>(P)) + Passes.add(new FunctionPassPrinter(PassInf)); + else + Passes.add(new ModulePassPrinter(PassInf)); + } + } + if (PrintEachXForm) Passes.add(new PrintModulePass(&std::cerr)); } _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits