================ @@ -697,27 +698,61 @@ static bool isTokenAtLoc(const SourceManager &SM, const LangOptions &LangOpts, return !Invalid && Text == TokenText; } -std::optional<SourceLocation> -getExpansionLocOfMacro(StringRef MacroName, SourceLocation Loc, - const ASTContext &Context) { +namespace { +struct SourceLocationHash { + std::size_t operator()(const SourceLocation &Loc) const { + return Loc.getHashValue(); + } +}; + +struct SourceLocationEqual { + bool operator()(const SourceLocation &LHS, const SourceLocation &RHS) const { + return LHS == RHS; + } +}; + +} // namespace + +static std::optional<SourceLocation> getExpansionLocOfMacroRecursive( + StringRef MacroName, SourceLocation Loc, const ASTContext &Context, + std::unordered_set<SourceLocation, SourceLocationHash, SourceLocationEqual> + &CheckedLocations) { auto &SM = Context.getSourceManager(); const LangOptions &LangOpts = Context.getLangOpts(); while (Loc.isMacroID()) { + if (CheckedLocations.count(Loc)) { + return std::nullopt; + } ---------------- mandymimi wrote:
updated in f3f08877f08c https://github.com/llvm/llvm-project/pull/117143 _______________________________________________ cfe-commits mailing list cfe-commits@lists.llvm.org https://lists.llvm.org/cgi-bin/mailman/listinfo/cfe-commits