Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- extern "C" void
- LLVMRustJIT(LLVMPassManagerRef PMR,
- LLVMModuleRef M,
- const char *triple,
- CodeGenOpt::Level OptLevel,
- bool EnableSegmentedStacks) {
- InitializeAllTargets();
- InitializeAllTargetMCs();
- InitializeAllAsmPrinters();
- InitializeAllAsmParsers();
- TargetOptions Options;
- Options.NoFramePointerElim = true;
- Options.EnableSegmentedStacks = EnableSegmentedStacks;
- std::string Err;
- const Target *TheTarget = TargetRegistry::lookupTarget(triple, Err);
- std::string FeaturesStr;
- std::string Trip(triple);
- std::string CPUStr = llvm::sys::getHostCPUName();
- TargetMachine *Target =
- TheTarget->createTargetMachine(Trip, CPUStr, FeaturesStr,
- Options, Reloc::PIC_,
- CodeModel::Default, OptLevel);
- PassManager *PM = unwrap<PassManager>(PMR);
- Module* m = unwrap(M);
- PM->run(*m);
- ExecutionEngine* engine = JIT::createJIT(m, &Err, 0, false, Target);
- /*typedef void (*entry)();
- entry me = reinterpret_cast<entry>(engine->getPointerToFunction(engine->FindFunctionNamed("main")));
- me();*/
- delete Target;
- }
Add Comment
Please, Sign In to add comment