diff --git a/llvm/include/llvm/IR/ModuleSummaryIndex.h b/llvm/include/llvm/IR/ModuleSummaryIndex.h index 3c586a1dd21d8..539c130af33fa 100644 --- a/llvm/include/llvm/IR/ModuleSummaryIndex.h +++ b/llvm/include/llvm/IR/ModuleSummaryIndex.h @@ -1289,6 +1289,29 @@ struct TypeIdSummary { std::map WPDRes; }; +class CfiFunctionIndex { + std::set> Index; + +public: + CfiFunctionIndex() = default; + + template CfiFunctionIndex(It B, It E) : Index(B, E) {} + + std::set>::const_iterator begin() const { + return Index.begin(); + } + + std::set>::const_iterator end() const { + return Index.end(); + } + + template void emplace(Args &&...A) { + Index.emplace(std::forward(A)...); + } + + size_t count(StringRef S) const { return Index.count(S); } +}; + /// 160 bits SHA1 using ModuleHash = std::array; @@ -1418,8 +1441,8 @@ class ModuleSummaryIndex { /// True if some of the FunctionSummary contains a ParamAccess. bool HasParamAccess = false; - std::set> CfiFunctionDefs; - std::set> CfiFunctionDecls; + CfiFunctionIndex CfiFunctionDefs; + CfiFunctionIndex CfiFunctionDecls; // Used in cases where we want to record the name of a global, but // don't have the string owned elsewhere (e.g. the Strtab on a module). @@ -1667,19 +1690,11 @@ class ModuleSummaryIndex { return I == OidGuidMap.end() ? 0 : I->second; } - std::set> &cfiFunctionDefs() { - return CfiFunctionDefs; - } - const std::set> &cfiFunctionDefs() const { - return CfiFunctionDefs; - } + CfiFunctionIndex &cfiFunctionDefs() { return CfiFunctionDefs; } + const CfiFunctionIndex &cfiFunctionDefs() const { return CfiFunctionDefs; } - std::set> &cfiFunctionDecls() { - return CfiFunctionDecls; - } - const std::set> &cfiFunctionDecls() const { - return CfiFunctionDecls; - } + CfiFunctionIndex &cfiFunctionDecls() { return CfiFunctionDecls; } + const CfiFunctionIndex &cfiFunctionDecls() const { return CfiFunctionDecls; } /// Add a global value summary for a value. void addGlobalValueSummary(const GlobalValue &GV,