summaryrefslogtreecommitdiff
path: root/src/gallium/drivers/r600/llvm_wrapper.cpp
diff options
context:
space:
mode:
Diffstat (limited to 'src/gallium/drivers/r600/llvm_wrapper.cpp')
-rw-r--r--src/gallium/drivers/r600/llvm_wrapper.cpp12
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;
}