diff --git a/clang/lib/CodeGen/CGDebugInfo.cpp b/clang/lib/CodeGen/CGDebugInfo.cpp index ecb1760454d7..8036efe9ec41 100644 --- a/clang/lib/CodeGen/CGDebugInfo.cpp +++ b/clang/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(D->getDeclContext())) + if (D->getDeclContext() && !isa(D->getDeclContext()) + && !isa(D->getDeclContext())) LinkageName = Var->getName(); if (LinkageName == DeclName) LinkageName = llvm::StringRef(); diff --git a/clang/test/CodeGenObjC/debug-info-static-var.m b/clang/test/CodeGenObjC/debug-info-static-var.m new file mode 100644 index 000000000000..0da559c0728e --- /dev/null +++ b/clang/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 +