]> granicus.if.org Git - clang/commitdiff
Avoid an unnecessary copy of Predefines. getMemBufferCopy does the null termination...
authorBenjamin Kramer <benny.kra@googlemail.com>
Thu, 31 Dec 2009 15:33:09 +0000 (15:33 +0000)
committerBenjamin Kramer <benny.kra@googlemail.com>
Thu, 31 Dec 2009 15:33:09 +0000 (15:33 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@92358 91177308-0d34-0410-b5e6-96231b3b80d8

lib/Lex/Preprocessor.cpp

index d4e441b2f18338e9fdcdcf99a42e7d36df18df6f..81966cb2b9181935b06a27e9e8f24a2c254973db 100644 (file)
@@ -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);