Am 13.07.2016 um 00:56 schrieb Marek Olšák:
> From: Marek Olšák <marek.ol...@amd.com>
> 
> Not sure if this is the right way to do it, but it seems to work.
> 
> v2: make it a no-op on LLVM <= 3.5
> ---
>  src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 11 +++++++++++
>  src/gallium/auxiliary/gallivm/lp_bld_misc.h   |  3 +++
>  2 files changed, 14 insertions(+)
> 
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp 
> b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> index 23ef3ed..791a470 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp
> @@ -697,3 +697,14 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef 
> memorymgr)
>  {
>     delete reinterpret_cast<BaseMemoryManager*>(memorymgr);
>  }
> +
> +extern "C" void
> +lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes)
> +{
> +#if HAVE_LLVM >= 0x0306
> +   llvm::Argument *A = llvm::unwrap<llvm::Argument>(val);
> +   llvm::AttrBuilder B;
> +   B.addDereferenceableAttr(bytes);
> +   A->addAttr(llvm::AttributeSet::get(A->getContext(), A->getArgNo() + 1,  
> B));
> +#endif
> +}
> diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h 
> b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
> index d038e3b..c127c48 100644
> --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h
> +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h
> @@ -73,6 +73,9 @@ lp_get_default_memory_manager();
>  extern void
>  lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr);
>  
> +extern void
> +lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes);
> +
>  #ifdef __cplusplus
>  }
>  #endif
> 

Reviewed-by: Roland Scheidegger <srol...@vmware.com>
_______________________________________________
mesa-dev mailing list
mesa-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/mesa-dev

Reply via email to