summaryrefslogtreecommitdiffstats
path: root/clang/lib/Lex/ScratchBuffer.cpp
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2015-04-06 20:01:49 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2015-04-06 20:01:49 +0000
commit040725723ed28a8188ca8d0a7301fb2b76fbb79c (patch)
tree6e411b823ce18e52e146cd5e725454e81bf92b1f /clang/lib/Lex/ScratchBuffer.cpp
parenta5099dce6263405d72d19f3783156492e436d31f (diff)
downloadbcm5719-llvm-040725723ed28a8188ca8d0a7301fb2b76fbb79c.tar.gz
bcm5719-llvm-040725723ed28a8188ca8d0a7301fb2b76fbb79c.zip
MSan told me that we actually dump the entire scratch buffer into PCH files, initialize it.
Writing 4k of zeros is preferrable to 4k of random memory. Document that. While there remove the initialization of the first byte of the buffer and start at index zero. It was writing a literal '0' instead of a null byte at the beginning anyways, which didn't matter since we never read it. llvm-svn: 234202
Diffstat (limited to 'clang/lib/Lex/ScratchBuffer.cpp')
-rw-r--r--clang/lib/Lex/ScratchBuffer.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/clang/lib/Lex/ScratchBuffer.cpp b/clang/lib/Lex/ScratchBuffer.cpp
index 42cfca73d3d..cd8a27e76c2 100644
--- a/clang/lib/Lex/ScratchBuffer.cpp
+++ b/clang/lib/Lex/ScratchBuffer.cpp
@@ -64,12 +64,13 @@ void ScratchBuffer::AllocScratchBuffer(unsigned RequestLen) {
if (RequestLen < ScratchBufSize)
RequestLen = ScratchBufSize;
+ // Get scratch buffer. Zero-initialize it so it can be dumped into a PCH file
+ // deterministically.
std::unique_ptr<llvm::MemoryBuffer> OwnBuf =
- llvm::MemoryBuffer::getNewUninitMemBuffer(RequestLen, "<scratch space>");
+ llvm::MemoryBuffer::getNewMemBuffer(RequestLen, "<scratch space>");
llvm::MemoryBuffer &Buf = *OwnBuf;
FileID FID = SourceMgr.createFileID(std::move(OwnBuf));
BufferStartLoc = SourceMgr.getLocForStartOfFile(FID);
CurBuffer = const_cast<char*>(Buf.getBufferStart());
- BytesUsed = 1;
- CurBuffer[0] = '0'; // Start out with a \0 for cleanliness.
+ BytesUsed = 0;
}
OpenPOWER on IntegriCloud