diff options
author | Pavel Labath <labath@google.com> | 2017-12-20 11:34:38 +0000 |
---|---|---|
committer | Pavel Labath <labath@google.com> | 2017-12-20 11:34:38 +0000 |
commit | bf8519b5c9aa2c381b5f4725c21601a99b1b37c2 (patch) | |
tree | fdea5969874603e91207d7bb062d870afb4ed6b1 /clang | |
parent | 3cfdaa30e28ddd35290fe319a2d2f903977d4233 (diff) | |
download | bcm5719-llvm-bf8519b5c9aa2c381b5f4725c21601a99b1b37c2.tar.gz bcm5719-llvm-bf8519b5c9aa2c381b5f4725c21601a99b1b37c2.zip |
Remove llvm::MemoryBuffer const_casts
Summary:
llvm has grown a WritableMemoryBuffer class, which is convertible
(inherits from) a MemoryBuffer. We can use it to avoid conts_casting the
buffer contents when we want to write to it.
Reviewers: dblaikie, rsmith
Subscribers: cfe-commits
Differential Revision: https://reviews.llvm.org/D41387
llvm-svn: 321167
Diffstat (limited to 'clang')
-rw-r--r-- | clang/lib/Basic/SourceManager.cpp | 7 | ||||
-rw-r--r-- | clang/lib/Lex/Preprocessor.cpp | 7 |
2 files changed, 7 insertions, 7 deletions
diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index e664879639f..0a51985614c 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -125,11 +125,12 @@ llvm::MemoryBuffer *ContentCache::getBuffer(DiagnosticsEngine &Diag, // possible. if (!BufferOrError) { StringRef FillStr("<<<MISSING SOURCE FILE>>>\n"); - Buffer.setPointer(MemoryBuffer::getNewUninitMemBuffer( - ContentsEntry->getSize(), "<invalid>").release()); - char *Ptr = const_cast<char*>(Buffer.getPointer()->getBufferStart()); + auto BackupBuffer = llvm::WritableMemoryBuffer::getNewUninitMemBuffer( + ContentsEntry->getSize(), "<invalid>"); + char *Ptr = BackupBuffer->getBufferStart(); for (unsigned i = 0, e = ContentsEntry->getSize(); i != e; ++i) Ptr[i] = FillStr[i % FillStr.size()]; + Buffer.setPointer(BackupBuffer.release()); if (Diag.isDiagnosticInFlight()) Diag.SetDelayedDiagnostic(diag::err_cannot_open_file, diff --git a/clang/lib/Lex/Preprocessor.cpp b/clang/lib/Lex/Preprocessor.cpp index c291a4b99d1..7d789e78011 100644 --- a/clang/lib/Lex/Preprocessor.cpp +++ b/clang/lib/Lex/Preprocessor.cpp @@ -420,10 +420,9 @@ bool Preprocessor::SetCodeCompletionPoint(const FileEntry *File, CodeCompletionFile = File; CodeCompletionOffset = Position - Buffer->getBufferStart(); - std::unique_ptr<MemoryBuffer> NewBuffer = - MemoryBuffer::getNewUninitMemBuffer(Buffer->getBufferSize() + 1, - Buffer->getBufferIdentifier()); - char *NewBuf = const_cast<char*>(NewBuffer->getBufferStart()); + auto NewBuffer = llvm::WritableMemoryBuffer::getNewUninitMemBuffer( + Buffer->getBufferSize() + 1, Buffer->getBufferIdentifier()); + char *NewBuf = NewBuffer->getBufferStart(); char *NewPos = std::copy(Buffer->getBufferStart(), Position, NewBuf); *NewPos = '\0'; std::copy(Position, Buffer->getBufferEnd(), NewPos+1); |