]> granicus.if.org Git - clang/commitdiff
Do not emit AT_MIPS_linkage_name for Objective-C method static variable i.
authorDevang Patel <dpatel@apple.com>
Wed, 9 Feb 2011 19:16:38 +0000 (19:16 +0000)
committerDevang Patel <dpatel@apple.com>
Wed, 9 Feb 2011 19:16:38 +0000 (19:16 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/cfe/trunk@125210 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/CGDebugInfo.cpp
test/CodeGenObjC/debug-info-static-var.m [new file with mode: 0644]

index ecb1760454d7379200c87f68c34d68e44c81272a..8036efe9ec415af96f77e5c245fcc87ff795a9bc 100644 (file)
@@ -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 (file)
index 0000000..0da559c
--- /dev/null
@@ -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
+