diff options
-rw-r--r-- | lib/CodeGen/CGDebugInfo.cpp | 3 | ||||
-rw-r--r-- | test/CodeGenObjC/debug-info-static-var.m | 23 |
2 files changed, 25 insertions, 1 deletions
diff --git a/lib/CodeGen/CGDebugInfo.cpp b/lib/CodeGen/CGDebugInfo.cpp index ecb1760454..8036efe9ec 100644 --- a/lib/CodeGen/CGDebugInfo.cpp +++ b/lib/CodeGen/CGDebugInfo.cpp @@ -1954,7 +1954,8 @@ void CGDebugInfo::EmitGlobalVariable(llvm::GlobalVariable *Var, } llvm::StringRef DeclName = D->getName(); llvm::StringRef LinkageName; - if (D->getDeclContext() && !isa<FunctionDecl>(D->getDeclContext())) + if (D->getDeclContext() && !isa<FunctionDecl>(D->getDeclContext()) + && !isa<ObjCMethodDecl>(D->getDeclContext())) LinkageName = Var->getName(); if (LinkageName == DeclName) LinkageName = llvm::StringRef(); diff --git a/test/CodeGenObjC/debug-info-static-var.m b/test/CodeGenObjC/debug-info-static-var.m new file mode 100644 index 0000000000..0da559c072 --- /dev/null +++ b/test/CodeGenObjC/debug-info-static-var.m @@ -0,0 +1,23 @@ +// RUN: %clang_cc1 -g -S -masm-verbose -o - %s | FileCheck %s +// Radar 8801045 +// Do not emit AT_MIPS_linkage_name for static variable i + +// CHECK: DW_TAG_variable +// CHECK-NEXT: .byte 105 ## DW_AT_name +// CHECK-NEXT: .byte 0 +// CHECK-NEXT: DW_AT_type +// CHECK-NEXT: DW_AT_decl_file +// CHECK-NEXT: DW_AT_decl_line +// CHECK-NEXT: DW_AT_location + +@interface A { +} +-(void) foo; +@end + +@implementation A +-(void)foo { + static int i = 1; +} +@end + |