[Mesa-dev] [PATCH] clover: Fix build against LLVM SVN >= r266163

Tom Stellard tom at stellard.net
Wed Apr 13 13:13:50 UTC 2016


On Wed, Apr 13, 2016 at 03:59:36PM +0900, Michel Dänzer wrote:
> From: Michel Dänzer <michel.daenzer at amd.com>
> 
> createInternalizePass now takes a callback instead of a StringSet.
> 
> Signed-off-by: Michel Dänzer <michel.daenzer at amd.com>
Reviewed-by: Tom Stellard <thomas.stellard at amd.com>
> ---
>  src/gallium/state_trackers/clover/llvm/invocation.cpp | 17 +++++++++++++++++
>  1 file changed, 17 insertions(+)
> 
> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> index 4d11c24..97acd03 100644
> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
> @@ -322,6 +322,18 @@ 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 (std::vector<llvm::Function *>::const_iterator I = kernels.begin(),
> +                                                            E = kernels.end();
> +                                                            I != E; ++I) {
> +            llvm::Function *kernel = *I;
> +            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 +341,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;
> -- 
> 2.8.0.rc3
> 
> _______________________________________________
> mesa-dev mailing list
> mesa-dev at lists.freedesktop.org
> https://lists.freedesktop.org/mailman/listinfo/mesa-dev


More information about the mesa-dev mailing list