diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index 67054f66b582..9b9fb188193a 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/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/clang/test/CodeGenObjC/debug-info.m b/clang/test/CodeGenObjC/debug-info.m new file mode 100644 index 000000000000..178e51cf2738 --- /dev/null +++ b/clang/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