aboutsummaryrefslogtreecommitdiffhomepage
path: root/lib/Core
diff options
context:
space:
mode:
Diffstat (limited to 'lib/Core')
-rw-r--r--lib/Core/ExternalDispatcher.cpp6
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;