[llvm-branch-commits] [cfe-branch] r79786 - in /cfe/branches/release_26: lib/Sema/Sema.h lib/Sema/SemaDeclObjC.cpp lib/Sema/SemaExprObjC.cpp test/SemaObjC/selector-1.m

Tanya Lattner tonic at nondot.org
Sat Aug 22 16:28:06 PDT 2009


Author: tbrethou
Date: Sat Aug 22 18:28:06 2009
New Revision: 79786

URL: http://llvm.org/viewvc/llvm-project?rev=79786&view=rev
Log:
Merge 79776 from mainline.
Don't issue warning on multiple selector found when
selector name is for a @selector expression.

Modified:
    cfe/branches/release_26/lib/Sema/Sema.h
    cfe/branches/release_26/lib/Sema/SemaDeclObjC.cpp
    cfe/branches/release_26/lib/Sema/SemaExprObjC.cpp
    cfe/branches/release_26/test/SemaObjC/selector-1.m

Modified: cfe/branches/release_26/lib/Sema/Sema.h
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_26/lib/Sema/Sema.h?rev=79786&r1=79785&r2=79786&view=diff

==============================================================================
--- cfe/branches/release_26/lib/Sema/Sema.h (original)
+++ cfe/branches/release_26/lib/Sema/Sema.h Sat Aug 22 18:28:06 2009
@@ -1355,7 +1355,8 @@
   
   /// LookupInstanceMethodInGlobalPool - Returns the method and warns if
   /// there are multiple signatures.
-  ObjCMethodDecl *LookupInstanceMethodInGlobalPool(Selector Sel, SourceRange R);
+  ObjCMethodDecl *LookupInstanceMethodInGlobalPool(Selector Sel, SourceRange R,
+                                                   bool warn=true);
 
   /// LookupFactoryMethodInGlobalPool - Returns the method and warns if
   /// there are multiple signatures.

Modified: cfe/branches/release_26/lib/Sema/SemaDeclObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_26/lib/Sema/SemaDeclObjC.cpp?rev=79786&r1=79785&r2=79786&view=diff

==============================================================================
--- cfe/branches/release_26/lib/Sema/SemaDeclObjC.cpp (original)
+++ cfe/branches/release_26/lib/Sema/SemaDeclObjC.cpp Sat Aug 22 18:28:06 2009
@@ -1264,7 +1264,8 @@
 
 // FIXME: Finish implementing -Wno-strict-selector-match.
 ObjCMethodDecl *Sema::LookupInstanceMethodInGlobalPool(Selector Sel, 
-                                                       SourceRange R) {
+                                                       SourceRange R,
+                                                       bool warn) {
   llvm::DenseMap<Selector, ObjCMethodList>::iterator Pos
     = InstanceMethodPool.find(Sel);
   if (Pos == InstanceMethodPool.end()) {
@@ -1281,7 +1282,7 @@
     for (ObjCMethodList *Next = MethList.Next; Next; Next = Next->Next)
       // This checks if the methods differ by size & alignment.
       if (!MatchTwoMethodDeclarations(MethList.Method, Next->Method, true))
-        issueWarning = true;
+        issueWarning = warn;
   }
   if (issueWarning && (MethList.Method && MethList.Next)) {
     Diag(R.getBegin(), diag::warn_multiple_method_decl) << Sel << R;

Modified: cfe/branches/release_26/lib/Sema/SemaExprObjC.cpp
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_26/lib/Sema/SemaExprObjC.cpp?rev=79786&r1=79785&r2=79786&view=diff

==============================================================================
--- cfe/branches/release_26/lib/Sema/SemaExprObjC.cpp (original)
+++ cfe/branches/release_26/lib/Sema/SemaExprObjC.cpp Sat Aug 22 18:28:06 2009
@@ -132,7 +132,7 @@
                                                    SourceLocation LParenLoc,
                                                    SourceLocation RParenLoc) {
   ObjCMethodDecl *Method = LookupInstanceMethodInGlobalPool(Sel, 
-                             SourceRange(LParenLoc, RParenLoc));
+                             SourceRange(LParenLoc, RParenLoc), false);
   if (!Method)
     Method = LookupFactoryMethodInGlobalPool(Sel,
                                           SourceRange(LParenLoc, RParenLoc));

Modified: cfe/branches/release_26/test/SemaObjC/selector-1.m
URL: http://llvm.org/viewvc/llvm-project/cfe/branches/release_26/test/SemaObjC/selector-1.m?rev=79786&r1=79785&r2=79786&view=diff

==============================================================================
--- cfe/branches/release_26/test/SemaObjC/selector-1.m (original)
+++ cfe/branches/release_26/test/SemaObjC/selector-1.m Sat Aug 22 18:28:06 2009
@@ -8,6 +8,19 @@
 
 @end
 
+ at interface I
+- (id) compare: (char) arg1;
+ at end
+
+ at interface J
+- (id) compare: (id) arg1;
+ at end
+
+SEL foo()
+{
+	return @selector(compare:);	// Non warning on multiple selector found.
+}
+
 int main() {
  SEL s = @selector(retain);
  SEL s1 = @selector(meth1:);





More information about the llvm-branch-commits mailing list