Skip to content

Commit 06e0661

Browse files
committed
Added bitcode round-trip check and removed nested tuple support
1 parent 4c885fd commit 06e0661

File tree

2 files changed

+13
-3
lines changed

2 files changed

+13
-3
lines changed

llvm/lib/IR/DebugInfoMetadata.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -967,7 +967,7 @@ DIType *DIDerivedType::getClassType() const {
967967
// handling extra data MDTuple unwrapping if needed.
968968
static ConstantAsMetadata *extractConstantMetadata(Metadata *ExtraData) {
969969
Metadata *ED = ExtraData;
970-
while (auto *Tuple = dyn_cast_or_null<MDTuple>(ED)) {
970+
if (auto *Tuple = dyn_cast_or_null<MDTuple>(ED)) {
971971
if (Tuple->getNumOperands() != 1)
972972
return nullptr;
973973
ED = Tuple->getOperand(0);

llvm/test/DebugInfo/extradata-node-reference.ll

Lines changed: 12 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33

44
; REQUIRES: object-emission
55
; RUN: %llc_dwarf %s -filetype=obj -o - | llvm-dwarfdump - | FileCheck %s
6+
; RUN: llvm-as < %s | llvm-dis | llvm-as | llvm-dis | FileCheck %s -check-prefix=CHECK-IR
7+
; RUN: verify-uselistorder %s
68

79
; Example 1: BitField with storage offset (extraData: i64 0)
810
%struct.BitField = type { i8 }
@@ -33,9 +35,17 @@
3335
; extraData node definitions
3436
!15 = !{i64 0} ; BitField storage offset
3537
!22 = !{i32 42} ; Static member constant value
36-
!33 = !{!42}
38+
!33 = !{i32 100} ; Discriminant value
3739
!41 = !{i32 0} ; VBPtr offset
38-
!42 = !{i32 100} ; Discriminant value
40+
41+
; CHECK-IR: !9 = !DIDerivedType(tag: DW_TAG_member, name: "const_val", scope: !7, file: !3, line: 11, baseType: !10, flags: DIFlagStaticMember, extraData: !12)
42+
; CHECK-IR: !12 = !{i32 42}
43+
; CHECK-IR: !20 = !DIDerivedType(tag: DW_TAG_member, name: "variant_some", scope: !17, file: !3, baseType: !11, size: 32, extraData: !21)
44+
; CHECK-IR: !21 = !{i32 100}
45+
; CHECK-IR: !27 = !DIDerivedType(tag: DW_TAG_inheritance, scope: !25, baseType: !28, extraData: !29)
46+
; CHECK-IR: !29 = !{i32 0}
47+
; CHECK-IR: !32 = !DIDerivedType(tag: DW_TAG_member, name: "field", scope: !30, file: !3, line: 6, baseType: !11, size: 3, flags: DIFlagBitField, extraData: !33)
48+
; CHECK-IR: !33 = !{i64 0}
3949

4050
; CHECK: {{.*}} DW_TAG_variable
4151
; CHECK: {{.*}} DW_AT_name ("bf")

0 commit comments

Comments
 (0)