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