Guest User

Untitled

a guest
Jul 17th, 2018
73
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C++ 1.15 KB | None | 0 0
  1. extern "C" void
  2. LLVMRustJIT(LLVMPassManagerRef PMR,
  3.                         LLVMModuleRef M,
  4.                         const char *triple,
  5.                         CodeGenOpt::Level OptLevel,
  6.       bool EnableSegmentedStacks) {
  7.  
  8.   InitializeAllTargets();
  9.   InitializeAllTargetMCs();
  10.   InitializeAllAsmPrinters();
  11.   InitializeAllAsmParsers();
  12.  
  13.   TargetOptions Options;
  14.   Options.NoFramePointerElim = true;
  15.   Options.EnableSegmentedStacks = EnableSegmentedStacks;
  16.  
  17.   std::string Err;
  18.   const Target *TheTarget = TargetRegistry::lookupTarget(triple, Err);
  19.   std::string FeaturesStr;
  20.   std::string Trip(triple);
  21.   std::string CPUStr = llvm::sys::getHostCPUName();
  22.   TargetMachine *Target =
  23.     TheTarget->createTargetMachine(Trip, CPUStr, FeaturesStr,
  24.            Options, Reloc::PIC_,
  25.            CodeModel::Default, OptLevel);
  26.   PassManager *PM = unwrap<PassManager>(PMR);
  27.   Module* m = unwrap(M);
  28.  
  29.   PM->run(*m);
  30.  
  31.   ExecutionEngine* engine = JIT::createJIT(m, &Err, 0, false, Target);
  32.  
  33.   /*typedef void (*entry)();
  34.   entry me = reinterpret_cast<entry>(engine->getPointerToFunction(engine->FindFunctionNamed("main")));
  35.   me();*/
  36.  
  37.   delete Target;
  38. }
Add Comment
Please, Sign In to add comment