[clang] 63d2e62 - [clang][Lex] Unique ModuleMacros with a UniquingSet (NFC) (#223270)
via cfe-commits
cfe-commits at lists.llvm.org
Sun Sep 13 16:42:27 PDT 2026
Author: Kazu Hirata
Date: 2026-09-13T16:42:21-07:00
New Revision: 63d2e62707e8ec6c070a3b258ea81f320920525c
URL: https://github.com/llvm/llvm-project/commit/63d2e62707e8ec6c070a3b258ea81f320920525c
DIFF: https://github.com/llvm/llvm-project/commit/63d2e62707e8ec6c070a3b258ea81f320920525c.diff
LOG: [clang][Lex] Unique ModuleMacros with a UniquingSet (NFC) (#223270)
This patch migrates ModuleMacros in Preprocessor from llvm::FoldingSet
to llvm::UniquingSet.
ModuleMacro keys on a pair of Module * and const IdentifierInfo *.
Switching to UniquingSet allows us to look up macros with a typed key,
eliminating FoldingSetNodeID serialization at lookup sites and removing
ModuleMacro::Profile.
Assisted-by: Antigravity
Added:
Modified:
clang/include/clang/Lex/MacroInfo.h
clang/include/clang/Lex/Preprocessor.h
clang/lib/Lex/PPMacroExpansion.cpp
Removed:
################################################################################
diff --git a/clang/include/clang/Lex/MacroInfo.h b/clang/include/clang/Lex/MacroInfo.h
index 60048688a9a33..e5dbc7f92a9ac 100644
--- a/clang/include/clang/Lex/MacroInfo.h
+++ b/clang/include/clang/Lex/MacroInfo.h
@@ -511,7 +511,7 @@ MacroDirective::DefInfo::getPreviousDefinition() {
/// the final directive for a macro name within a module. These entities also
/// represent the macro override graph.
///
-/// These are stored in a FoldingSet in the preprocessor.
+/// These are stored in a UniquingSet in the preprocessor.
class ModuleMacro : public llvm::FoldingSetNode {
friend class Preprocessor;
@@ -543,14 +543,8 @@ class ModuleMacro : public llvm::FoldingSetNode {
const IdentifierInfo *II, MacroInfo *Macro,
ArrayRef<ModuleMacro *> Overrides);
- void Profile(llvm::FoldingSetNodeID &ID) const {
- return Profile(ID, OwningModule, II);
- }
-
- static void Profile(llvm::FoldingSetNodeID &ID, Module *OwningModule,
- const IdentifierInfo *II) {
- ID.AddPointer(OwningModule);
- ID.AddPointer(II);
+ std::pair<Module *, const IdentifierInfo *> getKey() const {
+ return {OwningModule, II};
}
/// Get the name of the macro.
diff --git a/clang/include/clang/Lex/Preprocessor.h b/clang/include/clang/Lex/Preprocessor.h
index d94f3d2cbe8ed..31b68a0fd0670 100644
--- a/clang/include/clang/Lex/Preprocessor.h
+++ b/clang/include/clang/Lex/Preprocessor.h
@@ -1091,7 +1091,7 @@ class Preprocessor {
llvm::SmallSetVector<Module *, 2> AffectingClangModules;
/// The set of known macros exported from modules.
- llvm::FoldingSet<ModuleMacro> ModuleMacros;
+ llvm::UniquingSet<ModuleMacro> ModuleMacros;
/// The names of potential module macros that we've not yet processed.
llvm::SmallVector<IdentifierInfo *, 32> PendingModuleMacroNames;
diff --git a/clang/lib/Lex/PPMacroExpansion.cpp b/clang/lib/Lex/PPMacroExpansion.cpp
index a8b9bcd4e4572..83f78700a4e72 100644
--- a/clang/lib/Lex/PPMacroExpansion.cpp
+++ b/clang/lib/Lex/PPMacroExpansion.cpp
@@ -131,11 +131,8 @@ ModuleMacro *Preprocessor::addModuleMacro(Module *Mod, IdentifierInfo *II,
MacroInfo *Macro,
ArrayRef<ModuleMacro *> Overrides,
bool &New) {
- llvm::FoldingSetNodeID ID;
- ModuleMacro::Profile(ID, Mod, II);
-
llvm::FoldingSetInsertToken InsertToken;
- if (auto *MM = ModuleMacros.lookup(ID, InsertToken)) {
+ if (auto *MM = ModuleMacros.lookup({Mod, II}, InsertToken)) {
New = false;
return MM;
}
@@ -168,11 +165,8 @@ ModuleMacro *Preprocessor::addModuleMacro(Module *Mod, IdentifierInfo *II,
ModuleMacro *Preprocessor::getModuleMacro(Module *Mod,
const IdentifierInfo *II) {
- llvm::FoldingSetNodeID ID;
- ModuleMacro::Profile(ID, Mod, II);
-
llvm::FoldingSetInsertToken InsertToken;
- return ModuleMacros.lookup(ID, InsertToken);
+ return ModuleMacros.lookup({Mod, II}, InsertToken);
}
void Preprocessor::updateModuleMacroInfo(const IdentifierInfo *II,
More information about the cfe-commits
mailing list