[Mesa-dev] [PATCH v2] clover: Fix compilation after clang r315871
Vedran Miletić
vedran at miletic.net
Thu Oct 26 19:00:35 UTC 2017
26.10.2017 u 01:09, Jan Vesely je napisao/la:
> 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
>
It did, I'll make sure to say it more clearly in the future.
Regards,
Vedran
--
Vedran Miletić
vedran.miletic.net
More information about the mesa-dev
mailing list