aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniel Dunbar <daniel@zuster.org>2009-05-13 23:08:57 +0000
committerDaniel Dunbar <daniel@zuster.org>2009-05-13 23:08:57 +0000
commita289393513d32f463a165a4b2990b11f5c6ab959 (patch)
tree266a6328d66569356fdf646268a367a50312b1c9
parent9375ed13dcf7a681874f89f7580b59caddbb2660 (diff)
Make sure not to include the LLVM asm prefix in function names for
debug info. git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@71736 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/CGDebugInfo.cpp4
-rw-r--r--test/CodeGenObjC/debug-info.m7
2 files changed, 11 insertions, 0 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp
index 67054f66b5..9b9fb18819 100644
--- a/lib/CodeGen/CGDebugInfo.cpp
+++ b/lib/CodeGen/CGDebugInfo.cpp
@@ -669,6 +669,10 @@ llvm::DIType CGDebugInfo::getOrCreateType(QualType Ty,
void CGDebugInfo::EmitFunctionStart(const char *Name, QualType ReturnType,
llvm::Function *Fn,
CGBuilderTy &Builder) {
+ // Skip the asm prefix if it exists.
+ if (Name[0] == '\01')
+ ++Name;
+
// FIXME: Why is this using CurLoc???
llvm::DICompileUnit Unit = getOrCreateCompileUnit(CurLoc);
SourceManager &SM = M->getContext().getSourceManager();
diff --git a/test/CodeGenObjC/debug-info.m b/test/CodeGenObjC/debug-info.m
new file mode 100644
index 0000000000..178e51cf27
--- /dev/null
+++ b/test/CodeGenObjC/debug-info.m
@@ -0,0 +1,7 @@
+// 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
+
+@interface A @end
+@implementation A
+-(void) m0 {}
+@end