diff --git a/clang/include/clang/Sema/SemaObjC.h b/clang/include/clang/Sema/SemaObjC.h index 213c37b5091fe0..b868e9e7cd0aa9 100644 --- a/clang/include/clang/Sema/SemaObjC.h +++ b/clang/include/clang/Sema/SemaObjC.h @@ -218,6 +218,7 @@ class SemaObjC : public SemaBase { std::pair insert(std::pair &&Val) { return Methods.insert(Val); } + Lists &operator[](Selector Key) { return Methods[Key]; } int count(Selector Sel) const { return Methods.count(Sel); } bool empty() const { return Methods.empty(); } diff --git a/clang/lib/Sema/SemaDeclObjC.cpp b/clang/lib/Sema/SemaDeclObjC.cpp index 807453400abdd0..87be43b13813d3 100644 --- a/clang/lib/Sema/SemaDeclObjC.cpp +++ b/clang/lib/Sema/SemaDeclObjC.cpp @@ -3441,16 +3441,11 @@ void SemaObjC::AddMethodToGlobalPool(ObjCMethodDecl *Method, bool impl, if (SemaRef.ExternalSource) ReadMethodPool(Method->getSelector()); - GlobalMethodPool::iterator Pos = MethodPool.find(Method->getSelector()); - if (Pos == MethodPool.end()) - Pos = MethodPool - .insert(std::make_pair(Method->getSelector(), - GlobalMethodPool::Lists())) - .first; + auto &Lists = MethodPool[Method->getSelector()]; Method->setDefined(impl); - ObjCMethodList &Entry = instance ? Pos->second.first : Pos->second.second; + ObjCMethodList &Entry = instance ? Lists.first : Lists.second; addMethodToGlobalList(&Entry, Method); }