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

Reply via email to