Module: Mesa Branch: master Commit: 5a925cc5504575c22dbb7d29842d7fc5babcb5c7 URL: http://cgit.freedesktop.org/mesa/mesa/commit/?id=5a925cc5504575c22dbb7d29842d7fc5babcb5c7
Author: Tom Stellard <thomas.stell...@amd.com> Date: Wed Jun 5 17:05:43 2013 -0700 clover: Don't segfault when compiling a program with no kernel --- .../state_trackers/clover/llvm/invocation.cpp | 7 +++++++ 1 files changed, 7 insertions(+), 0 deletions(-) diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp index 90bc53b..dae61f7 100644 --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp @@ -211,6 +211,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))); _______________________________________________ mesa-commit mailing list mesa-commit@lists.freedesktop.org http://lists.freedesktop.org/mailman/listinfo/mesa-commit