diff options
Diffstat (limited to 'lib/Core')
-rw-r--r-- | lib/Core/ExternalDispatcher.cpp | 6 |
1 files changed, 4 insertions, 2 deletions
diff --git a/lib/Core/ExternalDispatcher.cpp b/lib/Core/ExternalDispatcher.cpp index baa5327a..b1bfff47 100644 --- a/lib/Core/ExternalDispatcher.cpp +++ b/lib/Core/ExternalDispatcher.cpp @@ -287,7 +287,8 @@ Function *ExternalDispatcherImpl::createDispatcher(Function *target, ConstantInt::get(Type::getInt64Ty(ctx), (uintptr_t)(void *)&gTheArgsP), PointerType::getUnqual(PointerType::getUnqual(Type::getInt64Ty(ctx))), "argsp"); - auto argI64s = Builder.CreateLoad(argI64sp, "args"); + auto argI64s = Builder.CreateLoad( + argI64sp->getType()->getPointerElementType(), argI64sp, "args"); // Get the target function type. FunctionType *FTy = cast<FunctionType>( @@ -306,7 +307,8 @@ Function *ExternalDispatcherImpl::createDispatcher(Function *target, ConstantInt::get(Type::getInt32Ty(ctx), idx)); auto argp = Builder.CreateBitCast(argI64p, PointerType::getUnqual(argTy)); - args[i] = Builder.CreateLoad(argp); + args[i] = + Builder.CreateLoad(argp->getType()->getPointerElementType(), argp); unsigned argSize = argTy->getPrimitiveSizeInBits(); idx += ((!!argSize ? argSize : 64) + 63) / 64; |