tree: 65a5d85fbe53ce30f444ff8c93ffb263ab710365 [path history] [tgz]
  1. const_prop/
  2. dest-prop/
  3. inline/
  4. issues/
  5. nll/
  6. 76803_regression.encode.SimplifyBranchSame.diff
  7. 76803_regression.rs
  8. address-of.rs
  9. address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
  10. address_of.borrow_and_cast.SimplifyCfg-initial.after.mir
  11. array-index-is-temporary.rs
  12. array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.32bit.mir
  13. array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.64bit.mir
  14. basic_assignment.main.SimplifyCfg-initial.after.mir
  15. basic_assignment.rs
  16. bool_compare.opt1.InstCombine.diff
  17. bool_compare.opt2.InstCombine.diff
  18. bool_compare.opt3.InstCombine.diff
  19. bool_compare.opt4.InstCombine.diff
  20. bool_compare.rs
  21. box_expr.main.ElaborateDrops.before.mir
  22. box_expr.rs
  23. byte_slice.main.SimplifyCfg-elaborate-drops.after.mir
  24. byte_slice.rs
  25. combine_array_len.norm2.InstCombine.32bit.diff
  26. combine_array_len.norm2.InstCombine.64bit.diff
  27. combine_array_len.rs
  28. const-promotion-extern-static.rs
  29. const_allocation.main.ConstProp.after.32bit.mir
  30. const_allocation.main.ConstProp.after.64bit.mir
  31. const_allocation.rs
  32. const_allocation2.main.ConstProp.after.32bit.mir
  33. const_allocation2.main.ConstProp.after.64bit.mir
  34. const_allocation2.rs
  35. const_allocation3.main.ConstProp.after.32bit.mir
  36. const_allocation3.main.ConstProp.after.64bit.mir
  37. const_allocation3.rs
  38. const_debuginfo.main.ConstDebugInfo.diff
  39. const_debuginfo.rs
  40. const_goto.issue_77355_opt.ConstGoto.diff
  41. const_goto.rs
  42. const_goto_const_eval_fail.f.ConstGoto.diff
  43. const_goto_const_eval_fail.rs
  44. const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir
  45. const_promotion_extern_static.BAR.PromoteTemps.diff
  46. const_promotion_extern_static.BOP.mir_map.0.mir
  47. const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir
  48. const_promotion_extern_static.FOO.PromoteTemps.diff
  49. const_prop_miscompile.bar.ConstProp.diff
  50. const_prop_miscompile.foo.ConstProp.diff
  51. const_prop_miscompile.rs
  52. coverage_graphviz.bar.InstrumentCoverage.0.dot
  53. coverage_graphviz.main.InstrumentCoverage.0.dot
  54. coverage_graphviz.rs
  55. deaggregator_test.bar.Deaggregator.diff
  56. deaggregator_test.rs
  57. deaggregator_test_enum.bar.Deaggregator.diff
  58. deaggregator_test_enum.rs
  59. deaggregator_test_enum_2.rs
  60. deaggregator_test_enum_2.test1.Deaggregator.diff
  61. deaggregator_test_multiple.rs
  62. deaggregator_test_multiple.test.Deaggregator.diff
  63. deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.diff
  64. deduplicate_blocks.rs
  65. early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff
  66. early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff
  67. early_otherwise_branch.rs
  68. early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff
  69. early_otherwise_branch_3_element_tuple.rs
  70. early_otherwise_branch_68867.rs
  71. early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.before-SimplifyBranches-final.after.diff
  72. early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
  73. early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff
  74. early_otherwise_branch_noopt.noopt2.EarlyOtherwiseBranch.diff
  75. early_otherwise_branch_noopt.rs
  76. equal_true.opt.InstCombine.diff
  77. equal_true.rs
  78. exponential-or.rs
  79. exponential_or.match_tuple.SimplifyCfg-initial.after.mir
  80. fn-ptr-shim.rs
  81. fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir
  82. funky_arms.float_to_exponential_common.ConstProp.diff
  83. funky_arms.rs
  84. generator-drop-cleanup.rs
  85. generator-storage-dead-unwind.rs
  86. generator-tiny.rs
  87. generator_drop_cleanup.main-{closure#0}.generator_drop.0.mir
  88. generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.mir
  89. generator_tiny.main-{closure#0}.generator_resume.0.mir
  90. graphviz.main.mir_map.0.dot
  91. graphviz.rs
  92. if-condition-int.rs
  93. if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff
  94. if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff
  95. if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff
  96. if_condition_int.opt_char.SimplifyComparisonIntegral.diff
  97. if_condition_int.opt_i8.SimplifyComparisonIntegral.diff
  98. if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff
  99. if_condition_int.opt_negative.SimplifyComparisonIntegral.diff
  100. if_condition_int.opt_u32.SimplifyComparisonIntegral.diff
  101. inst_combine_deref.deep_opt.InstCombine.diff
  102. inst_combine_deref.do_not_miscompile.InstCombine.diff
  103. inst_combine_deref.dont_opt.InstCombine.diff
  104. inst_combine_deref.opt_struct.InstCombine.diff
  105. inst_combine_deref.simple_opt.InstCombine.diff
  106. instrument_coverage.bar.InstrumentCoverage.diff
  107. instrument_coverage.main.InstrumentCoverage.diff
  108. instrument_coverage.rs
  109. issue-38669.rs
  110. issue-41110.rs
  111. issue-41697.rs
  112. issue-41888.rs
  113. issue-49232.rs
  114. issue-62289.rs
  115. issue-72181-1.rs
  116. issue-72181.rs
  117. issue-73223.rs
  118. issue-78192.rs
  119. issue_38669.main.SimplifyCfg-initial.after.mir
  120. issue_41110.main.ElaborateDrops.after.mir
  121. issue_41110.test.ElaborateDrops.after.mir
  122. issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.32bit.mir
  123. issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.64bit.mir
  124. issue_41888.main.ElaborateDrops.after.mir
  125. issue_49232.main.mir_map.0.mir
  126. issue_62289.test.ElaborateDrops.before.mir
  127. issue_72181.bar.mir_map.0.32bit.mir
  128. issue_72181.bar.mir_map.0.64bit.mir
  129. issue_72181.foo.mir_map.0.32bit.mir
  130. issue_72181.foo.mir_map.0.64bit.mir
  131. issue_72181.main.mir_map.0.32bit.mir
  132. issue_72181.main.mir_map.0.64bit.mir
  133. issue_72181_1.f.mir_map.0.mir
  134. issue_72181_1.main.mir_map.0.mir
  135. issue_73223.main.PreCodegen.32bit.diff
  136. issue_73223.main.PreCodegen.64bit.diff
  137. issue_73223.main.SimplifyArmIdentity.32bit.diff
  138. issue_73223.main.SimplifyArmIdentity.64bit.diff
  139. issue_76432.rs
  140. issue_76432.test.SimplifyComparisonIntegral.diff
  141. issue_78192.f.InstCombine.diff
  142. loop_test.main.SimplifyCfg-promote-consts.after.mir
  143. loop_test.rs
  144. lower_intrinsics.discriminant.LowerIntrinsics.diff
  145. lower_intrinsics.f_u64.PreCodegen.before.mir
  146. lower_intrinsics.f_unit.PreCodegen.before.mir
  147. lower_intrinsics.forget.LowerIntrinsics.diff
  148. lower_intrinsics.non_const.LowerIntrinsics.diff
  149. lower_intrinsics.rs
  150. lower_intrinsics.size_of.LowerIntrinsics.diff
  151. lower_intrinsics.unreachable.LowerIntrinsics.diff
  152. lower_intrinsics.wrapping.LowerIntrinsics.diff
  153. lower_slice_len.bound.LowerSliceLenCalls.diff
  154. lower_slice_len.rs
  155. match-arm-scopes.rs
  156. match_arm_scopes.complicated_match.SimplifyCfg-initial.after-ElaborateDrops.after.diff
  157. match_false_edges.full_tested_match.PromoteTemps.after.mir
  158. match_false_edges.full_tested_match2.PromoteTemps.before.mir
  159. match_false_edges.main.PromoteTemps.before.mir
  160. match_false_edges.rs
  161. match_test.main.SimplifyCfg-initial.after.mir
  162. match_test.rs
  163. matches_reduce_branches.bar.MatchBranchSimplification.32bit.diff
  164. matches_reduce_branches.bar.MatchBranchSimplification.64bit.diff
  165. matches_reduce_branches.foo.MatchBranchSimplification.32bit.diff
  166. matches_reduce_branches.foo.MatchBranchSimplification.64bit.diff
  167. matches_reduce_branches.foo.PreCodegen.before.32bit.mir
  168. matches_reduce_branches.foo.PreCodegen.before.64bit.mir
  169. matches_reduce_branches.match_nested_if.MatchBranchSimplification.32bit.diff
  170. matches_reduce_branches.match_nested_if.MatchBranchSimplification.64bit.diff
  171. matches_reduce_branches.rs
  172. matches_u8.exhaustive_match.MatchBranchSimplification.32bit.diff
  173. matches_u8.exhaustive_match.MatchBranchSimplification.64bit.diff
  174. matches_u8.exhaustive_match_i8.MatchBranchSimplification.32bit.diff
  175. matches_u8.exhaustive_match_i8.MatchBranchSimplification.64bit.diff
  176. matches_u8.rs
  177. multiple_return_terminators.rs
  178. multiple_return_terminators.test.MultipleReturnTerminators.diff
  179. no-drop-for-inactive-variant.rs
  180. no-spurious-drop-after-call.rs
  181. no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.mir
  182. no_spurious_drop_after_call.main.ElaborateDrops.before.mir
  183. not_equal_false.opt.InstCombine.diff
  184. not_equal_false.rs
  185. nrvo-simple.rs
  186. nrvo_simple.nrvo.RenameReturnPlace.diff
  187. packed-struct-drop-aligned.rs
  188. packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.32bit.mir
  189. packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.64bit.mir
  190. README.md
  191. receiver-ptr-mutability.rs
  192. receiver_ptr_mutability.main.mir_map.0.mir
  193. remove-never-const.rs
  194. remove_fake_borrows.match_guard.CleanupNonCodegenStatements.diff
  195. remove_fake_borrows.rs
  196. remove_never_const.no_codegen.PreCodegen.after.mir
  197. remove_storage_markers.main.RemoveStorageMarkers.diff
  198. remove_storage_markers.rs
  199. remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.diff
  200. remove_unneeded_drops.dont_opt.RemoveUnneededDrops.diff
  201. remove_unneeded_drops.opt.RemoveUnneededDrops.diff
  202. remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.diff
  203. remove_unneeded_drops.rs
  204. remove_zsts_dont_touch_unions.get_union.RemoveZsts.after.mir
  205. remove_zsts_dont_touch_unions.rs
  206. retag.array_casts.SimplifyCfg-elaborate-drops.after.mir
  207. retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.mir
  208. retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.mir
  209. retag.main.SimplifyCfg-elaborate-drops.after.mir
  210. retag.rs
  211. retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.mir
  212. retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.mir
  213. return_an_array.rs
  214. rustc.try_identity.DestinationPropagation.diff
  215. separate_const_switch.identity.ConstProp.diff
  216. separate_const_switch.identity.PreCodegen.after.mir
  217. separate_const_switch.identity.SeparateConstSwitch.diff
  218. separate_const_switch.rs
  219. separate_const_switch.too_complex.ConstProp.diff
  220. separate_const_switch.too_complex.PreCodegen.after.mir
  221. separate_const_switch.too_complex.SeparateConstSwitch.diff
  222. simple-match.rs
  223. simple_match.match_bool.mir_map.0.32bit.mir
  224. simple_match.match_bool.mir_map.0.64bit.mir
  225. simplify-arm-identity.rs
  226. simplify-arm.rs
  227. simplify-locals-fixedpoint.rs
  228. simplify-locals-removes-unused-consts.rs
  229. simplify-locals-removes-unused-discriminant-reads.rs
  230. simplify-locals.rs
  231. simplify_arm.id.SimplifyArmIdentity.diff
  232. simplify_arm.id.SimplifyBranchSame.diff
  233. simplify_arm.id_result.SimplifyArmIdentity.diff
  234. simplify_arm.id_result.SimplifyBranchSame.diff
  235. simplify_arm.id_try.SimplifyArmIdentity.diff
  236. simplify_arm.id_try.SimplifyBranchSame.diff
  237. simplify_arm_identity.main.SimplifyArmIdentity.32bit.diff
  238. simplify_arm_identity.main.SimplifyArmIdentity.64bit.diff
  239. simplify_cfg.main.SimplifyCfg-early-opt.diff
  240. simplify_cfg.main.SimplifyCfg-initial.diff
  241. simplify_cfg.rs
  242. simplify_if.main.SimplifyBranches-after-const-prop.diff
  243. simplify_if.rs
  244. simplify_locals.c.SimplifyLocals.diff
  245. simplify_locals.d1.SimplifyLocals.diff
  246. simplify_locals.d2.SimplifyLocals.diff
  247. simplify_locals.r.SimplifyLocals.diff
  248. simplify_locals.t1.SimplifyLocals.diff
  249. simplify_locals.t2.SimplifyLocals.diff
  250. simplify_locals.t3.SimplifyLocals.diff
  251. simplify_locals.t4.SimplifyLocals.diff
  252. simplify_locals_fixedpoint.foo.SimplifyLocals.diff
  253. simplify_locals_removes_unused_consts.main.SimplifyLocals.diff
  254. simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals.32bit.diff
  255. simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals.64bit.diff
  256. simplify_match.main.ConstProp.diff
  257. simplify_match.rs
  258. simplify_try.rs
  259. simplify_try.try_identity.DestinationPropagation.diff
  260. simplify_try.try_identity.SimplifyArmIdentity.diff
  261. simplify_try.try_identity.SimplifyBranchSame.after.mir
  262. simplify_try.try_identity.SimplifyLocals.after.mir
  263. simplify_try_if_let.rs
  264. simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff
  265. slice-drop-shim.rs
  266. slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.32bit.mir
  267. slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.64bit.mir
  268. spanview-block.rs
  269. spanview-statement.rs
  270. spanview-terminator.rs
  271. spanview_block.main.mir_map.0.html
  272. spanview_statement.main.mir_map.0.html
  273. spanview_terminator.main.mir_map.0.html
  274. storage_live_dead_in_statics.rs
  275. storage_live_dead_in_statics.XXX.mir_map.0.mir
  276. storage_ranges.main.nll.0.mir
  277. storage_ranges.rs
  278. tls-access.rs
  279. tls_access.main.SimplifyCfg-final.after.mir
  280. uniform_array_move_out.move_out_by_subslice.mir_map.0.mir
  281. uniform_array_move_out.move_out_from_end.mir_map.0.mir
  282. uniform_array_move_out.rs
  283. uninhabited-enum.rs
  284. uninhabited_enum.process_never.SimplifyLocals.after.mir
  285. uninhabited_enum.process_void.SimplifyLocals.after.mir
  286. uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir
  287. uninhabited_enum_branching.main.UninhabitedEnumBranching.diff
  288. uninhabited_enum_branching.rs
  289. uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir
  290. uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff
  291. uninhabited_enum_branching2.rs
  292. unreachable.main.UnreachablePropagation.diff
  293. unreachable.rs
  294. unreachable_asm.main.UnreachablePropagation.diff
  295. unreachable_asm.rs
  296. unreachable_asm_2.main.UnreachablePropagation.diff
  297. unreachable_asm_2.rs
  298. unreachable_diverging.main.UnreachablePropagation.diff
  299. unreachable_diverging.rs
  300. unusual-item-types.rs
  301. unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.32bit.mir
  302. unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.64bit.mir
  303. unusual_item_types.E-V-{constant#0}.mir_map.0.32bit.mir
  304. unusual_item_types.E-V-{constant#0}.mir_map.0.64bit.mir
  305. unusual_item_types.Test-X-{constructor#0}.mir_map.0.32bit.mir
  306. unusual_item_types.Test-X-{constructor#0}.mir_map.0.64bit.mir
  307. unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.mir_map.0.32bit.mir
  308. unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.mir_map.0.64bit.mir
  309. while-storage.rs
  310. while_let_loops.change_loop_body.ConstProp.32bit.diff
  311. while_let_loops.change_loop_body.ConstProp.64bit.diff
  312. while_let_loops.change_loop_body.PreCodegen.after.32bit.mir
  313. while_let_loops.change_loop_body.PreCodegen.after.64bit.mir
  314. while_let_loops.rs
  315. while_storage.while_loop.PreCodegen.after.mir
src/test/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.

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