debug-info-blocks.ll 22 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272
  1. ; RUN: llc -filetype=obj -O0 < %s | llvm-dwarfdump -v - | FileCheck %s
  2. ; debug_info content
  3. ; CHECK: DW_AT_name {{.*}} "foobar_func_block_invoke_0"
  4. ; CHECK-NOT: DW_TAG_subprogram
  5. ; CHECK: DW_TAG_variable
  6. ; CHECK-NOT: DW_TAG
  7. ; CHECK-NEXT: DW_AT_location [DW_FORM_sec_offset]
  8. ; CHECK-NEXT: [0x{{.*}}, 0x{{.*}}): {{.*}} DW_OP_plus_uconst 0x4, DW_OP_deref, DW_OP_plus_uconst 0x18
  9. ; CHECK-NEXT: [0x{{.*}}, 0x{{.*}}): {{.*}} DW_OP_plus_uconst 0x4, DW_OP_deref, DW_OP_plus_uconst 0x18
  10. ; CHECK-NEXT: DW_AT_name {{.*}} "mydata"
  11. ; Radar 9331779
  12. target datalayout = "e-p:32:32:32-i1:8:32-i8:8:32-i16:16:32-i32:32:32-i64:32:32-f32:32:32-f64:32:32-v64:32:64-v128:32:128-a0:0:32-n32"
  13. target triple = "thumbv7-apple-ios"
  14. %0 = type opaque
  15. %1 = type { [4 x i32] }
  16. %2 = type <{ i8*, i32, i32, i8*, %struct.Re*, i8*, %3*, %struct.my_struct* }>
  17. %3 = type opaque
  18. %struct.CP = type { float, float }
  19. %struct.CR = type { %struct.CP, %struct.CP }
  20. %struct.Re = type { i32, i32 }
  21. %struct.__block_byref_mydata = type { i8*, %struct.__block_byref_mydata*, i32, i32, i8*, i8*, %0* }
  22. %struct.my_struct = type opaque
  23. @"\01L_OBJC_SELECTOR_REFERENCES_13" = external hidden global i8*, section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip"
  24. @"OBJC_IVAR_$_MyWork._bounds" = external hidden global i32, section "__DATA, __objc_const", align 4
  25. @"OBJC_IVAR_$_MyWork._data" = external hidden global i32, section "__DATA, __objc_const", align 4
  26. @"\01L_OBJC_SELECTOR_REFERENCES_222" = external hidden global i8*, section "__DATA, __objc_selrefs, literal_pointers, no_dead_strip"
  27. declare void @llvm.dbg.declare(metadata, metadata, metadata) nounwind readnone
  28. declare i8* @objc_msgSend(i8*, i8*, ...)
  29. declare void @llvm.dbg.value(metadata, metadata, metadata) nounwind readnone
  30. declare void @llvm.memcpy.p0i8.p0i8.i32(i8* nocapture, i8* nocapture, i32, i1) nounwind
  31. define hidden void @foobar_func_block_invoke_0(i8* %.block_descriptor, %0* %loadedMydata, [4 x i32] %bounds.coerce0, [4 x i32] %data.coerce0) ssp !dbg !23 {
  32. %1 = alloca %0*, align 4
  33. %bounds = alloca %struct.CR, align 4
  34. %data = alloca %struct.CR, align 4
  35. call void @llvm.dbg.value(metadata i8* %.block_descriptor, metadata !27, metadata !DIExpression()), !dbg !129
  36. store %0* %loadedMydata, %0** %1, align 4
  37. call void @llvm.dbg.declare(metadata %0** %1, metadata !130, metadata !DIExpression()), !dbg !131
  38. %2 = bitcast %struct.CR* %bounds to %1*
  39. %3 = getelementptr %1, %1* %2, i32 0, i32 0
  40. store [4 x i32] %bounds.coerce0, [4 x i32]* %3
  41. call void @llvm.dbg.declare(metadata %struct.CR* %bounds, metadata !132, metadata !DIExpression()), !dbg !133
  42. %4 = bitcast %struct.CR* %data to %1*
  43. %5 = getelementptr %1, %1* %4, i32 0, i32 0
  44. store [4 x i32] %data.coerce0, [4 x i32]* %5
  45. call void @llvm.dbg.declare(metadata %struct.CR* %data, metadata !134, metadata !DIExpression()), !dbg !135
  46. %6 = bitcast i8* %.block_descriptor to %2*
  47. %7 = getelementptr inbounds %2, %2* %6, i32 0, i32 6
  48. call void @llvm.dbg.declare(metadata %2* %6, metadata !136, metadata !163), !dbg !137
  49. call void @llvm.dbg.declare(metadata %2* %6, metadata !138, metadata !164), !dbg !137
  50. call void @llvm.dbg.declare(metadata %2* %6, metadata !139, metadata !165), !dbg !140
  51. %8 = load %0*, %0** %1, align 4, !dbg !141
  52. %9 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_13", !dbg !141
  53. %10 = bitcast %0* %8 to i8*, !dbg !141
  54. %11 = call i8* bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to i8* (i8*, i8*)*)(i8* %10, i8* %9), !dbg !141
  55. %12 = bitcast i8* %11 to %0*, !dbg !141
  56. %13 = getelementptr inbounds %2, %2* %6, i32 0, i32 5, !dbg !141
  57. %14 = load i8*, i8** %13, !dbg !141
  58. %15 = bitcast i8* %14 to %struct.__block_byref_mydata*, !dbg !141
  59. %16 = getelementptr inbounds %struct.__block_byref_mydata, %struct.__block_byref_mydata* %15, i32 0, i32 1, !dbg !141
  60. %17 = load %struct.__block_byref_mydata*, %struct.__block_byref_mydata** %16, !dbg !141
  61. %18 = getelementptr inbounds %struct.__block_byref_mydata, %struct.__block_byref_mydata* %17, i32 0, i32 6, !dbg !141
  62. store %0* %12, %0** %18, align 4, !dbg !141
  63. %19 = getelementptr inbounds %2, %2* %6, i32 0, i32 6, !dbg !143
  64. %20 = load %3*, %3** %19, align 4, !dbg !143
  65. %21 = load i32, i32* @"OBJC_IVAR_$_MyWork._data", !dbg !143
  66. %22 = bitcast %3* %20 to i8*, !dbg !143
  67. %23 = getelementptr inbounds i8, i8* %22, i32 %21, !dbg !143
  68. %24 = bitcast i8* %23 to %struct.CR*, !dbg !143
  69. %25 = bitcast %struct.CR* %24 to i8*, !dbg !143
  70. %26 = bitcast %struct.CR* %data to i8*, !dbg !143
  71. call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %25, i8* align 4 %26, i32 16, i1 false), !dbg !143
  72. %27 = getelementptr inbounds %2, %2* %6, i32 0, i32 6, !dbg !144
  73. %28 = load %3*, %3** %27, align 4, !dbg !144
  74. %29 = load i32, i32* @"OBJC_IVAR_$_MyWork._bounds", !dbg !144
  75. %30 = bitcast %3* %28 to i8*, !dbg !144
  76. %31 = getelementptr inbounds i8, i8* %30, i32 %29, !dbg !144
  77. %32 = bitcast i8* %31 to %struct.CR*, !dbg !144
  78. %33 = bitcast %struct.CR* %32 to i8*, !dbg !144
  79. %34 = bitcast %struct.CR* %bounds to i8*, !dbg !144
  80. call void @llvm.memcpy.p0i8.p0i8.i32(i8* align 4 %33, i8* align 4 %34, i32 16, i1 false), !dbg !144
  81. %35 = getelementptr inbounds %2, %2* %6, i32 0, i32 6, !dbg !145
  82. %36 = load %3*, %3** %35, align 4, !dbg !145
  83. %37 = getelementptr inbounds %2, %2* %6, i32 0, i32 5, !dbg !145
  84. %38 = load i8*, i8** %37, !dbg !145
  85. %39 = bitcast i8* %38 to %struct.__block_byref_mydata*, !dbg !145
  86. %40 = getelementptr inbounds %struct.__block_byref_mydata, %struct.__block_byref_mydata* %39, i32 0, i32 1, !dbg !145
  87. %41 = load %struct.__block_byref_mydata*, %struct.__block_byref_mydata** %40, !dbg !145
  88. %42 = getelementptr inbounds %struct.__block_byref_mydata, %struct.__block_byref_mydata* %41, i32 0, i32 6, !dbg !145
  89. %43 = load %0*, %0** %42, align 4, !dbg !145
  90. %44 = load i8*, i8** @"\01L_OBJC_SELECTOR_REFERENCES_222", !dbg !145
  91. %45 = bitcast %3* %36 to i8*, !dbg !145
  92. call void bitcast (i8* (i8*, i8*, ...)* @objc_msgSend to void (i8*, i8*, %0*)*)(i8* %45, i8* %44, %0* %43), !dbg !145
  93. ret void, !dbg !146
  94. }
  95. !llvm.dbg.cu = !{!0}
  96. !llvm.module.flags = !{!162}
  97. !0 = distinct !DICompileUnit(language: DW_LANG_ObjC, producer: "Apple clang version 2.1", isOptimized: false, runtimeVersion: 2, emissionKind: FullDebug, file: !153, enums: !147, retainedTypes: !{})
  98. !1 = !DICompositeType(tag: DW_TAG_enumeration_type, line: 248, size: 32, align: 32, file: !160, scope: !0, elements: !3)
  99. !2 = !DIFile(filename: "header.h", directory: "/Volumes/Sandbox/llvm")
  100. !3 = !{!4}
  101. !4 = !DIEnumerator(name: "Ver1", value: 0) ; [ DW_TAG_enumerator ]
  102. !5 = !DICompositeType(tag: DW_TAG_enumeration_type, name: "Mode", line: 79, size: 32, align: 32, file: !160, scope: !0, elements: !7)
  103. !6 = !DIFile(filename: "header2.h", directory: "/Volumes/Sandbox/llvm")
  104. !7 = !{!8}
  105. !8 = !DIEnumerator(name: "One", value: 0) ; [ DW_TAG_enumerator ]
  106. !9 = !DICompositeType(tag: DW_TAG_enumeration_type, line: 15, size: 32, align: 32, file: !149, scope: !0, elements: !11)
  107. !10 = !DIFile(filename: "header3.h", directory: "/Volumes/Sandbox/llvm")
  108. !11 = !{!12, !13}
  109. !12 = !DIEnumerator(name: "Unknown", value: 0) ; [ DW_TAG_enumerator ]
  110. !13 = !DIEnumerator(name: "Known", value: 1) ; [ DW_TAG_enumerator ]
  111. !14 = !DICompositeType(tag: DW_TAG_enumeration_type, line: 20, size: 32, align: 32, file: !150, scope: !0, elements: !16)
  112. !15 = !DIFile(filename: "Private.h", directory: "/Volumes/Sandbox/llvm")
  113. !16 = !{!17, !18}
  114. !17 = !DIEnumerator(name: "Single", value: 0) ; [ DW_TAG_enumerator ]
  115. !18 = !DIEnumerator(name: "Double", value: 1) ; [ DW_TAG_enumerator ]
  116. !19 = !DICompositeType(tag: DW_TAG_enumeration_type, line: 14, size: 32, align: 32, file: !151, scope: !0, elements: !21)
  117. !20 = !DIFile(filename: "header4.h", directory: "/Volumes/Sandbox/llvm")
  118. !21 = !{!22}
  119. !22 = !DIEnumerator(name: "Eleven", value: 0) ; [ DW_TAG_enumerator ]
  120. !23 = distinct !DISubprogram(name: "foobar_func_block_invoke_0", line: 609, isLocal: true, isDefinition: true, virtualIndex: 6, flags: DIFlagPrototyped, isOptimized: false, unit: !0, scopeLine: 609, file: !152, scope: !24, type: !25)
  121. !24 = !DIFile(filename: "MyLibrary.m", directory: "/Volumes/Sandbox/llvm")
  122. !25 = !DISubroutineType(types: !26)
  123. !26 = !{null}
  124. !27 = !DILocalVariable(name: ".block_descriptor", line: 609, arg: 1, flags: DIFlagArtificial, scope: !23, file: !24, type: !28)
  125. !28 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, scope: !0, baseType: !29)
  126. !29 = !DICompositeType(tag: DW_TAG_structure_type, name: "__block_literal_14", line: 609, size: 256, align: 32, file: !152, scope: !24, elements: !30)
  127. !30 = !{!31, !33, !35, !36, !37, !48, !89, !124}
  128. !31 = !DIDerivedType(tag: DW_TAG_member, name: "__isa", line: 609, size: 32, align: 32, file: !152, scope: !24, baseType: !32)
  129. !32 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: null)
  130. !33 = !DIDerivedType(tag: DW_TAG_member, name: "__flags", line: 609, size: 32, align: 32, offset: 32, file: !152, scope: !24, baseType: !34)
  131. !34 = !DIBasicType(tag: DW_TAG_base_type, name: "int", size: 32, align: 32, encoding: DW_ATE_signed)
  132. !35 = !DIDerivedType(tag: DW_TAG_member, name: "__reserved", line: 609, size: 32, align: 32, offset: 64, file: !152, scope: !24, baseType: !34)
  133. !36 = !DIDerivedType(tag: DW_TAG_member, name: "__FuncPtr", line: 609, size: 32, align: 32, offset: 96, file: !152, scope: !24, baseType: !32)
  134. !37 = !DIDerivedType(tag: DW_TAG_member, name: "__descriptor", line: 609, size: 32, align: 32, offset: 128, file: !152, scope: !24, baseType: !38)
  135. !38 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !39)
  136. !39 = !DICompositeType(tag: DW_TAG_structure_type, name: "__block_descriptor_withcopydispose", line: 307, size: 128, align: 32, file: !153, scope: !0, elements: !41)
  137. !40 = !DIFile(filename: "MyLibrary.i", directory: "/Volumes/Sandbox/llvm")
  138. !41 = !{!42, !44, !45, !47}
  139. !42 = !DIDerivedType(tag: DW_TAG_member, name: "reserved", line: 307, size: 32, align: 32, file: !153, scope: !40, baseType: !43)
  140. !43 = !DIBasicType(tag: DW_TAG_base_type, name: "long unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
  141. !44 = !DIDerivedType(tag: DW_TAG_member, name: "Size", line: 307, size: 32, align: 32, offset: 32, file: !153, scope: !40, baseType: !43)
  142. !45 = !DIDerivedType(tag: DW_TAG_member, name: "CopyFuncPtr", line: 307, size: 32, align: 32, offset: 64, file: !153, scope: !40, baseType: !46)
  143. !46 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !32)
  144. !47 = !DIDerivedType(tag: DW_TAG_member, name: "DestroyFuncPtr", line: 307, size: 32, align: 32, offset: 96, file: !153, scope: !40, baseType: !46)
  145. !48 = !DIDerivedType(tag: DW_TAG_member, name: "mydata", line: 609, size: 32, align: 32, offset: 160, file: !152, scope: !24, baseType: !49)
  146. !49 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, scope: !0, baseType: !50)
  147. !50 = !DICompositeType(tag: DW_TAG_structure_type, size: 224, file: !152, scope: !24, elements: !51)
  148. !51 = !{!52, !53, !54, !55, !56, !57, !58}
  149. !52 = !DIDerivedType(tag: DW_TAG_member, name: "__isa", size: 32, align: 32, file: !152, scope: !24, baseType: !32)
  150. !53 = !DIDerivedType(tag: DW_TAG_member, name: "__forwarding", size: 32, align: 32, offset: 32, file: !152, scope: !24, baseType: !32)
  151. !54 = !DIDerivedType(tag: DW_TAG_member, name: "__flags", size: 32, align: 32, offset: 64, file: !152, scope: !24, baseType: !34)
  152. !55 = !DIDerivedType(tag: DW_TAG_member, name: "__size", size: 32, align: 32, offset: 96, file: !152, scope: !24, baseType: !34)
  153. !56 = !DIDerivedType(tag: DW_TAG_member, name: "__copy_helper", size: 32, align: 32, offset: 128, file: !152, scope: !24, baseType: !32)
  154. !57 = !DIDerivedType(tag: DW_TAG_member, name: "__destroy_helper", size: 32, align: 32, offset: 160, file: !152, scope: !24, baseType: !32)
  155. !58 = !DIDerivedType(tag: DW_TAG_member, name: "mydata", size: 32, align: 32, offset: 192, file: !152, scope: !24, baseType: !59)
  156. !59 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !60)
  157. !60 = !DICompositeType(tag: DW_TAG_structure_type, name: "UIMydata", line: 26, size: 128, align: 32, runtimeLang: DW_LANG_ObjC, file: !154, scope: !24, elements: !62)
  158. !61 = !DIFile(filename: "header11.h", directory: "/Volumes/Sandbox/llvm")
  159. !62 = !{!63, !71, !75, !79}
  160. !63 = !DIDerivedType(tag: DW_TAG_inheritance, file: !61, baseType: !64)
  161. !64 = !DICompositeType(tag: DW_TAG_structure_type, name: "NSO", line: 66, size: 32, align: 32, runtimeLang: DW_LANG_ObjC, file: !155, scope: !40, elements: !66)
  162. !65 = !DIFile(filename: "NSO.h", directory: "/Volumes/Sandbox/llvm")
  163. !66 = !{!67}
  164. !67 = !DIDerivedType(tag: DW_TAG_member, name: "isa", line: 67, size: 32, align: 32, flags: DIFlagProtected, file: !155, scope: !65, baseType: !68, extraData: !"")
  165. !68 = !DIDerivedType(tag: DW_TAG_typedef, name: "Class", line: 197, file: !153, scope: !0, baseType: !69)
  166. !69 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !70)
  167. !70 = !DICompositeType(tag: DW_TAG_structure_type, name: "objc_class", flags: DIFlagFwdDecl, file: !153, scope: !0)
  168. !71 = !DIDerivedType(tag: DW_TAG_member, name: "_mydataRef", line: 28, size: 32, align: 32, offset: 32, file: !154, scope: !61, baseType: !72, extraData: !"")
  169. !72 = !DIDerivedType(tag: DW_TAG_typedef, name: "CFTypeRef", line: 313, file: !152, scope: !0, baseType: !73)
  170. !73 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !74)
  171. !74 = !DIDerivedType(tag: DW_TAG_const_type, scope: !0, baseType: null)
  172. !75 = !DIDerivedType(tag: DW_TAG_member, name: "_scale", line: 29, size: 32, align: 32, offset: 64, file: !154, scope: !61, baseType: !76, extraData: !"")
  173. !76 = !DIDerivedType(tag: DW_TAG_typedef, name: "Float", line: 89, file: !156, scope: !0, baseType: !78)
  174. !77 = !DIFile(filename: "header12.h", directory: "/Volumes/Sandbox/llvm")
  175. !78 = !DIBasicType(tag: DW_TAG_base_type, name: "float", size: 32, align: 32, encoding: DW_ATE_float)
  176. !79 = !DIDerivedType(tag: DW_TAG_member, name: "_mydataFlags", line: 37, size: 8, align: 8, offset: 96, file: !154, scope: !61, baseType: !80, extraData: !"")
  177. !80 = !DICompositeType(tag: DW_TAG_structure_type, line: 30, size: 8, align: 8, file: !154, scope: !0, elements: !81)
  178. !81 = !{!82, !84, !85, !86, !87, !88}
  179. !82 = !DIDerivedType(tag: DW_TAG_member, name: "named", line: 31, size: 1, align: 32, file: !154, scope: !61, baseType: !83)
  180. !83 = !DIBasicType(tag: DW_TAG_base_type, name: "unsigned int", size: 32, align: 32, encoding: DW_ATE_unsigned)
  181. !84 = !DIDerivedType(tag: DW_TAG_member, name: "mydataO", line: 32, size: 3, align: 32, offset: 1, file: !154, scope: !61, baseType: !83)
  182. !85 = !DIDerivedType(tag: DW_TAG_member, name: "cached", line: 33, size: 1, align: 32, offset: 4, file: !154, scope: !61, baseType: !83)
  183. !86 = !DIDerivedType(tag: DW_TAG_member, name: "hasBeenCached", line: 34, size: 1, align: 32, offset: 5, file: !154, scope: !61, baseType: !83)
  184. !87 = !DIDerivedType(tag: DW_TAG_member, name: "hasPattern", line: 35, size: 1, align: 32, offset: 6, file: !154, scope: !61, baseType: !83)
  185. !88 = !DIDerivedType(tag: DW_TAG_member, name: "isCIMydata", line: 36, size: 1, align: 32, offset: 7, file: !154, scope: !61, baseType: !83)
  186. !89 = !DIDerivedType(tag: DW_TAG_member, name: "self", line: 609, size: 32, align: 32, offset: 192, file: !152, scope: !24, baseType: !90)
  187. !90 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !91)
  188. !91 = !DICompositeType(tag: DW_TAG_structure_type, name: "MyWork", line: 36, size: 384, align: 32, runtimeLang: DW_LANG_ObjC, file: !152, scope: !40, elements: !92)
  189. !92 = !{!93, !98, !101, !107, !123}
  190. !93 = !DIDerivedType(tag: DW_TAG_inheritance, file: !152, scope: !91, baseType: !94)
  191. !94 = !DICompositeType(tag: DW_TAG_structure_type, name: "twork", line: 43, size: 32, align: 32, runtimeLang: DW_LANG_ObjC, file: !157, scope: !40, elements: !96)
  192. !95 = !DIFile(filename: "header13.h", directory: "/Volumes/Sandbox/llvm")
  193. !96 = !{!97}
  194. !97 = !DIDerivedType(tag: DW_TAG_inheritance, file: !95, baseType: !64)
  195. !98 = !DIDerivedType(tag: DW_TAG_member, name: "_itemID", line: 38, size: 64, align: 32, offset: 32, flags: DIFlagPrivate, file: !152, scope: !24, baseType: !99, extraData: !"")
  196. !99 = !DIDerivedType(tag: DW_TAG_typedef, name: "uint64_t", line: 55, file: !153, scope: !0, baseType: !100)
  197. !100 = !DIBasicType(tag: DW_TAG_base_type, name: "long long unsigned int", size: 64, align: 32, encoding: DW_ATE_unsigned)
  198. !101 = !DIDerivedType(tag: DW_TAG_member, name: "_library", line: 39, size: 32, align: 32, offset: 96, flags: DIFlagPrivate, file: !152, scope: !24, baseType: !102, extraData: !"")
  199. !102 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !103)
  200. !103 = !DICompositeType(tag: DW_TAG_structure_type, name: "MyLibrary2", line: 22, size: 32, align: 32, runtimeLang: DW_LANG_ObjC, file: !158, scope: !40, elements: !105)
  201. !104 = !DIFile(filename: "header14.h", directory: "/Volumes/Sandbox/llvm")
  202. !105 = !{!106}
  203. !106 = !DIDerivedType(tag: DW_TAG_inheritance, file: !104, baseType: !64)
  204. !107 = !DIDerivedType(tag: DW_TAG_member, name: "_bounds", line: 40, size: 128, align: 32, offset: 128, flags: DIFlagPrivate, file: !152, scope: !24, baseType: !108, extraData: !"")
  205. !108 = !DIDerivedType(tag: DW_TAG_typedef, name: "CR", line: 33, file: !153, scope: !0, baseType: !109)
  206. !109 = !DICompositeType(tag: DW_TAG_structure_type, name: "CR", line: 29, size: 128, align: 32, file: !156, scope: !0, elements: !110)
  207. !110 = !{!111, !117}
  208. !111 = !DIDerivedType(tag: DW_TAG_member, name: "origin", line: 30, size: 64, align: 32, file: !156, scope: !77, baseType: !112)
  209. !112 = !DIDerivedType(tag: DW_TAG_typedef, name: "CP", line: 17, file: !156, scope: !0, baseType: !113)
  210. !113 = !DICompositeType(tag: DW_TAG_structure_type, name: "CP", line: 13, size: 64, align: 32, file: !156, scope: !0, elements: !114)
  211. !114 = !{!115, !116}
  212. !115 = !DIDerivedType(tag: DW_TAG_member, name: "x", line: 14, size: 32, align: 32, file: !156, scope: !77, baseType: !76)
  213. !116 = !DIDerivedType(tag: DW_TAG_member, name: "y", line: 15, size: 32, align: 32, offset: 32, file: !156, scope: !77, baseType: !76)
  214. !117 = !DIDerivedType(tag: DW_TAG_member, name: "size", line: 31, size: 64, align: 32, offset: 64, file: !156, scope: !77, baseType: !118)
  215. !118 = !DIDerivedType(tag: DW_TAG_typedef, name: "Size", line: 25, file: !156, scope: !0, baseType: !119)
  216. !119 = !DICompositeType(tag: DW_TAG_structure_type, name: "Size", line: 21, size: 64, align: 32, file: !156, scope: !0, elements: !120)
  217. !120 = !{!121, !122}
  218. !121 = !DIDerivedType(tag: DW_TAG_member, name: "width", line: 22, size: 32, align: 32, file: !156, scope: !77, baseType: !76)
  219. !122 = !DIDerivedType(tag: DW_TAG_member, name: "height", line: 23, size: 32, align: 32, offset: 32, file: !156, scope: !77, baseType: !76)
  220. !123 = !DIDerivedType(tag: DW_TAG_member, name: "_data", line: 40, size: 128, align: 32, offset: 256, flags: DIFlagPrivate, file: !152, scope: !24, baseType: !108, extraData: !"")
  221. !124 = !DIDerivedType(tag: DW_TAG_member, name: "semi", line: 609, size: 32, align: 32, offset: 224, file: !152, scope: !24, baseType: !125)
  222. !125 = !DIDerivedType(tag: DW_TAG_typedef, name: "d_t", line: 35, file: !152, scope: !0, baseType: !126)
  223. !126 = !DIDerivedType(tag: DW_TAG_pointer_type, size: 32, align: 32, scope: !0, baseType: !127)
  224. !127 = !DICompositeType(tag: DW_TAG_structure_type, name: "my_struct", line: 49, flags: DIFlagFwdDecl, file: !159, scope: !0)
  225. !128 = !DIFile(filename: "header15.h", directory: "/Volumes/Sandbox/llvm")
  226. !129 = !DILocation(line: 609, column: 144, scope: !23)
  227. !130 = !DILocalVariable(name: "loadedMydata", line: 609, arg: 2, scope: !23, file: !24, type: !59)
  228. !131 = !DILocation(line: 609, column: 155, scope: !23)
  229. !132 = !DILocalVariable(name: "bounds", line: 609, arg: 3, scope: !23, file: !24, type: !108)
  230. !133 = !DILocation(line: 609, column: 175, scope: !23)
  231. !134 = !DILocalVariable(name: "data", line: 609, arg: 4, scope: !23, file: !24, type: !108)
  232. !135 = !DILocation(line: 609, column: 190, scope: !23)
  233. !136 = !DILocalVariable(name: "mydata", line: 604, scope: !23, file: !24, type: !50)
  234. !137 = !DILocation(line: 604, column: 49, scope: !23)
  235. !138 = !DILocalVariable(name: "self", line: 604, scope: !23, file: !40, type: !90)
  236. !139 = !DILocalVariable(name: "semi", line: 607, scope: !23, file: !24, type: !125)
  237. !140 = !DILocation(line: 607, column: 30, scope: !23)
  238. !141 = !DILocation(line: 610, column: 17, scope: !142)
  239. !142 = distinct !DILexicalBlock(line: 609, column: 200, file: !152, scope: !23)
  240. !143 = !DILocation(line: 611, column: 17, scope: !142)
  241. !144 = !DILocation(line: 612, column: 17, scope: !142)
  242. !145 = !DILocation(line: 613, column: 17, scope: !142)
  243. !146 = !DILocation(line: 615, column: 13, scope: !142)
  244. !147 = !{!1, !1, !5, !5, !9, !14, !19, !19, !14, !14, !14, !19, !19, !19}
  245. !149 = !DIFile(filename: "header3.h", directory: "/Volumes/Sandbox/llvm")
  246. !150 = !DIFile(filename: "Private.h", directory: "/Volumes/Sandbox/llvm")
  247. !151 = !DIFile(filename: "header4.h", directory: "/Volumes/Sandbox/llvm")
  248. !152 = !DIFile(filename: "MyLibrary.m", directory: "/Volumes/Sandbox/llvm")
  249. !153 = !DIFile(filename: "MyLibrary.i", directory: "/Volumes/Sandbox/llvm")
  250. !154 = !DIFile(filename: "header11.h", directory: "/Volumes/Sandbox/llvm")
  251. !155 = !DIFile(filename: "NSO.h", directory: "/Volumes/Sandbox/llvm")
  252. !156 = !DIFile(filename: "header12.h", directory: "/Volumes/Sandbox/llvm")
  253. !157 = !DIFile(filename: "header13.h", directory: "/Volumes/Sandbox/llvm")
  254. !158 = !DIFile(filename: "header14.h", directory: "/Volumes/Sandbox/llvm")
  255. !159 = !DIFile(filename: "header15.h", directory: "/Volumes/Sandbox/llvm")
  256. !160 = !DIFile(filename: "header.h", directory: "/Volumes/Sandbox/llvm")
  257. !161 = !{!"header2.h", !"/Volumes/Sandbox/llvm"}
  258. !162 = !{i32 1, !"Debug Info Version", i32 3}
  259. !163 = !DIExpression(DW_OP_plus_uconst, 20, DW_OP_deref, DW_OP_plus_uconst, 4, DW_OP_deref, DW_OP_plus_uconst, 24)
  260. !164 = !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 24)
  261. !165 = !DIExpression(DW_OP_deref, DW_OP_plus_uconst, 28)