Skip to content

Commit 920de9c

Browse files
committed
Revert "[DebugInfo] Correctly recognize bitfields when emitting dwarf"
This reverts commit 059d1f8. Some tests on green dragon failed as a result of this -- see notes on D96334.
1 parent 28a6813 commit 920de9c

File tree

8 files changed

+26
-80
lines changed

8 files changed

+26
-80
lines changed

llvm/lib/CodeGen/AsmPrinter/DwarfUnit.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1621,7 +1621,7 @@ DIE &DwarfUnit::constructMemberDIE(DIE &Buffer, const DIDerivedType *DT) {
16211621
uint32_t AlignInBytes = DT->getAlignInBytes();
16221622
uint64_t OffsetInBytes;
16231623

1624-
bool IsBitfield = DT->isBitField();
1624+
bool IsBitfield = FieldSize && Size != FieldSize;
16251625
if (IsBitfield) {
16261626
// Handle bitfield, assume bytes are 8 bits.
16271627
if (DD->useDWARF2Bitfields())

llvm/test/DebugInfo/AArch64/bitfields.ll

Lines changed: 4 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -24,9 +24,6 @@
2424
; CHECK: DW_TAG_member
2525
; CHECK-NEXT: DW_AT_name{{.*}}"b"
2626
; CHECK-NOT: DW_TAG_member
27-
; CHECK: DW_AT_byte_size {{.*}} (0x04)
28-
; CHECK-NEXT: DW_AT_bit_size {{.*}} (0x20)
29-
; CHECK-NEXT: DW_AT_bit_offset {{.*}} (0x00)
3027
; CHECK: DW_AT_data_member_location {{.*}} (DW_OP_plus_uconst 0x4)
3128

3229
; CHECK: DW_TAG_member
@@ -66,11 +63,11 @@ target triple = "aarch64_be--linux-gnu"
6663
!5 = !{!0}
6764
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !3, line: 1, size: 96, elements: !7)
6865
!7 = !{!8, !10, !11, !12}
69-
!8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !6, file: !3, line: 2, baseType: !9, size: 2, flags: DIFlagBitField)
66+
!8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !6, file: !3, line: 2, baseType: !9, size: 2)
7067
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
71-
!10 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !6, file: !3, line: 3, baseType: !9, size: 32, offset: 32, flags: DIFlagBitField)
72-
!11 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 4, baseType: !9, size: 1, offset: 64, flags: DIFlagBitField)
73-
!12 = !DIDerivedType(tag: DW_TAG_member, name: "d", scope: !6, file: !3, line: 5, baseType: !9, size: 28, offset: 65, flags: DIFlagBitField)
68+
!10 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !6, file: !3, line: 3, baseType: !9, size: 32, offset: 32)
69+
!11 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 4, baseType: !9, size: 1, offset: 64)
70+
!12 = !DIDerivedType(tag: DW_TAG_member, name: "d", scope: !6, file: !3, line: 5, baseType: !9, size: 28, offset: 65)
7471
!13 = !{i32 2, !"Dwarf Version", i32 2}
7572
!14 = !{i32 2, !"Debug Info Version", i32 3}
7673
!15 = !{i32 1, !"PIC Level", i32 2}

llvm/test/DebugInfo/ARM/big-endian-bitfield.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -27,15 +27,15 @@ target datalayout = "E-m:e-p:32:32-i64:64-v128:64:128-n32-S64"
2727
!5 = !{!0}
2828
!6 = distinct !DICompositeType(tag: DW_TAG_structure_type, name: "S", file: !3, line: 1, size: 32, elements: !7)
2929
!7 = !{!8, !10, !11, !12}
30-
!8 = !DIDerivedType(tag: DW_TAG_member, name: "j", scope: !6, file: !3, line: 2, baseType: !9, size: 5, flags: DIFlagBitField)
30+
!8 = !DIDerivedType(tag: DW_TAG_member, name: "j", scope: !6, file: !3, line: 2, baseType: !9, size: 5)
3131
; CHECK: DW_TAG_member
3232
; CHECK-NEXT: DW_AT_name{{.*}}"j"
3333
; CHECK-NOT: DW_TAG
3434
; CHECK: DW_AT_data_bit_offset [DW_FORM_data1] (0x00)
3535
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
36-
!10 = !DIDerivedType(tag: DW_TAG_member, name: "k", scope: !6, file: !3, line: 3, baseType: !9, size: 6, offset: 5, flags: DIFlagBitField)
37-
!11 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !6, file: !3, line: 4, baseType: !9, size: 5, offset: 11, flags: DIFlagBitField)
38-
!12 = !DIDerivedType(tag: DW_TAG_member, name: "n", scope: !6, file: !3, line: 5, baseType: !9, size: 8, offset: 16, flags: DIFlagBitField)
36+
!10 = !DIDerivedType(tag: DW_TAG_member, name: "k", scope: !6, file: !3, line: 3, baseType: !9, size: 6, offset: 5)
37+
!11 = !DIDerivedType(tag: DW_TAG_member, name: "m", scope: !6, file: !3, line: 4, baseType: !9, size: 5, offset: 11)
38+
!12 = !DIDerivedType(tag: DW_TAG_member, name: "n", scope: !6, file: !3, line: 5, baseType: !9, size: 8, offset: 16)
3939
!13 = !{i32 2, !"Dwarf Version", i32 4}
4040
; CHECK: DW_TAG_member
4141
; CHECK-NEXT: DW_AT_name{{.*}}"k"

llvm/test/DebugInfo/ARM/bitfield.ll

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -36,7 +36,7 @@ target triple = "thumbv7-apple-ios"
3636
!7 = !{!8, !10}
3737
!8 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 2, baseType: !9, size: 8, align: 8)
3838
!9 = !DIBasicType(name: "char", size: 8, align: 8, encoding: DW_ATE_signed_char)
39-
!10 = !DIDerivedType(tag: DW_TAG_member, name: "reserved", scope: !6, file: !3, line: 4, baseType: !11, size: 28, align: 32, offset: 12, flags: DIFlagBitField)
39+
!10 = !DIDerivedType(tag: DW_TAG_member, name: "reserved", scope: !6, file: !3, line: 4, baseType: !11, size: 28, align: 32, offset: 12)
4040
!11 = !DIBasicType(name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
4141
!12 = !{i32 2, !"Dwarf Version", i32 2}
4242
!13 = !{i32 2, !"Debug Info Version", i32 3}

llvm/test/DebugInfo/X86/bitfields-dwarf4.ll

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,7 @@ target triple = "x86_64-apple-macosx"
4343
; CHECK-NOT: DW_AT_data_bit_offset
4444
; CHECK: DW_AT_data_member_location [DW_FORM_data1] (0x00)
4545
!9 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
46-
!10 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !6, file: !3, line: 6, baseType: !11, size: 5, offset: 8, flags: DIFlagBitField)
46+
!10 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !6, file: !3, line: 6, baseType: !11, size: 5, offset: 8)
4747
!11 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint32_t", file: !12, line: 183, baseType: !13)
4848
!12 = !DIFile(filename: "/Volumes/Data/llvm/_build.ninja.release/bin/../lib/clang/3.9.0/include/stdint.h", directory: "/Volumes/Data/llvm")
4949
!13 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned)
@@ -56,7 +56,7 @@ target triple = "x86_64-apple-macosx"
5656
; CHECK-NOT: DW_AT_byte_size
5757
; CHECK-NEXT: DW_AT_data_bit_offset [DW_FORM_data1] (0x08)
5858
; CHECK-NOT: DW_AT_data_member_location
59-
!14 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 7, baseType: !11, size: 27, offset: 13, flags: DIFlagBitField)
59+
!14 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 7, baseType: !11, size: 27, offset: 13)
6060
!15 = !{i32 2, !"Dwarf Version", i32 4}
6161
!16 = !{i32 2, !"Debug Info Version", i32 3}
6262
!17 = !{i32 1, !"PIC Level", i32 2}

llvm/test/DebugInfo/X86/bitfields.ll

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -63,11 +63,11 @@ target triple = "x86_64-apple-macosx"
6363
!5 = !{!0}
6464
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "bitfield", file: !3, line: 1, size: 96, elements: !7)
6565
!7 = !{!8, !10, !11, !12}
66-
!8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !6, file: !3, line: 2, baseType: !9, size: 2, flags: DIFlagBitField)
66+
!8 = !DIDerivedType(tag: DW_TAG_member, name: "a", scope: !6, file: !3, line: 2, baseType: !9, size: 2)
6767
!9 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
68-
!10 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !6, file: !3, line: 3, baseType: !9, size: 32, offset: 32, flags: DIFlagBitField)
69-
!11 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 4, baseType: !9, size: 1, offset: 64, flags: DIFlagBitField)
70-
!12 = !DIDerivedType(tag: DW_TAG_member, name: "d", scope: !6, file: !3, line: 5, baseType: !9, size: 28, offset: 65, flags: DIFlagBitField)
68+
!10 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !6, file: !3, line: 3, baseType: !9, size: 32, offset: 32)
69+
!11 = !DIDerivedType(tag: DW_TAG_member, name: "c", scope: !6, file: !3, line: 4, baseType: !9, size: 1, offset: 64)
70+
!12 = !DIDerivedType(tag: DW_TAG_member, name: "d", scope: !6, file: !3, line: 5, baseType: !9, size: 28, offset: 65)
7171
!13 = !{i32 2, !"Dwarf Version", i32 2}
7272
!14 = !{i32 2, !"Debug Info Version", i32 3}
7373
!15 = !{i32 1, !"PIC Level", i32 2}

llvm/test/DebugInfo/X86/debug-info-packed-struct.ll

Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -157,7 +157,7 @@ target triple = "x86_64-apple-darwin"
157157
!12 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char)
158158
!13 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs1", scope: !9, file: !8, line: 36, baseType: !14, size: 64, offset: 8)
159159
!14 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8_anon", file: !8, line: 30, size: 64, elements: !4)
160-
!15 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs9", scope: !9, file: !8, line: 37, baseType: !16, size: 1, offset: 72, flags: DIFlagBitField)
160+
!15 = !DIDerivedType(tag: DW_TAG_member, name: "l1_ofs9", scope: !9, file: !8, line: 37, baseType: !16, size: 1, offset: 72)
161161
!16 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed)
162162
!17 = !DIGlobalVariableExpression(var: !18, expr: !DIExpression())
163163
!18 = !DIGlobalVariable(name: "l2", scope: !2, file: !8, line: 90, type: !19, isLocal: false, isDefinition: true)
@@ -167,10 +167,10 @@ target triple = "x86_64-apple-darwin"
167167
!22 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs1", scope: !19, file: !8, line: 56, baseType: !23, size: 64, offset: 8)
168168
!23 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8_pack1", file: !8, line: 50, size: 64, elements: !24)
169169
!24 = !{!25, !26}
170-
!25 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !23, file: !8, line: 51, baseType: !16, size: 4, flags: DIFlagBitField)
171-
!26 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !23, file: !8, line: 52, baseType: !27, size: 60, offset: 4, flags: DIFlagBitField)
170+
!25 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !23, file: !8, line: 51, baseType: !16, size: 4)
171+
!26 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !23, file: !8, line: 52, baseType: !27, size: 60, offset: 4)
172172
!27 = !DIBasicType(name: "long long int", size: 64, encoding: DW_ATE_signed)
173-
!28 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs9", scope: !19, file: !8, line: 57, baseType: !16, size: 1, offset: 72, flags: DIFlagBitField)
173+
!28 = !DIDerivedType(tag: DW_TAG_member, name: "l2_ofs9", scope: !19, file: !8, line: 57, baseType: !16, size: 1, offset: 72)
174174
!29 = !DIGlobalVariableExpression(var: !30, expr: !DIExpression())
175175
!30 = !DIGlobalVariable(name: "l3", scope: !2, file: !8, line: 91, type: !31, isLocal: false, isDefinition: true)
176176
!31 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout3", file: !8, line: 76, size: 128, elements: !32)
@@ -179,18 +179,18 @@ target triple = "x86_64-apple-darwin"
179179
!34 = !DIDerivedType(tag: DW_TAG_member, name: "l3_ofs4", scope: !31, file: !8, line: 78, baseType: !35, size: 64, offset: 32)
180180
!35 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8_pack4", file: !8, line: 72, size: 64, elements: !36)
181181
!36 = !{!37, !38}
182-
!37 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !35, file: !8, line: 73, baseType: !16, size: 4, flags: DIFlagBitField)
183-
!38 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !35, file: !8, line: 74, baseType: !27, size: 60, offset: 4, flags: DIFlagBitField)
184-
!39 = !DIDerivedType(tag: DW_TAG_member, name: "l3_ofs12", scope: !31, file: !8, line: 79, baseType: !16, size: 1, offset: 96, flags: DIFlagBitField)
182+
!37 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !35, file: !8, line: 73, baseType: !16, size: 4)
183+
!38 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !35, file: !8, line: 74, baseType: !27, size: 60, offset: 4)
184+
!39 = !DIDerivedType(tag: DW_TAG_member, name: "l3_ofs12", scope: !31, file: !8, line: 79, baseType: !16, size: 1, offset: 96)
185185
!40 = !DICompositeType(tag: DW_TAG_structure_type, name: "layout0", file: !8, line: 15, size: 192, elements: !41)
186186
!41 = !{!42, !43, !48}
187187
!42 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs0", scope: !40, file: !8, line: 16, baseType: !12, size: 8)
188188
!43 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs8", scope: !40, file: !8, line: 17, baseType: !44, size: 64, offset: 64)
189189
!44 = !DICompositeType(tag: DW_TAG_structure_type, name: "size8", file: !8, line: 11, size: 64, elements: !45)
190190
!45 = !{!46, !47}
191-
!46 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !44, file: !8, line: 12, baseType: !16, size: 4, flags: DIFlagBitField)
192-
!47 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !44, file: !8, line: 13, baseType: !27, size: 60, offset: 4, flags: DIFlagBitField)
193-
!48 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs16", scope: !40, file: !8, line: 18, baseType: !16, size: 1, offset: 128, flags: DIFlagBitField)
191+
!46 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !44, file: !8, line: 12, baseType: !16, size: 4)
192+
!47 = !DIDerivedType(tag: DW_TAG_member, name: "l", scope: !44, file: !8, line: 13, baseType: !27, size: 60, offset: 4)
193+
!48 = !DIDerivedType(tag: DW_TAG_member, name: "l0_ofs16", scope: !40, file: !8, line: 18, baseType: !16, size: 1, offset: 128)
194194
!49 = !{i32 2, !"Dwarf Version", i32 2}
195195
!50 = !{i32 2, !"Debug Info Version", i32 3}
196196
!51 = !{!"clang version 3.7.0 (trunk 240791) (llvm/trunk 240790)"}

llvm/test/DebugInfo/X86/packed_bitfields2.ll

Lines changed: 0 additions & 51 deletions
This file was deleted.

0 commit comments

Comments
 (0)