[Mesa-dev] [PATCH 1/5] gallivm: add helper lp_add_attr_dereferenceable
Nicolai Hähnle
nhaehnle at gmail.com
Wed Jul 13 08:21:11 UTC 2016
On 13.07.2016 00:56, Marek Olšák wrote:
> From: Marek Olšák <marek.olsak at 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)
Is the extern "C" here really needed? I think the compiler should pick
it up from the extern "C" wrapper in the header.
Nicolai
> +{
> +#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
>
More information about the mesa-dev
mailing list