1; RUN: llc --verify-machineinstrs --spv-emit-nonsemantic-debug-info --spirv-ext=+SPV_KHR_non_semantic_info --print-after=spirv-nonsemantic-debug-info -O0 -mtriple=spirv64-unknown-unknown %s -o - 2>&1 | FileCheck %s --check-prefix=CHECK-MIR 2; RUN: llc --verify-machineinstrs --spv-emit-nonsemantic-debug-info --spirv-ext=+SPV_KHR_non_semantic_info -O0 -mtriple=spirv64-unknown-unknown %s -o - | FileCheck %s --check-prefix=CHECK-SPIRV 3; RUN: llc --verify-machineinstrs -O0 -mtriple=spirv64-unknown-unknown --spirv-ext=+SPV_KHR_non_semantic_info %s -o - | FileCheck %s --check-prefix=CHECK-OPTION 4; RUN: %if spirv-tools %{ llc --verify-machineinstrs --spv-emit-nonsemantic-debug-info --spirv-ext=+SPV_KHR_non_semantic_info -O0 -mtriple=spirv64-unknown-unknown %s -o - -filetype=obj | spirv-val %} 5 6; CHECK-MIR-DAG: [[type_void:%[0-9]+\:type]] = OpTypeVoid 7; CHECK-MIR-DAG: [[type_i32:%[0-9]+\:type]] = OpTypeInt 32, 0 8; CHECK-MIR-DAG: [[encoding_signedchar:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 5 9; CHECK-MIR-DAG: [[encoding_float:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 3 10; CHECK-MIR-DAG: [[flag_zero:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 0 11; CHECK-MIR-DAG: [[str_bool:%[0-9]+\:id\(s32\)]] = OpString 1819242338, 0 12; CHECK-MIR-DAG: [[size_8bits:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 8 13; CHECK-MIR-DAG: [[encoding_boolean:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 2 14; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_bool]], [[size_8bits]], [[encoding_boolean]], [[flag_zero]] 15; CHECK-MIR-DAG: [[str_int:%[0-9]+\:id\(s32\)]] = OpString 7630441 16; CHECK-MIR-DAG: [[size_32bits:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 32 17; CHECK-MIR-DAG: [[encoding_signed:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 4 18; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_int]], [[size_32bits]], [[encoding_signed]], [[flag_zero]] 19; CHECK-MIR-DAG: [[str_short:%[0-9]+\:id\(s32\)]] = OpString 1919903859, 116 20; CHECK-MIR-DAG: [[size_16bits:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 16 21; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_short]], [[size_16bits]], [[encoding_signed]], [[flag_zero]] 22; CHECK-MIR-DAG: [[str_char:%[0-9]+\:id\(s32\)]] = OpString 1918986339, 0 23; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_char]], [[size_8bits]], [[encoding_signedchar]], [[flag_zero]] 24; CHECK-MIR-DAG: [[str_long:%[0-9]+\:id\(s32\)]] = OpString 1735290732, 0 25; CHECK-MIR-DAG: [[size_64bits:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 64 26; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_long]], [[size_64bits]], [[encoding_signed]], [[flag_zero]] 27; CHECK-MIR-DAG: [[str_uint:%[0-9]+\:id\(s32\)]] = OpString 1769172597, 1684368999, 1953392928, 0 28; CHECK-MIR-DAG: [[encoding_unsigned:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 6 29; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_uint]], [[size_32bits]], [[encoding_unsigned]], [[flag_zero]] 30; CHECK-MIR-DAG: [[str_ushort:%[0-9]+\:id\(s32\)]] = OpString 1769172597, 1684368999, 1869116192, 29810 31; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_ushort]], [[size_16bits]], [[encoding_unsigned]], [[flag_zero]] 32; CHECK-MIR-DAG: [[str_uchar:%[0-9]+\:id\(s32\)]] = OpString 1769172597, 1684368999, 1634231072, 114 33; CHECK-MIR-DAG: [[encoding_unsignedchar:%[0-9]+\:iid\(s32\)]] = OpConstantI [[type_i32]], 7 34; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_uchar]], [[size_8bits]], [[encoding_unsignedchar]], [[flag_zero]] 35; CHECK-MIR-DAG: [[str_ulong:%[0-9]+\:id\(s32\)]] = OpString 1769172597, 1684368999, 1852795936, 103 36; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_ulong]], [[size_64bits]], [[encoding_unsigned]], [[flag_zero]] 37; CHECK-MIR-DAG: [[str_float:%[0-9]+\:id\(s32\)]] = OpString 1634692198, 116 38; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_float]], [[size_32bits]], [[encoding_float]], [[flag_zero]] 39; CHECK-MIR-DAG: [[str_double:%[0-9]+\:id\(s32\)]] = OpString 1651863396, 25964 40; CHECK-MIR-DAG: OpExtInst [[type_void]], 3, 2, [[str_double]], [[size_64bits]], [[encoding_float]], [[flag_zero]] 41 42; CHECK-SPIRV: [[ext_inst_non_semantic:%[0-9]+]] = OpExtInstImport "NonSemantic.Shader.DebugInfo.100" 43; CHECK-SPIRV-DAG: [[str_bool:%[0-9]+]] = OpString "bool" 44; CHECK-SPIRV-DAG: [[str_int:%[0-9]+]] = OpString "int" 45; CHECK-SPIRV-DAG: [[str_short:%[0-9]+]] = OpString "short" 46; CHECK-SPIRV-DAG: [[str_char:%[0-9]+]] = OpString "char" 47; CHECK-SPIRV-DAG: [[str_long:%[0-9]+]] = OpString "long" 48; CHECK-SPIRV-DAG: [[str_uint:%[0-9]+]] = OpString "unsigned int" 49; CHECK-SPIRV-DAG: [[str_ushort:%[0-9]+]] = OpString "unsigned short" 50; CHECK-SPIRV-DAG: [[str_uchar:%[0-9]+]] = OpString "unsigned char" 51; CHECK-SPIRV-DAG: [[str_ulong:%[0-9]+]] = OpString "unsigned long" 52; CHECK-SPIRV-DAG: [[str_float:%[0-9]+]] = OpString "float" 53; CHECK-SPIRV-DAG: [[str_double:%[0-9]+]] = OpString "double" 54; CHECK-SPIRV-NOT: ---------------- 55; CHECK-SPIRV-DAG: [[type_void:%[0-9]+]] = OpTypeVoid 56; CHECK-SPIRV-DAG: [[type_float64:%[0-9]+]] = OpTypeFloat 64 57; CHECK-SPIRV-DAG: [[type_float32:%[0-9]+]] = OpTypeFloat 32 58; CHECK-SPIRV-DAG: [[type_int64:%[0-9]+]] = OpTypeInt 64 0 59; CHECK-SPIRV-DAG: [[type_int8:%[0-9]+]] = OpTypeInt 8 0 60; CHECK-SPIRV-DAG: [[type_int16:%[0-9]+]] = OpTypeInt 16 0 61; CHECK-SPIRV-DAG: [[type_int32:%[0-9]+]] = OpTypeInt 32 0 62; CHECK-SPIRV-DAG: [[encoding_signedchar:%[0-9]+]] = OpConstant [[type_int32]] 5 63; CHECK-SPIRV-DAG: [[flag_zero:%[0-9]+]] = OpConstant [[type_int32]] 0 64; CHECK-SPIRV-DAG: [[encoding_float:%[0-9]+]] = OpConstant [[type_int32]] 3 65; CHECK-SPIRV-DAG: [[size_8bit:%[0-9]+]] = OpConstant [[type_int32]] 8 66; CHECK-SPIRV-DAG: [[encoding_boolean:%[0-9]+]] = OpConstant [[type_int32]] 2 67; CHECK-SPIRV-DAG: [[size_32bit:%[0-9]+]] = OpConstant [[type_int32]] 32 68; CHECK-SPIRV-DAG: [[encoding_signed:%[0-9]+]] = OpConstant [[type_int32]] 4 69; CHECK-SPIRV-DAG: [[size_16bit:%[0-9]+]] = OpConstant [[type_int32]] 16 70; CHECK-SPIRV-DAG: [[size_64bit:%[0-9]+]] = OpConstant [[type_int32]] 64 71; CHECK-SPIRV-DAG: [[encoding_unsigned:%[0-9]+]] = OpConstant [[type_int32]] 6 72; CHECK-SPIRV-DAG: [[encoding_unsignedchar:%[0-9]+]] = OpConstant [[type_int32]] 7 73; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_bool]] [[size_8bit]] [[encoding_boolean]] [[flag_zero]] 74; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_int]] [[size_32bit]] [[encoding_signed]] [[flag_zero]] 75; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_short]] [[size_16bit]] [[encoding_signed]] [[flag_zero]] 76; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_char]] [[size_8bit]] [[encoding_signedchar]] [[flag_zero]] 77; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_long]] [[size_64bit]] [[encoding_signed]] [[flag_zero]] 78; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_uint]] [[size_32bit]] [[encoding_unsigned]] [[flag_zero]] 79; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_ushort]] [[size_16bit]] [[encoding_unsigned]] [[flag_zero]] 80; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_uchar]] [[size_8bit]] [[encoding_unsignedchar]] [[flag_zero]] 81; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_ulong]] [[size_64bit]] [[encoding_unsigned]] [[flag_zero]] 82; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_float]] [[size_32bit]] [[encoding_float]] [[flag_zero]] 83; CHECK-SPIRV-DAG: OpExtInst [[type_void]] [[ext_inst_non_semantic]] DebugTypeBasic [[str_double]] [[size_64bit]] [[encoding_float]] [[flag_zero]] 84 85; CHECK-OPTION-NOT: DebugTypeBasic 86 87define spir_func void @test1() !dbg !9 { 88entry: 89 %b0 = alloca i8, align 1 90 %a0 = alloca i32, align 4 91 %s0 = alloca i16, align 2 92 %c0 = alloca i8, align 1 93 %l0 = alloca i64, align 8 94 %ua0 = alloca i32, align 4 95 %us0 = alloca i16, align 2 96 %uc0 = alloca i8, align 1 97 %ul0 = alloca i64, align 8 98 %f0 = alloca float, align 4 99 %d0 = alloca double, align 8 100 #dbg_declare(ptr %b0, !14, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !16) 101 store i8 0, ptr %b0, align 1, !dbg !16 102 #dbg_declare(ptr %a0, !17, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !18) 103 store i32 1, ptr %a0, align 4, !dbg !18 104 #dbg_declare(ptr %s0, !19, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !21) 105 store i16 2, ptr %s0, align 2, !dbg !21 106 #dbg_declare(ptr %c0, !22, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !24) 107 store i8 3, ptr %c0, align 1, !dbg !24 108 #dbg_declare(ptr %l0, !25, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !27) 109 store i64 4, ptr %l0, align 8, !dbg !27 110 #dbg_declare(ptr %ua0, !28, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !30) 111 store i32 1, ptr %ua0, align 4, !dbg !30 112 #dbg_declare(ptr %us0, !31, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !33) 113 store i16 2, ptr %us0, align 2, !dbg !33 114 #dbg_declare(ptr %uc0, !34, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !36) 115 store i8 3, ptr %uc0, align 1, !dbg !36 116 #dbg_declare(ptr %ul0, !37, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !39) 117 store i64 4, ptr %ul0, align 8, !dbg !39 118 #dbg_declare(ptr %f0, !40, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !42) 119 store float 1.000000e+00, ptr %f0, align 4, !dbg !42 120 #dbg_declare(ptr %d0, !43, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !45) 121 store double 2.000000e+00, ptr %d0, align 8, !dbg !45 122 ret void 123} 124 125define spir_func void @test2() !dbg !47 { 126entry: 127 %b1 = alloca i8, align 1 128 %a1 = alloca i32, align 4 129 %s1 = alloca i16, align 2 130 %c1 = alloca i8, align 1 131 %l1 = alloca i64, align 8 132 %ua1 = alloca i32, align 4 133 %us1 = alloca i16, align 2 134 %uc1 = alloca i8, align 1 135 %ul1 = alloca i64, align 8 136 %f1 = alloca float, align 4 137 %d1 = alloca double, align 8 138 #dbg_declare(ptr %b1, !48, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !49) 139 store i8 0, ptr %b1, align 1, !dbg !49 140 #dbg_declare(ptr %a1, !50, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !51) 141 store i32 1, ptr %a1, align 4, !dbg !51 142 #dbg_declare(ptr %s1, !52, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !53) 143 store i16 2, ptr %s1, align 2, !dbg !53 144 #dbg_declare(ptr %c1, !54, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !55) 145 store i8 3, ptr %c1, align 1, !dbg !55 146 #dbg_declare(ptr %l1, !56, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !57) 147 store i64 4, ptr %l1, align 8, !dbg !57 148 #dbg_declare(ptr %ua1, !58, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !59) 149 store i32 1, ptr %ua1, align 4, !dbg !59 150 #dbg_declare(ptr %us1, !60, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !61) 151 store i16 2, ptr %us1, align 2, !dbg !61 152 #dbg_declare(ptr %uc1, !62, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !63) 153 store i8 3, ptr %uc1, align 1, !dbg !63 154 #dbg_declare(ptr %ul1, !64, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !65) 155 store i64 4, ptr %ul1, align 8, !dbg !65 156 #dbg_declare(ptr %f1, !66, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !67) 157 store float 1.000000e+00, ptr %f1, align 4, !dbg !67 158 #dbg_declare(ptr %d1, !68, !DIExpression(DW_OP_constu, 0, DW_OP_swap, DW_OP_xderef), !69) 159 store double 2.000000e+00, ptr %d1, align 8, !dbg !69 160 ret void 161} 162 163!llvm.dbg.cu = !{!0} 164!llvm.module.flags = !{!2, !3, !4, !5} 165 166!0 = distinct !DICompileUnit(language: DW_LANG_Zig, file: !1, producer: "clang version XX.X.XXXX (FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF)", isOptimized: false, runtimeVersion: 0, emissionKind: FullDebug, splitDebugInlining: false, nameTableKind: None) 167!1 = !DIFile(filename: "example.cpp", directory: "/AAAAAAAAAA/BBBBBBBB/CCCCCCCCC", checksumkind: CSK_MD5, checksum: "FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF") 168!2 = !{i32 7, !"Dwarf Version", i32 5} 169!3 = !{i32 2, !"Debug Info Version", i32 3} 170!4 = !{i32 1, !"wchar_size", i32 4} 171!5 = !{i32 7, !"frame-pointer", i32 2} 172!9 = distinct !DISubprogram(name: "test1", linkageName: "XXXX", scope: !1, file: !1, line: 1, type: !10, scopeLine: 1, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13) 173!10 = !DISubroutineType(cc: DW_CC_LLVM_SpirFunction, types: !11) 174!11 = !{!12} 175!12 = !DIBasicType(name: "int", size: 32, encoding: DW_ATE_signed) 176!13 = !{} 177!14 = !DILocalVariable(name: "b0", scope: !9, file: !1, line: 2, type: !15) 178!15 = !DIBasicType(name: "bool", size: 8, encoding: DW_ATE_boolean) 179!16 = !DILocation(line: 2, column: 8, scope: !9) 180!17 = !DILocalVariable(name: "a0", scope: !9, file: !1, line: 3, type: !12) 181!18 = !DILocation(line: 3, column: 7, scope: !9) 182!19 = !DILocalVariable(name: "s0", scope: !9, file: !1, line: 4, type: !20) 183!20 = !DIBasicType(name: "short", size: 16, encoding: DW_ATE_signed) 184!21 = !DILocation(line: 4, column: 9, scope: !9) 185!22 = !DILocalVariable(name: "c0", scope: !9, file: !1, line: 5, type: !23) 186!23 = !DIBasicType(name: "char", size: 8, encoding: DW_ATE_signed_char) 187!24 = !DILocation(line: 5, column: 8, scope: !9) 188!25 = !DILocalVariable(name: "l0", scope: !9, file: !1, line: 6, type: !26) 189!26 = !DIBasicType(name: "long", size: 64, encoding: DW_ATE_signed) 190!27 = !DILocation(line: 6, column: 8, scope: !9) 191!28 = !DILocalVariable(name: "ua0", scope: !9, file: !1, line: 7, type: !29) 192!29 = !DIBasicType(name: "unsigned int", size: 32, encoding: DW_ATE_unsigned) 193!30 = !DILocation(line: 7, column: 16, scope: !9) 194!31 = !DILocalVariable(name: "us0", scope: !9, file: !1, line: 8, type: !32) 195!32 = !DIBasicType(name: "unsigned short", size: 16, encoding: DW_ATE_unsigned) 196!33 = !DILocation(line: 8, column: 18, scope: !9) 197!34 = !DILocalVariable(name: "uc0", scope: !9, file: !1, line: 9, type: !35) 198!35 = !DIBasicType(name: "unsigned char", size: 8, encoding: DW_ATE_unsigned_char) 199!36 = !DILocation(line: 9, column: 17, scope: !9) 200!37 = !DILocalVariable(name: "ul0", scope: !9, file: !1, line: 10, type: !38) 201!38 = !DIBasicType(name: "unsigned long", size: 64, encoding: DW_ATE_unsigned) 202!39 = !DILocation(line: 10, column: 17, scope: !9) 203!40 = !DILocalVariable(name: "f0", scope: !9, file: !1, line: 11, type: !41) 204!41 = !DIBasicType(name: "float", size: 32, encoding: DW_ATE_float) 205!42 = !DILocation(line: 11, column: 9, scope: !9) 206!43 = !DILocalVariable(name: "d0", scope: !9, file: !1, line: 12, type: !44) 207!44 = !DIBasicType(name: "double", size: 64, encoding: DW_ATE_float) 208!45 = !DILocation(line: 12, column: 10, scope: !9) 209!46 = !DILocation(line: 13, column: 3, scope: !9) 210!47 = distinct !DISubprogram(name: "test2", linkageName: "YYYY", scope: !1, file: !1, line: 16, type: !10, scopeLine: 16, flags: DIFlagPrototyped, spFlags: DISPFlagDefinition, unit: !0, retainedNodes: !13) 211!48 = !DILocalVariable(name: "b1", scope: !47, file: !1, line: 17, type: !15) 212!49 = !DILocation(line: 17, column: 8, scope: !47) 213!50 = !DILocalVariable(name: "a1", scope: !47, file: !1, line: 18, type: !12) 214!51 = !DILocation(line: 18, column: 7, scope: !47) 215!52 = !DILocalVariable(name: "s1", scope: !47, file: !1, line: 19, type: !20) 216!53 = !DILocation(line: 19, column: 9, scope: !47) 217!54 = !DILocalVariable(name: "c1", scope: !47, file: !1, line: 20, type: !23) 218!55 = !DILocation(line: 20, column: 8, scope: !47) 219!56 = !DILocalVariable(name: "l1", scope: !47, file: !1, line: 21, type: !26) 220!57 = !DILocation(line: 21, column: 8, scope: !47) 221!58 = !DILocalVariable(name: "ua1", scope: !47, file: !1, line: 22, type: !29) 222!59 = !DILocation(line: 22, column: 16, scope: !47) 223!60 = !DILocalVariable(name: "us1", scope: !47, file: !1, line: 23, type: !32) 224!61 = !DILocation(line: 23, column: 18, scope: !47) 225!62 = !DILocalVariable(name: "uc1", scope: !47, file: !1, line: 24, type: !35) 226!63 = !DILocation(line: 24, column: 17, scope: !47) 227!64 = !DILocalVariable(name: "ul1", scope: !47, file: !1, line: 25, type: !38) 228!65 = !DILocation(line: 25, column: 17, scope: !47) 229!66 = !DILocalVariable(name: "f1", scope: !47, file: !1, line: 26, type: !41) 230!67 = !DILocation(line: 26, column: 9, scope: !47) 231!68 = !DILocalVariable(name: "d1", scope: !47, file: !1, line: 27, type: !44) 232!69 = !DILocation(line: 27, column: 10, scope: !47) 233!70 = !DILocation(line: 28, column: 3, scope: !47) 234