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