rust/tests/mir-opt
bors 4fc6b33474 Auto merge of #114011 - RalfJung:place-projection, r=oli-obk
interpret: Unify projections for MPlaceTy, PlaceTy, OpTy

For ~forever, we didn't really have proper shared code for handling projections into those three types. This is mostly because `PlaceTy` projections require `&mut self`: they might have to `force_allocate` to be able to represent a project part-way into a local.

This PR finally fixes that, by enhancing `Place::Local` with an `offset` so that such an optimized place can point into a part of a place without having requiring an in-memory representation. If we later write to that place, we will still do `force_allocate` -- for now we don't have an optimized path in `write_immediate` that would avoid allocation for partial overwrites of immediately stored locals. But in `write_immediate` we have `&mut self` so at least this no longer pollutes all our type signatures.

(Ironically, I seem to distantly remember that many years ago, `Place::Local` *did* have an `offset`, and I removed it to simplify things. I guess I didn't realize why it was so useful... I am also not sure if this was actually used to achieve place projection on `&self` back then.)

The `offset` had type `Option<Size>`, where `None` represent "no projection was applied". This is needed because locals *can* be unsized (when they are arguments) but `Place::Local` cannot store metadata: if the offset is `None`, this refers to the entire local, so we can use the metadata of the local itself (which must be indirect); if a projection gets applied, since the local is indirect, it will turn into a `Place::Ptr`. (Note that even for indirect locals we can have `Place::Local`: when the local appears in MIR, we always start with `Place::Local`, and only check `frame.locals` later. We could eagerly normalize to `Place::Ptr` but I don't think that would actually simplify things much.)

Having done all that, we can finally properly abstract projections: we have a new `Projectable` trait that has the basic methods required for projecting, and then all projection methods are implemented for anything that implements that trait. We can even implement it for `ImmTy`! (Not that we need that, but it seems neat.) The visitor can be greatly simplified; it doesn't need its own trait any more but it can use the `Projectable` trait. We also don't need the separate `Mut` visitor any more; that was required only to reflect that projections on `PlaceTy` needed `&mut self`.

It is possible that there are some more `&mut self` that can now become `&self`... I guess we'll notice that over time.

r? `@oli-obk`
2023-07-25 14:18:08 +00:00
..
building Rollup merge of #113217 - ericmarkmartin:lower-type-relative-ctor-to-adt, r=cjgillot 2023-07-08 20:53:29 +02:00
const_prop Propagate ScalarPair for any type. 2023-07-20 21:30:51 +00:00
copy-prop Perform reference propagation earlier. 2023-07-10 16:01:18 +00:00
dataflow-const-prop Bless tests 2023-06-23 18:36:25 +01:00
dead-store-elimination Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
deref-patterns Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
dest-prop Bless tests 2023-06-23 18:36:25 +01:00
inline Always propagate into operands. 2023-07-20 21:30:51 +00:00
issues Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
nll Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
pre-codegen Add #[inline] to core debug assertion helpers 2023-07-22 12:07:06 -04:00
sroa Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
address_of.address_of_reborrow.SimplifyCfg-initial.after.mir Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
address_of.borrow_and_cast.SimplifyCfg-initial.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
address_of.rs
array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
array_index_is_temporary.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
array_index_is_temporary.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
asm_unwind_panic_abort.main.AbortUnwindingCalls.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
asm_unwind_panic_abort.rs
basic_assignment.main.ElaborateDrops.diff Bless tests 2023-06-23 18:36:25 +01:00
basic_assignment.main.SimplifyCfg-initial.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
basic_assignment.rs
bool_compare.opt1.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
bool_compare.opt2.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
bool_compare.opt3.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
bool_compare.opt4.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
bool_compare.rs
box_expr.main.ElaborateDrops.before.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
box_expr.main.ElaborateDrops.before.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
box_expr.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
byte_slice.main.SimplifyCfg-elaborate-drops.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
byte_slice.rs
casts.redundant.InstSimplify.diff Perform reference propagation earlier. 2023-07-10 16:01:18 +00:00
casts.redundant.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
casts.roundtrip.PreCodegen.after.mir Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
casts.rs
combine_array_len.norm2.InstSimplify.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
combine_array_len.norm2.InstSimplify.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
combine_array_len.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
combine_clone_of_primitives.{impl#0}-clone.InstSimplify.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
combine_clone_of_primitives.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
combine_transmutes.adt_transmutes.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
combine_transmutes.identity_transmutes.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
combine_transmutes.integer_transmutes.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
combine_transmutes.rs
const_allocation2.main.ConstProp.after.32bit.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_allocation2.main.ConstProp.after.64bit.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_allocation2.rs
const_allocation3.main.ConstProp.after.32bit.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_allocation3.main.ConstProp.after.64bit.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_allocation3.rs
const_allocation.main.ConstProp.after.32bit.mir interpret: refactor projection code to work on a common trait, and use that for visitors 2023-07-25 14:30:58 +02:00
const_allocation.main.ConstProp.after.64bit.mir interpret: refactor projection code to work on a common trait, and use that for visitors 2023-07-25 14:30:58 +02:00
const_allocation.rs
const_debuginfo.main.ConstDebugInfo.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_debuginfo.rs
const_goto_const_eval_fail.f.ConstGoto.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_goto_const_eval_fail.rs Disable two mir opts that are known to be unsound 2023-06-21 07:41:09 +00:00
const_goto_storage.match_nested_if.ConstGoto.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_goto_storage.rs
const_goto.issue_77355_opt.ConstGoto.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_goto.rs
const_promotion_extern_static.BAR-promoted[0].SimplifyCfg-elaborate-drops.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_promotion_extern_static.BAR.PromoteTemps.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
const_promotion_extern_static.BOP.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_promotion_extern_static.FOO-promoted[0].SimplifyCfg-elaborate-drops.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_promotion_extern_static.FOO.PromoteTemps.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
const_promotion_extern_static.rs
const_prop_miscompile.bar.ConstProp.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_prop_miscompile.foo.ConstProp.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
const_prop_miscompile.rs
coverage_graphviz.bar.InstrumentCoverage.0.dot
coverage_graphviz.main.InstrumentCoverage.0.dot
coverage_graphviz.rs
deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
deduplicate_blocks.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
derefer_complex_case.main.Derefer.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_complex_case.main.Derefer.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
derefer_complex_case.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
derefer_inline_test.main.Derefer.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_inline_test.main.Derefer.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
derefer_inline_test.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
derefer_terminator_test.main.Derefer.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_terminator_test.main.Derefer.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
derefer_terminator_test.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
derefer_test_multiple.main.Derefer.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_test_multiple.rs
derefer_test.main.Derefer.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
derefer_test.rs
dont_yeet_assert.generic.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
dont_yeet_assert.rs
early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch_3_element_tuple.rs
early_otherwise_branch_68867.rs
early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch_noopt.rs
early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch_soundness.no_downcast.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch_soundness.rs
early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
early_otherwise_branch.rs
enum_opt.cand.EnumSizeOpt.32bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.cand.EnumSizeOpt.64bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.invalid.EnumSizeOpt.32bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.invalid.EnumSizeOpt.64bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.rs
enum_opt.trunc.EnumSizeOpt.32bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.trunc.EnumSizeOpt.64bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.unin.EnumSizeOpt.32bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
enum_opt.unin.EnumSizeOpt.64bit.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
equal_true.opt.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
equal_true.rs
exponential_or.match_tuple.SimplifyCfg-initial.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
exponential_or.rs
fn_ptr_shim.core.ops-function-Fn-call.AddMovesForPackedDrops.before.mir Auto merge of #112307 - lcnr:operand-ref, r=compiler-errors 2023-06-28 00:41:37 +00:00
fn_ptr_shim.rs
funky_arms.float_to_exponential_common.ConstProp.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
funky_arms.float_to_exponential_common.ConstProp.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
funky_arms.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
generator_drop_cleanup.main-{closure#0}.generator_drop.0.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
generator_drop_cleanup.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
generator_storage_dead_unwind.main-{closure#0}.StateTransform.before.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
generator_storage_dead_unwind.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
generator_tiny.main-{closure#0}.generator_resume.0.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
generator_tiny.rs
graphviz.main.built.after.dot
graphviz.rs
if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.opt_char.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.opt_i8.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.opt_negative.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.opt_u32.SimplifyComparisonIntegral.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
if_condition_int.rs
instrument_coverage.bar.InstrumentCoverage.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
instrument_coverage.main.InstrumentCoverage.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
instrument_coverage.rs
instsimplify_duplicate_switch_targets.assert_zero.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
instsimplify_duplicate_switch_targets.rs
intrinsic_asserts.generic.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
intrinsic_asserts.panics.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
intrinsic_asserts.removable.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
intrinsic_asserts.rs
issue_38669.main.SimplifyCfg-initial.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_38669.rs
issue_41110.main.ElaborateDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_41110.main.ElaborateDrops.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_41110.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
issue_41110.test.ElaborateDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_41110.test.ElaborateDrops.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
issue_41697.{impl#0}-{constant#0}.SimplifyCfg-promote-consts.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_41697.rs
issue_41888.main.ElaborateDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_41888.main.ElaborateDrops.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
issue_41888.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
issue_62289.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
issue_62289.test.ElaborateDrops.before.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_62289.test.ElaborateDrops.before.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
issue_72181_1.f.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_72181_1.main.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_72181_1.rs
issue_72181.bar.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_72181.foo.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_72181.main.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_72181.rs
issue_76432.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff Perform reference propagation earlier. 2023-07-10 16:01:18 +00:00
issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff Perform reference propagation earlier. 2023-07-10 16:01:18 +00:00
issue_78192.f.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_78192.rs
issue_91633.bar.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_91633.foo.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_91633.fun.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_91633.hey.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_91633.rs
issue_99325.main.built.after.mir refactor(rustc_middle): Substs -> GenericArg 2023-07-14 13:27:35 +01:00
issue_99325.rs
issue_101973.inner.ConstProp.panic-abort.diff Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
issue_101973.inner.ConstProp.panic-unwind.diff Turn copy into moves during DSE. 2023-07-19 09:59:12 +00:00
issue_101973.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
issue_104451_unwindable_intrinsics.main.AbortUnwindingCalls.after.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
issue_104451_unwindable_intrinsics.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
loop_test.main.SimplifyCfg-promote-consts.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
loop_test.rs
lower_array_len.array_bound_mut.NormalizeArrayLen.panic-abort.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_bound_mut.NormalizeArrayLen.panic-unwind.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_bound.NormalizeArrayLen.panic-abort.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_bound.NormalizeArrayLen.panic-unwind.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len_by_value.NormalizeArrayLen.panic-abort.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len_by_value.NormalizeArrayLen.panic-unwind.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len_raw.NormalizeArrayLen.panic-abort.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len_raw.NormalizeArrayLen.panic-unwind.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-abort.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len_reborrow.NormalizeArrayLen.panic-unwind.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len.NormalizeArrayLen.panic-abort.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.array_len.NormalizeArrayLen.panic-unwind.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
lower_array_len.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
lower_intrinsics.align_of.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.align_of.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.assume.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.assume.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.discriminant.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.discriminant.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.forget.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.forget.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.option_payload.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.option_payload.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.rs Promote unchecked_add/sub/mul/shl/shr to mir::BinOp 2023-06-19 01:47:03 -07:00
lower_intrinsics.size_of.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.size_of.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_to_mut_uninhabited.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_to_ref_uninhabited.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff Promote unchecked_add/sub/mul/shl/shr to mir::BinOp 2023-06-19 01:47:03 -07:00
lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff Promote unchecked_add/sub/mul/shl/shr to mir::BinOp 2023-06-19 01:47:03 -07:00
lower_intrinsics.unreachable.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.unreachable.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_intrinsics.write_via_move_string.LowerIntrinsics.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
lower_slice_len.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
match_arm_scopes.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
match_test.main.SimplifyCfg-initial.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
match_test.rs
matches_reduce_branches.bar.MatchBranchSimplification.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
matches_reduce_branches.foo.MatchBranchSimplification.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
matches_reduce_branches.rs
matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
matches_u8.exhaustive_match.MatchBranchSimplification.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
matches_u8.rs
multiple_return_terminators.rs
multiple_return_terminators.test.MultipleReturnTerminators.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
no_drop_for_inactive_variant.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
no_drop_for_inactive_variant.unwrap.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
no_spurious_drop_after_call.main.ElaborateDrops.before.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
no_spurious_drop_after_call.main.ElaborateDrops.before.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
no_spurious_drop_after_call.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
not_equal_false.opt.InstSimplify.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
not_equal_false.rs
nrvo_miscompile_111005.rs
nrvo_miscompile_111005.wrong.RenameReturnPlace.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
nrvo_simple.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
packed_struct_drop_aligned.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
packed_struct_drop_aligned.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
README.md
reference_prop.debuginfo.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.dominate_storage.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.maybe_dead.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.multiple_storage.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
reference_prop.read_through_raw.ReferencePropagation.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.reference_propagation_mut.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.reference_propagation.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
reference_prop.rs
reference_prop.unique_with_copies.ReferencePropagation.diff Bless tests 2023-06-23 18:36:25 +01:00
remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_fake_borrows.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
remove_never_const.no_codegen.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_never_const.rs
remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
remove_storage_markers.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_unneeded_drops.cannot_opt_generic.RemoveUnneededDrops.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_unneeded_drops.dont_opt.RemoveUnneededDrops.panic-unwind.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
remove_unneeded_drops.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
remove_zsts.get_union.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_zsts.get_union.RemoveZsts.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
remove_zsts.rs
retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.{impl#0}-foo_shr.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.{impl#0}-foo.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-abort.mir Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
retag.array_casts.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.core.ptr-drop_in_place.Test.SimplifyCfg-make_shim.after.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00
retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.main-{closure#0}.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
retag.main.SimplifyCfg-elaborate-drops.after.panic-abort.mir Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
retag.main.SimplifyCfg-elaborate-drops.after.panic-unwind.mir Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
retag.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
return_an_array.rs
separate_const_switch.identity.SeparateConstSwitch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
separate_const_switch.rs Disable two mir opts that are known to be unsound 2023-06-21 07:41:09 +00:00
separate_const_switch.too_complex.SeparateConstSwitch.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_arm_identity.rs
simplify_arm.id_try.SimplifyArmIdentity.diff
simplify_arm.id_try.SimplifyBranchSame.diff
simplify_arm.rs
simplify_cfg.main.SimplifyCfg-early-opt.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_cfg.main.SimplifyCfg-initial.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_cfg.rs
simplify_duplicate_unreachable_blocks.assert_nonzero_nonmax.SimplifyCfg-after-uninhabited-enum-branching.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_duplicate_unreachable_blocks.rs
simplify_if.main.SimplifyConstCondition-after-const-prop.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_if.main.SimplifyConstCondition-after-const-prop.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
simplify_if.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
simplify_locals_fixedpoint.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
simplify_locals_removes_unused_consts.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
simplify_locals_removes_unused_discriminant_reads.map.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals_removes_unused_discriminant_reads.rs
simplify_locals.c.SimplifyLocals-before-const-prop.diff Rename adjustment::PointerCast and variants using it to PointerCoercion 2023-07-07 18:17:16 +02:00
simplify_locals.d1.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.d2.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.expose_addr.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.r.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.rs
simplify_locals.t1.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.t2.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.t3.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_locals.t4.SimplifyLocals-before-const-prop.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_match.main.ConstProp.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
simplify_match.main.ConstProp.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
simplify_match.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
simplify_try_if_let.{impl#0}-append.SimplifyArmIdentity.diff
simplify_try_if_let.rs
slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
slice_drop_shim.rs
spanview_block.main.built.after.html Add <meta charset="utf-8"> to -Zdump-mir-spanview output 2023-06-17 18:31:35 +10:00
spanview_block.rs
spanview_statement.main.built.after.html Add <meta charset="utf-8"> to -Zdump-mir-spanview output 2023-06-17 18:31:35 +10:00
spanview_statement.rs
spanview_terminator.main.built.after.html Add <meta charset="utf-8"> to -Zdump-mir-spanview output 2023-06-17 18:31:35 +10:00
spanview_terminator.rs
storage_ranges.main.nll.0.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
storage_ranges.rs
switch_to_self.rs Try enabling MatchBranchSimplification 2023-05-27 13:50:13 -04:00
switch_to_self.test.MatchBranchSimplification.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
tls_access.main.PreCodegen.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
tls_access.rs
uninhabited_enum_branching2.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_enum_branching2.main.UninhabitedEnumBranching.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_enum_branching2.rs
uninhabited_enum_branching.main.SimplifyCfg-after-uninhabited-enum-branching.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_enum_branching.main.UninhabitedEnumBranching.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_enum_branching.rs
uninhabited_enum.process_never.SimplifyLocals-final.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_enum.process_void.SimplifyLocals-final.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_enum.rs
uninhabited_fallthrough_elimination.eliminate_fallthrough.UninhabitedEnumBranching.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_fallthrough_elimination.keep_fallthrough.UninhabitedEnumBranching.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
uninhabited_fallthrough_elimination.rs
unreachable_diverging.main.UnreachablePropagation.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
unreachable_diverging.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
unreachable.main.UnreachablePropagation.panic-abort.diff Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unreachable.main.UnreachablePropagation.panic-unwind.diff Bless tests 2023-06-23 18:36:25 +01:00
unreachable.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
unusual_item_types.{impl#0}-ASSOCIATED_CONSTANT.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unusual_item_types.core.ptr-drop_in_place.Vec_i32_.AddMovesForPackedDrops.before.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unusual_item_types.E-V-{constant#0}.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
unusual_item_types.rs
unusual_item_types.Test-X-{constructor#0}.built.after.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
while_storage.rs properly mark tests that require panic=abort 2023-06-12 09:34:15 +02:00
while_storage.while_loop.PreCodegen.after.panic-abort.mir Remove comments from mir-opt MIR dumps 2023-06-15 15:19:11 -04:00
while_storage.while_loop.PreCodegen.after.panic-unwind.mir Bless tests 2023-06-23 18:36:25 +01:00

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