diff options
author | Jan Svoboda <jan_svoboda@apple.com> | 2023-09-28 18:28:02 +0200 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-09-28 09:28:02 -0700 |
commit | 6bbccc0bcb36689507ba98ef338527d43334c7e7 (patch) | |
tree | b068d73261e236cb7d30f172fd1d45eb4868bc72 /clang/lib/Lex/ModuleMap.cpp | |
parent | 7485d36a6267d1861710dfcb1b64784e4fb1187c (diff) | |
download | llvm-6bbccc0bcb36689507ba98ef338527d43334c7e7.zip llvm-6bbccc0bcb36689507ba98ef338527d43334c7e7.tar.gz llvm-6bbccc0bcb36689507ba98ef338527d43334c7e7.tar.bz2 |
[clang][modules] Adopt `FileEntryRef` in the `HeaderFileInfo` block in PCM files (#67383)
This patch adopts `FileEntryRef` in the `HeaderFileInfo`-writing part of
`ASTWriter`.
First, this patch removes the loop over
`FileManager::VirtualFileEntries`. It's redundant, since all virtual
file entries are also present in `SeenFileEntries` and thus already in
`UIDToFiles`.
Second, since we now no longer rely on
`FileEntry::getLastRef()`/`FileEntry::getName()`, this patch takes care
to establish which path gets used for each UID by picking the
`FileEntryRef` with the most "`<`" name (instead of just relying on the
`StringMap` iteration order).
Note that which `FileEntry`/`FileEntryRef` objects we pick for each UID
for serialization into the `llvm::OnDiskChainedHashTable` doesn't really
matter. The hash function only includes the file size and modification
time. The file name only plays role during resolution of hash
collisions, in which case it goes through `FileManager` and resolves to
a `FileEntry` that gets pointer-compared with the queried `FileEntry`.
(Reincarnation of [D143414](https://reviews.llvm.org/D143414) and
[D142780](https://reviews.llvm.org/D142780).)
Diffstat (limited to 'clang/lib/Lex/ModuleMap.cpp')
0 files changed, 0 insertions, 0 deletions