================ @@ -16,6 +16,74 @@ using namespace llvm::MachO; namespace clang::installapi { +GlobalRecord *FrontendRecordsSlice::addGlobal( + StringRef Name, RecordLinkage Linkage, GlobalRecord::Kind GV, + const clang::AvailabilityInfo Avail, const Decl *D, const HeaderType Access, + SymbolFlags Flags) { + + auto *GR = llvm::MachO::RecordsSlice::addGlobal(Name, Linkage, GV, Flags); + if (!FrontendRecords.contains(GR)) + FrontendRecords.insert({GR, FrontendAttrs{Avail, D, Access}}); + return GR; +} + +ObjCInterfaceRecord *FrontendRecordsSlice::addObjCInterface( + StringRef Name, RecordLinkage Linkage, const clang::AvailabilityInfo Avail, + const Decl *D, HeaderType Access, bool IsEHType) { + ObjCIFSymbolKind SymType = + ObjCIFSymbolKind::Class | ObjCIFSymbolKind::MetaClass; + if (IsEHType) + SymType |= ObjCIFSymbolKind::EHType; + auto *ObjCR = + llvm::MachO::RecordsSlice::addObjCInterface(Name, Linkage, SymType); + if (!FrontendRecords.contains(ObjCR)) + FrontendRecords.insert({ObjCR, FrontendAttrs{Avail, D, Access}}); + return ObjCR; +} + +std::optional<HeaderType> +InstallAPIContext::findAndRecordFile(const FileEntry *FE, + const Preprocessor &PP) { + if (!FE) + return std::nullopt; + + // Check if header has been looked up already and whether it is something + // installapi should use. + auto It = KnownFiles.find(FE); ---------------- ributzka wrote:
Yes, my thought was to combine these two caches. There are no duplicates between them, but you still have to check the second one if the first one doesn't have a hit. https://github.com/llvm/llvm-project/pull/83378 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits