//===- NewPMDriver.cpp - Driver for opt with new PM -----------------------===// // // The LLVM Compiler Infrastructure // // This file is distributed under the University of Illinois Open Source // License. See LICENSE.TXT for details. // //===----------------------------------------------------------------------===// /// \file /// /// This file is just a split of the code that logically belongs in opt.cpp but /// that includes the new pass manager headers. /// //===----------------------------------------------------------------------===// #include "NewPMDriver.h" #include "Passes.h" #include "llvm/ADT/StringRef.h" #include "llvm/IR/LLVMContext.h" #include "llvm/IR/Module.h" #include "llvm/IR/PassManager.h" #include "llvm/Support/CommandLine.h" #include "llvm/Support/ToolOutputFile.h" using namespace llvm; bool llvm::runPassPipeline(StringRef Arg0, LLVMContext &Context, Module &M, tool_output_file *Out, StringRef PassPipeline, bool NoOutput) { // Before executing passes, print the final values of the LLVM options. cl::PrintOptionValues(); ModulePassManager MPM; if (!parsePassPipeline(MPM, PassPipeline)) { errs() << Arg0 << ": unable to parse pass pipeline description.\n"; return false; } // Now that we have all of the passes ready, run them. MPM.run(&M); // Declare success. if (!NoOutput) Out->keep(); return true; }