diff --git a/clang/include/clang/Basic/SourceManager.h b/clang/include/clang/Basic/SourceManager.h --- a/clang/include/clang/Basic/SourceManager.h +++ b/clang/include/clang/Basic/SourceManager.h @@ -1114,13 +1114,7 @@ /// the entry in SLocEntryTable which contains the specified location. /// FileID getFileID(SourceLocation SpellingLoc) const { - SourceLocation::UIntTy SLocOffset = SpellingLoc.getOffset(); - - // If our one-entry cache covers this offset, just return it. - if (isOffsetInFileID(LastFileIDLookup, SLocOffset)) - return LastFileIDLookup; - - return getFileIDSlow(SLocOffset); + return getFileID(SpellingLoc.getOffset()); } /// Return the filename of the file containing a SourceLocation. @@ -1747,12 +1741,12 @@ /// Returns true if \p Loc came from a PCH/Module. bool isLoadedSourceLocation(SourceLocation Loc) const { - return Loc.getOffset() >= CurrentLoadedOffset; + return isLoadedOffset(Loc.getOffset()); } /// Returns true if \p Loc did not come from a PCH/Module. bool isLocalSourceLocation(SourceLocation Loc) const { - return Loc.getOffset() < NextLocalOffset; + return isLocalOffset(Loc.getOffset()); } /// Returns true if \p FID came from a PCH/Module. @@ -1822,6 +1816,22 @@ return getLoadedSLocEntry(static_cast(-ID - 2), Invalid); } + FileID getFileID(SourceLocation::UIntTy SLocOffset) const { + // If our one-entry cache covers this offset, just return it. + if (isOffsetInFileID(LastFileIDLookup, SLocOffset)) + return LastFileIDLookup; + + return getFileIDSlow(SLocOffset); + } + + bool isLocalOffset(SourceLocation::UIntTy SLocOffset) const { + return SLocOffset < CurrentLoadedOffset; + } + + bool isLoadedOffset(SourceLocation::UIntTy SLocOffset) const { + return SLocOffset >= CurrentLoadedOffset; + } + /// Implements the common elements of storing an expansion info struct into /// the SLocEntry table and producing a source location that refers to it. SourceLocation