Author: Duncan P. N. Exon Smith Date: 2020-10-23T14:56:41-04:00 New Revision: cf52a85ddc9be165daca3d32521747c898f4ffd1
URL: https://github.com/llvm/llvm-project/commit/cf52a85ddc9be165daca3d32521747c898f4ffd1 DIFF: https://github.com/llvm/llvm-project/commit/cf52a85ddc9be165daca3d32521747c898f4ffd1.diff LOG: SourceManager: Simplify by inlining what remains of ComputeLineNumbers, NFC Use `LineOffsetMapping:get` directly and remove/inline the helper `ComputeLineNumbers`, simplifying the callers. Differential Revision: https://reviews.llvm.org/D89922 Added: Modified: clang/lib/Basic/SourceManager.cpp Removed: ################################################################################ diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index f8607b0d4c24..1feb8c7b66dd 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -1260,23 +1260,6 @@ unsigned SourceManager::getPresumedColumnNumber(SourceLocation Loc, #include <emmintrin.h> #endif -static LLVM_ATTRIBUTE_NOINLINE void -ComputeLineNumbers(DiagnosticsEngine &Diag, const ContentCache &FI, - llvm::BumpPtrAllocator &Alloc, - const SourceManager &SM, bool &Invalid); -static void ComputeLineNumbers(DiagnosticsEngine &Diag, const ContentCache &FI, - llvm::BumpPtrAllocator &Alloc, - const SourceManager &SM, bool &Invalid) { - // Note that calling 'getBuffer()' may lazily page in the file. - llvm::Optional<llvm::MemoryBufferRef> Buffer = - FI.getBufferOrNone(Diag, SM.getFileManager(), SourceLocation()); - Invalid = !Buffer; - if (Invalid) - return; - - FI.SourceLineCache = LineOffsetMapping::get(*Buffer, Alloc); -} - LineOffsetMapping LineOffsetMapping::get(llvm::MemoryBufferRef Buffer, llvm::BumpPtrAllocator &Alloc) { // Find the file offsets of all of the *physical* source lines. This does @@ -1342,12 +1325,15 @@ unsigned SourceManager::getLineNumber(FileID FID, unsigned FilePos, // If this is the first use of line information for this buffer, compute the /// SourceLineCache for it on demand. if (!Content->SourceLineCache) { - bool MyInvalid = false; - ComputeLineNumbers(Diag, *Content, ContentCacheAlloc, *this, MyInvalid); + llvm::Optional<llvm::MemoryBufferRef> Buffer = + Content->getBufferOrNone(Diag, getFileManager(), SourceLocation()); if (Invalid) - *Invalid = MyInvalid; - if (MyInvalid) + *Invalid = !Buffer; + if (!Buffer) return 1; + + Content->SourceLineCache = + LineOffsetMapping::get(*Buffer, ContentCacheAlloc); } else if (Invalid) *Invalid = false; @@ -1689,17 +1675,13 @@ SourceLocation SourceManager::translateLineCol(FileID FID, // If this is the first use of line information for this buffer, compute the // SourceLineCache for it on demand. - if (!Content->SourceLineCache) { - bool MyInvalid = false; - ComputeLineNumbers(Diag, *Content, ContentCacheAlloc, *this, MyInvalid); - if (MyInvalid) - return SourceLocation(); - } - llvm::Optional<llvm::MemoryBufferRef> Buffer = Content->getBufferOrNone(Diag, getFileManager()); if (!Buffer) return SourceLocation(); + if (!Content->SourceLineCache) + Content->SourceLineCache = + LineOffsetMapping::get(*Buffer, ContentCacheAlloc); if (Line > Content->SourceLineCache.size()) { unsigned Size = Buffer->getBufferSize(); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits