From: Fariborz Jahanian Date: Thu, 9 Jun 2011 19:25:01 +0000 (+0000) Subject: Don't add objc method name mangling to locally declared function. X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=8805fe800e30d6597d8c900f590b74567873be78;p=clang Don't add objc method name mangling to locally declared function. // rdar://9566314 git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@132791 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/AST/ItaniumMangle.cpp b/lib/AST/ItaniumMangle.cpp index 2b9fa42cf4..e81ec7e54b 100644 --- a/lib/AST/ItaniumMangle.cpp +++ b/lib/AST/ItaniumMangle.cpp @@ -1122,6 +1122,12 @@ void CXXNameMangler::mangleLocalName(const NamedDecl *ND) { // := Z E s [] // := _ const DeclContext *DC = ND->getDeclContext(); + if (isa(DC) && isa(ND)) { + // Don't add objc method name mangling to locally declared function + mangleUnqualifiedName(ND); + return; + } + Out << 'Z'; if (const ObjCMethodDecl *MD = dyn_cast(DC)) { diff --git a/test/CodeGenObjCXX/mangle.mm b/test/CodeGenObjCXX/mangle.mm index 7a75a5b40e..2521c6076a 100644 --- a/test/CodeGenObjCXX/mangle.mm +++ b/test/CodeGenObjCXX/mangle.mm @@ -42,3 +42,15 @@ } @end +// rdar://9566314 +@interface NX +- (void)Meth; +@end + +@implementation NX +- (void)Meth { + void uiIsVisible(); +// CHECK: call void @_Z11uiIsVisiblev + uiIsVisible(); +} +@end