[Mesa-dev] [PATCH] clover: Don't segfault when compiling a program with no kernel
Tom Stellard
tom at stellard.net
Wed Jun 5 17:12:14 PDT 2013
From: Tom Stellard <thomas.stellard at amd.com>
---
src/gallium/state_trackers/clover/llvm/invocation.cpp | 7 +++++++
1 file changed, 7 insertions(+)
diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index 2d115ed..8ec089d 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -209,6 +209,13 @@ namespace {
find_kernels(llvm::Module *mod, std::vector<llvm::Function *> &kernels) {
const llvm::NamedMDNode *kernel_node =
mod->getNamedMetadata("opencl.kernels");
+ // This means there are no kernels in the program. The spec does not
+ // require that we return an error here, but there will be an error if
+ // the user tries to pass this program to a clCreateKernel() call.
+ if (!kernel_node) {
+ return;
+ }
+
for (unsigned i = 0; i < kernel_node->getNumOperands(); ++i) {
kernels.push_back(llvm::dyn_cast<llvm::Function>(
kernel_node->getOperand(i)->getOperand(0)));
--
1.7.11.4
More information about the mesa-dev
mailing list