From 2db56434d4a275b5b24445dcaeaa024eca6fa7f9 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Marek=20Ol=C5=A1=C3=A1k?= Date: Thu, 20 Oct 2016 00:09:44 +0200 Subject: [PATCH] gallivm: add wrappers for missing functions in LLVM <= 3.8 MIME-Version: 1.0 Content-Type: text/plain; charset=utf8 Content-Transfer-Encoding: 8bit radeonsi needs these. Reviewed-by: Nicolai Hähnle --- src/gallium/auxiliary/gallivm/lp_bld_misc.cpp | 21 +++++++++++++++++++ src/gallium/auxiliary/gallivm/lp_bld_misc.h | 6 ++++++ 2 files changed, 27 insertions(+) diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp index 791a4702556..f4045ad1d89 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.cpp @@ -77,6 +77,7 @@ #include +#include #include #include #include @@ -708,3 +709,23 @@ lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes) A->addAttr(llvm::AttributeSet::get(A->getContext(), A->getArgNo() + 1, B)); #endif } + +extern "C" LLVMValueRef +lp_get_called_value(LLVMValueRef call) +{ +#if HAVE_LLVM >= 0x0309 + return LLVMGetCalledValue(call); +#else + return llvm::wrap(llvm::CallSite(llvm::unwrap(call)).getCalledValue()); +#endif +} + +extern "C" bool +lp_is_function(LLVMValueRef v) +{ +#if HAVE_LLVM >= 0x0309 + return LLVMGetValueKind(v) == LLVMFunctionValueKind; +#else + return llvm::isa(llvm::unwrap(v)); +#endif +} diff --git a/src/gallium/auxiliary/gallivm/lp_bld_misc.h b/src/gallium/auxiliary/gallivm/lp_bld_misc.h index c127c480d52..a55c6bd508d 100644 --- a/src/gallium/auxiliary/gallivm/lp_bld_misc.h +++ b/src/gallium/auxiliary/gallivm/lp_bld_misc.h @@ -76,6 +76,12 @@ lp_free_memory_manager(LLVMMCJITMemoryManagerRef memorymgr); extern void lp_add_attr_dereferenceable(LLVMValueRef val, uint64_t bytes); +extern LLVMValueRef +lp_get_called_value(LLVMValueRef call); + +extern bool +lp_is_function(LLVMValueRef v); + #ifdef __cplusplus } #endif -- 2.30.2