diff options
author | David Blaikie <dblaikie@gmail.com> | 2014-04-30 22:58:19 +0000 |
---|---|---|
committer | David Blaikie <dblaikie@gmail.com> | 2014-04-30 22:58:19 +0000 |
commit | 4e9d8388dd2ec26a0b9c68d513fdf314cd9fd43c (patch) | |
tree | 97c358b5cbb694227eac1e8a4f9d78a1211a68e1 /test/DebugInfo | |
parent | 6c0458d2b4910f94dfbf24234e98b386ec0b3f69 (diff) | |
download | llvm-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.ll | 21 | ||||
-rw-r--r-- | test/DebugInfo/X86/inline-member-function.ll | 15 |
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 } |