[cfe-dev] Coding style and warning spam: redundant std::move?

Whisperity via cfe-dev cfe-dev at lists.llvm.org
Sun Feb 16 06:07:08 PST 2020


I apologise, I wrote the example out of my mind without exact details - I
just remembered that there *are* issues with adding/removing move when you
want to target multiple compilers. It could be, that in the GCC line it
works, but older Clangs don't support it, maybe you need two layers of
template instantiation or return value wrapping for this to break. It's
been a while since I had the exact case in front of me.

Mehdi AMINI <joker.eph at gmail.com> ezt írta (időpont: 2020. febr. 15., Szo,
21:42):

>
>
> On Sat, Feb 15, 2020 at 12:13 PM Whisperity via cfe-dev <
> cfe-dev at lists.llvm.org> wrote:
>
>> You cannot really *fix* the issue until the minimum required GCC version
>> for the project is bumped because changing "std::move(Err)" to just "Err"
>> may (and most likely will) result in compile errors. The following case:
>>
>>   struct Something {};
>>   <T> struct CreateFromMoveable {
>>     CreateFromMoveable(T&&);
>>   };
>>
>>   CreateFromMoveable<Something> f() {
>>     Something S;
>>     // ...
>>     return S;
>>   }
>>
>> is a hard failure with old GCC, that's why "std::move" is written there.
>> Once the "std::move" is there, old GCC properly picks up the fact that it
>> could bind the move ctor in the return.
>>
>
> Seems like this was fixed in gcc5?
>
> https://godbolt.org/z/zaDyt6
>
> --
> Mehdi
>
>
>
>>
>> For now, you could either fall back to using an older compiler or disable
>> the warning locally...
>>
>>
>> Nicolai Hähnle via cfe-dev <cfe-dev at lists.llvm.org> ezt írta (időpont:
>> 2020. febr. 15., Szo, 20:35):
>>
>>> Hi all,
>>>
>>> GCC 9 introduced a new warning, -Wredundant-move, which is enabled by
>>> default when building LLVM and produces what looks like at least
>>> thousands of hits.
>>>
>>> https://reviews.llvm.org/D74672 is a sample of the kind of changes
>>> pointed out by this warning, more explanations are in this blog post:
>>>
>>> https://developers.redhat.com/blog/2019/04/12/understanding-when-not-to-stdmove-in-c/
>>>
>>> What do people think should be done here?
>>>
>>> 1. Disable -Wredundant-move?
>>> 2. Fix it all (seems daunting to do manually)?
>>> 3. Encourage clang/clang-tidy developers to add this warning and add a
>>> clang-tidy rule to fix it automatically?
>>>
>>> My personal opinion is that while the review linked above should be
>>> committed, it's ultimately a drop in the ocean and #3 is the way to
>>> go.
>>>
>>> In the meantime, I'm certainly going to disable -Wredundant-move
>>> locally, but should that also be done by default for gcc in the
>>> CMakeLists.txt?
>>>
>>> Cheers,
>>> Nicolai
>>> --
>>> Lerne, wie die Welt wirklich ist,
>>> aber vergiss niemals, wie sie sein sollte.
>>> _______________________________________________
>>> cfe-dev mailing list
>>> cfe-dev at lists.llvm.org
>>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>>
>> _______________________________________________
>> cfe-dev mailing list
>> cfe-dev at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-dev
>>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-dev/attachments/20200216/3109dd49/attachment.html>


More information about the cfe-dev mailing list