From 84c26c0baab8f071270d0fef23175c24d738c73c Mon Sep 17 00:00:00 2001 From: Brecht Van Lommel Date: Mon, 19 Apr 2021 13:49:22 +0200 Subject: [PATCH] Fix crash generating closure functions calls with LLVM 11 Generating code for prepare_closure and gen_closure was crashing. The code now matches the implementation of the removed LLVM function. Signed-off-by: Brecht Van Lommel --- src/liboslexec/llvm_util.cpp | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/src/liboslexec/llvm_util.cpp b/src/liboslexec/llvm_util.cpp index 445f64000..3d468de27 100644 --- a/src/liboslexec/llvm_util.cpp +++ b/src/liboslexec/llvm_util.cpp @@ -3430,8 +3430,9 @@ LLVM_Util::call_function (llvm::Value *func, cspan args) #endif //llvm_gen_debug_printf (std::string("start ") + std::string(name)); #if OSL_LLVM_VERSION >= 110 - OSL_DASSERT(llvm::isa(func)); - llvm::Value *r = builder().CreateCall(llvm::cast(func), llvm::ArrayRef(args.data(), args.size())); + llvm::Value* r = builder().CreateCall( + llvm::cast(func->getType()->getPointerElementType()), func, + llvm::ArrayRef(args.data(), args.size())); #else llvm::Value *r = builder().CreateCall (func, llvm::ArrayRef(args.data(), args.size())); #endif