@@ -532,3 +532,248 @@ fn action_with_var_temp() {
532
532
!31 = !DILocation(line: 18, column: 12, scope: !26)
533
533
"# ) ;
534
534
}
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