Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- if(typeid(*v) == typeid(llvm::Function))
- {
- v->dump();
- return;
- }
- llvm::FunctionType* ft = llvm::FunctionType::get(llvm::Type::getDoubleTy(llvm::getGlobalContext()),
- std::vector<const llvm::Type*>(0,llvm::Type::getDoubleTy(llvm::getGlobalContext())),false);
- llvm::Function* f = llvm::Function::Create(ft,llvm::Function::ExternalLinkage,"",module);
- llvm::BasicBlock* bb = llvm::BasicBlock::Create(llvm::getGlobalContext(),"entry",f);
- builder.SetInsertPoint(bb);
- builder.CreateRet(v);
- std::cerr << "reg dump (before verify):\n";
- v->dump();
- std::cerr << "function dump (before verify):\n";
- f->dump();
- llvm::verifyFunction(*f);
- std::cerr << "verified\n";
- void* fptr = executionEngine->getPointerToFunction(f);
- double (*FP)() = (double (*)())(intptr_t)fptr;
- std::cout << "evaluated to: " << FP() << "\n";
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement