Author: Jan Svoboda Date: 2023-09-08T20:12:08-07:00 New Revision: 0c41681a0ce3ab8c4f145b30e586d25a33b75bbf
URL: https://github.com/llvm/llvm-project/commit/0c41681a0ce3ab8c4f145b30e586d25a33b75bbf DIFF: https://github.com/llvm/llvm-project/commit/0c41681a0ce3ab8c4f145b30e586d25a33b75bbf.diff LOG: [clang] NFCI: Use `FileEntryRef` in `VerifyDiagnosticConsumer` Added: Modified: clang/include/clang/Basic/FileEntry.h clang/include/clang/Frontend/VerifyDiagnosticConsumer.h clang/lib/Frontend/VerifyDiagnosticConsumer.cpp Removed: ################################################################################ diff --git a/clang/include/clang/Basic/FileEntry.h b/clang/include/clang/Basic/FileEntry.h index 50110b8572ef48e..1fcca4c6dfc3da8 100644 --- a/clang/include/clang/Basic/FileEntry.h +++ b/clang/include/clang/Basic/FileEntry.h @@ -249,6 +249,23 @@ template <> struct PointerLikeTypeTraits<clang::FileEntryRef> { const clang::FileEntryRef::MapEntry *>::NumLowBitsAvailable; }; +template <> struct PointerLikeTypeTraits<clang::OptionalFileEntryRef> { + static inline void *getAsVoidPointer(clang::OptionalFileEntryRef File) { + if (!File) + return nullptr; + return PointerLikeTypeTraits<clang::FileEntryRef>::getAsVoidPointer(*File); + } + + static inline clang::OptionalFileEntryRef getFromVoidPointer(void *Ptr) { + if (!Ptr) + return std::nullopt; + return PointerLikeTypeTraits<clang::FileEntryRef>::getFromVoidPointer(Ptr); + } + + static constexpr int NumLowBitsAvailable = + PointerLikeTypeTraits<clang::FileEntryRef>::NumLowBitsAvailable; +}; + /// Specialisation of DenseMapInfo for FileEntryRef. template <> struct DenseMapInfo<clang::FileEntryRef> { static inline clang::FileEntryRef getEmptyKey() { diff --git a/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h b/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h index a97cd138d159617..e0f3570e5b2bc6e 100644 --- a/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h +++ b/clang/include/clang/Frontend/VerifyDiagnosticConsumer.h @@ -278,13 +278,13 @@ class VerifyDiagnosticConsumer: public DiagnosticConsumer, // These facilities are used for validation in debug builds. class UnparsedFileStatus { - llvm::PointerIntPair<const FileEntry *, 1, bool> Data; + llvm::PointerIntPair<OptionalFileEntryRef, 1, bool> Data; public: - UnparsedFileStatus(const FileEntry *File, bool FoundDirectives) + UnparsedFileStatus(OptionalFileEntryRef File, bool FoundDirectives) : Data(File, FoundDirectives) {} - const FileEntry *getFile() const { return Data.getPointer(); } + OptionalFileEntryRef getFile() const { return Data.getPointer(); } bool foundDirectives() const { return Data.getInt(); } }; diff --git a/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp b/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp index d70f2a90a629ce1..ab8174f4f4db921 100644 --- a/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp +++ b/clang/lib/Frontend/VerifyDiagnosticConsumer.cpp @@ -1030,12 +1030,12 @@ void VerifyDiagnosticConsumer::UpdateParsedFileStatus(SourceManager &SM, if (FID.isInvalid()) return; - const FileEntry *FE = SM.getFileEntryForID(FID); + OptionalFileEntryRef FE = SM.getFileEntryRefForID(FID); if (PS == IsParsed) { // Move the FileID from the unparsed set to the parsed set. UnparsedFiles.erase(FID); - ParsedFiles.insert(std::make_pair(FID, FE)); + ParsedFiles.insert(std::make_pair(FID, FE ? &FE->getFileEntry() : nullptr)); } else if (!ParsedFiles.count(FID) && !UnparsedFiles.count(FID)) { // Add the FileID to the unparsed set if we haven't seen it before. @@ -1076,17 +1076,17 @@ void VerifyDiagnosticConsumer::CheckDiagnostics() { // Iterate through list of unparsed files. for (const auto &I : UnparsedFiles) { const UnparsedFileStatus &Status = I.second; - const FileEntry *FE = Status.getFile(); + OptionalFileEntryRef FE = Status.getFile(); // Skip files that have been parsed via an alias. - if (FE && ParsedFileCache.count(FE)) + if (FE && ParsedFileCache.count(*FE)) continue; // Report a fatal error if this file contained directives. if (Status.foundDirectives()) { - llvm::report_fatal_error(Twine("-verify directives found after rather" - " than during normal parsing of ", - StringRef(FE ? FE->getName() : "(unknown)"))); + llvm::report_fatal_error("-verify directives found after rather" + " than during normal parsing of " + + (FE ? FE->getName() : "(unknown)")); } } _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits