Remove the ValueMap copy constructor. It's not used anywhere,

and removing it catches the mistake of passing a ValueMap by
copy rather than by reference.

llvm-svn: 110549
This commit is contained in:
Duncan Sands 2010-08-08 12:57:48 +00:00
parent 41983c6f1d
commit 67f8b16067
2 changed files with 1 additions and 16 deletions

View File

@ -82,18 +82,12 @@ class ValueMap {
typedef typename Config::ExtraData ExtraData; typedef typename Config::ExtraData ExtraData;
MapT Map; MapT Map;
ExtraData Data; ExtraData Data;
ValueMap(const ValueMap&); // DO NOT IMPLEMENT
public: public:
typedef KeyT key_type; typedef KeyT key_type;
typedef ValueT mapped_type; typedef ValueT mapped_type;
typedef std::pair<KeyT, ValueT> value_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) explicit ValueMap(unsigned NumInitBuckets = 64)
: Map(NumInitBuckets), Data() {} : Map(NumInitBuckets), Data() {}
explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64) explicit ValueMap(const ExtraData &Data, unsigned NumInitBuckets = 64)

View File

@ -39,15 +39,6 @@ protected:
typedef ::testing::Types<Value, Instruction, const Instruction> KeyTypes; typedef ::testing::Types<Value, Instruction, const Instruction> KeyTypes;
TYPED_TEST_CASE(ValueMapTest, 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) { TYPED_TEST(ValueMapTest, Null) {
ValueMap<TypeParam*, int> VM1; ValueMap<TypeParam*, int> VM1;
VM1[NULL] = 7; VM1[NULL] = 7;