Reverting r193835 due to weirdness with Go...

Apologies for the noise - we're seeing some Go failures with cgo
interacting with Clang's debug info due to this change.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@198385 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
David Blaikie 2014-01-03 00:48:38 +00:00
parent 303421884a
commit 58b28147c5
4 changed files with 13 additions and 9 deletions

View File

@ -1875,9 +1875,6 @@ void DwarfUnit::constructMemberDIE(DIE &Buffer, DIDerivedType DT) {
addSourceLine(MemberDie, DT);
DIEBlock *MemLocationDie = new (DIEValueAllocator) DIEBlock();
addUInt(MemLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
if (DT.getTag() == dwarf::DW_TAG_inheritance && DT.isVirtual()) {
// For C++, virtual base classes are not at fixed offset. Use following
@ -1922,7 +1919,11 @@ void DwarfUnit::constructMemberDIE(DIE &Buffer, DIDerivedType DT) {
} else
// This is not a bitfield.
OffsetInBytes = DT.getOffsetInBits() >> 3;
addUInt(MemberDie, dwarf::DW_AT_data_member_location, None, OffsetInBytes);
DIEBlock *MemLocationDie = new (DIEValueAllocator) DIEBlock();
addUInt(MemLocationDie, dwarf::DW_FORM_data1, dwarf::DW_OP_plus_uconst);
addUInt(MemLocationDie, dwarf::DW_FORM_udata, OffsetInBytes);
addBlock(MemberDie, dwarf::DW_AT_data_member_location, MemLocationDie);
}
if (DT.isProtected())

View File

@ -7,15 +7,15 @@
; first check that we have a TAG_subprogram at a given offset and it has
; AT_inline.
; CHECK: 0x0000011c: DW_TAG_subprogram [17]
; CHECK: 0x0000011e: DW_TAG_subprogram [17]
; CHECK-NEXT: DW_AT_specification
; CHECK-NEXT: DW_AT_inline
; and then that a TAG_subprogram refers to it with AT_abstract_origin.
; CHECK: 0x0000015d: DW_TAG_subprogram [19]
; CHECK-NEXT: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x011c => {0x0000011c})
; CHECK: 0x0000015f: DW_TAG_subprogram [19]
; CHECK-NEXT: DW_AT_abstract_origin [DW_FORM_ref4] (cu + 0x011e => {0x0000011e})
define i32 @_ZN17nsAutoRefCnt7ReleaseEv() {
entry:

View File

@ -11,11 +11,11 @@
; CHECK: DW_AT_name {{.*}} "c"
; CHECK-NOT: DW_TAG
; CHECK: DW_AT_data_member_location {{.*}} (0x00)
; CHECK: DW_AT_data_member_location {{.*}} (<0x02> 23 00 )
; CHECK: DW_AT_name {{.*}} "i"
; CHECK-NOT: DW_TAG
; CHECK: DW_AT_data_member_location {{.*}} (0x04)
; CHECK: DW_AT_data_member_location {{.*}} (<0x02> 23 04 )
%struct.foo = type { i8, i32 }

View File

@ -1,5 +1,8 @@
; REQUIRES: object-emission
; Fail while investigating problem with non-block representations of member offsets.
; XFAIL: *
; RUN: llc %s -o %t -filetype=obj -O0 -generate-type-units -generate-odr-hash -mtriple=x86_64-unknown-linux-gnu
; RUN: llvm-dwarfdump %t | FileCheck %s