[Mesa-dev] [PATCH v2] clover: Fix compilation after clang r315871
Jan Vesely
jan.vesely at rutgers.edu
Wed Oct 25 23:09:20 UTC 2017
On Tue, 2017-10-24 at 15:32 +0200, Vedran Miletić wrote:
> 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?
Hi Vedran,
you're right that it'd be more future proof, but I liked the one line
simplicity of the current version. Future clang changes will require
adaptations, but I don't expect clang to go back to non-0 lang AS
indices. Feel free to add "I told you so" if they prove me wrong :)
>
> Other than that, this patch is:
>
> Reviewed-by: Vedran Miletić <vedran at miletic.net>
I was not sure if this applied even without the change so I pushed it
only with francisco's rb.
thanks,
Jan
>
> Regards,
> Vedran
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 833 bytes
Desc: This is a digitally signed message part
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171025/958599a9/attachment.sig>
More information about the mesa-dev
mailing list