tree: bd54c9cfe1cc02ee0e57fa790fdc3575ff29b208 [path history] [tgz]
  1. building/
  2. const_prop/
  3. copy-prop/
  4. dataflow-const-prop/
  5. dead-store-elimination/
  6. deref-patterns/
  7. dest-prop/
  8. inline/
  9. issues/
  10. nll/
  11. pre-codegen/
  12. sroa/
  13. address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
  14. address_of.borrow_and_cast.SimplifyCfg-initial.after.mir
  15. address_of.rs
  16. array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  17. array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  18. array_index_is_temporary.rs
  19. asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir
  20. asm_unwind_panic_abort.rs
  21. basic_assignment.main.ElaborateDrops.diff
  22. basic_assignment.main.SimplifyCfg-initial.after.mir
  23. basic_assignment.rs
  24. bool_compare.opt1.InstSimplify.diff
  25. bool_compare.opt2.InstSimplify.diff
  26. bool_compare.opt3.InstSimplify.diff
  27. bool_compare.opt4.InstSimplify.diff
  28. bool_compare.rs
  29. box_expr.main.ElaborateDrops.before.panic-abort.mir
  30. box_expr.main.ElaborateDrops.before.panic-unwind.mir
  31. box_expr.rs
  32. byte_slice.main.SimplifyCfg-elaborate-drops.after.mir
  33. byte_slice.rs
  34. casts.redundant.InstSimplify.diff
  35. casts.redundant.PreCodegen.after.mir
  36. casts.roundtrip.PreCodegen.after.mir
  37. casts.rs
  38. combine_array_len.norm2.InstSimplify.panic-abort.diff
  39. combine_array_len.norm2.InstSimplify.panic-unwind.diff
  40. combine_array_len.rs
  41. combine_clone_of_primitives.rs
  42. combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff
  43. combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff
  44. combine_transmutes.adt_transmutes.InstSimplify.diff
  45. combine_transmutes.identity_transmutes.InstSimplify.diff
  46. combine_transmutes.integer_transmutes.InstSimplify.diff
  47. combine_transmutes.rs
  48. const_allocation.main.ConstProp.after.32bit.mir
  49. const_allocation.main.ConstProp.after.64bit.mir
  50. const_allocation.rs
  51. const_allocation2.main.ConstProp.after.32bit.mir
  52. const_allocation2.main.ConstProp.after.64bit.mir
  53. const_allocation2.rs
  54. const_allocation3.main.ConstProp.after.32bit.mir
  55. const_allocation3.main.ConstProp.after.64bit.mir
  56. const_allocation3.rs
  57. const_debuginfo.main.ConstDebugInfo.diff
  58. const_debuginfo.rs
  59. const_goto.issue_77355_opt.ConstGoto.diff
  60. const_goto.rs
  61. const_goto_const_eval_fail.f.ConstGoto.diff
  62. const_goto_const_eval_fail.rs
  63. const_goto_storage.match_nested_if.ConstGoto.diff
  64. const_goto_storage.rs
  65. const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir
  66. const_promotion_extern_static.BAR.PromoteTemps.diff
  67. const_promotion_extern_static.BOP.built.after.mir
  68. const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir
  69. const_promotion_extern_static.FOO.PromoteTemps.diff
  70. const_promotion_extern_static.rs
  71. const_prop_miscompile.bar.ConstProp.diff
  72. const_prop_miscompile.foo.ConstProp.diff
  73. const_prop_miscompile.rs
  74. deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
  75. deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
  76. deduplicate_blocks.rs
  77. derefer_complex_case.main.Derefer.panic-abort.diff
  78. derefer_complex_case.main.Derefer.panic-unwind.diff
  79. derefer_complex_case.rs
  80. derefer_inline_test.main.Derefer.panic-abort.diff
  81. derefer_inline_test.main.Derefer.panic-unwind.diff
  82. derefer_inline_test.rs
  83. derefer_terminator_test.main.Derefer.panic-abort.diff
  84. derefer_terminator_test.main.Derefer.panic-unwind.diff
  85. derefer_terminator_test.rs
  86. derefer_test.main.Derefer.diff
  87. derefer_test.rs
  88. derefer_test_multiple.main.Derefer.diff
  89. derefer_test_multiple.rs
  90. dont_inline_type_id.call.Inline.diff
  91. dont_inline_type_id.rs
  92. dont_yeet_assert.generic.InstSimplify.diff
  93. dont_yeet_assert.rs
  94. early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff
  95. early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff
  96. early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff
  97. early_otherwise_branch.rs
  98. early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff
  99. early_otherwise_branch_3_element_tuple.rs
  100. early_otherwise_branch_68867.rs
  101. early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
  102. early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff
  103. early_otherwise_branch_noopt.rs
  104. early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff
  105. early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff
  106. early_otherwise_branch_soundness.rs
  107. enum_opt.cand.EnumSizeOpt.32bit.diff
  108. enum_opt.cand.EnumSizeOpt.64bit.diff
  109. enum_opt.invalid.EnumSizeOpt.32bit.diff
  110. enum_opt.invalid.EnumSizeOpt.64bit.diff
  111. enum_opt.rs
  112. enum_opt.trunc.EnumSizeOpt.32bit.diff
  113. enum_opt.trunc.EnumSizeOpt.64bit.diff
  114. enum_opt.unin.EnumSizeOpt.32bit.diff
  115. enum_opt.unin.EnumSizeOpt.64bit.diff
  116. equal_true.opt.InstSimplify.diff
  117. equal_true.rs
  118. exponential_or.match_tuple.SimplifyCfg-initial.after.mir
  119. exponential_or.rs
  120. fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir
  121. fn_ptr_shim.rs
  122. funky_arms.float_to_exponential_common.ConstProp.panic-abort.diff
  123. funky_arms.float_to_exponential_common.ConstProp.panic-unwind.diff
  124. funky_arms.rs
  125. generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-abort.mir
  126. generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir
  127. generator_drop_cleanup.rs
  128. generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir
  129. generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir
  130. generator_storage_dead_unwind.rs
  131. generator_tiny.main-{closure#0}.generator_resume.0.mir
  132. generator_tiny.rs
  133. graphviz.main.built.after.dot
  134. graphviz.rs
  135. gvn.arithmetic.GVN.panic-abort.diff
  136. gvn.arithmetic.GVN.panic-unwind.diff
  137. gvn.arithmetic_checked.GVN.panic-abort.diff
  138. gvn.arithmetic_checked.GVN.panic-unwind.diff
  139. gvn.arithmetic_float.GVN.panic-abort.diff
  140. gvn.arithmetic_float.GVN.panic-unwind.diff
  141. gvn.cast.GVN.panic-abort.diff
  142. gvn.cast.GVN.panic-unwind.diff
  143. gvn.dereferences.GVN.panic-abort.diff
  144. gvn.dereferences.GVN.panic-unwind.diff
  145. gvn.multiple_branches.GVN.panic-abort.diff
  146. gvn.multiple_branches.GVN.panic-unwind.diff
  147. gvn.references.GVN.panic-abort.diff
  148. gvn.references.GVN.panic-unwind.diff
  149. gvn.repeated_index.GVN.panic-abort.diff
  150. gvn.repeated_index.GVN.panic-unwind.diff
  151. gvn.rs
  152. gvn.slices.GVN.panic-abort.diff
  153. gvn.slices.GVN.panic-unwind.diff
  154. gvn.subexpression_elimination.GVN.panic-abort.diff
  155. gvn.subexpression_elimination.GVN.panic-unwind.diff
  156. gvn.wrap_unwrap.GVN.panic-abort.diff
  157. gvn.wrap_unwrap.GVN.panic-unwind.diff
  158. if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff
  159. if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff
  160. if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff
  161. if_condition_int.opt_char.SimplifyComparisonIntegral.diff
  162. if_condition_int.opt_i8.SimplifyComparisonIntegral.diff
  163. if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff
  164. if_condition_int.opt_negative.SimplifyComparisonIntegral.diff
  165. if_condition_int.opt_u32.SimplifyComparisonIntegral.diff
  166. if_condition_int.rs
  167. inline_generically_if_sized.call.Inline.diff
  168. inline_generically_if_sized.rs
  169. instrument_coverage.bar.InstrumentCoverage.diff
  170. instrument_coverage.main.InstrumentCoverage.diff
  171. instrument_coverage.rs
  172. instsimplify_duplicate_switch_targets.assert_zero.InstSimplify.diff
  173. instsimplify_duplicate_switch_targets.rs
  174. intrinsic_asserts.generic.InstSimplify.diff
  175. intrinsic_asserts.panics.InstSimplify.diff
  176. intrinsic_asserts.removable.InstSimplify.diff
  177. intrinsic_asserts.rs
  178. issue_101973.inner.ConstProp.panic-abort.diff
  179. issue_101973.inner.ConstProp.panic-unwind.diff
  180. issue_101973.rs
  181. issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir
  182. issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir
  183. issue_104451_unwindable_intrinsics.rs
  184. issue_38669.main.SimplifyCfg-initial.after.mir
  185. issue_38669.rs
  186. issue_41110.main.ElaborateDrops.panic-abort.diff
  187. issue_41110.main.ElaborateDrops.panic-unwind.diff
  188. issue_41110.rs
  189. issue_41110.test.ElaborateDrops.panic-abort.diff
  190. issue_41110.test.ElaborateDrops.panic-unwind.diff
  191. issue_41697.rs
  192. issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir
  193. issue_41888.main.ElaborateDrops.panic-abort.diff
  194. issue_41888.main.ElaborateDrops.panic-unwind.diff
  195. issue_41888.rs
  196. issue_62289.rs
  197. issue_62289.test.ElaborateDrops.before.panic-abort.mir
  198. issue_62289.test.ElaborateDrops.before.panic-unwind.mir
  199. issue_72181.bar.built.after.mir
  200. issue_72181.foo.built.after.mir
  201. issue_72181.main.built.after.mir
  202. issue_72181.rs
  203. issue_72181_1.f.built.after.mir
  204. issue_72181_1.main.built.after.mir
  205. issue_72181_1.rs
  206. issue_76432.rs
  207. issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff
  208. issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff
  209. issue_78192.f.InstSimplify.diff
  210. issue_78192.rs
  211. issue_91633.bar.built.after.mir
  212. issue_91633.foo.built.after.mir
  213. issue_91633.fun.built.after.mir
  214. issue_91633.hey.built.after.mir
  215. issue_91633.rs
  216. issue_99325.main.built.after.32bit.mir
  217. issue_99325.main.built.after.64bit.mir
  218. issue_99325.rs
  219. loop_test.main.SimplifyCfg-promote-consts.after.mir
  220. loop_test.rs
  221. lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff
  222. lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff
  223. lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff
  224. lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff
  225. lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff
  226. lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff
  227. lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff
  228. lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff
  229. lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff
  230. lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff
  231. lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff
  232. lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff
  233. lower_array_len.rs
  234. lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff
  235. lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff
  236. lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff
  237. lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff
  238. lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff
  239. lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff
  240. lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff
  241. lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff
  242. lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff
  243. lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff
  244. lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff
  245. lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff
  246. lower_intrinsics.option_payload.LowerIntrinsics.panic-abort.diff
  247. lower_intrinsics.option_payload.LowerIntrinsics.panic-unwind.diff
  248. lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff
  249. lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff
  250. lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff
  251. lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff
  252. lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff
  253. lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff
  254. lower_intrinsics.rs
  255. lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff
  256. lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff
  257. lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff
  258. lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff
  259. lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff
  260. lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff
  261. lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff
  262. lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff
  263. lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff
  264. lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff
  265. lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff
  266. lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff
  267. lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff
  268. lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff
  269. lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff
  270. lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff
  271. lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff
  272. lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff
  273. lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff
  274. lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff
  275. lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff
  276. lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff
  277. lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff
  278. lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff
  279. lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff
  280. lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff
  281. lower_slice_len.rs
  282. match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff
  283. match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff
  284. match_arm_scopes.rs
  285. match_test.main.SimplifyCfg-initial.after.mir
  286. match_test.rs
  287. matches_reduce_branches.bar.MatchBranchSimplification.diff
  288. matches_reduce_branches.foo.MatchBranchSimplification.diff
  289. matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff
  290. matches_reduce_branches.rs
  291. matches_u8.exhaustive_match.MatchBranchSimplification.diff
  292. matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff
  293. matches_u8.rs
  294. multiple_return_terminators.rs
  295. multiple_return_terminators.test.MultipleReturnTerminators.diff
  296. no_drop_for_inactive_variant.rs
  297. no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  298. no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  299. no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir
  300. no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir
  301. no_spurious_drop_after_call.rs
  302. not_equal_false.opt.InstSimplify.diff
  303. not_equal_false.rs
  304. nrvo_miscompile_111005.rs
  305. nrvo_miscompile_111005.wrong.RenameReturnPlace.diff
  306. nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff
  307. nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff
  308. nrvo_simple.rs
  309. packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  310. packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  311. packed_struct_drop_aligned.rs
  312. README.md
  313. reference_prop.debuginfo.ReferencePropagation.diff
  314. reference_prop.dominate_storage.ReferencePropagation.diff
  315. reference_prop.maybe_dead.ReferencePropagation.diff
  316. reference_prop.multiple_storage.ReferencePropagation.diff
  317. reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff
  318. reference_prop.read_through_raw.ReferencePropagation.diff
  319. reference_prop.reference_propagation.ReferencePropagation.diff
  320. reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff
  321. reference_prop.reference_propagation_mut.ReferencePropagation.diff
  322. reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff
  323. reference_prop.rs
  324. reference_prop.unique_with_copies.ReferencePropagation.diff
  325. remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff
  326. remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff
  327. remove_fake_borrows.rs
  328. remove_never_const.no_codegen.PreCodegen.after.mir
  329. remove_never_const.rs
  330. remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff
  331. remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff
  332. remove_storage_markers.rs
  333. remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff
  334. remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff
  335. remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff
  336. remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff
  337. remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff
  338. remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff
  339. remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff
  340. remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff
  341. remove_unneeded_drops.rs
  342. remove_zsts.get_union.PreCodegen.after.mir
  343. remove_zsts.get_union.RemoveZsts.diff
  344. remove_zsts.rs
  345. retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  346. retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  347. retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir
  348. retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir
  349. retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  350. retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  351. retag.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  352. retag.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  353. retag.rs
  354. retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  355. retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  356. retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-abort.mir
  357. retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-unwind.mir
  358. return_an_array.rs
  359. separate_const_switch.identity.SeparateConstSwitch.diff
  360. separate_const_switch.rs
  361. separate_const_switch.too_complex.SeparateConstSwitch.diff
  362. simplify_arm.id_try.SimplifyArmIdentity.diff
  363. simplify_arm.id_try.SimplifyBranchSame.diff
  364. simplify_arm.rs
  365. simplify_arm_identity.rs
  366. simplify_cfg.main.SimplifyCfg-early-opt.diff
  367. simplify_cfg.main.SimplifyCfg-initial.diff
  368. simplify_cfg.rs
  369. simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff
  370. simplify_duplicate_unreachable_blocks.rs
  371. simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff
  372. simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff
  373. simplify_if.rs
  374. simplify_locals.c.SimplifyLocals-before-const-prop.diff
  375. simplify_locals.d1.SimplifyLocals-before-const-prop.diff
  376. simplify_locals.d2.SimplifyLocals-before-const-prop.diff
  377. simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff
  378. simplify_locals.r.SimplifyLocals-before-const-prop.diff
  379. simplify_locals.rs
  380. simplify_locals.t1.SimplifyLocals-before-const-prop.diff
  381. simplify_locals.t2.SimplifyLocals-before-const-prop.diff
  382. simplify_locals.t3.SimplifyLocals-before-const-prop.diff
  383. simplify_locals.t4.SimplifyLocals-before-const-prop.diff
  384. simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff
  385. simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff
  386. simplify_locals_fixedpoint.rs
  387. simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff
  388. simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff
  389. simplify_locals_removes_unused_consts.rs
  390. simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff
  391. simplify_locals_removes_unused_discriminant_reads.rs
  392. simplify_match.main.ConstProp.panic-abort.diff
  393. simplify_match.main.ConstProp.panic-unwind.diff
  394. simplify_match.rs
  395. simplify_try_if_let.rs
  396. simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff
  397. slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir
  398. slice_drop_shim.rs
  399. spanview_block.main.built.after.html
  400. spanview_block.rs
  401. spanview_statement.main.built.after.html
  402. spanview_statement.rs
  403. spanview_terminator.main.built.after.html
  404. spanview_terminator.rs
  405. ssa_unreachable_116212.rs
  406. storage_ranges.main.nll.0.mir
  407. storage_ranges.rs
  408. switch_to_self.rs
  409. switch_to_self.test.MatchBranchSimplification.diff
  410. tls_access.main.PreCodegen.after.mir
  411. tls_access.rs
  412. uninhabited_enum.process_never.SimplifyLocals-final.after.mir
  413. uninhabited_enum.process_void.SimplifyLocals-final.after.mir
  414. uninhabited_enum.rs
  415. uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir
  416. uninhabited_enum_branching.main.UninhabitedEnumBranching.diff
  417. uninhabited_enum_branching.rs
  418. uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir
  419. uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff
  420. uninhabited_enum_branching2.rs
  421. uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff
  422. uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff
  423. uninhabited_fallthrough_elimination.rs
  424. unreachable.main.UnreachablePropagation.panic-abort.diff
  425. unreachable.main.UnreachablePropagation.panic-unwind.diff
  426. unreachable.rs
  427. unreachable_diverging.main.UnreachablePropagation.panic-abort.diff
  428. unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff
  429. unreachable_diverging.rs
  430. unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir
  431. unusual_item_types.E-V-{constant#0}.built.after.mir
  432. unusual_item_types.rs
  433. unusual_item_types.Test-X-{constructor#0}.built.after.mir
  434. unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir
  435. while_storage.rs
  436. while_storage.while_loop.PreCodegen.after.panic-abort.mir
  437. while_storage.while_loop.PreCodegen.after.panic-unwind.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