tree: e7b7fa3e1c53e1e46c0c89f2eba789c5c56ce761 [path history] [tgz]
  1. building/
  2. const_prop/
  3. copy-prop/
  4. dataflow-const-prop/
  5. dead-store-elimination/
  6. dest-prop/
  7. inline/
  8. instsimplify/
  9. issues/
  10. nll/
  11. pre-codegen/
  12. sroa/
  13. unnamed-fields/
  14. address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
  15. address_of.borrow_and_cast.SimplifyCfg-initial.after.mir
  16. address_of.rs
  17. array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  18. array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  19. array_index_is_temporary.rs
  20. asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir
  21. asm_unwind_panic_abort.rs
  22. async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-abort.mir
  23. async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
  24. async_closure_shims.main-{closure#0}-{closure#0}.coroutine_closure_by_move.0.panic-abort.mir
  25. async_closure_shims.main-{closure#0}-{closure#0}.coroutine_closure_by_move.0.panic-unwind.mir
  26. async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-abort.mir
  27. async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-unwind.mir
  28. async_closure_shims.rs
  29. basic_assignment.main.ElaborateDrops.diff
  30. basic_assignment.main.SimplifyCfg-initial.after.mir
  31. basic_assignment.rs
  32. box_expr.main.ElaborateDrops.diff
  33. box_expr.rs
  34. byte_slice.main.SimplifyCfg-pre-optimizations.after.mir
  35. byte_slice.rs
  36. const_allocation.main.GVN.after.32bit.mir
  37. const_allocation.main.GVN.after.64bit.mir
  38. const_allocation.rs
  39. const_allocation2.main.GVN.after.32bit.mir
  40. const_allocation2.main.GVN.after.64bit.mir
  41. const_allocation2.rs
  42. const_allocation3.main.GVN.after.32bit.mir
  43. const_allocation3.main.GVN.after.64bit.mir
  44. const_allocation3.rs
  45. const_debuginfo.main.ConstDebugInfo.diff
  46. const_debuginfo.rs
  47. const_goto_const_eval_fail.f.JumpThreading.diff
  48. const_goto_const_eval_fail.rs
  49. const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-pre-optimizations.after.mir
  50. const_promotion_extern_static.BAR.PromoteTemps.diff
  51. const_promotion_extern_static.BOP.built.after.mir
  52. const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-pre-optimizations.after.mir
  53. const_promotion_extern_static.FOO.PromoteTemps.diff
  54. const_promotion_extern_static.rs
  55. coroutine_drop_cleanup.main-{closure#0}.coroutine_drop.0.panic-abort.mir
  56. coroutine_drop_cleanup.main-{closure#0}.coroutine_drop.0.panic-unwind.mir
  57. coroutine_drop_cleanup.rs
  58. coroutine_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir
  59. coroutine_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir
  60. coroutine_storage_dead_unwind.rs
  61. coroutine_tiny.main-{closure#0}.coroutine_resume.0.mir
  62. coroutine_tiny.rs
  63. deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
  64. deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
  65. deduplicate_blocks.rs
  66. derefer_complex_case.main.Derefer.panic-abort.diff
  67. derefer_complex_case.main.Derefer.panic-unwind.diff
  68. derefer_complex_case.rs
  69. derefer_inline_test.main.Derefer.panic-abort.diff
  70. derefer_inline_test.main.Derefer.panic-unwind.diff
  71. derefer_inline_test.rs
  72. derefer_terminator_test.main.Derefer.panic-abort.diff
  73. derefer_terminator_test.main.Derefer.panic-unwind.diff
  74. derefer_terminator_test.rs
  75. derefer_test.main.Derefer.diff
  76. derefer_test.rs
  77. derefer_test_multiple.main.Derefer.diff
  78. derefer_test_multiple.rs
  79. dont_inline_type_id.call.Inline.diff
  80. dont_inline_type_id.rs
  81. early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff
  82. early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff
  83. early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff
  84. early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff
  85. early_otherwise_branch.rs
  86. early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff
  87. early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff
  88. early_otherwise_branch_3_element_tuple.rs
  89. early_otherwise_branch_68867.rs
  90. early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
  91. early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff
  92. early_otherwise_branch_noopt.rs
  93. early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff
  94. early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff
  95. early_otherwise_branch_soundness.rs
  96. enum_opt.cand.EnumSizeOpt.32bit.diff
  97. enum_opt.cand.EnumSizeOpt.64bit.diff
  98. enum_opt.invalid.EnumSizeOpt.32bit.diff
  99. enum_opt.invalid.EnumSizeOpt.64bit.diff
  100. enum_opt.rs
  101. enum_opt.trunc.EnumSizeOpt.32bit.diff
  102. enum_opt.trunc.EnumSizeOpt.64bit.diff
  103. enum_opt.unin.EnumSizeOpt.32bit.diff
  104. enum_opt.unin.EnumSizeOpt.64bit.diff
  105. fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir
  106. fn_ptr_shim.rs
  107. funky_arms.float_to_exponential_common.GVN.panic-abort.diff
  108. funky_arms.float_to_exponential_common.GVN.panic-unwind.diff
  109. funky_arms.rs
  110. graphviz.main.built.after.dot
  111. graphviz.rs
  112. gvn.arithmetic.GVN.panic-abort.diff
  113. gvn.arithmetic.GVN.panic-unwind.diff
  114. gvn.arithmetic_checked.GVN.panic-abort.diff
  115. gvn.arithmetic_checked.GVN.panic-unwind.diff
  116. gvn.arithmetic_float.GVN.panic-abort.diff
  117. gvn.arithmetic_float.GVN.panic-unwind.diff
  118. gvn.cast.GVN.panic-abort.diff
  119. gvn.cast.GVN.panic-unwind.diff
  120. gvn.comparison.GVN.panic-abort.diff
  121. gvn.comparison.GVN.panic-unwind.diff
  122. gvn.constant_index_overflow.GVN.panic-abort.diff
  123. gvn.constant_index_overflow.GVN.panic-unwind.diff
  124. gvn.dereferences.GVN.panic-abort.diff
  125. gvn.dereferences.GVN.panic-unwind.diff
  126. gvn.duplicate_slice.GVN.panic-abort.diff
  127. gvn.duplicate_slice.GVN.panic-unwind.diff
  128. gvn.fn_pointers.GVN.panic-abort.diff
  129. gvn.fn_pointers.GVN.panic-unwind.diff
  130. gvn.indirect_static.GVN.panic-abort.diff
  131. gvn.indirect_static.GVN.panic-unwind.diff
  132. gvn.multiple_branches.GVN.panic-abort.diff
  133. gvn.multiple_branches.GVN.panic-unwind.diff
  134. gvn.references.GVN.panic-abort.diff
  135. gvn.references.GVN.panic-unwind.diff
  136. gvn.repeat.GVN.panic-abort.diff
  137. gvn.repeat.GVN.panic-unwind.diff
  138. gvn.repeated_index.GVN.panic-abort.diff
  139. gvn.repeated_index.GVN.panic-unwind.diff
  140. gvn.rs
  141. gvn.slices.GVN.panic-abort.diff
  142. gvn.slices.GVN.panic-unwind.diff
  143. gvn.subexpression_elimination.GVN.panic-abort.diff
  144. gvn.subexpression_elimination.GVN.panic-unwind.diff
  145. gvn.unary.GVN.panic-abort.diff
  146. gvn.unary.GVN.panic-unwind.diff
  147. gvn.wide_ptr_integer.GVN.panic-abort.diff
  148. gvn.wide_ptr_integer.GVN.panic-unwind.diff
  149. gvn.wide_ptr_provenance.GVN.panic-abort.diff
  150. gvn.wide_ptr_provenance.GVN.panic-unwind.diff
  151. gvn.wide_ptr_same_provenance.GVN.panic-abort.diff
  152. gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff
  153. gvn.wrap_unwrap.GVN.panic-abort.diff
  154. gvn.wrap_unwrap.GVN.panic-unwind.diff
  155. gvn_copy_moves.fn0.GVN.diff
  156. gvn_copy_moves.rs
  157. gvn_uninhabited.f.GVN.panic-abort.diff
  158. gvn_uninhabited.f.GVN.panic-unwind.diff
  159. gvn_uninhabited.rs
  160. if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff
  161. if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff
  162. if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff
  163. if_condition_int.opt_char.SimplifyComparisonIntegral.diff
  164. if_condition_int.opt_i8.SimplifyComparisonIntegral.diff
  165. if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff
  166. if_condition_int.opt_negative.SimplifyComparisonIntegral.diff
  167. if_condition_int.opt_u32.SimplifyComparisonIntegral.diff
  168. if_condition_int.rs
  169. inline_coroutine_body.rs
  170. inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff
  171. inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff
  172. inline_generically_if_sized.call.Inline.diff
  173. inline_generically_if_sized.rs
  174. instrument_coverage.bar.InstrumentCoverage.diff
  175. instrument_coverage.main.InstrumentCoverage.diff
  176. instrument_coverage.rs
  177. instrument_coverage_cleanup.main.CleanupPostBorrowck.diff
  178. instrument_coverage_cleanup.main.InstrumentCoverage.diff
  179. instrument_coverage_cleanup.rs
  180. issue_101973.inner.GVN.panic-abort.diff
  181. issue_101973.inner.GVN.panic-unwind.diff
  182. issue_101973.rs
  183. issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir
  184. issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir
  185. issue_104451_unwindable_intrinsics.rs
  186. issue_120925_unsafefncast.rs
  187. issue_38669.main.SimplifyCfg-initial.after.mir
  188. issue_38669.rs
  189. issue_41110.main.ElaborateDrops.panic-abort.diff
  190. issue_41110.main.ElaborateDrops.panic-unwind.diff
  191. issue_41110.rs
  192. issue_41110.test.ElaborateDrops.panic-abort.diff
  193. issue_41110.test.ElaborateDrops.panic-unwind.diff
  194. issue_41697.rs
  195. issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir
  196. issue_41888.main.ElaborateDrops.panic-abort.diff
  197. issue_41888.main.ElaborateDrops.panic-unwind.diff
  198. issue_41888.rs
  199. issue_62289.rs
  200. issue_62289.test.ElaborateDrops.before.panic-abort.mir
  201. issue_62289.test.ElaborateDrops.before.panic-unwind.mir
  202. issue_72181.bar.built.after.mir
  203. issue_72181.foo.built.after.mir
  204. issue_72181.main.built.after.mir
  205. issue_72181.rs
  206. issue_72181_1.f.built.after.mir
  207. issue_72181_1.main.built.after.mir
  208. issue_72181_1.rs
  209. issue_76432.rs
  210. issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff
  211. issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff
  212. issue_78192.f.InstSimplify.diff
  213. issue_78192.rs
  214. issue_91633.bar.built.after.mir
  215. issue_91633.foo.built.after.mir
  216. issue_91633.fun.built.after.mir
  217. issue_91633.hey.built.after.mir
  218. issue_91633.rs
  219. issue_99325.main.built.after.32bit.mir
  220. issue_99325.main.built.after.64bit.mir
  221. issue_99325.rs
  222. jump_threading.aggregate.JumpThreading.panic-abort.diff
  223. jump_threading.aggregate.JumpThreading.panic-unwind.diff
  224. jump_threading.assume.JumpThreading.panic-abort.diff
  225. jump_threading.assume.JumpThreading.panic-unwind.diff
  226. jump_threading.custom_discr.JumpThreading.panic-abort.diff
  227. jump_threading.custom_discr.JumpThreading.panic-unwind.diff
  228. jump_threading.dfa.JumpThreading.panic-abort.diff
  229. jump_threading.dfa.JumpThreading.panic-unwind.diff
  230. jump_threading.disappearing_bb.JumpThreading.panic-abort.diff
  231. jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff
  232. jump_threading.duplicate_chain.JumpThreading.panic-abort.diff
  233. jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff
  234. jump_threading.identity.JumpThreading.panic-abort.diff
  235. jump_threading.identity.JumpThreading.panic-unwind.diff
  236. jump_threading.multiple_match.JumpThreading.panic-abort.diff
  237. jump_threading.multiple_match.JumpThreading.panic-unwind.diff
  238. jump_threading.mutable_ref.JumpThreading.panic-abort.diff
  239. jump_threading.mutable_ref.JumpThreading.panic-unwind.diff
  240. jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff
  241. jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff
  242. jump_threading.renumbered_bb.JumpThreading.panic-abort.diff
  243. jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff
  244. jump_threading.rs
  245. jump_threading.too_complex.JumpThreading.panic-abort.diff
  246. jump_threading.too_complex.JumpThreading.panic-unwind.diff
  247. loop_test.main.SimplifyCfg-promote-consts.after.mir
  248. loop_test.rs
  249. lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff
  250. lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff
  251. lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff
  252. lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff
  253. lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff
  254. lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff
  255. lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff
  256. lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff
  257. lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff
  258. lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff
  259. lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff
  260. lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff
  261. lower_array_len.rs
  262. lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff
  263. lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff
  264. lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff
  265. lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff
  266. lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff
  267. lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff
  268. lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff
  269. lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff
  270. lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff
  271. lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff
  272. lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff
  273. lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff
  274. lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff
  275. lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff
  276. lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff
  277. lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff
  278. lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff
  279. lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff
  280. lower_intrinsics.rs
  281. lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff
  282. lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff
  283. lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff
  284. lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff
  285. lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff
  286. lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff
  287. lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff
  288. lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff
  289. lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff
  290. lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff
  291. lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff
  292. lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff
  293. lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff
  294. lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff
  295. lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff
  296. lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff
  297. lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff
  298. lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff
  299. lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff
  300. lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff
  301. lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff
  302. lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff
  303. lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff
  304. lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff
  305. lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff
  306. lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff
  307. lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff
  308. lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff
  309. lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff
  310. lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff
  311. lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff
  312. lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff
  313. lower_slice_len.rs
  314. match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff
  315. match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff
  316. match_arm_scopes.rs
  317. matches_reduce_branches.bar.MatchBranchSimplification.diff
  318. matches_reduce_branches.foo.MatchBranchSimplification.diff
  319. matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff
  320. matches_reduce_branches.match_i16_i8.MatchBranchSimplification.diff
  321. matches_reduce_branches.match_i8_i16.MatchBranchSimplification.diff
  322. matches_reduce_branches.match_i8_i16_failed.MatchBranchSimplification.diff
  323. matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff
  324. matches_reduce_branches.match_u8_i16.MatchBranchSimplification.diff
  325. matches_reduce_branches.match_u8_i16_2.MatchBranchSimplification.diff
  326. matches_reduce_branches.match_u8_i16_failed.MatchBranchSimplification.diff
  327. matches_reduce_branches.match_u8_i16_fallback.MatchBranchSimplification.diff
  328. matches_reduce_branches.match_u8_u16.MatchBranchSimplification.diff
  329. matches_reduce_branches.match_u8_u16_2.MatchBranchSimplification.diff
  330. matches_reduce_branches.rs
  331. matches_u8.exhaustive_match.MatchBranchSimplification.diff
  332. matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff
  333. matches_u8.rs
  334. multiple_return_terminators.rs
  335. multiple_return_terminators.test.MultipleReturnTerminators.diff
  336. no_drop_for_inactive_variant.rs
  337. no_drop_for_inactive_variant.unwrap.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  338. no_drop_for_inactive_variant.unwrap.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  339. no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir
  340. no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir
  341. no_spurious_drop_after_call.rs
  342. nrvo_miscompile_111005.rs
  343. nrvo_miscompile_111005.wrong.RenameReturnPlace.diff
  344. nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff
  345. nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff
  346. nrvo_simple.rs
  347. packed_struct_drop_aligned.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  348. packed_struct_drop_aligned.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  349. packed_struct_drop_aligned.rs
  350. README.md
  351. reference_prop.debuginfo.ReferencePropagation.diff
  352. reference_prop.dominate_storage.ReferencePropagation.diff
  353. reference_prop.maybe_dead.ReferencePropagation.diff
  354. reference_prop.multiple_storage.ReferencePropagation.diff
  355. reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff
  356. reference_prop.read_through_raw.ReferencePropagation.diff
  357. reference_prop.reference_propagation.ReferencePropagation.diff
  358. reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff
  359. reference_prop.reference_propagation_mut.ReferencePropagation.diff
  360. reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff
  361. reference_prop.rs
  362. reference_prop.unique_with_copies.ReferencePropagation.diff
  363. remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff
  364. remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff
  365. remove_fake_borrows.rs
  366. remove_never_const.no_codegen.PreCodegen.after.mir
  367. remove_never_const.rs
  368. remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff
  369. remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff
  370. remove_storage_markers.rs
  371. remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff
  372. remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff
  373. remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff
  374. remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff
  375. remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff
  376. remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff
  377. remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff
  378. remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff
  379. remove_unneeded_drops.rs
  380. remove_zsts.get_union.PreCodegen.after.mir
  381. remove_zsts.get_union.RemoveZsts.diff
  382. remove_zsts.rs
  383. retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  384. retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  385. retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  386. retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  387. retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir
  388. retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir
  389. retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  390. retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  391. retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  392. retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  393. retag.rs
  394. retag.{impl#0}-foo.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  395. retag.{impl#0}-foo.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  396. retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir
  397. retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
  398. return_an_array.rs
  399. separate_const_switch.identity.JumpThreading.diff
  400. separate_const_switch.rs
  401. separate_const_switch.too_complex.JumpThreading.diff
  402. set_no_discriminant.f.JumpThreading.diff
  403. set_no_discriminant.generic.JumpThreading.diff
  404. set_no_discriminant.rs
  405. simplify_arm.id_try.SimplifyArmIdentity.diff
  406. simplify_arm.id_try.SimplifyBranchSame.diff
  407. simplify_arm.rs
  408. simplify_arm_identity.rs
  409. simplify_cfg.main.SimplifyCfg-initial.diff
  410. simplify_cfg.main.SimplifyCfg-post-analysis.diff
  411. simplify_cfg.rs
  412. simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff
  413. simplify_dead_blocks.rs
  414. simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff
  415. simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff
  416. simplify_if.rs
  417. simplify_locals.c.SimplifyLocals-before-const-prop.diff
  418. simplify_locals.d1.SimplifyLocals-before-const-prop.diff
  419. simplify_locals.d2.SimplifyLocals-before-const-prop.diff
  420. simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff
  421. simplify_locals.r.SimplifyLocals-before-const-prop.diff
  422. simplify_locals.rs
  423. simplify_locals.t1.SimplifyLocals-before-const-prop.diff
  424. simplify_locals.t2.SimplifyLocals-before-const-prop.diff
  425. simplify_locals.t3.SimplifyLocals-before-const-prop.diff
  426. simplify_locals.t4.SimplifyLocals-before-const-prop.diff
  427. simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff
  428. simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff
  429. simplify_locals_fixedpoint.rs
  430. simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff
  431. simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff
  432. simplify_locals_removes_unused_consts.rs
  433. simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff
  434. simplify_locals_removes_unused_discriminant_reads.rs
  435. simplify_match.main.GVN.panic-abort.diff
  436. simplify_match.main.GVN.panic-unwind.diff
  437. simplify_match.rs
  438. simplify_try_if_let.rs
  439. simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff
  440. slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir
  441. slice_drop_shim.rs
  442. ssa_unreachable_116212.rs
  443. storage_ranges.main.nll.0.mir
  444. storage_ranges.rs
  445. switch_to_self.rs
  446. switch_to_self.test.MatchBranchSimplification.diff
  447. tls_access.main.PreCodegen.after.mir
  448. tls_access.rs
  449. uninhabited_enum.process_never.SimplifyLocals-final.after.mir
  450. uninhabited_enum.process_void.SimplifyLocals-final.after.mir
  451. uninhabited_enum.rs
  452. uninhabited_fallthrough_elimination.eliminate_fallthrough.UnreachableEnumBranching.diff
  453. uninhabited_fallthrough_elimination.keep_fallthrough.UnreachableEnumBranching.diff
  454. uninhabited_fallthrough_elimination.rs
  455. unreachable.as_match.UnreachablePropagation.panic-abort.diff
  456. unreachable.as_match.UnreachablePropagation.panic-unwind.diff
  457. unreachable.if_let.UnreachablePropagation.panic-abort.diff
  458. unreachable.if_let.UnreachablePropagation.panic-unwind.diff
  459. unreachable.rs
  460. unreachable_diverging.main.UnreachablePropagation.panic-abort.diff
  461. unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff
  462. unreachable_diverging.rs
  463. unreachable_enum_branching.byref.UnreachableEnumBranching.panic-abort.diff
  464. unreachable_enum_branching.byref.UnreachableEnumBranching.panic-unwind.diff
  465. unreachable_enum_branching.custom_discriminant.UnreachableEnumBranching.panic-abort.diff
  466. unreachable_enum_branching.custom_discriminant.UnreachableEnumBranching.panic-unwind.diff
  467. unreachable_enum_branching.otherwise_t1.UnreachableEnumBranching.panic-abort.diff
  468. unreachable_enum_branching.otherwise_t1.UnreachableEnumBranching.panic-unwind.diff
  469. unreachable_enum_branching.otherwise_t2.UnreachableEnumBranching.panic-abort.diff
  470. unreachable_enum_branching.otherwise_t2.UnreachableEnumBranching.panic-unwind.diff
  471. unreachable_enum_branching.otherwise_t3.UnreachableEnumBranching.panic-abort.diff
  472. unreachable_enum_branching.otherwise_t3.UnreachableEnumBranching.panic-unwind.diff
  473. unreachable_enum_branching.otherwise_t4.UnreachableEnumBranching.panic-abort.diff
  474. unreachable_enum_branching.otherwise_t4.UnreachableEnumBranching.panic-unwind.diff
  475. unreachable_enum_branching.otherwise_t4_unreachable_default.UnreachableEnumBranching.panic-abort.diff
  476. unreachable_enum_branching.otherwise_t4_unreachable_default.UnreachableEnumBranching.panic-unwind.diff
  477. unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff
  478. unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff
  479. unreachable_enum_branching.otherwise_t5_unreachable_default.UnreachableEnumBranching.panic-abort.diff
  480. unreachable_enum_branching.otherwise_t5_unreachable_default.UnreachableEnumBranching.panic-unwind.diff
  481. unreachable_enum_branching.rs
  482. unreachable_enum_branching.simple.UnreachableEnumBranching.panic-abort.diff
  483. unreachable_enum_branching.simple.UnreachableEnumBranching.panic-unwind.diff
  484. unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir
  485. unusual_item_types.E-V-{constant#0}.built.after.mir
  486. unusual_item_types.rs
  487. unusual_item_types.Test-X-{constructor#0}.built.after.mir
  488. unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir
tests/mir-opt/README.md

This folder contains tests for MIR optimizations.

The mir-opt test format emits MIR to extra files that you can automatically update by specifying --bless on the command line (just like ui tests updating .stderr files).

--blessable test format

By default 32 bit and 64 bit targets use the same dump files, which can be problematic in the presence of pointers in constants or other bit width dependent things. In that case you can add

// EMIT_MIR_FOR_EACH_BIT_WIDTH

to your test, causing separate files to be generated for 32bit and 64bit systems.

Unit testing

If you are only testing the behavior of a particular mir-opt pass on some specific input (as is usually the case), you should add

// unit-test: PassName

to the top of the file. This makes sure that other passes don‘t run which means you’ll get the input you expected and your test won't break when other code changes.

Emit a diff of the mir for a specific optimization

This is what you want most often when you want to see how an optimization changes the MIR.

// EMIT_MIR $file_name_of_some_mir_dump.diff

Emit mir after a specific optimization

Use this if you are just interested in the final state after an optimization.

// EMIT_MIR $file_name_of_some_mir_dump.after.mir

Emit mir before a specific optimization

This exists mainly for completeness and is rarely useful.

// EMIT_MIR $file_name_of_some_mir_dump.before.mir

FileCheck directives

The LLVM FileCheck tool is used to verify the contents of output MIR against CHECK directives present in the test file. This works on the runtime MIR, generated by --emit=mir, and not on the output of a individual passes.

Use // skip-filecheck to prevent FileCheck from running.

To check MIR for function foo, start with a // CHECK-LABEL fn foo( directive.

{{regex}} syntax allows to match regex.

[[name:regex]] syntax allows to bind name to a string matching regex, and refer to it as [[name]] in later directives, regex should be written not to match a leading space. Use [[my_local:_.*]] to name a local, and [[my_bb:bb.*]] to name a block.

Documentation for FileCheck is available here: https://www.llvm.org/docs/CommandGuide/FileCheck.html