summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2009-12-31 15:33:09 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2009-12-31 15:33:09 +0000
commitd77adb5b1cfbcd45749cecdaa9dfeb88d691c356 (patch)
treefb61110be6bc1677fadd1451c693b94501fcb8d3
parent14488464beb8b8a451474f94d6ee71d2e8f21a5a (diff)
downloadbcm5719-llvm-d77adb5b1cfbcd45749cecdaa9dfeb88d691c356.tar.gz
bcm5719-llvm-d77adb5b1cfbcd45749cecdaa9dfeb88d691c356.zip
Avoid an unnecessary copy of Predefines. getMemBufferCopy does the null termination for us.
llvm-svn: 92358
-rw-r--r--clang/lib/Lex/Preprocessor.cpp15
1 files changed, 3 insertions, 12 deletions
diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp
index d4e441b2f18..81966cb2b91 100644
--- a/clang/lib/Lex/Preprocessor.cpp
+++ b/clang/lib/Lex/Preprocessor.cpp
@@ -446,19 +446,10 @@ void Preprocessor::EnterMainSourceFile() {
if (const FileEntry *FE = SourceMgr.getFileEntryForID(MainFileID))
HeaderInfo.IncrementIncludeCount(FE);
- std::vector<char> PrologFile;
- PrologFile.reserve(4080);
-
- // FIXME: Don't make a copy.
- PrologFile.insert(PrologFile.end(), Predefines.begin(), Predefines.end());
-
- // Memory buffer must end with a null byte!
- PrologFile.push_back(0);
-
- // Now that we have emitted the predefined macros, #includes, etc into
- // PrologFile, preprocess it to populate the initial preprocessor state.
+ // Preprocess Predefines to populate the initial preprocessor state.
llvm::MemoryBuffer *SB =
- llvm::MemoryBuffer::getMemBufferCopy(&PrologFile.front(),&PrologFile.back(),
+ llvm::MemoryBuffer::getMemBufferCopy(Predefines.data(),
+ Predefines.data() + Predefines.size(),
"<built-in>");
assert(SB && "Cannot fail to create predefined source buffer");
FileID FID = SourceMgr.createFileIDForMemBuffer(SB);
OpenPOWER on IntegriCloud