Jan Vesely <jan.ves...@rutgers.edu> writes: > On Tue, 2016-11-22 at 20:25 +0100, Vedran Miletić wrote: >> The commit 8e430ff8b060b4e8e922bae24b3c57837da6ea77 support for LLVM >> 3.9 and older versionsin Clover. This patch restores it and refactors >> the support using Clover compatibility layer for LLVM. >> >> v2: merged #ifdef blocks >> v3: added support for LLVM 3.6-3.8 >> v4: add missing #ifdef around <memory> >> v5: simplify using templates and lambda >> >> Signed-off-by: Vedran Miletić <ved...@miletic.net> >> Reviewed-by[v2]: Jan Vesely <jan.ves...@rutgers.edu> >> Tested-by[v4]: Vinson Lee <v...@freedesktop.org> >> Tested-by[v4]: Pierre Moreau <pierre.mor...@free.fr> >> Reviewed-by: Francisco Jerez <curroje...@riseup.net> >> --- >> .../state_trackers/clover/llvm/codegen/bitcode.cpp | 9 +++------ >> src/gallium/state_trackers/clover/llvm/compat.hpp | 18 >> ++++++++++++++++++ >> 2 files changed, 21 insertions(+), 6 deletions(-) >> >> diff --git a/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp >> b/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp >> index 5dcc4f8..d09207b 100644 >> --- a/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp >> +++ b/src/gallium/state_trackers/clover/llvm/codegen/bitcode.cpp >> @@ -32,6 +32,7 @@ >> /// >> >> #include "llvm/codegen.hpp" >> +#include "llvm/compat.hpp" >> #include "llvm/metadata.hpp" >> #include "core/error.hpp" >> #include "util/algorithm.hpp" >> @@ -99,13 +100,9 @@ clover::llvm::parse_module_library(const module &m, >> ::llvm::LLVMContext &ctx, >> auto mod = ::llvm::parseBitcodeFile(::llvm::MemoryBufferRef( >> as_string(m.secs[0].data), " "), >> ctx); >> >> - if (::llvm::Error err = mod.takeError()) { >> - std::string msg; >> - ::llvm::handleAllErrors(std::move(err), [&](::llvm::ErrorInfoBase >> &EIB) { >> - msg = EIB.message(); >> - fail(r_log, error(CL_INVALID_PROGRAM), msg.c_str()); > > interesting that this used to pass char * and now switched to > std::string. was that a leftover from the times of compat::string?
I don't think so, it was 8e430ff8b060b4e8e922bae24b3c57837da6ea77 that changed the argument to be a char * for some reason. > you can add my RB to v5. > > Reviewed-by: Jan Vesely <jan.ves...@rutgers.edu> > > Jan > >> + compat::handle_module_error(mod, [&](const std::string &s) { >> + fail(r_log, error(CL_INVALID_PROGRAM), s); >> }); >> - } >> >> return std::unique_ptr<::llvm::Module>(std::move(*mod)); >> } >> diff --git a/src/gallium/state_trackers/clover/llvm/compat.hpp >> b/src/gallium/state_trackers/clover/llvm/compat.hpp >> index a963cff..fc257ec 100644 >> --- a/src/gallium/state_trackers/clover/llvm/compat.hpp >> +++ b/src/gallium/state_trackers/clover/llvm/compat.hpp >> @@ -39,6 +39,11 @@ >> #include <llvm/Linker/Linker.h> >> #include <llvm/Transforms/IPO.h> >> #include <llvm/Target/TargetMachine.h> >> +#if HAVE_LLVM >= 0x0400 >> +#include <llvm/Support/Error.h> >> +#else >> +#include <llvm/Support/ErrorOr.h> >> +#endif >> >> #if HAVE_LLVM >= 0x0307 >> #include <llvm/IR/LegacyPassManager.h> >> @@ -158,6 +163,19 @@ namespace clover { >> #else >> const auto default_reloc_model = ::llvm::Reloc::Default; >> #endif >> + >> + template<typename M, typename F> inline void >> + handle_module_error(M &mod, const F &f) { >> +#if HAVE_LLVM >= 0x0400 >> + if (::llvm::Error err = mod.takeError()) >> + ::llvm::handleAllErrors(std::move(err), >> [&](::llvm::ErrorInfoBase &eib) { >> + f(eib.message()); >> + }); >> +#else >> + if (!mod) >> + f(mod.getError().message()); >> +#endif >> + } >> } >> } >> } > > -- > Jan Vesely <jan.ves...@rutgers.edu>
signature.asc
Description: PGP signature
_______________________________________________ mesa-dev mailing list mesa-dev@lists.freedesktop.org https://lists.freedesktop.org/mailman/listinfo/mesa-dev