[llvm] r362766 - [ADT] Enable set_difference() to be used on StringSet

Vlad Tsyrklevich via llvm-commits llvm-commits at lists.llvm.org
Fri Jun 7 11:32:28 PDT 2019


This change was causing ASan failures on the sanitizer bots and has been
reverted in r362823
http://lab.llvm.org:8011/builders/sanitizer-x86_64-linux-fast/builds/32800

On Fri, Jun 7, 2019 at 1:46 AM Michael Pozulp via llvm-commits <
llvm-commits at lists.llvm.org> wrote:

> Author: pozulp
> Date: Thu Jun  6 20:23:00 2019
> New Revision: 362766
>
> URL: http://llvm.org/viewvc/llvm-project?rev=362766&view=rev
> Log:
> [ADT] Enable set_difference() to be used on StringSet
>
> Subscribers: mgorny, mgrang, dexonsmith, llvm-commits
>
> Tags: #llvm
>
> Differential Revision: https://reviews.llvm.org/D62992
>
> Added:
>     llvm/trunk/unittests/ADT/StringSetTest.cpp
> Modified:
>     llvm/trunk/include/llvm/ADT/StringMap.h
>     llvm/trunk/include/llvm/ADT/StringSet.h
>     llvm/trunk/unittests/ADT/CMakeLists.txt
>     llvm/trunk/unittests/ADT/StringMapTest.cpp
>
> Modified: llvm/trunk/include/llvm/ADT/StringMap.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringMap.h?rev=362766&r1=362765&r2=362766&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/StringMap.h (original)
> +++ llvm/trunk/include/llvm/ADT/StringMap.h Thu Jun  6 20:23:00 2019
> @@ -359,6 +359,11 @@ public:
>      return find(Key) == end() ? 0 : 1;
>    }
>
> +  template <typename InputTy>
> +  size_type count(const StringMapEntry<InputTy> &MapEntry) const {
> +    return count(MapEntry.getKey());
> +  }
> +
>    /// insert - Insert the specified key/value pair into the map.  If the
> key
>    /// already exists in the map, return false and ignore the request,
> otherwise
>    /// insert it and return true.
>
> Modified: llvm/trunk/include/llvm/ADT/StringSet.h
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/StringSet.h?rev=362766&r1=362765&r2=362766&view=diff
>
> ==============================================================================
> --- llvm/trunk/include/llvm/ADT/StringSet.h (original)
> +++ llvm/trunk/include/llvm/ADT/StringSet.h Thu Jun  6 20:23:00 2019
> @@ -45,6 +45,12 @@ namespace llvm {
>        for (auto It = Begin; It != End; ++It)
>          base::insert(std::make_pair(*It, '\0'));
>      }
> +
> +    template <typename ValueTy>
> +    std::pair<typename base::iterator, bool>
> +    insert(const StringMapEntry<ValueTy> &MapEntry) {
> +      return insert(MapEntry.getKey());
> +    }
>    };
>
>  } // end namespace llvm
>
> Modified: llvm/trunk/unittests/ADT/CMakeLists.txt
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/CMakeLists.txt?rev=362766&r1=362765&r2=362766&view=diff
>
> ==============================================================================
> --- llvm/trunk/unittests/ADT/CMakeLists.txt (original)
> +++ llvm/trunk/unittests/ADT/CMakeLists.txt Thu Jun  6 20:23:00 2019
> @@ -65,6 +65,7 @@ add_llvm_unittest(ADTTests
>    StringExtrasTest.cpp
>    StringMapTest.cpp
>    StringRefTest.cpp
> +  StringSetTest.cpp
>    StringSwitchTest.cpp
>    TinyPtrVectorTest.cpp
>    TripleTest.cpp
>
> Modified: llvm/trunk/unittests/ADT/StringMapTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/StringMapTest.cpp?rev=362766&r1=362765&r2=362766&view=diff
>
> ==============================================================================
> --- llvm/trunk/unittests/ADT/StringMapTest.cpp (original)
> +++ llvm/trunk/unittests/ADT/StringMapTest.cpp Thu Jun  6 20:23:00 2019
> @@ -7,7 +7,6 @@
>
>  //===----------------------------------------------------------------------===//
>
>  #include "llvm/ADT/StringMap.h"
> -#include "llvm/ADT/StringSet.h"
>  #include "llvm/ADT/Twine.h"
>  #include "llvm/Support/DataTypes.h"
>  #include "gtest/gtest.h"
> @@ -281,20 +280,6 @@ TEST_F(StringMapTest, IterMapKeys) {
>    llvm::sort(Keys);
>
>    SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
> -  EXPECT_EQ(Expected, Keys);
> -}
> -
> -TEST_F(StringMapTest, IterSetKeys) {
> -  StringSet<> Set;
> -  Set.insert("A");
> -  Set.insert("B");
> -  Set.insert("C");
> -  Set.insert("D");
> -
> -  auto Keys = to_vector<4>(Set.keys());
> -  llvm::sort(Keys);
> -
> -  SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
>    EXPECT_EQ(Expected, Keys);
>  }
>
>
> Added: llvm/trunk/unittests/ADT/StringSetTest.cpp
> URL:
> http://llvm.org/viewvc/llvm-project/llvm/trunk/unittests/ADT/StringSetTest.cpp?rev=362766&view=auto
>
> ==============================================================================
> --- llvm/trunk/unittests/ADT/StringSetTest.cpp (added)
> +++ llvm/trunk/unittests/ADT/StringSetTest.cpp Thu Jun  6 20:23:00 2019
> @@ -0,0 +1,43 @@
> +//===- llvm/unittest/ADT/StringSetTest.cpp - StringSet unit tests
> ----------===//
> +//
> +// Part of the LLVM Project, under the Apache License v2.0 with LLVM
> Exceptions.
> +// See https://llvm.org/LICENSE.txt for license information.
> +// SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
> +//
>
> +//===----------------------------------------------------------------------===//
> +
> +#include "llvm/ADT/StringSet.h"
> +#include "gtest/gtest.h"
> +using namespace llvm;
> +
> +namespace {
> +
> +// Test fixture
> +class StringSetTest : public testing::Test {};
> +
> +TEST_F(StringSetTest, IterSetKeys) {
> +  StringSet<> Set;
> +  Set.insert("A");
> +  Set.insert("B");
> +  Set.insert("C");
> +  Set.insert("D");
> +
> +  auto Keys = to_vector<4>(Set.keys());
> +  llvm::sort(Keys);
> +
> +  SmallVector<StringRef, 4> Expected = {"A", "B", "C", "D"};
> +  EXPECT_EQ(Expected, Keys);
> +}
> +
> +TEST_F(StringSetTest, InsertAndCountStringMapEntry) {
> +  // Test insert(StringMapEntry) and count(StringMapEntry)
> +  // which are required for set_difference(StringSet, StringSet).
> +  StringSet<> Set;
> +  StringMapEntry<StringRef> Element(1, "A");
> +  Set.insert(Element);
> +  size_t Count = Set.count(Element);
> +  size_t Expected = 1;
> +  EXPECT_EQ(Expected, Count);
> +}
> +
> +} // end anonymous namespace
>
>
> _______________________________________________
> llvm-commits mailing list
> llvm-commits at lists.llvm.org
> https://lists.llvm.org/cgi-bin/mailman/listinfo/llvm-commits
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.llvm.org/pipermail/llvm-commits/attachments/20190607/11fd21af/attachment.html>


More information about the llvm-commits mailing list