Author: Daniel Grumberg Date: 2022-04-07T19:08:17+01:00 New Revision: 101559225189e63b7f6236fb944501b1e6b74a87
URL: https://github.com/llvm/llvm-project/commit/101559225189e63b7f6236fb944501b1e6b74a87 DIFF: https://github.com/llvm/llvm-project/commit/101559225189e63b7f6236fb944501b1e6b74a87.diff LOG: [clang][extract-api][NFC] Use dedicated API to check for macro equality Differential Revision: https://reviews.llvm.org/D123295 Added: Modified: clang/lib/ExtractAPI/ExtractAPIConsumer.cpp Removed: ################################################################################ diff --git a/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp b/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp index 949413d7d2b1d..0757881862984 100644 --- a/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp +++ b/clang/lib/ExtractAPI/ExtractAPIConsumer.cpp @@ -649,8 +649,9 @@ class ExtractAPIConsumer : public ASTConsumer { class MacroCallback : public PPCallbacks { public: - MacroCallback(const SourceManager &SM, LocationFileChecker &LCF, APISet &API) - : SM(SM), LCF(LCF), API(API) {} + MacroCallback(const SourceManager &SM, LocationFileChecker &LCF, APISet &API, + Preprocessor &PP) + : SM(SM), LCF(LCF), API(API), PP(PP) {} void MacroDefined(const Token &MacroNameToken, const MacroDirective *MD) override { @@ -677,9 +678,9 @@ class MacroCallback : public PPCallbacks { if (!Undef) return; - llvm::erase_if(PendingMacros, [&MD](const PendingMacro &PM) { - return MD.getMacroInfo()->getDefinitionLoc() == - PM.MD->getMacroInfo()->getDefinitionLoc(); + llvm::erase_if(PendingMacros, [&MD, this](const PendingMacro &PM) { + return MD.getMacroInfo()->isIdenticalTo(*PM.MD->getMacroInfo(), PP, + /*Syntactically*/ false); }); } @@ -719,6 +720,7 @@ class MacroCallback : public PPCallbacks { const SourceManager &SM; LocationFileChecker &LCF; APISet &API; + Preprocessor &PP; llvm::SmallVector<PendingMacro> PendingMacros; }; @@ -741,9 +743,8 @@ ExtractAPIAction::CreateASTConsumer(CompilerInstance &CI, StringRef InFile) { auto LCF = std::make_unique<LocationFileChecker>(CI.getSourceManager(), KnownInputFiles); - // Register preprocessor callbacks that will add macro definitions to API. - CI.getPreprocessor().addPPCallbacks( - std::make_unique<MacroCallback>(CI.getSourceManager(), *LCF, *API)); + CI.getPreprocessor().addPPCallbacks(std::make_unique<MacroCallback>( + CI.getSourceManager(), *LCF, *API, CI.getPreprocessor())); return std::make_unique<ExtractAPIConsumer>(CI.getASTContext(), std::move(LCF), *API); _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits