[Mesa-dev] [PATCH v2] clover: Fix compilation after clang r315871
Vedran Miletić
vedran at miletic.net
Tue Oct 24 13:32:52 UTC 2017
On 10/23/2017 05:24 AM, Jan Vesely wrote:
> From: Jan Vesely <jan.vesely at rutgers.edu>
>
> v2: use a more generic compat function
>
> Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=103388
> Signed-off-by: Jan Vesely <jan.vesely at rutgers.edu>
> ---
> src/gallium/state_trackers/clover/llvm/codegen/common.cpp | 5 ++---
> src/gallium/state_trackers/clover/llvm/compat.hpp | 12 ++++++++++--
> 2 files changed, 12 insertions(+), 5 deletions(-)
>
> diff --git a/src/gallium/state_trackers/clover/llvm/codegen/common.cpp b/src/gallium/state_trackers/clover/llvm/codegen/common.cpp
> index 075183400a..dd9d02ab11 100644
> --- a/src/gallium/state_trackers/clover/llvm/codegen/common.cpp
> +++ b/src/gallium/state_trackers/clover/llvm/codegen/common.cpp
> @@ -70,7 +70,6 @@ namespace {
> make_kernel_args(const Module &mod, const std::string &kernel_name,
> const clang::CompilerInstance &c) {
> std::vector<module::argument> args;
> - const auto address_spaces = c.getTarget().getAddressSpaceMap();
> const Function &f = *mod.getFunction(kernel_name);
> ::llvm::DataLayout dl(&mod);
> const auto size_type =
> @@ -128,8 +127,8 @@ namespace {
> const unsigned address_space =
> cast< ::llvm::PointerType>(actual_type)->getAddressSpace();
>
> - if (address_space == address_spaces[clang::LangAS::opencl_local
> - - compat::lang_as_offset]) {
> + if (address_space == compat::target_lang_address_space(
> + c.getTarget(), clang::LangAS::opencl_local)) {
> args.emplace_back(module::argument::local, arg_api_size,
> target_size, target_align,
> module::argument::zero_ext);
> diff --git a/src/gallium/state_trackers/clover/llvm/compat.hpp b/src/gallium/state_trackers/clover/llvm/compat.hpp
> index f8b56516d5..3e34f0dd94 100644
> --- a/src/gallium/state_trackers/clover/llvm/compat.hpp
> +++ b/src/gallium/state_trackers/clover/llvm/compat.hpp
> @@ -69,11 +69,19 @@ namespace clover {
> typedef ::llvm::TargetLibraryInfo target_library_info;
> #endif
>
> + template<typename T, typename AS>
> + unsigned target_lang_address_space(const T& target, const AS lang_as) {
> + const auto &map = target.getAddressSpaceMap();
> +#if HAVE_LLVM >= 0x0500
> + return map[static_cast<unsigned>(lang_as)];
> +#else
> + return map[lang_as - clang::LangAS::Offset];
> +#endif
> + }
> +
> #if HAVE_LLVM >= 0x0500
> - const auto lang_as_offset = 0;
> const clang::InputKind ik_opencl = clang::InputKind::OpenCL;
> #else
> - const auto lang_as_offset = clang::LangAS::Offset;
> const clang::InputKind ik_opencl = clang::IK_OpenCL;
> #endif
>
>
Thanks for improving the patch. Future-proof thinking: what if the value
of clang::LangAS::Default changes from 0 to some other constant?
Other than that, this patch is:
Reviewed-by: Vedran Miletić <vedran at miletic.net>
Regards,
Vedran
--
Vedran Miletić
vedran.miletic.net
More information about the mesa-dev
mailing list