memcpy with zero length is hugely expensive, so avoid it. This speeds up coallescing...
[oota-llvm.git] / include / llvm / ADT / SmallVector.h
index 1c970a55981c471d8a3b7a1d289bd1c32bc6ea34..e6c81a6420c2399e5e5764bac448b0a56675e2a2 100644 (file)
@@ -380,7 +380,11 @@ SmallVectorImpl<T>::operator=(const SmallVectorImpl<T> &RHS) {
   unsigned CurSize = unsigned(size());
   if (CurSize >= RHSSize) {
     // Assign common elements.
-    iterator NewEnd = std::copy(RHS.Begin, RHS.Begin+RHSSize, Begin);
+    iterator NewEnd;
+    if (RHSSize)
+      NewEnd = std::copy(RHS.Begin, RHS.Begin+RHSSize, Begin);
+    else
+      NewEnd = Begin;
     
     // Destroy excess elements.
     destroy_range(NewEnd, End);