Remove the ValueMap copy constructor. It's not used anywhere,
authorDuncan Sands <baldrick@free.fr>
Sun, 8 Aug 2010 12:57:48 +0000 (12:57 +0000)
committerDuncan Sands <baldrick@free.fr>
Sun, 8 Aug 2010 12:57:48 +0000 (12:57 +0000)
and removing it catches the mistake of passing a ValueMap by
copy rather than by reference.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@110549 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/ADT/ValueMap.h
unittests/ADT/ValueMapTest.cpp

index f7560681097812cc2d1da1fe99cf84039785f01a..181fe71e37040237a57aa5f1a38a589ff7b6241c 100644 (file)
@@ -82,18 +82,12 @@ class ValueMap {
   typedef typename Config::ExtraData ExtraData;
   MapT Map;
   ExtraData Data;
+  ValueMap(const ValueMap&); // DO NOT IMPLEMENT
 public:
   typedef KeyT key_type;
   typedef ValueT mapped_type;
   typedef std::pair<KeyT, ValueT> value_type;
 
-  ValueMap(const ValueMap& Other) : Map(Other.Map), Data(Other.Data) {
-    // Each ValueMapCVH key contains a pointer to the containing ValueMap.
-    // The keys in the new map need to point to the new map, not Other.
-    for (typename MapT::iterator I = Map.begin(), E = Map.end(); I != E; ++I)
-      I->first.Map = this;
-  }
-
   explicit ValueMap(unsigned NumInitBuckets = 64)
     : Map(NumInitBuckets), Data() {}
   explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64)
index ff7c3b55b70ea63cf8da343d678af8ffcccf3e09..152e8eaaf1f1804c16c3489bb7310a3962890f78 100644 (file)
@@ -39,15 +39,6 @@ protected:
 typedef ::testing::Types<Value, Instruction, const Instruction> KeyTypes;
 TYPED_TEST_CASE(ValueMapTest, KeyTypes);
 
-TYPED_TEST(ValueMapTest, CopyConstructor) {
-  ValueMap<TypeParam*, int> VM1;
-  VM1[this->AddV.get()] = 7;
-  ValueMap<TypeParam*, int> VM2(VM1);
-  this->AddV.reset();
-  EXPECT_TRUE(VM1.empty());
-  EXPECT_TRUE(VM2.empty());
-}
-
 TYPED_TEST(ValueMapTest, Null) {
   ValueMap<TypeParam*, int> VM1;
   VM1[NULL] = 7;