Skip to content

Commit 156e8b3

Browse files
committed
clang/Basic: Remove ContentCache::getRawBuffer, NFC
Replace `ContentCache::getRawBuffer` with `getBufferDataIfLoaded` and `getBufferIfLoaded`, excising another accessor for the underlying `MemoryBuffer*` in favour of `StringRef` and `MemoryBufferRef`. Differential Revision: https://reviews.llvm.org/D89445
1 parent b9eecbf commit 156e8b3

File tree

5 files changed

+29
-17
lines changed

5 files changed

+29
-17
lines changed

clang-tools-extra/clang-tidy/ExpandModularHeadersPPCallbacks.cpp

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -30,12 +30,12 @@ class ExpandModularHeadersPPCallbacks::FileRecorder {
3030
return;
3131

3232
// FIXME: Why is this happening? We might be losing contents here.
33-
if (!ContentCache.getRawBuffer())
33+
llvm::Optional<StringRef> Data = ContentCache.getBufferDataIfLoaded();
34+
if (!Data)
3435
return;
3536

3637
InMemoryFs.addFile(File->getName(), /*ModificationTime=*/0,
37-
llvm::MemoryBuffer::getMemBufferCopy(
38-
ContentCache.getRawBuffer()->getBuffer()));
38+
llvm::MemoryBuffer::getMemBufferCopy(*Data));
3939
// Remove the file from the set of necessary files.
4040
FilesToRecord.erase(File);
4141
}

clang/include/clang/Basic/SourceManager.h

Lines changed: 19 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -194,9 +194,23 @@ namespace SrcMgr {
194194
/// this content cache. This is used for performance analysis.
195195
llvm::MemoryBuffer::BufferKind getMemoryBufferKind() const;
196196

197-
/// Get the underlying buffer, returning NULL if the buffer is not
198-
/// yet available.
199-
const llvm::MemoryBuffer *getRawBuffer() const { return Buffer.get(); }
197+
/// Return the buffer, only if it has been loaded.
198+
/// specified FileID, returning None if it's not yet loaded.
199+
///
200+
/// \param FID The file ID whose contents will be returned.
201+
llvm::Optional<llvm::MemoryBufferRef> getBufferIfLoaded() const {
202+
if (Buffer)
203+
return Buffer->getMemBufferRef();
204+
return None;
205+
}
206+
207+
/// Return a StringRef to the source buffer data, only if it has already
208+
/// been loaded.
209+
llvm::Optional<StringRef> getBufferDataIfLoaded() const {
210+
if (Buffer)
211+
return Buffer->getBuffer();
212+
return None;
213+
}
200214

201215
/// Set the buffer.
202216
void setBuffer(std::unique_ptr<llvm::MemoryBuffer> B) {
@@ -207,10 +221,10 @@ namespace SrcMgr {
207221
/// Set the buffer to one that's not owned (or to nullptr).
208222
///
209223
/// \pre Buffer cannot already be set.
210-
void setUnownedBuffer(const llvm::MemoryBuffer *B) {
224+
void setUnownedBuffer(llvm::Optional<llvm::MemoryBufferRef> B) {
211225
assert(!Buffer && "Expected to be called right after construction");
212226
if (B)
213-
setBuffer(llvm::MemoryBuffer::getMemBuffer(B->getMemBufferRef()));
227+
setBuffer(llvm::MemoryBuffer::getMemBuffer(*B));
214228
}
215229

216230
// If BufStr has an invalid BOM, returns the BOM name; otherwise, returns

clang/lib/Basic/SourceManager.cpp

Lines changed: 5 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -155,7 +155,7 @@ ContentCache::getBufferOrNone(DiagnosticsEngine &Diag, FileManager &FM,
155155

156156
// Check that the file's size is the same as in the file entry (which may
157157
// have come from a stat cache).
158-
if (getRawBuffer()->getBufferSize() != (size_t)ContentsEntry->getSize()) {
158+
if (Buffer->getBufferSize() != (size_t)ContentsEntry->getSize()) {
159159
if (Diag.isDiagnosticInFlight())
160160
Diag.SetDelayedDiagnostic(diag::err_file_modified,
161161
ContentsEntry->getName());
@@ -363,7 +363,7 @@ void SourceManager::initializeForReplay(const SourceManager &Old) {
363363
Clone->BufferOverridden = Cache->BufferOverridden;
364364
Clone->IsFileVolatile = Cache->IsFileVolatile;
365365
Clone->IsTransient = Cache->IsTransient;
366-
Clone->setUnownedBuffer(Cache->getRawBuffer());
366+
Clone->setUnownedBuffer(Cache->getBufferIfLoaded());
367367
return Clone;
368368
};
369369

@@ -476,7 +476,8 @@ const SrcMgr::ContentCache *
476476
SourceManager::getFakeContentCacheForRecovery() const {
477477
if (!FakeContentCacheForRecovery) {
478478
FakeContentCacheForRecovery = std::make_unique<SrcMgr::ContentCache>();
479-
FakeContentCacheForRecovery->setUnownedBuffer(getFakeBufferForRecovery());
479+
FakeContentCacheForRecovery->setUnownedBuffer(
480+
getFakeBufferForRecovery()->getMemBufferRef());
480481
}
481482
return FakeContentCacheForRecovery.get();
482483
}
@@ -751,10 +752,7 @@ SourceManager::getBufferDataIfLoaded(FileID FID) const {
751752
if (!SLoc.isFile() || MyInvalid)
752753
return None;
753754

754-
if (const llvm::MemoryBuffer *Buf =
755-
SLoc.getFile().getContentCache()->getRawBuffer())
756-
return Buf->getBuffer();
757-
return None;
755+
return SLoc.getFile().getContentCache()->getBufferDataIfLoaded();
758756
}
759757

760758
llvm::Optional<StringRef> SourceManager::getBufferDataOrNone(FileID FID) const {

clang/lib/Serialization/ASTReader.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1542,7 +1542,7 @@ bool ASTReader::ReadSLocEntry(int ID) {
15421542
= SourceMgr.getOrCreateContentCache(File, isSystem(FileCharacter));
15431543
if (OverriddenBuffer && !ContentCache->BufferOverridden &&
15441544
ContentCache->ContentsEntry == ContentCache->OrigEntry &&
1545-
!ContentCache->getRawBuffer()) {
1545+
!ContentCache->getBufferIfLoaded()) {
15461546
auto Buffer = ReadBuffer(SLocEntryCursor, File->getName());
15471547
if (!Buffer)
15481548
return true;

clang/lib/Serialization/ASTWriter.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1468,7 +1468,7 @@ void ASTWriter::WriteInputFiles(SourceManager &SourceMgr,
14681468
if (PP->getHeaderSearchInfo()
14691469
.getHeaderSearchOpts()
14701470
.ValidateASTInputFilesContent) {
1471-
auto *MemBuff = Cache->getRawBuffer();
1471+
auto MemBuff = Cache->getBufferIfLoaded();
14721472
if (MemBuff)
14731473
ContentHash = hash_value(MemBuff->getBuffer());
14741474
else

0 commit comments

Comments
 (0)