Skip to content

Commit 3b57808

Browse files
committed
add tests for the use cases for alignment issues
1 parent c4631f3 commit 3b57808

File tree

2 files changed

+599
-0
lines changed

2 files changed

+599
-0
lines changed

src/codegen/tests/debug_tests.rs

Lines changed: 245 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -532,3 +532,248 @@ fn action_with_var_temp() {
532532
!31 = !DILocation(line: 18, column: 12, scope: !26)
533533
"#);
534534
}
535+
536+
#[test]
537+
fn nested_array_struct_sizes() {
538+
let result = codegen(
539+
"
540+
TYPE struct_ : STRUCT
541+
inner: inner;
542+
inner_arr: ARRAY[0..2] OF inner;
543+
s : STRING := 'Hello';
544+
b : BOOL := TRUE;
545+
r : REAL := 3.1415;
546+
arr: ARRAY[0..2] OF STRING := ['aa', 'bb', 'cc'];
547+
i : INT := 42;
548+
END_STRUCT
549+
END_TYPE
550+
551+
TYPE inner : STRUCT
552+
s : STRING := 'Hello';
553+
b : BOOL := TRUE;
554+
r : REAL := 3.1415;
555+
arr: ARRAY[0..2] OF STRING := ['aaaa', 'bbbb', 'cccc'];
556+
i : INT := 42;
557+
END_STRUCT
558+
END_TYPE
559+
560+
FUNCTION main
561+
VAR
562+
st: struct_;
563+
s : STRING;
564+
b : BOOL;
565+
arr: ARRAY[0..2] OF STRING;
566+
i : INT;
567+
END_VAR
568+
569+
570+
s := st.s;
571+
s := st.inner.s;
572+
b := st.b;
573+
b := st.inner.b;
574+
arr := st.arr;
575+
arr := st.inner.arr;
576+
i := st.i;
577+
i := st.inner.i;
578+
// arr := ['', '', ''];
579+
arr[0] := st.arr[0];
580+
arr[1] := st.inner.arr[1];
581+
arr[2] := st.inner.arr[2];
582+
583+
END_FUNCTION
584+
",
585+
);
586+
587+
assert_snapshot!(result, @r###"
588+
; ModuleID = '<internal>'
589+
source_filename = "<internal>"
590+
591+
%struct_ = type { %inner, [3 x %inner], [81 x i8], i8, float, [3 x [81 x i8]], i16 }
592+
%inner = type { [81 x i8], i8, float, [3 x [81 x i8]], i16 }
593+
594+
@__struct___init = constant %struct_ { %inner { [81 x i8] c"Hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i8 1, float 0x400921CAC0000000, [3 x [81 x i8]] [[81 x i8] c"aaaa\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"bbbb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"cccc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"], i16 42 }, [3 x %inner] zeroinitializer, [81 x i8] c"Hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i8 1, float 0x400921CAC0000000, [3 x [81 x i8]] [[81 x i8] c"aa\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"bb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"cc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"], i16 42 }, !dbg !0
595+
@__inner__init = constant %inner { [81 x i8] c"Hello\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", i8 1, float 0x400921CAC0000000, [3 x [81 x i8]] [[81 x i8] c"aaaa\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"bbbb\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00", [81 x i8] c"cccc\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00"], i16 42 }, !dbg !30
596+
@llvm.global_ctors = appending global [1 x { i32, void ()*, i8* }] [{ i32, void ()*, i8* } { i32 0, void ()* @__init___Test, i8* null }]
597+
598+
define void @main() !dbg !36 {
599+
entry:
600+
%st = alloca %struct_, align 8
601+
%s = alloca [81 x i8], align 1
602+
%b = alloca i8, align 1
603+
%arr = alloca [3 x [81 x i8]], align 1
604+
%i = alloca i16, align 2
605+
call void @llvm.dbg.declare(metadata %struct_* %st, metadata !40, metadata !DIExpression()), !dbg !41
606+
%0 = bitcast %struct_* %st to i8*
607+
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %0, i8* align 1 getelementptr inbounds (%struct_, %struct_* @__struct___init, i32 0, i32 0, i32 0, i32 0), i64 ptrtoint (%struct_* getelementptr (%struct_, %struct_* null, i32 1) to i64), i1 false)
608+
call void @llvm.dbg.declare(metadata [81 x i8]* %s, metadata !42, metadata !DIExpression()), !dbg !43
609+
%1 = bitcast [81 x i8]* %s to i8*
610+
call void @llvm.memset.p0i8.i64(i8* align 1 %1, i8 0, i64 ptrtoint ([81 x i8]* getelementptr ([81 x i8], [81 x i8]* null, i32 1) to i64), i1 false)
611+
call void @llvm.dbg.declare(metadata i8* %b, metadata !44, metadata !DIExpression()), !dbg !45
612+
store i8 0, i8* %b, align 1
613+
call void @llvm.dbg.declare(metadata [3 x [81 x i8]]* %arr, metadata !46, metadata !DIExpression()), !dbg !47
614+
%2 = bitcast [3 x [81 x i8]]* %arr to i8*
615+
call void @llvm.memset.p0i8.i64(i8* align 1 %2, i8 0, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false)
616+
call void @llvm.dbg.declare(metadata i16* %i, metadata !48, metadata !DIExpression()), !dbg !49
617+
store i16 0, i16* %i, align 2
618+
call void @__init_struct_(%struct_* %st), !dbg !50
619+
%s1 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 2, !dbg !51
620+
%3 = bitcast [81 x i8]* %s to i8*, !dbg !51
621+
%4 = bitcast [81 x i8]* %s1 to i8*, !dbg !51
622+
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %3, i8* align 1 %4, i32 80, i1 false), !dbg !51
623+
%inner = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !52
624+
%s2 = getelementptr inbounds %inner, %inner* %inner, i32 0, i32 0, !dbg !52
625+
%5 = bitcast [81 x i8]* %s to i8*, !dbg !52
626+
%6 = bitcast [81 x i8]* %s2 to i8*, !dbg !52
627+
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %5, i8* align 1 %6, i32 80, i1 false), !dbg !52
628+
%b3 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 3, !dbg !53
629+
%load_b = load i8, i8* %b3, align 1, !dbg !53
630+
store i8 %load_b, i8* %b, align 1, !dbg !53
631+
%inner4 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !54
632+
%b5 = getelementptr inbounds %inner, %inner* %inner4, i32 0, i32 1, !dbg !54
633+
%load_b6 = load i8, i8* %b5, align 1, !dbg !54
634+
store i8 %load_b6, i8* %b, align 1, !dbg !54
635+
%arr7 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 5, !dbg !55
636+
%7 = bitcast [3 x [81 x i8]]* %arr to i8*, !dbg !55
637+
%8 = bitcast [3 x [81 x i8]]* %arr7 to i8*, !dbg !55
638+
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %7, i8* align 1 %8, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false), !dbg !55
639+
%inner8 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !56
640+
%arr9 = getelementptr inbounds %inner, %inner* %inner8, i32 0, i32 3, !dbg !56
641+
%9 = bitcast [3 x [81 x i8]]* %arr to i8*, !dbg !56
642+
%10 = bitcast [3 x [81 x i8]]* %arr9 to i8*, !dbg !56
643+
call void @llvm.memcpy.p0i8.p0i8.i64(i8* align 1 %9, i8* align 1 %10, i64 ptrtoint ([3 x [81 x i8]]* getelementptr ([3 x [81 x i8]], [3 x [81 x i8]]* null, i32 1) to i64), i1 false), !dbg !56
644+
%i10 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 6, !dbg !57
645+
%load_i = load i16, i16* %i10, align 2, !dbg !57
646+
store i16 %load_i, i16* %i, align 2, !dbg !57
647+
%inner11 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !58
648+
%i12 = getelementptr inbounds %inner, %inner* %inner11, i32 0, i32 4, !dbg !58
649+
%load_i13 = load i16, i16* %i12, align 2, !dbg !58
650+
store i16 %load_i13, i16* %i, align 2, !dbg !58
651+
%tmpVar = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr, i32 0, i32 0, !dbg !59
652+
%arr14 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 5, !dbg !59
653+
%tmpVar15 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr14, i32 0, i32 0, !dbg !59
654+
%11 = bitcast [81 x i8]* %tmpVar to i8*, !dbg !59
655+
%12 = bitcast [81 x i8]* %tmpVar15 to i8*, !dbg !59
656+
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %11, i8* align 1 %12, i32 80, i1 false), !dbg !59
657+
%tmpVar16 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr, i32 0, i32 1, !dbg !60
658+
%inner17 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !60
659+
%arr18 = getelementptr inbounds %inner, %inner* %inner17, i32 0, i32 3, !dbg !60
660+
%tmpVar19 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr18, i32 0, i32 1, !dbg !60
661+
%13 = bitcast [81 x i8]* %tmpVar16 to i8*, !dbg !60
662+
%14 = bitcast [81 x i8]* %tmpVar19 to i8*, !dbg !60
663+
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %13, i8* align 1 %14, i32 80, i1 false), !dbg !60
664+
%tmpVar20 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr, i32 0, i32 2, !dbg !61
665+
%inner21 = getelementptr inbounds %struct_, %struct_* %st, i32 0, i32 0, !dbg !61
666+
%arr22 = getelementptr inbounds %inner, %inner* %inner21, i32 0, i32 3, !dbg !61
667+
%tmpVar23 = getelementptr inbounds [3 x [81 x i8]], [3 x [81 x i8]]* %arr22, i32 0, i32 2, !dbg !61
668+
%15 = bitcast [81 x i8]* %tmpVar20 to i8*, !dbg !61
669+
%16 = bitcast [81 x i8]* %tmpVar23 to i8*, !dbg !61
670+
call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 1 %15, i8* align 1 %16, i32 80, i1 false), !dbg !61
671+
ret void, !dbg !62
672+
}
673+
674+
; Function Attrs: nofree nosync nounwind readnone speculatable willreturn
675+
declare void @llvm.dbg.declare(metadata, metadata, metadata) #0
676+
677+
; Function Attrs: argmemonly nofree nounwind willreturn
678+
declare void @llvm.memcpy.p0i8.p0i8.i64(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i64, i1 immarg) #1
679+
680+
; Function Attrs: argmemonly nofree nounwind willreturn writeonly
681+
declare void @llvm.memset.p0i8.i64(i8* nocapture writeonly, i8, i64, i1 immarg) #2
682+
683+
; Function Attrs: argmemonly nofree nounwind willreturn
684+
declare void @llvm.memcpy.p0i8.p0i8.i32(i8* noalias nocapture writeonly, i8* noalias nocapture readonly, i32, i1 immarg) #1
685+
686+
define void @__init_struct_(%struct_* %0) {
687+
entry:
688+
%self = alloca %struct_*, align 8
689+
store %struct_* %0, %struct_** %self, align 8
690+
%deref = load %struct_*, %struct_** %self, align 8
691+
%inner = getelementptr inbounds %struct_, %struct_* %deref, i32 0, i32 0
692+
call void @__init_inner(%inner* %inner)
693+
ret void
694+
}
695+
696+
define void @__init_inner(%inner* %0) {
697+
entry:
698+
%self = alloca %inner*, align 8
699+
store %inner* %0, %inner** %self, align 8
700+
ret void
701+
}
702+
703+
define void @__init___Test() {
704+
entry:
705+
ret void
706+
}
707+
708+
attributes #0 = { nofree nosync nounwind readnone speculatable willreturn }
709+
attributes #1 = { argmemonly nofree nounwind willreturn }
710+
attributes #2 = { argmemonly nofree nounwind willreturn writeonly }
711+
712+
!llvm.module.flags = !{!32, !33}
713+
!llvm.dbg.cu = !{!34}
714+
715+
!0 = !DIGlobalVariableExpression(var: !1, expr: !DIExpression())
716+
!1 = distinct !DIGlobalVariable(name: "__struct___init", scope: !2, file: !2, line: 2, type: !3, isLocal: false, isDefinition: true)
717+
!2 = !DIFile(filename: "<internal>", directory: "")
718+
!3 = !DICompositeType(tag: DW_TAG_structure_type, name: "struct_", scope: !2, file: !2, line: 2, size: 13440, flags: DIFlagPublic, elements: !4, identifier: "struct_")
719+
!4 = !{!5, !23, !25, !26, !27, !28, !29}
720+
!5 = !DIDerivedType(tag: DW_TAG_member, name: "inner", scope: !2, file: !2, line: 3, baseType: !6, size: 2688, flags: DIFlagPublic)
721+
!6 = !DICompositeType(tag: DW_TAG_structure_type, name: "inner", scope: !2, file: !2, line: 13, size: 2688, flags: DIFlagPublic, elements: !7, identifier: "inner")
722+
!7 = !{!8, !13, !15, !17, !21}
723+
!8 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 14, baseType: !9, size: 648, flags: DIFlagPublic)
724+
!9 = !DICompositeType(tag: DW_TAG_array_type, baseType: !10, size: 648, elements: !11)
725+
!10 = !DIBasicType(name: "CHAR", size: 8, encoding: DW_ATE_UTF, flags: DIFlagPublic)
726+
!11 = !{!12}
727+
!12 = !DISubrange(count: 81, lowerBound: 0)
728+
!13 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 15, baseType: !14, size: 8, offset: 648, flags: DIFlagPublic)
729+
!14 = !DIBasicType(name: "BOOL", size: 8, encoding: DW_ATE_boolean, flags: DIFlagPublic)
730+
!15 = !DIDerivedType(tag: DW_TAG_member, name: "r", scope: !2, file: !2, line: 16, baseType: !16, size: 32, offset: 672, flags: DIFlagPublic)
731+
!16 = !DIBasicType(name: "REAL", size: 32, encoding: DW_ATE_float, flags: DIFlagPublic)
732+
!17 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !2, file: !2, line: 17, baseType: !18, size: 1944, offset: 704, flags: DIFlagPublic)
733+
!18 = !DICompositeType(tag: DW_TAG_array_type, baseType: !9, size: 1944, elements: !19)
734+
!19 = !{!20}
735+
!20 = !DISubrange(count: 3, lowerBound: 0)
736+
!21 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !2, file: !2, line: 18, baseType: !22, size: 16, offset: 2656, flags: DIFlagPublic)
737+
!22 = !DIBasicType(name: "INT", size: 16, encoding: DW_ATE_signed, flags: DIFlagPublic)
738+
!23 = !DIDerivedType(tag: DW_TAG_member, name: "inner_arr", scope: !2, file: !2, line: 4, baseType: !24, size: 8064, offset: 2688, flags: DIFlagPublic)
739+
!24 = !DICompositeType(tag: DW_TAG_array_type, baseType: !6, size: 8064, elements: !19)
740+
!25 = !DIDerivedType(tag: DW_TAG_member, name: "s", scope: !2, file: !2, line: 5, baseType: !9, size: 648, offset: 10752, flags: DIFlagPublic)
741+
!26 = !DIDerivedType(tag: DW_TAG_member, name: "b", scope: !2, file: !2, line: 6, baseType: !14, size: 8, offset: 11400, flags: DIFlagPublic)
742+
!27 = !DIDerivedType(tag: DW_TAG_member, name: "r", scope: !2, file: !2, line: 7, baseType: !16, size: 32, offset: 11424, flags: DIFlagPublic)
743+
!28 = !DIDerivedType(tag: DW_TAG_member, name: "arr", scope: !2, file: !2, line: 8, baseType: !18, size: 1944, offset: 11456, flags: DIFlagPublic)
744+
!29 = !DIDerivedType(tag: DW_TAG_member, name: "i", scope: !2, file: !2, line: 9, baseType: !22, size: 16, offset: 13408, flags: DIFlagPublic)
745+
!30 = !DIGlobalVariableExpression(var: !31, expr: !DIExpression())
746+
!31 = distinct !DIGlobalVariable(name: "__inner__init", scope: !2, file: !2, line: 13, type: !6, isLocal: false, isDefinition: true)
747+
!32 = !{i32 2, !"Dwarf Version", i32 5}
748+
!33 = !{i32 2, !"Debug Info Version", i32 3}
749+
!34 = distinct !DICompileUnit(language: DW_LANG_C, file: !2, producer: "RuSTy Structured text Compiler", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, globals: !35, splitDebugInlining: false)
750+
!35 = !{!0, !30}
751+
!36 = distinct !DISubprogram(name: "main", linkageName: "main", scope: !2, file: !2, line: 22, type: !37, scopeLine: 22, flags: DIFlagPublic, spFlags: DISPFlagDefinition, unit: !34, retainedNodes: !39)
752+
!37 = !DISubroutineType(flags: DIFlagPublic, types: !38)
753+
!38 = !{null}
754+
!39 = !{}
755+
!40 = !DILocalVariable(name: "st", scope: !36, file: !2, line: 24, type: !3)
756+
!41 = !DILocation(line: 24, column: 4, scope: !36)
757+
!42 = !DILocalVariable(name: "s", scope: !36, file: !2, line: 25, type: !9)
758+
!43 = !DILocation(line: 25, column: 4, scope: !36)
759+
!44 = !DILocalVariable(name: "b", scope: !36, file: !2, line: 26, type: !14)
760+
!45 = !DILocation(line: 26, column: 4, scope: !36)
761+
!46 = !DILocalVariable(name: "arr", scope: !36, file: !2, line: 27, type: !18)
762+
!47 = !DILocation(line: 27, column: 4, scope: !36)
763+
!48 = !DILocalVariable(name: "i", scope: !36, file: !2, line: 28, type: !22)
764+
!49 = !DILocation(line: 28, column: 4, scope: !36)
765+
!50 = !DILocation(line: 0, scope: !36)
766+
!51 = !DILocation(line: 32, column: 4, scope: !36)
767+
!52 = !DILocation(line: 33, column: 4, scope: !36)
768+
!53 = !DILocation(line: 34, column: 4, scope: !36)
769+
!54 = !DILocation(line: 35, column: 4, scope: !36)
770+
!55 = !DILocation(line: 36, column: 4, scope: !36)
771+
!56 = !DILocation(line: 37, column: 4, scope: !36)
772+
!57 = !DILocation(line: 38, column: 4, scope: !36)
773+
!58 = !DILocation(line: 39, column: 4, scope: !36)
774+
!59 = !DILocation(line: 41, column: 4, scope: !36)
775+
!60 = !DILocation(line: 42, column: 4, scope: !36)
776+
!61 = !DILocation(line: 43, column: 4, scope: !36)
777+
!62 = !DILocation(line: 45, scope: !36)
778+
"###);
779+
}

0 commit comments

Comments
 (0)