summaryrefslogtreecommitdiff
path: root/test/DebugInfo/X86/inline-member-function.ll
diff options
context:
space:
mode:
authorDavid Blaikie <dblaikie@gmail.com>2014-05-27 18:37:48 +0000
committerDavid Blaikie <dblaikie@gmail.com>2014-05-27 18:37:48 +0000
commit254d093f991287bea06e47c27ef2e14db36b1c59 (patch)
tree957787852e37aee1067aa0c24d4fa517da8f940d /test/DebugInfo/X86/inline-member-function.ll
parentdef5a057976fe7ab21c8a6e6ccf1311d20971f4f (diff)
downloadllvm-254d093f991287bea06e47c27ef2e14db36b1c59.tar.gz
llvm-254d093f991287bea06e47c27ef2e14db36b1c59.tar.bz2
llvm-254d093f991287bea06e47c27ef2e14db36b1c59.tar.xz
DebugInfo: Lazily construct subprogram definition DIEs.
A further step to correctly emitting concrete out of line definitions preceeding inlined instances of the same program. To do this, emission of subprograms must be delayed until required since we don't know which (abstract only (if there's no out of line definition), concrete only (if there are no inlined instances), or both) DIEs are required at the start of the module. To reduce the test churn in the following commit that actually fixes the bug, this commit introduces the lazy DIE construction and cleans up test cases that are impacted by the changes in the resulting DIE ordering. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@209675 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'test/DebugInfo/X86/inline-member-function.ll')
-rw-r--r--test/DebugInfo/X86/inline-member-function.ll17
1 files changed, 10 insertions, 7 deletions
diff --git a/test/DebugInfo/X86/inline-member-function.ll b/test/DebugInfo/X86/inline-member-function.ll
index 4a4a19c191..3dc6043bf3 100644
--- a/test/DebugInfo/X86/inline-member-function.ll
+++ b/test/DebugInfo/X86/inline-member-function.ll
@@ -13,21 +13,24 @@
; return foo().func(i);
; }
+; CHECK: DW_TAG_structure_type
+; CHECK: DW_TAG_subprogram
+
+; But make sure we emit DW_AT_object_pointer on the abstract definition.
+; CHECK: [[ABSTRACT_ORIGIN:.*]]: DW_TAG_subprogram
+; CHECK-NOT: NULL
+; CHECK-NOT: TAG
+; CHECK: DW_AT_object_pointer
+
; Ensure we omit DW_AT_object_pointer on inlined subroutines.
; CHECK: DW_TAG_inlined_subroutine
-; CHECK-NEXT: DW_AT_abstract_origin {{.*}}{[[ABSTRACT_ORIGIN:0x[0-9a-e]*]]}
+; CHECK-NEXT: DW_AT_abstract_origin {{.*}}{[[ABSTRACT_ORIGIN]]}
; CHECK-NOT: NULL
; CHECK-NOT: DW_AT_object_pointer
; CHECK: DW_TAG_formal_parameter
; CHECK-NOT: DW_AT_artificial
; CHECK: DW_TAG
-; But make sure we emit DW_AT_object_pointer on the abstract definition.
-; CHECK: [[ABSTRACT_ORIGIN]]: DW_TAG_subprogram
-; CHECK-NOT: NULL
-; CHECK-NOT: TAG
-; CHECK: DW_AT_object_pointer
-
%struct.foo = type { i8 }
@i = global i32 0, align 4