diff options
Diffstat (limited to 'tools/opt/NewPMDriver.cpp')
-rw-r--r-- | tools/opt/NewPMDriver.cpp | 46 |
1 files changed, 46 insertions, 0 deletions
diff --git a/tools/opt/NewPMDriver.cpp b/tools/opt/NewPMDriver.cpp new file mode 100644 index 0000000000..e577995e26 --- /dev/null +++ b/tools/opt/NewPMDriver.cpp @@ -0,0 +1,46 @@ +//===- 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; +} |