diff options
author | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2020-10-15 11:39:07 -0400 |
---|---|---|
committer | Duncan P. N. Exon Smith <dexonsmith@apple.com> | 2020-10-27 14:55:41 -0400 |
commit | 917acac960d40280ea02ea453e594034b1be1f6b (patch) | |
tree | 77725736105c187559617b78904af3ede6fee5f7 /clang/lib/Basic/SourceManager.cpp | |
parent | 83154c541806468802d687a8b3c8f1a65e92199c (diff) | |
download | llvm-917acac960d40280ea02ea453e594034b1be1f6b.zip llvm-917acac960d40280ea02ea453e594034b1be1f6b.tar.gz llvm-917acac960d40280ea02ea453e594034b1be1f6b.tar.bz2 |
FileManager: Shrink FileEntryRef to the size of a pointer
Shrink `FileEntryRef` to the size of a pointer, by having it directly
reference the `StringMapEntry` the same way that `DirectoryEntryRef`
does. This makes `FileEntryRef::FileEntryRef` private as a side effect
(`FileManager` is a friend!).
There are two helper types added within `FileEntryRef`:
- `FileEntryRef::MapValue` is the type stored in
`FileManager::SeenFileEntries`. It's a replacement for
`SeenFileEntryOrRedirect`, where the second pointer type has been
changed from `StringRef*` to `MapEntry*` (see next bullet).
- `FileEntryRef::MapEntry` is the instantiation of `StringMapEntry<>`
where `MapValue` is stored. This is what `FileEntryRef` has a pointer
to, in order to grab the name in addition to the value.
Differential Revision: https://reviews.llvm.org/D89488
Diffstat (limited to 'clang/lib/Basic/SourceManager.cpp')
-rw-r--r-- | clang/lib/Basic/SourceManager.cpp | 2 |
1 files changed, 1 insertions, 1 deletions
diff --git a/clang/lib/Basic/SourceManager.cpp b/clang/lib/Basic/SourceManager.cpp index 88f95d1..dde4471 100644 --- a/clang/lib/Basic/SourceManager.cpp +++ b/clang/lib/Basic/SourceManager.cpp @@ -702,7 +702,7 @@ const FileEntry * SourceManager::bypassFileContentsOverride(const FileEntry &File) { assert(isFileOverridden(&File)); llvm::Optional<FileEntryRef> BypassFile = - FileMgr.getBypassFile(FileEntryRef(File.getName(), File)); + FileMgr.getBypassFile(File.getLastRef()); // If the file can't be found in the FS, give up. if (!BypassFile) |