diff options
Diffstat (limited to 'src/gallium/drivers/r600/llvm_wrapper.cpp')
-rw-r--r-- | src/gallium/drivers/r600/llvm_wrapper.cpp | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/src/gallium/drivers/r600/llvm_wrapper.cpp b/src/gallium/drivers/r600/llvm_wrapper.cpp index ae2f4d24f74..e4b2686f254 100644 --- a/src/gallium/drivers/r600/llvm_wrapper.cpp +++ b/src/gallium/drivers/r600/llvm_wrapper.cpp @@ -54,8 +54,16 @@ extern "C" LLVMModuleRef llvm_get_kernel_module(unsigned index, llvm::Module *M = llvm::unwrap(mod); const llvm::NamedMDNode *kernel_node = M->getNamedMetadata("opencl.kernels"); - const char* kernel_name = kernel_node->getOperand(index)-> - getOperand(0)->getName().data(); + const llvm::Value *kernel = + kernel_node->getOperand(index)->getOperand(0); + const char *kernel_name; + // It is possible for a kernel metadata entry to be NULL, so we + // must handle this case. + if (kernel) { + kernel_name = kernel->getName().data(); + } else { + kernel_name = ""; + } llvm_strip_unused_kernels(mod, kernel_name); return mod; } |