Advertisement
Guest User

Untitled

a guest
Mar 19th, 2019
71
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 25.69 KB | None | 0 0
  1. ; ModuleID = 'mono_aot_xBUIbi/temp.opt.bc'
  2. source_filename = "aot"
  3.  
  4. %MonoAotFileInfo = type { i32, i32, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i8*, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, i32, [11 x i32], [6 x i32], [6 x i32], [6 x i32], [6 x i32], [16 x i8] }
  5.  
  6. @method_info_offsets = internal constant [35 x i8] c"\0B\00\00\00\0A\00\00\00\02\00\00\00\02\00\00\00\00\00\0E\00\01\01\01\01\06\05\FF\FF\FF\FF\F1\10\01\01\13", align 8
  7. @extra_method_table = internal constant [148 x i8] c"\0B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\14\00\00\00\07\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00$\00\00\00\09\00\00\00\00\00\00\00\1C\00\00\00\08\00\00\00\0B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00,\00\00\00\0A\00\00\00\00\00\00\00", align 8
  8. @extra_method_info_offsets = internal constant [36 x i8] c"\04\00\00\00\07\00\00\00\14\00\00\00\08\00\00\00\1C\00\00\00\09\00\00\00$\00\00\00\0A\00\00\00,\00\00\00", align 8
  9. @class_name_table = internal constant [50 x i8] c"\0B\00\01\00\0B\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\00\02\00\00\00", align 8
  10. @got_info_offsets = internal constant [52 x i8] c"\1D\00\00\00\0A\00\00\00\03\00\00\00\02\00\00\00\00\00\0A\00\14\004\02\01\01\01\01\01\01\01\02A\02\02\02\02\02\02\02\02\1B\80\88)++(#!\1D\19", align 8
  11. @llvm_got_info_offsets = internal constant [64 x i8] c"$\00\00\00\0A\00\00\00\04\00\00\00\02\00\00\00\00\00\0B\00\16\00!\00\82g\02\01\01\01\01\01\01\01\02\82t\02\02\02\02\02\02\02\02\1B\82\BB)++(#!\1D\19\18\83\F7\03\03\03\04\03", align 8
  12. @ex_info_offsets = internal constant [38 x i8] c"\0B\00\00\00\0A\00\00\00\02\00\00\00\02\00\00\00\00\00\10\00\84\0A\05\05\05\05\05\FF\FF\FF\FB\DD\84(\05\05\847", align 8
  13. @class_info_offsets = internal constant [21 x i8] c"\02\00\00\00\0A\00\00\00\01\00\00\00\02\00\00\00\00\00\84<\07", align 8
  14. @image_table = internal constant [172 x i8] c"\02\00\00\00mscorlib\0015CD4655-8B75-42AB-9375-D34803B13D17\00\007cec85d7bea7798e\00\00\00\00\00\01\00\00\00\02\00\00\00\00\00\00\00\05\00\00\00\00\00\00\00NoThrowInline\006AA7137E-C668-40A9-BE43-4264F02EA0A3\00\00\00\00\00\00\00\00\00\00\00\00\00\00\01\00\00\00\00\00\00\00S\1B\00\00G{\00\00", align 8
  15. @weak_field_indexes = internal constant [4 x i8] zeroinitializer, align 8
  16. @blob = internal constant [1111 x i8] c"\00\00\00\00\04\04 \1F\1E\1D\04\03#\22!\00\00\00\00\00\FF\FC\00\00\00\16\1D\00\FF\FC\00\00\00\16\1D\01\FF\FC\00\00\00\16\1D\02\FF\FC\00\00\00\16\1D\03\0C\01$&.24 07\008\007\018\017\028\027\038\037\048\049\18mono_threads_attach_coop\00\07\19mini_llvmonly_init_method\00\07&mini_llvmonly_init_gshared_method_this\00\07(mini_llvmonly_init_gshared_method_mrgctx\00\07(mini_llvmonly_init_gshared_method_vtable\00\07%mini_llvmonly_throw_nullref_exception\00\07 mono_llvm_throw_corlib_exception\00\07\1Emini_llvmonly_init_vtable_slot\00\07\1Amono_helper_ldstr_mscorlib\00\07\16mono_fill_method_rgctx\00\07\15mono_fill_class_rgctx\00\07\17mono_threads_state_poll\00\03\C1\00\00\02\07\1Emono_create_corlib_exception_0\00\07\19mono_arch_throw_exception\00\03\C1\00\00\01\03\C1\00\00\03\03\FF\FC\00\00\00\19\02\03\97\C4\03\C1\00\00\04\07*llvm_throw_corlib_exception_abs_trampoline\00\03\86F\0C\01$&.24 07\008\007\018\017\028\027\038\037\048\049\18mono_threads_attach_coop\00\07\19mini_llvmonly_init_method\00\07&mini_llvmonly_init_gshared_method_this\00\07(mini_llvmonly_init_gshared_method_mrgctx\00\07(mini_llvmonly_init_gshared_method_vtable\00\07%mini_llvmonly_throw_nullref_exception\00\07 mono_llvm_throw_corlib_exception\00\07\1Emini_llvmonly_init_vtable_slot\00\07\1Amono_helper_ldstr_mscorlib\00\07\16mono_fill_method_rgctx\00\07\15mono_fill_class_rgctx\00\10\01\01\10\01\05\10\01\0B\10\01\13\0E\02\02\01\10\01\1D\10\017\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\18\00\00\00\00\00\80\90\10\00\00\01\04\80\90\10\00\00\01\99*\99'\99&\99#sgen\00", align 8
  17. @runtime_version = internal constant [1 x i8] zeroinitializer, align 8
  18. @assembly_guid = internal constant [37 x i8] c"6AA7137E-C668-40A9-BE43-4264F02EA0A3\00", align 8
  19. @assembly_name = internal constant [14 x i8] c"NoThrowInline\00", align 8
  20. @mono_aot_NoThrowInline_llvm_got = hidden global [36 x i64*] zeroinitializer
  21. @mono_inited = internal unnamed_addr global [5 x i8] zeroinitializer
  22. @NoThrowInline_unbox_tramp_indexes = local_unnamed_addr global [0 x i16] zeroinitializer
  23. @NoThrowInline_unbox_trampolines = local_unnamed_addr global [0 x i8*] zeroinitializer
  24. @mono_aot_file_info = local_unnamed_addr global %MonoAotFileInfo { i32 156, i32 0, i8* @mono_aot_NoThrowInlinejit_got, i8* bitcast ([36 x i64*]* @mono_aot_NoThrowInline_llvm_got to i8*), i8* bitcast (i8** @mono_aot_NoThrowInline_eh_frame to i8*), i8* bitcast (i8* (i32)* @mono_aot_NoThrowInline_get_method to i8*), i8* null, i8* null, i8* null, i8* @mono_aot_NoThrowInlinemethod_addresses, i8* null, i8* null, i8* getelementptr inbounds ([1111 x i8], [1111 x i8]* @blob, i32 0, i32 0), i8* getelementptr inbounds ([50 x i8], [50 x i8]* @class_name_table, i32 0, i32 0), i8* getelementptr inbounds ([21 x i8], [21 x i8]* @class_info_offsets, i32 0, i32 0), i8* getelementptr inbounds ([35 x i8], [35 x i8]* @method_info_offsets, i32 0, i32 0), i8* getelementptr inbounds ([38 x i8], [38 x i8]* @ex_info_offsets, i32 0, i32 0), i8* getelementptr inbounds ([36 x i8], [36 x i8]* @extra_method_info_offsets, i32 0, i32 0), i8* getelementptr inbounds ([148 x i8], [148 x i8]* @extra_method_table, i32 0, i32 0), i8* getelementptr inbounds ([52 x i8], [52 x i8]* @got_info_offsets, i32 0, i32 0), i8* getelementptr inbounds ([64 x i8], [64 x i8]* @llvm_got_info_offsets, i32 0, i32 0), i8* getelementptr inbounds ([172 x i8], [172 x i8]* @image_table, i32 0, i32 0), i8* getelementptr inbounds ([4 x i8], [4 x i8]* @weak_field_indexes, i32 0, i32 0), i8* null, i8* getelementptr inbounds ([37 x i8], [37 x i8]* @assembly_guid, i32 0, i32 0), i8* getelementptr inbounds ([1 x i8], [1 x i8]* @runtime_version, i32 0, i32 0), i8* null, i8* null, i8* null, i8* null, i8* null, i8* null, i8* null, i8* getelementptr inbounds ([14 x i8], [14 x i8]* @assembly_name, i32 0, i32 0), i8* @mono_aot_NoThrowInlineplt, i8* @mono_aot_NoThrowInlineplt_end, i8* @mono_aot_NoThrowInlineunwind_info, i8* @mono_aot_NoThrowInlineunbox_trampolines, i8* @mono_aot_NoThrowInlineunbox_trampolines_end, i8* @mono_aot_NoThrowInlineunbox_trampoline_addresses, i32 29, i32 328, i32 12, i32 10, i32 4, i32 35, i32 391211519, i32 63, i32 1106, i32 128, i32 8, i32 8, i32 8, i32 9, i32 8388607, i32 0, i32 29, i32 0, i32 0, i32 2, [11 x i32] zeroinitializer, [6 x i32] [i32 4096, i32 4096, i32 512, i32 512, i32 0, i32 0], [6 x i32] zeroinitializer, [6 x i32] zeroinitializer, [6 x i32] zeroinitializer, [16 x i8] c"\B2\A6\EDk\8C\8B\85)H~\E6\8B\B8\A2\E0\D4" }
  25. @mono_aot_NoThrowInlinejit_got = external hidden global i8
  26. @mono_aot_NoThrowInline_eh_frame = external global i8*
  27. @mono_aot_NoThrowInlinemethod_addresses = external hidden global i8
  28. @mono_aot_NoThrowInlineplt = external hidden global i8
  29. @mono_aot_NoThrowInlineplt_end = external hidden global i8
  30. @mono_aot_NoThrowInlineunwind_info = external hidden global i8
  31. @mono_aot_NoThrowInlineunbox_trampolines = external hidden global i8
  32. @mono_aot_NoThrowInlineunbox_trampolines_end = external hidden global i8
  33. @mono_aot_NoThrowInlineunbox_trampoline_addresses = external hidden global i8
  34. @llvm.used = appending global [13 x i8*] [i8* bitcast (i32 (i64*, i64*, i64*, i64*)* @NoThrowInline_MainClass_Bench_string_string_string_string to i8*), i8* bitcast (void (i64*)* @NoThrowInline_MainClass_Main_string__ to i8*), i8* bitcast (void (i64*)* @NoThrowInline_MainClass_TestMethod to i8*), i8* bitcast (void ()* @NoThrowInline_MainClass_ThrowArgumentNullException to i8*), i8* bitcast (void (i64*)* @NoThrowInline_MainClass_ThrowIfNull_string to i8*), i8* bitcast (void (i64*)* @NoThrowInline_MainClass__ctor to i8*), i8* bitcast (i32 (...)* @__gxx_personality_v0 to i8*), i8* bitcast (void (i32)* @init_method to i8*), i8* bitcast (void (i32, i64)* @init_method_gshared_mrgctx to i8*), i8* bitcast (void (i32, i64*)* @init_method_gshared_this to i8*), i8* bitcast (void (i32, i64)* @init_method_gshared_vtable to i8*), i8* bitcast (i8* (i32)* @mono_aot_NoThrowInline_get_method to i8*), i8* bitcast ([36 x i64*]* @mono_aot_NoThrowInline_llvm_got to i8*)], section "llvm.metadata"
  35.  
  36. ; Function Attrs: norecurse nounwind readnone
  37. define internal void @llvm_code_start() #0 {
  38. ENTRY:
  39. ret void
  40. }
  41.  
  42. ; Function Attrs: noinline
  43. define hidden monocc void @init_method(i32) #1 {
  44. ENTRY:
  45. %1 = load i64, i64* bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 4) to i64*), align 16
  46. %2 = load void (i64, i32)*, void (i64, i32)** bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 19) to void (i64, i32)**), align 8
  47. call void %2(i64 %1, i32 %0)
  48. %3 = sext i32 %0 to i64
  49. %4 = getelementptr [5 x i8], [5 x i8]* @mono_inited, i64 0, i64 %3
  50. store i8 1, i8* %4, align 1
  51. ret void
  52. }
  53.  
  54. ; Function Attrs: noinline
  55. define hidden monocc void @init_method_gshared_mrgctx(i32, i64) #1 {
  56. ENTRY:
  57. %2 = load i64, i64* bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 4) to i64*), align 16
  58. %3 = load void (i64, i32, i64)*, void (i64, i32, i64)** bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 21) to void (i64, i32, i64)**), align 8
  59. call void %3(i64 %2, i32 %0, i64 %1)
  60. %4 = sext i32 %0 to i64
  61. %5 = getelementptr [5 x i8], [5 x i8]* @mono_inited, i64 0, i64 %4
  62. store i8 1, i8* %5, align 1
  63. ret void
  64. }
  65.  
  66. ; Function Attrs: noinline
  67. define hidden monocc void @init_method_gshared_this(i32, i64*) #1 {
  68. ENTRY:
  69. %2 = load i64, i64* bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 4) to i64*), align 16
  70. %3 = load void (i64, i32, i64*)*, void (i64, i32, i64*)** bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 20) to void (i64, i32, i64*)**), align 16
  71. call void %3(i64 %2, i32 %0, i64* %1)
  72. %4 = sext i32 %0 to i64
  73. %5 = getelementptr [5 x i8], [5 x i8]* @mono_inited, i64 0, i64 %4
  74. store i8 1, i8* %5, align 1
  75. ret void
  76. }
  77.  
  78. ; Function Attrs: noinline
  79. define hidden monocc void @init_method_gshared_vtable(i32, i64) #1 {
  80. ENTRY:
  81. %2 = load i64, i64* bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 4) to i64*), align 16
  82. %3 = load void (i64, i32, i64)*, void (i64, i32, i64)** bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 22) to void (i64, i32, i64)**), align 16
  83. call void %3(i64 %2, i32 %0, i64 %1)
  84. %4 = sext i32 %0 to i64
  85. %5 = getelementptr [5 x i8], [5 x i8]* @mono_inited, i64 0, i64 %4
  86. store i8 1, i8* %5, align 1
  87. ret void
  88. }
  89.  
  90. declare i32 @__gxx_personality_v0(...) #2
  91.  
  92. ; Function Attrs: noinline uwtable
  93. define hidden monocc void @NoThrowInline_MainClass_ThrowIfNull_string(i64* readnone %arg_s) #3 {
  94. BB0:
  95. %GC_SAFE_POINT_FLAG_7 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 7), align 8, !invariant.load !15
  96. %0 = load volatile i64, i64* %GC_SAFE_POINT_FLAG_7, align 4
  97. %1 = icmp eq i64 %0, 0
  98. br i1 %1, label %BB2, label %POLL_BB3, !prof !16
  99.  
  100. POLL_BB3: ; preds = %BB0
  101. call void @p_1_plt__jit_icall_mono_threads_state_poll_llvm()
  102. br label %BB2
  103.  
  104. BB2: ; preds = %POLL_BB3, %BB0
  105. %2 = icmp eq i64* %arg_s, null
  106. br i1 %2, label %BB5, label %BB1
  107.  
  108. BB5: ; preds = %BB2
  109. notail call monocc void @NoThrowInline_MainClass_ThrowArgumentNullException()
  110. unreachable
  111.  
  112. BB1: ; preds = %BB2
  113. ret void
  114. }
  115.  
  116. declare hidden void @p_1_plt__jit_icall_mono_threads_state_poll_llvm() local_unnamed_addr #2
  117.  
  118. ; Function Attrs: noinline noreturn uwtable
  119. define hidden monocc void @NoThrowInline_MainClass_ThrowArgumentNullException() #4 {
  120. BB0:
  121. %GC_SAFE_POINT_FLAG_7 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 7), align 8, !invariant.load !15
  122. %0 = load volatile i64, i64* %GC_SAFE_POINT_FLAG_7, align 4
  123. %1 = icmp eq i64 %0, 0
  124. br i1 %1, label %BB2, label %POLL_BB3, !prof !16
  125.  
  126. POLL_BB3: ; preds = %BB0
  127. call void @p_1_plt__jit_icall_mono_threads_state_poll_llvm()
  128. br label %BB2
  129.  
  130. BB2: ; preds = %POLL_BB3, %BB0
  131. %2 = notail call i64* @p_3_plt__jit_icall_mono_create_corlib_exception_0_llvm(i64 33554605)
  132. call void @p_4_plt__jit_icall_mono_arch_throw_exception_llvm(i64* %2)
  133. unreachable
  134. }
  135.  
  136. declare hidden i64* @p_3_plt__jit_icall_mono_create_corlib_exception_0_llvm(i64) local_unnamed_addr #2
  137.  
  138. declare hidden void @p_4_plt__jit_icall_mono_arch_throw_exception_llvm(i64*) local_unnamed_addr #2
  139.  
  140. ; Function Attrs: noinline uwtable
  141. define hidden monocc i32 @NoThrowInline_MainClass_Bench_string_string_string_string(i64* %arg_a, i64* %arg_b, i64* %arg_c, i64* %arg_d) #3 {
  142. BB0:
  143. %GC_SAFE_POINT_FLAG_7 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 7), align 8, !invariant.load !15
  144. %0 = load volatile i64, i64* %GC_SAFE_POINT_FLAG_7, align 4
  145. %1 = icmp eq i64 %0, 0
  146. br i1 %1, label %BB2, label %POLL_BB3, !prof !16
  147.  
  148. POLL_BB3: ; preds = %BB0
  149. call void @p_1_plt__jit_icall_mono_threads_state_poll_llvm()
  150. br label %BB2
  151.  
  152. BB2: ; preds = %POLL_BB3, %BB0
  153. notail call monocc void @NoThrowInline_MainClass_ThrowIfNull_string(i64* %arg_a)
  154. notail call monocc void @NoThrowInline_MainClass_ThrowIfNull_string(i64* %arg_b)
  155. notail call monocc void @NoThrowInline_MainClass_ThrowIfNull_string(i64* %arg_c)
  156. notail call monocc void @NoThrowInline_MainClass_ThrowIfNull_string(i64* %arg_d)
  157. %2 = getelementptr i64, i64* %arg_a, i64 2
  158. %3 = bitcast i64* %2 to i32*
  159. %t50 = load volatile i32, i32* %3, align 4
  160. %4 = getelementptr i64, i64* %arg_b, i64 2
  161. %5 = bitcast i64* %4 to i32*
  162. %t52 = load volatile i32, i32* %5, align 4
  163. %t53 = add i32 %t52, %t50
  164. %6 = getelementptr i64, i64* %arg_c, i64 2
  165. %7 = bitcast i64* %6 to i32*
  166. %t55 = load volatile i32, i32* %7, align 4
  167. %t56 = add i32 %t53, %t55
  168. %8 = getelementptr i64, i64* %arg_d, i64 2
  169. %9 = bitcast i64* %8 to i32*
  170. %t58 = load volatile i32, i32* %9, align 4
  171. %t61 = add i32 %t56, %t58
  172. ret i32 %t61
  173. }
  174.  
  175. ; Function Attrs: noinline uwtable
  176. define hidden monocc void @NoThrowInline_MainClass_TestMethod(i64* nocapture readnone %this) #3 {
  177. BB0:
  178. %is_inited = load i8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @mono_inited, i64 0, i64 3), align 1
  179. %0 = icmp eq i8 %is_inited, 0
  180. br i1 %0, label %NOTINITED_BB5, label %INITED_BB2, !prof !17
  181.  
  182. INITED_BB2: ; preds = %NOTINITED_BB5, %BB0
  183. %GC_SAFE_POINT_FLAG_7 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 7), align 8, !invariant.load !15
  184. %1 = load volatile i64, i64* %GC_SAFE_POINT_FLAG_7, align 4
  185. %2 = icmp eq i64 %1, 0
  186. br i1 %2, label %BB2, label %POLL_BB3, !prof !16
  187.  
  188. POLL_BB3: ; preds = %INITED_BB2
  189. call void @p_1_plt__jit_icall_mono_threads_state_poll_llvm()
  190. br label %BB2
  191.  
  192. BB2: ; preds = %POLL_BB3, %INITED_BB2
  193. %LDSTR_29 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 29), align 8, !invariant.load !15
  194. %LDSTR_30 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 30), align 16, !invariant.load !15
  195. %LDSTR_31 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 31), align 8, !invariant.load !15
  196. %LDSTR_32 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 32), align 16, !invariant.load !15
  197. %3 = notail call monocc i32 @NoThrowInline_MainClass_Bench_string_string_string_string(i64* %LDSTR_29, i64* %LDSTR_30, i64* %LDSTR_31, i64* %LDSTR_32)
  198. ret void
  199.  
  200. NOTINITED_BB5: ; preds = %BB0
  201. call monocc void @init_method(i32 3)
  202. br label %INITED_BB2
  203. }
  204.  
  205. ; Function Attrs: noinline uwtable
  206. define hidden monocc void @NoThrowInline_MainClass_Main_string__(i64* %arg_args) #3 {
  207. BB0:
  208. %is_inited = load i8, i8* getelementptr inbounds ([5 x i8], [5 x i8]* @mono_inited, i64 0, i64 4), align 1
  209. %0 = icmp eq i8 %is_inited, 0
  210. br i1 %0, label %NOTINITED_BB10, label %INITED_BB2, !prof !17
  211.  
  212. INITED_BB2: ; preds = %NOTINITED_BB10, %BB0
  213. %GC_SAFE_POINT_FLAG_7 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 7), align 8, !invariant.load !15
  214. %1 = load volatile i64, i64* %GC_SAFE_POINT_FLAG_7, align 4
  215. %2 = icmp eq i64 %1, 0
  216. br i1 %2, label %BB2, label %POLL_BB3, !prof !16
  217.  
  218. POLL_BB3: ; preds = %INITED_BB2
  219. call void @p_1_plt__jit_icall_mono_threads_state_poll_llvm()
  220. br label %BB2
  221.  
  222. BB2: ; preds = %POLL_BB3, %INITED_BB2
  223. %VTABLE_331 = load i64, i64* bitcast (i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 33) to i64*), align 8, !invariant.load !15
  224. %3 = notail call monocc i64* @p_7_plt_wrapper_alloc_object_AllocSmall_intptr_intptr_llvm(i64 %VTABLE_331, i64 16)
  225. %4 = getelementptr i64, i64* %arg_args, i64 3
  226. %5 = bitcast i64* %4 to i32*
  227. %t29 = load volatile i32, i32* %5, align 4
  228. %6 = icmp eq i32 %t29, 0
  229. br i1 %6, label %BB4.thread, label %BB5
  230.  
  231. BB4.thread: ; preds = %BB2
  232. %LDSTR_343 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 34), align 16, !invariant.load !15
  233. notail call monocc void @p_8_plt_System_Console_WriteLine_string_llvm(i64* %LDSTR_343)
  234. br label %BB7.lr.ph
  235.  
  236. BB4: ; preds = %BB5
  237. %7 = getelementptr i64, i64* %arg_args, i64 4
  238. %8 = bitcast i64* %7 to i64**
  239. %t532 = load i64*, i64** %8, align 8
  240. %9 = notail call monocc i32 @p_11_plt_System_Convert_ToInt32_string_llvm(i64* %t532)
  241. %LDSTR_34 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 34), align 16, !invariant.load !15
  242. notail call monocc void @p_8_plt_System_Console_WriteLine_string_llvm(i64* %LDSTR_34)
  243. %10 = icmp sgt i32 %9, 0
  244. br i1 %10, label %BB7.lr.ph, label %BB8
  245.  
  246. BB7.lr.ph: ; preds = %BB4.thread, %BB4
  247. %11 = phi i32 [ 700000, %BB4.thread ], [ %9, %BB4 ]
  248. br label %BB7
  249.  
  250. BB5: ; preds = %BB2
  251. %t74 = load volatile i32, i32* %5, align 4
  252. %12 = icmp eq i32 %t74, 0
  253. br i1 %12, label %EX_BB7, label %BB4
  254.  
  255. BB7: ; preds = %BB7.lr.ph, %CONT_BB6
  256. %13 = phi i32 [ 0, %BB7.lr.ph ], [ %t72, %CONT_BB6 ]
  257. %14 = load volatile i64, i64* %GC_SAFE_POINT_FLAG_7, align 4
  258. %15 = icmp eq i64 %14, 0
  259. br i1 %15, label %CONT_BB6, label %POLL_BB5, !prof !16
  260.  
  261. BB8: ; preds = %CONT_BB6, %BB4
  262. %LDSTR_35 = load i64*, i64** getelementptr inbounds ([36 x i64*], [36 x i64*]* @mono_aot_NoThrowInline_llvm_got, i64 0, i64 35), align 8, !invariant.load !15
  263. notail call monocc void @p_8_plt_System_Console_WriteLine_string_llvm(i64* %LDSTR_35)
  264. ret void
  265.  
  266. POLL_BB5: ; preds = %BB7
  267. call void @p_1_plt__jit_icall_mono_threads_state_poll_llvm()
  268. br label %CONT_BB6
  269.  
  270. CONT_BB6: ; preds = %POLL_BB5, %BB7
  271. notail call monocc void @NoThrowInline_MainClass_TestMethod(i64* undef)
  272. %t72 = add nuw nsw i32 %13, 1
  273. %16 = icmp slt i32 %t72, %11
  274. br i1 %16, label %BB7, label %BB8
  275.  
  276. EX_BB7: ; preds = %BB5
  277. call void @p_10_plt__jit_icall_llvm_throw_corlib_exception_abs_trampoline_llvm(i32 254)
  278. unreachable
  279.  
  280. NOTINITED_BB10: ; preds = %BB0
  281. call monocc void @init_method(i32 4)
  282. br label %INITED_BB2
  283. }
  284.  
  285. declare hidden i64* @p_7_plt_wrapper_alloc_object_AllocSmall_intptr_intptr_llvm(i64, i64) local_unnamed_addr #2
  286.  
  287. declare hidden void @p_8_plt_System_Console_WriteLine_string_llvm(i64*) local_unnamed_addr #2
  288.  
  289. declare hidden void @p_10_plt__jit_icall_llvm_throw_corlib_exception_abs_trampoline_llvm(i32) local_unnamed_addr #2
  290.  
  291. declare hidden i32 @p_11_plt_System_Convert_ToInt32_string_llvm(i64*) local_unnamed_addr #2
  292.  
  293. ; Function Attrs: noinline norecurse nounwind readnone uwtable
  294. define hidden monocc void @NoThrowInline_MainClass__ctor(i64* nocapture %this) #5 {
  295. BB0:
  296. ret void
  297. }
  298.  
  299. ; Function Attrs: norecurse nounwind readnone
  300. define internal void @llvm_code_end() #0 {
  301. ENTRY:
  302. ret void
  303. }
  304.  
  305. ; Function Attrs: norecurse nounwind readnone
  306. define hidden i8* @mono_aot_NoThrowInline_get_method(i32) #0 {
  307. ENTRY:
  308. switch i32 %0, label %FAIL [
  309. i32 -1, label %BB_CODE_START
  310. i32 -2, label %BB_CODE_END
  311. i32 0, label %BB_0
  312. i32 1, label %BB_1
  313. i32 2, label %BB_2
  314. i32 3, label %BB_3
  315. i32 4, label %BB_4
  316. i32 5, label %BB_5
  317. i32 6, label %BB_6
  318. i32 7, label %BB_7
  319. i32 8, label %BB_8
  320. i32 9, label %BB_9
  321. i32 10, label %BB_10
  322. ]
  323.  
  324. BB_CODE_START: ; preds = %FAIL, %BB_10, %BB_9, %BB_8, %BB_7, %BB_6, %BB_5, %BB_4, %BB_3, %BB_2, %BB_1, %BB_0, %BB_CODE_END, %ENTRY
  325. %merge = phi i8* [ bitcast (void ()* @llvm_code_start to i8*), %ENTRY ], [ bitcast (void ()* @llvm_code_end to i8*), %BB_CODE_END ], [ bitcast (void (i64*)* @NoThrowInline_MainClass_ThrowIfNull_string to i8*), %BB_0 ], [ bitcast (void ()* @NoThrowInline_MainClass_ThrowArgumentNullException to i8*), %BB_1 ], [ bitcast (i32 (i64*, i64*, i64*, i64*)* @NoThrowInline_MainClass_Bench_string_string_string_string to i8*), %BB_2 ], [ bitcast (void (i64*)* @NoThrowInline_MainClass_TestMethod to i8*), %BB_3 ], [ bitcast (void (i64*)* @NoThrowInline_MainClass_Main_string__ to i8*), %BB_4 ], [ bitcast (void (i64*)* @NoThrowInline_MainClass__ctor to i8*), %BB_5 ], [ null, %BB_6 ], [ bitcast (void (i32)* @init_method to i8*), %BB_7 ], [ bitcast (void (i32, i64)* @init_method_gshared_mrgctx to i8*), %BB_8 ], [ bitcast (void (i32, i64*)* @init_method_gshared_this to i8*), %BB_9 ], [ bitcast (void (i32, i64)* @init_method_gshared_vtable to i8*), %BB_10 ], [ null, %FAIL ]
  326. ret i8* %merge
  327.  
  328. BB_CODE_END: ; preds = %ENTRY
  329. br label %BB_CODE_START
  330.  
  331. BB_0: ; preds = %ENTRY
  332. br label %BB_CODE_START
  333.  
  334. BB_1: ; preds = %ENTRY
  335. br label %BB_CODE_START
  336.  
  337. BB_2: ; preds = %ENTRY
  338. br label %BB_CODE_START
  339.  
  340. BB_3: ; preds = %ENTRY
  341. br label %BB_CODE_START
  342.  
  343. BB_4: ; preds = %ENTRY
  344. br label %BB_CODE_START
  345.  
  346. BB_5: ; preds = %ENTRY
  347. br label %BB_CODE_START
  348.  
  349. BB_6: ; preds = %ENTRY
  350. br label %BB_CODE_START
  351.  
  352. BB_7: ; preds = %ENTRY
  353. br label %BB_CODE_START
  354.  
  355. BB_8: ; preds = %ENTRY
  356. br label %BB_CODE_START
  357.  
  358. BB_9: ; preds = %ENTRY
  359. br label %BB_CODE_START
  360.  
  361. BB_10: ; preds = %ENTRY
  362. br label %BB_CODE_START
  363.  
  364. FAIL: ; preds = %ENTRY
  365. br label %BB_CODE_START
  366. }
  367.  
  368. attributes #0 = { norecurse nounwind readnone "disable-tail-calls"="true" }
  369. attributes #1 = { noinline "disable-tail-calls"="true" }
  370. attributes #2 = { "disable-tail-calls"="true" }
  371. attributes #3 = { noinline uwtable "disable-tail-calls"="true" }
  372. attributes #4 = { noinline noreturn uwtable "disable-tail-calls"="true" }
  373. attributes #5 = { noinline norecurse nounwind readnone uwtable "disable-tail-calls"="true" }
  374.  
  375. !llvm.dbg.cu = !{!0}
  376. !mono.function_indexes = !{!3, !4, !5, !6, !7, !8, !9, !10, !11, !12}
  377. !llvm.module.flags = !{!13, !14}
  378.  
  379. !0 = distinct !DICompileUnit(language: DW_LANG_C99, file: !1, producer: "Mono AOT Compiler 6.1.0 (init_transition/3bfe06efcae Thu Mar 14 12:28:07 EDT 2019) (LLVM)", isOptimized: true, runtimeVersion: 0, emissionKind: FullDebug, enums: !2)
  380. !1 = !DIFile(filename: "NoThrowInline.exe", directory: ".")
  381. !2 = !{}
  382. !3 = !{!"NoThrowInline_MainClass_ThrowIfNull_string", i32 0}
  383. !4 = !{!"NoThrowInline_MainClass_ThrowArgumentNullException", i32 1}
  384. !5 = !{!"NoThrowInline_MainClass_Bench_string_string_string_string", i32 2}
  385. !6 = !{!"NoThrowInline_MainClass_TestMethod", i32 3}
  386. !7 = !{!"NoThrowInline_MainClass_Main_string__", i32 4}
  387. !8 = !{!"NoThrowInline_MainClass__ctor", i32 5}
  388. !9 = !{!"init_method", i32 7}
  389. !10 = !{!"init_method_gshared_mrgctx", i32 8}
  390. !11 = !{!"init_method_gshared_this", i32 9}
  391. !12 = !{!"init_method_gshared_vtable", i32 10}
  392. !13 = !{i32 2, !"Dwarf Version", i32 2}
  393. !14 = !{i32 2, !"Debug Info Version", i64 3}
  394. !15 = !{!"<index>"}
  395. !16 = !{!"branch_weights", i32 2000, i32 1}
  396. !17 = !{!"branch_weights", i32 1, i32 2000}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement