[llvm-commits] [llvm] r40984 - /llvm/trunk/include/llvm/ADT/SmallVector.h

Chris Lattner sabre at nondot.org
Fri Aug 10 00:02:50 PDT 2007


Author: lattner
Date: Fri Aug 10 02:02:50 2007
New Revision: 40984

URL: http://llvm.org/viewvc/llvm-project?rev=40984&view=rev
Log:
memcpy with zero length is hugely expensive, so avoid it.  This speeds up coallescing from 1.17s to 0.88s on siod.

Modified:
    llvm/trunk/include/llvm/ADT/SmallVector.h

Modified: llvm/trunk/include/llvm/ADT/SmallVector.h
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/include/llvm/ADT/SmallVector.h?rev=40984&r1=40983&r2=40984&view=diff

==============================================================================
--- llvm/trunk/include/llvm/ADT/SmallVector.h (original)
+++ llvm/trunk/include/llvm/ADT/SmallVector.h Fri Aug 10 02:02:50 2007
@@ -380,7 +380,11 @@
   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);





More information about the llvm-commits mailing list