// Create pass manager llvm::legacy::PassManager passMgr; // Add optimization passes passMgr.add(llvm::createConstantPropagationPass()); passMgr.add(llvm::createInstructionCombiningPass()); passMgr.add(llvm::createFunctionInliningPass()); // Run passes on LLVM module passMgr.run(*llvmModule);
// Create pass manager clang::CompilerInstance compiler; clang::Rewriter rewriter(compiler.getSourceManager(), compiler.getLangOpts()); // Add optimization passes clang::LangOptions langOpts; clang::TargetOptions targetOpts; clang::FileSystemOptions fileSysOpts; clang::DiagnosticOptions diagOpts; clang::PassManagerBuilder passMgrBuilder; clang::PassManager passMgr; passMgrBuilder.OptLevel = 2; passMgrBuilder.populateModulePassManager(passMgr); // Run passes on Clang module passMgr.run(*clangModule);In both examples, the pass managers are used to add optimization passes to the module and then apply those passes in a specific order. The package library used in these examples is LLVM, which provides the pass manager utility class as part of its compiler infrastructure.