Fix a self-memcpy which only breaks under Valgrind's memcpy
[oota-llvm.git] / lib / Support / SmallPtrSet.cpp
index e37e23b7bb1760a420aefb089b7a7f2ff84c655a..fa8d91545e71064bde1cf0b7b7d22f27182d2b39 100644 (file)
@@ -218,6 +218,9 @@ SmallPtrSetImpl::SmallPtrSetImpl(const void **SmallStorage, unsigned SmallSize,
 /// CopyFrom - implement operator= from a smallptrset that has the same pointer
 /// type, but may have a different small size.
 void SmallPtrSetImpl::CopyFrom(const SmallPtrSetImpl &RHS) {
+  if (&RHS == this)
+    return;
+
   if (isSmall() && RHS.isSmall())
     assert(CurArraySize == RHS.CurArraySize &&
            "Cannot assign sets with different small sizes");