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:

committed by
Michel Dänzer

parent
b63a98b121
commit
171a570f38
@@ -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;
|
||||
|
Reference in New Issue
Block a user