From c0ee2ddf04007eafa31c38fc6132ec5df384197c Mon Sep 17 00:00:00 2001 From: Steena Monteiro Date: Tue, 3 May 2022 15:49:19 -0700 Subject: [PATCH] Added better error checking for module_from_bitcode(). Signed-off-by: Steena Monteiro --- src/liboslexec/llvm_instance.cpp | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/src/liboslexec/llvm_instance.cpp b/src/liboslexec/llvm_instance.cpp index f5ffd8c36..2d58d0017 100644 --- a/src/liboslexec/llvm_instance.cpp +++ b/src/liboslexec/llvm_instance.cpp @@ -1336,17 +1336,16 @@ BackendLLVM::run () osl_llvm_compiled_rs_dependant_ops_size, "llvm_rs_dependant_ops", &err)); if (err.length()) - shadingcontext()->errorf("ParseBitcodeFile returned '%s'\n", err); - + shadingcontext()->errorf("llvm::parseBitcodeFile returned '%s' for llvm_rs_dependant_ops\n", err); std::vector& rs_free_function_bitcode = shadingsys().m_rs_bitcode; OSL_ASSERT (rs_free_function_bitcode.size() && "Free Function bitcode is empty"); llvm::Module* rs_free_functions_module = - ll.module_from_bitcode (static_cast(rs_free_function_bitcode.data()), - rs_free_function_bitcode.size(), "rs_free_functions"); + ll.module_from_bitcode (static_cast(rs_free_function_bitcode.data()), + rs_free_function_bitcode.size(), "rs_free_functions", &err); if (err.length()) - shadingcontext()->errorf("ParseBitcodeFile returned '%s'\n", err); + shadingcontext()->errorf("llvm::parseBitcodeFile returned '%s' for rs_free_functions\n", err); std::unique_ptr rs_free_functions_module_ptr (rs_free_functions_module); bool success = ll.absorb_module(std::move(rs_free_functions_module_ptr)); @@ -1356,6 +1355,8 @@ BackendLLVM::run () ll.module (ll.module_from_bitcode ((char*)osl_llvm_compiled_ops_block, osl_llvm_compiled_ops_size, "llvm_ops", &err)); + if (err.length()) + shadingcontext()->errorf("llvm::parseBitcodeFile returned '%s' for llvm_ops\n", err); } } else { @@ -1363,12 +1364,12 @@ BackendLLVM::run () ll.module (ll.module_from_bitcode ((char*)osl_llvm_compiled_ops_cuda_block, osl_llvm_compiled_ops_cuda_size, "llvm_ops", &err)); + if (err.length()) + shadingcontext()->errorf("llvm::parseBitcodeFile returned '%s' for cuda llvm_ops\n", err); #else OSL_ASSERT (0 && "Must generate LLVM CUDA bitcode for OptiX"); #endif } - if (err.length()) - shadingcontext()->errorf("ParseBitcodeFile returned '%s'\n", err); OSL_ASSERT (ll.module()); #endif