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); _______________________________________________ llvm-commits mailing list llvm-commits@cs.uiuc.edu http://lists.cs.uiuc.edu/mailman/listinfo/llvm-commits