]> granicus.if.org Git - clang/commitdiff
Small code change to improve performance
authorFariborz Jahanian <fjahanian@apple.com>
Tue, 22 Jan 2013 19:05:17 +0000 (19:05 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Tue, 22 Jan 2013 19:05:17 +0000 (19:05 +0000)
in my last patch, suggested by Argyrios.

git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@173182 91177308-0d34-0410-b5e6-96231b3b80d8

include/clang/Sema/Sema.h
lib/Sema/SemaExprObjC.cpp

index a3402782a9c82c1d9210ce1f7455efcfdf57d926..20d3db625a43de59d1515fe62a8cf629d0011b3b 100644 (file)
@@ -575,6 +575,9 @@ public:
   /// \brief id<NSCopying> type.
   QualType QIDNSCopying;
 
+  /// \brief will hold 'respondsToSelector:'
+  Selector RespondsToSelectorSel;
+  
   /// A flag to remember whether the implicit forms of operator new and delete
   /// have been declared.
   bool GlobalNewDeleteDeclared;
index 87da44019169ca90e3a45e9b0cf6d09a0c91f17f..7f0c832575b47153e6085b4c949f5ef48f7a9a8c 100644 (file)
@@ -2485,8 +2485,12 @@ ExprResult Sema::ActOnInstanceMessage(Scope *S,
                                       MultiExprArg Args) {
   if (!Receiver)
     return ExprError();
-  IdentifierInfo *SelectorId = &Context.Idents.get("respondsToSelector");
-  if (Sel == Context.Selectors.getUnarySelector(SelectorId))
+  
+  if (RespondsToSelectorSel.isNull()) {
+    IdentifierInfo *SelectorId = &Context.Idents.get("respondsToSelector");
+    RespondsToSelectorSel = Context.Selectors.getUnarySelector(SelectorId);
+  }
+  if (Sel == RespondsToSelectorSel)
     RemoveSelectorFromWarningCache(*this, Args[0]);
     
   return BuildInstanceMessage(Receiver, Receiver->getType(),