diff options
author | Chris Lattner <sabre@nondot.org> | 2007-07-23 06:23:07 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2007-07-23 06:23:07 +0000 |
commit | e225e378c67204ac3bf1483ec1136f461bf0282a (patch) | |
tree | 76043ce47981fc9ecffa9ee5e8c78894824f8215 | |
parent | 2933f41ed59a8bf1866292cb82e16c8b10dc6651 (diff) |
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
-rw-r--r-- | Driver/PrintPreprocessedOutput.cpp | 15 |
1 files changed, 14 insertions, 1 deletions
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 } |