32 llvm::Module* _module;
33 std::shared_ptr<llvm::LLVMContext> _context;
34 std::unique_ptr<llvm::ExecutionEngine> _executionEngine;
35 std::unique_ptr<llvm::FunctionPassManager> _fpm;
39 std::shared_ptr<llvm::LLVMContext>
context) :
54 if (!_executionEngine.get()) {
58 _fpm.reset(
new llvm::FunctionPassManager(_module));
62 _fpm->doInitialization();
81 llvm::PassManagerBuilder
builder;
83 builder.populateFunctionPassManager(*_fpm);
89 if (
func ==
nullptr) {
97 llvm::raw_os_ostream os(std::cerr);
98 bool failed = llvm::verifyFunction(*
func, &os);