clover: Fix build against LLVM SVN >= r266163

createInternalizePass now takes a callback instead of a StringSet.

Reviewed-by: Francisco Jerez <currojerez@riseup.net>
This commit is contained in:
Michel Dänzer
2016-04-13 15:57:50 +09:00
committed by Michel Dänzer
parent b63a98b121
commit 171a570f38

View File

@@ -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;