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