diff --git a/clang/lib/Serialization/ASTReader.cpp b/clang/lib/Serialization/ASTReader.cpp index b74bd586e74d7..3c64b67503195 100644 --- a/clang/lib/Serialization/ASTReader.cpp +++ b/clang/lib/Serialization/ASTReader.cpp @@ -645,10 +645,11 @@ collectMacroDefinitions(const PreprocessorOptions &PPOpts, // For an #undef'd macro, we only care about the name. if (IsUndef) { - if (MacroNames && !Macros.count(MacroName)) + auto [It, Inserted] = Macros.try_emplace(MacroName); + if (MacroNames && Inserted) MacroNames->push_back(MacroName); - Macros[MacroName] = std::make_pair("", true); + It->second = std::make_pair("", true); continue; } @@ -661,9 +662,10 @@ collectMacroDefinitions(const PreprocessorOptions &PPOpts, MacroBody = MacroBody.substr(0, End); } - if (MacroNames && !Macros.count(MacroName)) + auto [It, Inserted] = Macros.try_emplace(MacroName); + if (MacroNames && Inserted) MacroNames->push_back(MacroName); - Macros[MacroName] = std::make_pair(MacroBody, false); + It->second = std::make_pair(MacroBody, false); } }