On Sep 2, 2010, at 10:45 AM, David Chisnall wrote: > On 2 Sep 2010, at 18:31, Devang Patel wrote: > >> >> On Sep 2, 2010, at 10:16 AM, David Chisnall wrote: >> >>> Author: theraven >>> Date: Thu Sep 2 12:16:32 2010 >>> New Revision: 112833 >>> >>> URL: http://llvm.org/viewvc/llvm-project?rev=112833&view=rev >>> Log: >>> Use the unmangled name for the display name in Objective-C debug info. >>> This should have no effect with the Mac runtime where clang (unlike GCC) >>> uses the display name symbol name. >>> >> >> test case ? > > I'm not sure what the test case would test.
The patch would change something in generated LLVM IR. > >>> Modified: >>> cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >>> >>> Modified: cfe/trunk/lib/CodeGen/CGDebugInfo.cpp >>> URL: >>> http://llvm.org/viewvc/llvm-project/cfe/trunk/lib/CodeGen/CGDebugInfo.cpp?rev=112833&r1=112832&r2=112833&view=diff >>> ============================================================================== >>> --- cfe/trunk/lib/CodeGen/CGDebugInfo.cpp (original) >>> +++ cfe/trunk/lib/CodeGen/CGDebugInfo.cpp Thu Sep 2 12:16:32 2010 >>> @@ -1471,6 +1471,20 @@ >>> Name = getFunctionName(FD); >>> // Use mangled name as linkage name for c/c++ functions. >>> LinkageName = CGM.getMangledName(GD); >>> + } else if (const ObjCMethodDecl *OMD = dyn_cast<ObjCMethodDecl>(D)) { >>> + llvm::SmallString<256> MethodName; >>> + llvm::raw_svector_ostream OS(MethodName); >>> + OS << (OMD->isInstanceMethod() ? '-' : '+') << '['; >>> + const DeclContext *DC = OMD->getDeclContext(); >>> + if (const ObjCImplementationDecl *OID = dyn_cast<const >>> ObjCImplementationDecl>(DC)) { >>> + OS << OID->getName(); >>> + } else if (const ObjCCategoryImplDecl *OCD = dyn_cast<const >>> ObjCCategoryImplDecl>(DC)){ >>> + OS << ((NamedDecl *)OCD)->getIdentifier()->getNameStart() << '(' << >>> + OCD->getIdentifier()->getNameStart() << ')'; >>> + } >>> + OS << ' ' << OMD->getSelector().getAsString() << ']'; >>> + Name = MethodName; >> >> Isn't this means Name will reference local SmallString MethodName outside >> MethodName's scope ? > > Could be. I'm not entirely clear about how LLVM's string stuff works - I > assumed it was a copy that was optimised away - if so moving the MethodName > declaration outside the block should fix it. See getFunctionName() implementation. - Devang
_______________________________________________ cfe-commits mailing list [email protected] http://lists.cs.uiuc.edu/mailman/listinfo/cfe-commits
