From 4f155b4c8597f40a79add430dfedb2c08ba28375 Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 10 Aug 2007 07:02:50 +0000 Subject: [PATCH] memcpy with zero length is hugely expensive, so avoid it. This speeds up coallescing from 1.17s to 0.88s on siod. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@40984 91177308-0d34-0410-b5e6-96231b3b80d8 --- include/llvm/ADT/SmallVector.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/llvm/ADT/SmallVector.h b/include/llvm/ADT/SmallVector.h index 1c970a55981..e6c81a6420c 100644 --- a/include/llvm/ADT/SmallVector.h +++ b/include/llvm/ADT/SmallVector.h @@ -380,7 +380,11 @@ SmallVectorImpl::operator=(const SmallVectorImpl &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);