From: Chris Lattner Date: Mon, 23 Jul 2007 06:23:07 +0000 (+0000) Subject: In OutputString, avoid calling memcpy for really tiny strings. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=e225e378c67204ac3bf1483ec1136f461bf0282a;p=clang In OutputString, avoid calling memcpy for really tiny strings. This speeds up -E on 447.dealII by 5.8% git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@40423 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/Driver/PrintPreprocessedOutput.cpp b/Driver/PrintPreprocessedOutput.cpp index d1f1cef985..e5f449185a 100644 --- a/Driver/PrintPreprocessedOutput.cpp +++ b/Driver/PrintPreprocessedOutput.cpp @@ -87,7 +87,20 @@ static void OutputString(const char *Ptr, unsigned Size) { #else if (OutBufCur+Size >= OutBufEnd) FlushBuffer(); - memcpy(OutBufCur, Ptr, Size); + + switch (Size) { + default: + memcpy(OutBufCur, Ptr, Size); + break; + case 3: + OutBufCur[2] = Ptr[2]; + case 2: + OutBufCur[1] = Ptr[1]; + case 1: + OutBufCur[0] = Ptr[0]; + case 0: + break; + } OutBufCur += Size; #endif }