From 4c8fabc7de30e17ef116b8f413f3a973c29cb56c Mon Sep 17 00:00:00 2001 From: Jiri Slaby Date: Wed, 22 Feb 2017 16:10:21 +0100 Subject: llvm: stop using global context It was marked as deprecated long time ago and finally removed in LLVM 3.9. Remove all uses of getGlobalContext and create our own context. Propagate it all over the code then. [v2] use ctx, not C as name Signed-off-by: Jiri Slaby --- lib/Core/ExternalDispatcher.cpp | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) (limited to 'lib/Core/ExternalDispatcher.cpp') diff --git a/lib/Core/ExternalDispatcher.cpp b/lib/Core/ExternalDispatcher.cpp index ecc9912e..01c5f935 100644 --- a/lib/Core/ExternalDispatcher.cpp +++ b/lib/Core/ExternalDispatcher.cpp @@ -85,8 +85,8 @@ void *ExternalDispatcher::resolveSymbol(const std::string &name) { return addr; } -ExternalDispatcher::ExternalDispatcher() { - dispatchModule = new Module("ExternalDispatcher", getGlobalContext()); +ExternalDispatcher::ExternalDispatcher(LLVMContext &ctx) { + dispatchModule = new Module("ExternalDispatcher", ctx); std::string error; executionEngine = ExecutionEngine::createJIT(dispatchModule, &error); @@ -195,6 +195,7 @@ Function *ExternalDispatcher::createDispatcher(Function *target, Instruction *in if (!resolveSymbol(target->getName())) return 0; + LLVMContext &ctx = target->getContext(); CallSite cs; if (inst->getOpcode()==Instruction::Call) { cs = CallSite(cast(inst)); @@ -206,20 +207,20 @@ Function *ExternalDispatcher::createDispatcher(Function *target, Instruction *in std::vector nullary; - Function *dispatcher = Function::Create(FunctionType::get(Type::getVoidTy(getGlobalContext()), + Function *dispatcher = Function::Create(FunctionType::get(Type::getVoidTy(ctx), nullary, false), GlobalVariable::ExternalLinkage, "", dispatchModule); - BasicBlock *dBB = BasicBlock::Create(getGlobalContext(), "entry", dispatcher); + BasicBlock *dBB = BasicBlock::Create(ctx, "entry", dispatcher); // Get a Value* for &gTheArgsP, as an i64**. Instruction *argI64sp = - new IntToPtrInst(ConstantInt::get(Type::getInt64Ty(getGlobalContext()), + new IntToPtrInst(ConstantInt::get(Type::getInt64Ty(ctx), (uintptr_t) (void*) &gTheArgsP), - PointerType::getUnqual(PointerType::getUnqual(Type::getInt64Ty(getGlobalContext()))), + PointerType::getUnqual(PointerType::getUnqual(Type::getInt64Ty(ctx))), "argsp", dBB); Instruction *argI64s = new LoadInst(argI64sp, "args", dBB); @@ -238,8 +239,7 @@ Function *ExternalDispatcher::createDispatcher(Function *target, Instruction *in (*ai)->getType()); Instruction *argI64p = GetElementPtrInst::Create(argI64s, - ConstantInt::get(Type::getInt32Ty(getGlobalContext()), - idx), + ConstantInt::get(Type::getInt32Ty(ctx), idx), "", dBB); Instruction *argp = new BitCastInst(argI64p, PointerType::getUnqual(argTy), @@ -260,14 +260,14 @@ Function *ExternalDispatcher::createDispatcher(Function *target, Instruction *in #else Instruction *result = CallInst::Create(dispatchTarget, args, args+i, "", dBB); #endif - if (result->getType() != Type::getVoidTy(getGlobalContext())) { + if (result->getType() != Type::getVoidTy(ctx)) { Instruction *resp = new BitCastInst(argI64s, PointerType::getUnqual(result->getType()), "", dBB); new StoreInst(result, resp, dBB); } - ReturnInst::Create(getGlobalContext(), dBB); + ReturnInst::Create(ctx, dBB); delete[] args; -- cgit 1.4.1