[Mesa-dev] [PATCH] clover: fix llvm 3.5 build error

Francisco Jerez currojerez at riseup.net
Fri Aug 21 04:18:03 PDT 2015


"Serge Martin (EdB)" <edb+mesa at sigluy.net> writes:

> On Wednesday 19 August 2015 11:56:08 Zoltan Gilian wrote:
>> There is no MDOperand in llvm 3.5.
>> 
>> v2: Check if kernel metadata is present to avoid crash (EdB).
>> v3: Second attempt to avoid crash: switch off metadata query for llvm < 3.6.
>
> Since the change you made for image support won't be backport to llvm 3.5 this 
> is good for me. And it no longer make clover crash.
>
> Reviewed-by: Serge Martin (EdB) <edb+mesa at sigluy.net>
>
> But since I don't have commit access, not sure what my r-b worth.
>
> Could it be pushed before the branch point?

Looks OK to me, just pushed it with your R-b tag and mine.

>
>> ---
>>  .../state_trackers/clover/llvm/invocation.cpp      | 33
>> ++++++++++++++-------- 1 file changed, 21 insertions(+), 12 deletions(-)
>> 
>> diff --git a/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> b/src/gallium/state_trackers/clover/llvm/invocation.cpp index
>> 8eb0469..908a296 100644
>> --- a/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> +++ b/src/gallium/state_trackers/clover/llvm/invocation.cpp
>> @@ -346,6 +346,15 @@ namespace {
>> 
>>     // Kernel metadata
>> 
>> +   struct kernel_arg_md {
>> +      llvm::StringRef type_name;
>> +      llvm::StringRef access_qual;
>> +      kernel_arg_md(llvm::StringRef type_name_, llvm::StringRef
>> access_qual_): +         type_name(type_name_), access_qual(access_qual_)
>> {}
>> +   };
>> +
>> +#if HAVE_LLVM >= 0x0306
>> +
>>     const llvm::MDNode *
>>     get_kernel_metadata(const llvm::Function *kernel_func) {
>>        auto mod = kernel_func->getParent();
>> @@ -356,12 +365,8 @@ namespace {
>> 
>>        const llvm::MDNode *kernel_node = nullptr;
>>        for (unsigned i = 0; i < kernels_node->getNumOperands(); ++i) {
>> -#if HAVE_LLVM >= 0x0306
>>           auto func = llvm::mdconst::dyn_extract<llvm::Function>(
>> -#else
>> -         auto func = llvm::dyn_cast<llvm::Function>(
>> -#endif
>> -                                   
>> kernels_node->getOperand(i)->getOperand(0)); +              
>> kernels_node->getOperand(i)->getOperand(0));
>>           if (func == kernel_func) {
>>              kernel_node = kernels_node->getOperand(i);
>>              break;
>> @@ -387,13 +392,6 @@ namespace {
>>        return node;
>>     }
>> 
>> -   struct kernel_arg_md {
>> -      llvm::StringRef type_name;
>> -      llvm::StringRef access_qual;
>> -      kernel_arg_md(llvm::StringRef type_name_, llvm::StringRef
>> access_qual_): -         type_name(type_name_), access_qual(access_qual_)
>> {}
>> -   };
>> -
>>     std::vector<kernel_arg_md>
>>     get_kernel_arg_md(const llvm::Function *kernel_func) {
>>        auto num_args = kernel_func->getArgumentList().size();
>> @@ -415,6 +413,17 @@ namespace {
>>        return res;
>>     }
>> 
>> +#else
>> +
>> +   std::vector<kernel_arg_md>
>> +   get_kernel_arg_md(const llvm::Function *kernel_func) {
>> +      return std::vector<kernel_arg_md>(
>> +            kernel_func->getArgumentList().size(),
>> +            kernel_arg_md("", ""));
>> +   }
>> +
>> +#endif // HAVE_LLVM >= 0x0306
>> +
>>     std::vector<module::argument>
>>     get_kernel_args(const llvm::Module *mod, const std::string &kernel_name,
>> const clang::LangAS::Map &address_spaces) {
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 212 bytes
Desc: not available
URL: <http://lists.freedesktop.org/archives/mesa-dev/attachments/20150821/074e6897/attachment.sig>


More information about the mesa-dev mailing list