Guest User

Untitled

a guest
Oct 20th, 2018
93
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 5.33 KB | None | 0 0
  1. ; ModuleID = 'Test'
  2.  
  3. %struct.__block_literal_generic.0 = type { i8*, i32, i32, i8*, %struct.__block_descriptor* }
  4. %struct.__block_descriptor = type { i64, i64 }
  5. %struct.__block_literal_generic = type { i8*, i32, i32, i8*, %struct.__tq_block_descriptor* }
  6. %struct.__tq_block_descriptor = type { i64, i64 }
  7.  
  8. @_NSConcreteStackBlock = external global i8*
  9. @__tq_block_descriptor_tmp = internal constant { i64, i64 } { i64 0, i64 32 }
  10. @__tq_block_descriptor_tmp1 = internal constant { i64, i64 } { i64 0, i64 32 }
  11. @selector = private unnamed_addr constant [12 x i8] c"doubleValue\00"
  12. @className_NSNumber = private unnamed_addr constant [9 x i8] c"NSNumber\00"
  13. @sel_numberWithDouble = private unnamed_addr constant [18 x i8] c"numberWithDouble:\00"
  14.  
  15. declare void @objc_allocateClassPair(i8*, i8*, i64)
  16.  
  17. declare void @objc_registerClassPair(i8*)
  18.  
  19. declare i8 @class_addIvar(i8*, i8*, i64, i8, i8*)
  20.  
  21. declare i8 @class_addMethod(i8*, i8*, i8*, i8*)
  22.  
  23. declare i8* @objc_msgSend(i8*, i8*, ...)
  24.  
  25. declare void @objc_storeStrong(i8**, i8*)
  26.  
  27. declare i8* @objc_storeWeak(i8**, i8*)
  28.  
  29. declare i8* @objc_loadWeak(i8**)
  30.  
  31. declare void @objc_destroyWeak(i8**)
  32.  
  33. declare i8* @objc_retain(i8*)
  34.  
  35. declare void @objc_release(i8*)
  36.  
  37. declare i8* @sel_registerName(i8*)
  38.  
  39. declare i8* @sel_getName(i8*)
  40.  
  41. declare i8* @objc_getClass(i8*)
  42.  
  43. declare i8* @objc_retainBlock(i8*)
  44.  
  45. define i8* @__tq_block_invoke_0() {
  46. entry:
  47. %block = alloca %struct.__block_literal_generic.0, align 8
  48. %block.isa = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 0
  49. store i8* bitcast (i8** @_NSConcreteStackBlock to i8*), i8** %block.isa
  50. %block.flags = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 1
  51. store i32 0, i32* %block.flags
  52. %block.reserved = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 2
  53. store i32 0, i32* %block.reserved
  54. %block.invoke = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 3
  55. store i8* bitcast (i8* (i8*, i8*)* @__tq_block_invoke_1 to i8*), i8** %block.invoke
  56. %block.descriptor = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 4
  57. store %struct.__block_descriptor* bitcast ({ i64, i64 }* @__tq_block_descriptor_tmp1 to %struct.__block_descriptor*), %struct.__block_descriptor** %block.descriptor
  58. %0 = bitcast %struct.__block_literal_generic.0* %block to i8*
  59. %1 = call i8* @objc_retainBlock(i8* %0)
  60. %2 = alloca i8*
  61. store i8* null, i8** %2
  62. %3 = load i8** %2
  63. store i8* %1, i8** %2
  64. %4 = load i8** %2
  65. %5 = call i8* @sel_registerName(i8* getelementptr inbounds ([12 x i8]* @selector, i32 0, i32 0))
  66. %6 = call i8* @objc_getClass(i8* getelementptr inbounds ([9 x i8]* @className_NSNumber, i32 0, i32 0))
  67. %7 = call i8* @sel_registerName(i8* getelementptr inbounds ([18 x i8]* @sel_numberWithDouble, i32 0, i32 0))
  68. %8 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %6, i8* %7, double 1.230000e+02)
  69. %9 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %8, i8* %5)
  70. %10 = load i8** %2
  71. %11 = bitcast i8* %10 to %struct.__block_literal_generic*
  72. %12 = getelementptr inbounds %struct.__block_literal_generic* %11, i32 0, i32 3
  73. %13 = bitcast %struct.__block_literal_generic* %11 to i8*
  74. %14 = call i8* @objc_getClass(i8* getelementptr inbounds ([9 x i8]* @className_NSNumber, i32 0, i32 0))
  75. %15 = call i8* @sel_registerName(i8* getelementptr inbounds ([18 x i8]* @sel_numberWithDouble, i32 0, i32 0))
  76. %16 = call i8* (i8*, i8*, ...)* @objc_msgSend(i8* %14, i8* %15, double 1.230000e+02)
  77. %17 = load i8** %12
  78. %18 = bitcast i8* %17 to i8* (i8*, i8*)*
  79. %19 = call i8* %18(i8* %13, i8* %16)
  80. ret i8* %19
  81. }
  82.  
  83. define i8* @__tq_block_invoke_1(i8*, i8*) {
  84. entry:
  85. %block = alloca %struct.__block_literal_generic.0, align 8
  86. %b = alloca i8*
  87. %__blk = alloca i8*
  88. store i8* %0, i8** %__blk
  89. store i8* %1, i8** %b
  90. %block.isa = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 0
  91. store i8* bitcast (i8** @_NSConcreteStackBlock to i8*), i8** %block.isa
  92. %block.flags = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 1
  93. store i32 0, i32* %block.flags
  94. %block.reserved = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 2
  95. store i32 0, i32* %block.reserved
  96. %block.invoke = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 3
  97. store i8* bitcast (i8* (i8*, i8*)* @__tq_block_invoke_2 to i8*), i8** %block.invoke
  98. %block.descriptor = getelementptr inbounds %struct.__block_literal_generic.0* %block, i32 0, i32 4
  99. store %struct.__block_descriptor* bitcast ({ i64, i64 }* @__tq_block_descriptor_tmp to %struct.__block_descriptor*), %struct.__block_descriptor** %block.descriptor
  100. %2 = bitcast %struct.__block_literal_generic.0* %block to i8*
  101. %3 = call i8* @objc_retainBlock(i8* %2)
  102. %4 = bitcast i8* %3 to %struct.__block_literal_generic*
  103. %5 = getelementptr inbounds %struct.__block_literal_generic* %4, i32 0, i32 3
  104. %6 = bitcast %struct.__block_literal_generic* %4 to i8*
  105. %7 = load i8** %b
  106. %8 = load i8** %5
  107. %9 = bitcast i8* %8 to i8* (i8*, i8*)*
  108. %10 = call i8* %9(i8* %6, i8* %7)
  109. ret i8* %10
  110. }
  111.  
  112. define i8* @__tq_block_invoke_2(i8*, i8*) {
  113. entry:
  114. %c = alloca i8*
  115. %__blk = alloca i8*
  116. store i8* %0, i8** %__blk
  117. store i8* %1, i8** %c
  118. %2 = load i8** %c
  119. ret i8* %2
  120. }
  121. --
  122. 2012-06-16 00:37:42.259 tranquil[92787:707] 'root' retval: 0x7fb058c11cb0: 123 (__NSCFNumber)
Add Comment
Please, Sign In to add comment