diff options
author | Tom Stellard <thomas.stellard@amd.com> | 2013-02-21 19:16:47 -0500 |
---|---|---|
committer | Tom Stellard <thomas.stellard@amd.com> | 2013-02-21 19:18:39 -0500 |
commit | d8fa349c9e2fbe20fc8aeb545913f8b47ed8b72f (patch) | |
tree | 1bdcc6f1ae4093066955f6a0c5dc460d40851a57 | |
parent | 5de339c2a00bac7cc87db0c57ba5d9b052b07b70 (diff) |
r600g/compute: Handle NULL kernel metadatagc-api
-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; } |