[PATCH] D132779: Enforce module decl-use restrictions and private header restrictions in textual headers

Richard Smith - zygoloid via Phabricator via cfe-commits cfe-commits at lists.llvm.org
Fri Jul 21 14:13:56 PDT 2023


rsmith added a comment.

In D132779#4523783 <https://reviews.llvm.org/D132779#4523783>, @jansvoboda11 wrote:

> Hi @rsmith, this commit makes it possible for `HeaderInfo::LookupFile()` to be called with different `RequestingModule` within single `CompilerInstance`. This is problematic, since some modules may see headers other modules can't (due to `[no_undeclared_includes]`). This can permanently mess up contents of the lookup cache (`HeaderSearch::LookupFileCache`) that uses only the lookup name as the key.

Hm, interesting. I wonder if this was (subtly) broken before, given that it was previously possible to call `LookupFile` with different `RequestingModule`s in a single compilation -- once with a null `RequestingModule` and once with the compilation's current module. In any case, presumably we should either ensure that the cached data is independent of the requesting module (eg, apply the decluse restriction after computing the iterator pair), or add the requesting module to the key, or only cache data for one specific value of `RequestingModule`. Maybe the simplest thing would be to use a single-item LRU cache here -- store the `RequestingModule` in the cached result and ignore the existing cached result if it doesn't match the current `RequestingModule`.


Repository:
  rG LLVM Github Monorepo

CHANGES SINCE LAST ACTION
  https://reviews.llvm.org/D132779/new/

https://reviews.llvm.org/D132779



More information about the cfe-commits mailing list