Mesa (master): clover: Fix build against LLVM SVN >= r266163

Michel Dänzer daenzer at kemper.freedesktop.org
Thu Apr 14 02:58:30 UTC 2016


Module: Mesa
Branch: master
Commit: 171a570f388b2895d14f6d5418c99573cffd6369
URL:    http://cgit.freedesktop.org/mesa/mesa/commit/?id=171a570f388b2895d14f6d5418c99573cffd6369

Author: Michel Dänzer <michel.daenzer at amd.com>
Date:   Wed Apr 13 15:57:50 2016 +0900

clover: Fix build against LLVM SVN >= r266163

createInternalizePass now takes a callback instead of a StringSet.

Reviewed-by: Francisco Jerez <currojerez at riseup.net>

---

 src/gallium/state_trackers/clover/llvm/invocation.cpp | 14 ++++++++++++++
 1 file changed, 14 insertions(+)

diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
index 4d11c24..fb75788 100644
--- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
+++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
@@ -322,6 +322,15 @@ namespace {
       // list of kernel functions to the internalizer.  The internalizer will
       // treat the functions in the list as "main" functions and internalize
       // all of the other functions.
+#if HAVE_LLVM >= 0x0309
+      auto preserve_kernels = [=](const llvm::GlobalValue &GV) {
+         for (const auto &kernel : kernels) {
+            if (GV.getName() == kernel->getName())
+               return true;
+         }
+         return false;
+      };
+#else
       std::vector<const char*> export_list;
       for (std::vector<llvm::Function *>::const_iterator I = kernels.begin(),
                                                          E = kernels.end();
@@ -329,12 +338,17 @@ namespace {
          llvm::Function *kernel = *I;
          export_list.push_back(kernel->getName().data());
       }
+#endif
 #if HAVE_LLVM < 0x0306
       PM.add(new llvm::DataLayoutPass(mod));
 #elif HAVE_LLVM < 0x0307
       PM.add(new llvm::DataLayoutPass());
 #endif
+#if HAVE_LLVM >= 0x0309
+      PM.add(llvm::createInternalizePass(preserve_kernels));
+#else
       PM.add(llvm::createInternalizePass(export_list));
+#endif
 
       llvm::PassManagerBuilder PMB;
       PMB.OptLevel = optimization_level;




More information about the mesa-commit mailing list