From: Daniel Dunbar Date: Thu, 14 May 2009 01:45:24 +0000 (+0000) Subject: We need to specify the "linkage name" to the subprogram now that we X-Git-Url: https://granicus.if.org/sourcecode?a=commitdiff_plain;h=bbd53af03e4c0d055a312521d97126cd86583c30;p=clang We need to specify the "linkage name" to the subprogram now that we emit the correct "display name". I suspect we need more work here, see FIXME for example. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71761 91177308-0d34-0410-b5e6-96231b3b80d8 --- diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index 9b9fb18819..b35ca7bc31 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -669,7 +669,11 @@ llvm::DIType CGDebugInfo::getOrCreateType(QualType Ty, void CGDebugInfo::EmitFunctionStart(const char *Name, QualType ReturnType, llvm::Function *Fn, CGBuilderTy &Builder) { + const char *LinkageName = Name; + // Skip the asm prefix if it exists. + // + // FIXME: This should probably be the unmangled name? if (Name[0] == '\01') ++Name; @@ -679,7 +683,7 @@ void CGDebugInfo::EmitFunctionStart(const char *Name, QualType ReturnType, unsigned LineNo = SM.getPresumedLoc(CurLoc).getLine(); llvm::DISubprogram SP = - DebugFactory.CreateSubprogram(Unit, Name, Name, "", Unit, LineNo, + DebugFactory.CreateSubprogram(Unit, Name, Name, LinkageName, Unit, LineNo, getOrCreateType(ReturnType, Unit), Fn->hasInternalLinkage(), true/*definition*/); diff --git a/test/CodeGenObjC/debug-info.m b/test/CodeGenObjC/debug-info.m index 178e51cf27..c4b9426145 100644 --- a/test/CodeGenObjC/debug-info.m +++ b/test/CodeGenObjC/debug-info.m @@ -1,5 +1,8 @@ // RUN: clang-cc -triple i386-apple-darwin9 -g -emit-llvm -o %t %s && -// RUN: grep -F 'internal constant [8 x i8] c"-[A m0]\00"' %t +// RUN: grep '@.str3 = internal constant \[8 x i8\] c"-\[A m0\]\\00"' %t && +// RUN: grep '@.str4 = internal constant \[9 x i8\] c"\\01-\[A m0\]\\00"' %t && +// RUN: grep '@llvm.dbg.subprogram = .* @.str3, .* @.str3, .* @.str4,' %t && +// RUN: true @interface A @end @implementation A