[Mesa-dev] [PATCH v2] clover: Fix compilation after clang r315871
Francisco Jerez
currojerez at riseup.net
Tue Oct 24 23:55:09 UTC 2017
Jan Vesely <jan.vesely at rutgers.edu> writes:
> On Sun, 2017-10-22 at 20:40 -0700, Francisco Jerez wrote:
>> Jan Vesely <jano.vesely at gmail.com> writes:
>>
>> > 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) {
>>
>> Can you name this "target_address_space" (to me lang address space means
>> the LangAS enum, i.e. the non-target-dependent representation, which is
>> not what you get as result from this function), and place the '&' sign
>> consistently in the argument declaration?
>
> Does this refer only to whitespace around "T& target", or would you
> prefer to pass lang_as as reference as well? (it's an integral type so
> I did not consider it necessary).
>
Nope, I was referring to the target argument only, there's no use in
passing lang_as by reference.
Thanks.
> Jan
>
>> With that cleaned up patch
>> is:
>>
>> Reviewed-by: Francisco Jerez <currojerez at riseup.net>
>>
>> Thanks!
>>
>> > + 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
>> >
>> > --
>> > 2.13.6
-------------- next part --------------
A non-text attachment was scrubbed...
Name: signature.asc
Type: application/pgp-signature
Size: 227 bytes
Desc: not available
URL: <https://lists.freedesktop.org/archives/mesa-dev/attachments/20171024/3922362e/attachment.sig>
More information about the mesa-dev
mailing list