aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDevang Patel <dpatel@apple.com>2011-02-09 19:16:38 +0000
committerDevang Patel <dpatel@apple.com>2011-02-09 19:16:38 +0000
commiteb4c45b383b4a8f69d23e4b9cfb6dd3e6f8ff641 (patch)
tree41475cc2f73954897ca32980c5bc8bdddd45ae87
parent92b97f2d279405751447488504816d82e1906f4f (diff)
Do not emit AT_MIPS_linkage_name for Objective-C method static variable i.
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125210 91177308-0d34-0410-b5e6-96231b3b80d8
-rw-r--r--lib/CodeGen/CGDebugInfo.cpp3
-rw-r--r--test/CodeGenObjC/debug-info-static-var.m23
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
+