summaryrefslogtreecommitdiff
path: root/test/DebugInfo
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-04-30 22:58:19 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-04-30 22:58:19 +0000
commit4e9d8388dd2ec26a0b9c68d513fdf314cd9fd43c (patch)
tree97c358b5cbb694227eac1e8a4f9d78a1211a68e1 /test/DebugInfo
parent6c0458d2b4910f94dfbf24234e98b386ec0b3f69 (diff)
downloadllvm-4e9d8388dd2ec26a0b9c68d513fdf314cd9fd43c.tar.gz
llvm-4e9d8388dd2ec26a0b9c68d513fdf314cd9fd43c.tar.bz2
llvm-4e9d8388dd2ec26a0b9c68d513fdf314cd9fd43c.tar.xz
Revert "Emit DW_AT_object_pointer once, on the declaration, for each function."
Breaks GDB buildbot (http://lab.llvm.org:8011/builders/clang-x86_64-ubuntu-gdb-75/builds/14517) GCC emits DW_AT_object_pointer /everywhere/ (declaration, abstract definition, inlined subroutine), but it looks like GCC relies on it being somewhere other than the declaration, at least. I'll experiment further & can hopefully still remove it from the inlined_subroutine. This reverts commit r207705. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@207719 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/DebugInfo')
-rw-r--r--test/DebugInfo/X86/DW_AT_object_pointer.ll21
-rw-r--r--test/DebugInfo/X86/inline-member-function.ll15
2 files changed, 6 insertions, 30 deletions
diff --git a/test/DebugInfo/X86/DW_AT_object_pointer.ll b/test/DebugInfo/X86/DW_AT_object_pointer.ll
index 7885514c2c..5fa96994a8 100644
--- a/test/DebugInfo/X86/DW_AT_object_pointer.ll
+++ b/test/DebugInfo/X86/DW_AT_object_pointer.ll
@@ -1,28 +1,13 @@
; RUN: llc -mtriple=x86_64-apple-darwin %s -o %t -filetype=obj
; RUN: llvm-dwarfdump -debug-dump=info %t | FileCheck %s
-; Emit the DW_TAG_object_pointer on the declaration only, not the definition.
-; This seems the most correct thing - the DW_TAG_object_pointer is inherited
-; from the declaration to any (abstract or concrete) definitions and DWARF
-; consumers can use this information for callers that can only see the
-; declaration.
-; That said, it isn't very space efficient - making member function
-; declarations 11 bytes instead of 7 and I'm not sure which tools actually
-; use this information here (ObjC Blocks are a different story & most likely
-; require object_pointer) - perhaps we should omit it entirely for space.
-; No overall space impact study has been performed.
-
-; CHECK: [[DEFINITION:0x[0-9a-f]*]]: DW_TAG_subprogram
-; CHECK-NOT: DW_TAG
-; CHECK-NOT: DW_TAG_object_pointer
+; CHECK: DW_TAG_formal_parameter [
+; CHECK-NOT: ""
; CHECK: DW_TAG
-
; CHECK: DW_TAG_class_type
-; CHECK-NOT: NULL
-; CHECK: DW_TAG_subprogram
-; CHECK-NEXT: DW_AT_name {{.*}} "A"
; CHECK: DW_AT_object_pointer [DW_FORM_ref4] (cu + 0x{{[0-9a-f]*}} => {[[PARAM:0x[0-9a-f]*]]})
; CHECK: [[PARAM]]: DW_TAG_formal_parameter
+; CHECK-NEXT: DW_AT_name [DW_FORM_strp] ( .debug_str[0x{{[0-9a-f]*}}] = "this")
%class.A = type { i32 }
diff --git a/test/DebugInfo/X86/inline-member-function.ll b/test/DebugInfo/X86/inline-member-function.ll
index a3fcb99c5c..4a4a19c191 100644
--- a/test/DebugInfo/X86/inline-member-function.ll
+++ b/test/DebugInfo/X86/inline-member-function.ll
@@ -22,20 +22,11 @@
; CHECK-NOT: DW_AT_artificial
; CHECK: DW_TAG
-; But make sure we emit DW_AT_object_pointer on the declaration.
-; CHECK: DW_TAG_structure_type
-; CHECK-NEXT: DW_AT_name {{.*}} "foo"
-; CHECK-NOT: NULL
-; CHECK: [[DECLARATION:0x[0-9a-e]*]]: DW_TAG_subprogram
-; CHECK-NOT: DW_TAG
-; CHECK: DW_AT_object_pointer
-
-; But don't put it on the abstract definition, either.
+; But make sure we emit DW_AT_object_pointer on the abstract definition.
; CHECK: [[ABSTRACT_ORIGIN]]: DW_TAG_subprogram
-; CHECK-NEXT: DW_AT_specification {{.*}}{[[DECLARATION]]}
; CHECK-NOT: NULL
-; CHECK-NOT: DW_AT_object_pointer
-; CHECK: DW_TAG_formal_parameter
+; CHECK-NOT: TAG
+; CHECK: DW_AT_object_pointer
%struct.foo = type { i8 }