summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTom Stellard <thomas.stellard@amd.com>2013-02-21 19:16:47 -0500
committerTom Stellard <thomas.stellard@amd.com>2013-02-21 19:18:39 -0500
commitd8fa349c9e2fbe20fc8aeb545913f8b47ed8b72f (patch)
tree1bdcc6f1ae4093066955f6a0c5dc460d40851a57
parent5de339c2a00bac7cc87db0c57ba5d9b052b07b70 (diff)
r600g/compute: Handle NULL kernel metadatagc-api
-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;
}