]> granicus.if.org Git - clang/commitdiff
Don't add objc method name mangling to locally declared function.
authorFariborz Jahanian <fjahanian@apple.com>
Thu, 9 Jun 2011 19:25:01 +0000 (19:25 +0000)
committerFariborz Jahanian <fjahanian@apple.com>
Thu, 9 Jun 2011 19:25:01 +0000 (19:25 +0000)
// rdar://9566314

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

lib/AST/ItaniumMangle.cpp
test/CodeGenObjCXX/mangle.mm

index 2b9fa42cf457042c7458a37108057cd056c8311c..e81ec7e54b623ab81cb78a673fc9d91c63af43b3 100644 (file)
@@ -1122,6 +1122,12 @@ void CXXNameMangler::mangleLocalName(const NamedDecl *ND) {
   //              := Z <function encoding> E s [<discriminator>]
   // <discriminator> := _ <non-negative number>
   const DeclContext *DC = ND->getDeclContext();
+  if (isa<ObjCMethodDecl>(DC) && isa<FunctionDecl>(ND)) {
+    // Don't add objc method name mangling to locally declared function
+    mangleUnqualifiedName(ND);
+    return;
+  }
+
   Out << 'Z';
 
   if (const ObjCMethodDecl *MD = dyn_cast<ObjCMethodDecl>(DC)) {
index 7a75a5b40e4c6d0feffcfc3f9137b9d5e1bfc59c..2521c6076a8c17c6e7479d73e297937e216d60a0 100644 (file)
 }
 @end
 
+// rdar://9566314
+@interface NX
+- (void)Meth;
+@end
+
+@implementation NX
+- (void)Meth {
+  void uiIsVisible();
+// CHECK: call void @_Z11uiIsVisiblev
+  uiIsVisible();
+}
+@end