[clang] dd870f6 - Fix warning about unused std::unique result, erase shifted elements

David Blaikie via cfe-commits cfe-commits at lists.llvm.org
Mon Nov 18 17:10:51 PST 2019


OK - thanks for the context!

On Mon, Nov 18, 2019 at 5:07 PM Ben Langmuir <blangmuir at apple.com> wrote:

> Nice find.
>
> The change LGTM, and is clearly what I always intended it to do.  I was
> confused how this ever worked at all, but I see that (at least in libc++)
> we move the values into place rather than swap them, so the values at the
> end are still the largest values for types with a trivial move constructor.
>
> I am not working in this area these days and am not setup to provide a
> test case in any reasonable amount of time.  I think it would need a gtest,
> as I'm not sure this change is obvservable otherwise.
>
> Ben
>
> On Nov 18, 2019, at 4:44 PM, David Blaikie <dblaikie at gmail.com> wrote:
>
> Hey Ben - if you're still involved with this part of the project - could
> you check that this change (to code you committed back in 2014, r215810) is
> correct & add a test case if possible?
>
> On Thu, Nov 7, 2019 at 10:39 AM Reid Kleckner via cfe-commits <
> cfe-commits at lists.llvm.org> wrote:
>
>>
>> Author: Reid Kleckner
>> Date: 2019-11-07T10:39:29-08:00
>> New Revision: dd870f6929ee0b1dfb5fd000c7b826a1bd2d2571
>>
>> URL:
>> https://github.com/llvm/llvm-project/commit/dd870f6929ee0b1dfb5fd000c7b826a1bd2d2571
>> DIFF:
>> https://github.com/llvm/llvm-project/commit/dd870f6929ee0b1dfb5fd000c7b826a1bd2d2571.diff
>>
>> LOG: Fix warning about unused std::unique result, erase shifted elements
>>
>> This is actually a functional change. I haven't added any new test
>> coverage. I'm just trying to fix the warning and hoping for the best.
>>
>> Added:
>>
>>
>> Modified:
>>     clang/include/clang/Serialization/ContinuousRangeMap.h
>>
>> Removed:
>>
>>
>>
>>
>> ################################################################################
>> diff  --git a/clang/include/clang/Serialization/ContinuousRangeMap.h
>> b/clang/include/clang/Serialization/ContinuousRangeMap.h
>> index 0c05537dd108..c2665c097416 100644
>> --- a/clang/include/clang/Serialization/ContinuousRangeMap.h
>> +++ b/clang/include/clang/Serialization/ContinuousRangeMap.h
>> @@ -118,14 +118,17 @@ class ContinuousRangeMap {
>>
>>      ~Builder() {
>>        llvm::sort(Self.Rep, Compare());
>> -      std::unique(Self.Rep.begin(), Self.Rep.end(),
>> -                  [](const_reference A, const_reference B) {
>> -        // FIXME: we should not allow any duplicate keys, but there are
>> a lot of
>> -        // duplicate 0 -> 0 mappings to remove first.
>> -        assert((A == B || A.first != B.first) &&
>> -               "ContinuousRangeMap::Builder given non-unique keys");
>> -        return A == B;
>> -      });
>> +      Self.Rep.erase(
>> +          std::unique(
>> +              Self.Rep.begin(), Self.Rep.end(),
>> +              [](const_reference A, const_reference B) {
>> +                // FIXME: we should not allow any duplicate keys, but
>> there are
>> +                // a lot of duplicate 0 -> 0 mappings to remove first.
>> +                assert((A == B || A.first != B.first) &&
>> +                       "ContinuousRangeMap::Builder given non-unique
>> keys");
>> +                return A == B;
>> +              }),
>> +          Self.Rep.end());
>>      }
>>
>>      void insert(const value_type &Val) {
>>
>>
>>
>> _______________________________________________
>> cfe-commits mailing list
>> cfe-commits at lists.llvm.org
>> https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits
>>
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/cfe-commits/attachments/20191118/77601768/attachment.html>


More information about the cfe-commits mailing list