about summary refs log tree commit diff
path: root/tests/mir-opt
diff options
context:
space:
mode:
authorScott McMurray <scottmcm@users.noreply.github.com>2024-08-18 14:26:34 -0700
committerScott McMurray <scottmcm@users.noreply.github.com>2024-08-18 16:07:33 -0700
commit99cb0c6bc399fb94a0ddde7e9b38e9c00d523bad (patch)
treebb59a5f90f8a4a26f498d6748aec34d14a01d052 /tests/mir-opt
parent249a36ffbd577fc76153b7ad4cafd33607ee4ddc (diff)
downloadrust-99cb0c6bc399fb94a0ddde7e9b38e9c00d523bad.tar.gz
rust-99cb0c6bc399fb94a0ddde7e9b38e9c00d523bad.zip
Bless *all* the mir-opt tests
Diffstat (limited to 'tests/mir-opt')
-rw-r--r--tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir12
-rw-r--r--tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir8
-rw-r--r--tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir8
-rw-r--r--tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-abort.mir2
-rw-r--r--tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-unwind.mir2
-rw-r--r--tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-abort.mir2
-rw-r--r--tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-unwind.mir2
-rw-r--r--tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-abort.mir2
-rw-r--r--tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-unwind.mir2
-rw-r--r--tests/mir-opt/basic_assignment.main.ElaborateDrops.diff2
-rw-r--r--tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir2
-rw-r--r--tests/mir-opt/building/async_await.b-{closure#0}.coroutine_resume.0.mir12
-rw-r--r--tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir4
-rw-r--r--tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir6
-rw-r--r--tests/mir-opt/building/custom/arrays.arrays.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/assume.assume_local.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/assume.assume_place.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/enums.switch_bool.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/enums.switch_option.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/operators.f.built.after.mir40
-rw-r--r--tests/mir-opt/building/custom/operators.g.runtime.after.mir4
-rw-r--r--tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/projections.simple_index.built.after.mir4
-rw-r--r--tests/mir-opt/building/custom/projections.tuples.built.after.mir4
-rw-r--r--tests/mir-opt/building/custom/projections.unions.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/projections.unwrap.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/simple_assign.simple.built.after.mir4
-rw-r--r--tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/terminators.direct_call.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir2
-rw-r--r--tests/mir-opt/building/custom/terminators.tail_call.built.after.mir4
-rw-r--r--tests/mir-opt/building/enum_cast.bar.built.after.mir4
-rw-r--r--tests/mir-opt/building/enum_cast.boo.built.after.mir4
-rw-r--r--tests/mir-opt/building/enum_cast.droppy.built.after.mir4
-rw-r--r--tests/mir-opt/building/enum_cast.far.built.after.mir4
-rw-r--r--tests/mir-opt/building/enum_cast.offsetty.built.after.mir6
-rw-r--r--tests/mir-opt/building/enum_cast.signy.built.after.mir6
-rw-r--r--tests/mir-opt/building/eq_never_type._f.built.after.mir4
-rw-r--r--tests/mir-opt/building/issue_101867.main.built.after.mir2
-rw-r--r--tests/mir-opt/building/issue_49232.main.built.after.mir2
-rw-r--r--tests/mir-opt/building/logical_or_in_conditional.test_complex.built.after.mir4
-rw-r--r--tests/mir-opt/building/logical_or_in_conditional.test_or.built.after.mir4
-rw-r--r--tests/mir-opt/building/match/deref-patterns/string.foo.PreCodegen.after.mir4
-rw-r--r--tests/mir-opt/building/match/exponential_or.match_tuple.SimplifyCfg-initial.after.mir20
-rw-r--r--tests/mir-opt/building/match/match_false_edges.full_tested_match.built.after.mir8
-rw-r--r--tests/mir-opt/building/match/match_false_edges.full_tested_match2.built.after.mir8
-rw-r--r--tests/mir-opt/building/match/match_false_edges.main.built.after.mir10
-rw-r--r--tests/mir-opt/building/match/simple_match.match_bool.built.after.mir2
-rw-r--r--tests/mir-opt/building/match/sort_candidates.constant_eq.SimplifyCfg-initial.after.mir14
-rw-r--r--tests/mir-opt/building/match/sort_candidates.disjoint_ranges.SimplifyCfg-initial.after.mir12
-rw-r--r--tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir4
-rw-r--r--tests/mir-opt/building/shifts.shift_signed.built.after.mir48
-rw-r--r--tests/mir-opt/building/shifts.shift_unsigned.built.after.mir48
-rw-r--r--tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-abort.mir4
-rw-r--r--tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-unwind.mir4
-rw-r--r--tests/mir-opt/const_allocation.main.GVN.after.32bit.mir2
-rw-r--r--tests/mir-opt/const_allocation.main.GVN.after.64bit.mir2
-rw-r--r--tests/mir-opt/const_allocation2.main.GVN.after.32bit.mir2
-rw-r--r--tests/mir-opt/const_allocation2.main.GVN.after.64bit.mir2
-rw-r--r--tests/mir-opt/const_allocation3.main.GVN.after.32bit.mir2
-rw-r--r--tests/mir-opt/const_allocation3.main.GVN.after.64bit.mir2
-rw-r--r--tests/mir-opt/const_goto_const_eval_fail.f.JumpThreading.diff2
-rw-r--r--tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff4
-rw-r--r--tests/mir-opt/const_prop/aggregate.foo.GVN.panic-abort.diff12
-rw-r--r--tests/mir-opt/const_prop/aggregate.foo.GVN.panic-unwind.diff12
-rw-r--r--tests/mir-opt/const_prop/aggregate.main.GVN.panic-abort.diff4
-rw-r--r--tests/mir-opt/const_prop/aggregate.main.GVN.panic-unwind.diff4
-rw-r--r--tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-abort.diff6
-rw-r--r--tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-unwind.diff6
-rw-r--r--tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-abort.diff6
-rw-r--r--tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-unwind.diff6
-rw-r--r--tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-abort.diff10
-rw-r--r--tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-unwind.diff10
-rw-r--r--tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-abort.diff10
-rw-r--r--tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-unwind.diff10
-rw-r--r--tests/mir-opt/const_prop/boolean_identities.test.GVN.diff8
-rw-r--r--tests/mir-opt/const_prop/boxes.main.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/const_prop/boxes.main.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/const_prop/discriminant.main.GVN.32bit.diff2
-rw-r--r--tests/mir-opt/const_prop/discriminant.main.GVN.64bit.diff2
-rw-r--r--tests/mir-opt/const_prop/indirect.main.GVN.panic-abort.diff2
-rw-r--r--tests/mir-opt/const_prop/indirect.main.GVN.panic-unwind.diff2
-rw-r--r--tests/mir-opt/const_prop/indirect_mutation.bar.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/indirect_mutation.foo.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-abort.diff4
-rw-r--r--tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-unwind.diff4
-rw-r--r--tests/mir-opt/const_prop/invalid_constant.main.GVN.diff4
-rw-r--r--tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff6
-rw-r--r--tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-abort.diff6
-rw-r--r--tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-unwind.diff6
-rw-r--r--tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-abort.diff6
-rw-r--r--tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-unwind.diff6
-rw-r--r--tests/mir-opt/const_prop/mult_by_zero.test.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/mutable_variable.main.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-abort.diff2
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-unwind.diff2
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_no_prop.main.GVN.diff4
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/const_prop/overwrite_with_const_with_params.size_of.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-abort.diff4
-rw-r--r--tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-unwind.diff4
-rw-r--r--tests/mir-opt/const_prop/read_immutable_static.main.GVN.diff4
-rw-r--r--tests/mir-opt/const_prop/ref_deref.main.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/ref_deref_project.main.GVN.diff2
-rw-r--r--tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-abort.diff6
-rw-r--r--tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-unwind.diff6
-rw-r--r--tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-abort.diff6
-rw-r--r--tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-unwind.diff6
-rw-r--r--tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-abort.diff2
-rw-r--r--tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-unwind.diff2
-rw-r--r--tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff14
-rw-r--r--tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff14
-rw-r--r--tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff14
-rw-r--r--tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff14
-rw-r--r--tests/mir-opt/const_prop/switch_int.main.GVN.panic-abort.diff2
-rw-r--r--tests/mir-opt/const_prop/switch_int.main.GVN.panic-unwind.diff2
-rw-r--r--tests/mir-opt/const_prop/transmute.unreachable_box.GVN.32bit.diff2
-rw-r--r--tests/mir-opt/const_prop/transmute.unreachable_box.GVN.64bit.diff2
-rw-r--r--tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff2
-rw-r--r--tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff2
-rw-r--r--tests/mir-opt/const_prop/while_let_loops.change_loop_body.GVN.diff2
-rw-r--r--tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-abort.diff8
-rw-r--r--tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-unwind.diff8
-rw-r--r--tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/copy-prop/calls.multiple_edges.CopyProp.diff4
-rw-r--r--tests/mir-opt/copy-prop/calls.nrvo.CopyProp.diff2
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff2
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff2
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff4
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff4
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff2
-rw-r--r--tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff2
-rw-r--r--tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff8
-rw-r--r--tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff8
-rw-r--r--tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff10
-rw-r--r--tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff10
-rw-r--r--tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir6
-rw-r--r--tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir6
-rw-r--r--tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir6
-rw-r--r--tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir6
-rw-r--r--tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff18
-rw-r--r--tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff18
-rw-r--r--tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff8
-rw-r--r--tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff8
-rw-r--r--tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff4
-rw-r--r--tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff8
-rw-r--r--tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff6
-rw-r--r--tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff6
-rw-r--r--tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff16
-rw-r--r--tests/mir-opt/dataflow-const-prop/aggregate_copy.foo.DataflowConstProp.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/boolean_identities.test.DataflowConstProp.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.32bit.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.64bit.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.32bit.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.64bit.diff10
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.32bit.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.64bit.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff14
-rw-r--r--tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff14
-rw-r--r--tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff12
-rw-r--r--tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/mult_by_zero.test.DataflowConstProp.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff8
-rw-r--r--tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff4
-rw-r--r--tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-abort.diff20
-rw-r--r--tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-unwind.diff20
-rw-r--r--tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-abort.diff20
-rw-r--r--tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-unwind.diff20
-rw-r--r--tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff42
-rw-r--r--tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff42
-rw-r--r--tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.32bit.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.64bit.diff2
-rw-r--r--tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff16
-rw-r--r--tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff16
-rw-r--r--tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-abort.diff2
-rw-r--r--tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-abort.diff4
-rw-r--r--tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-unwind.diff4
-rw-r--r--tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination-initial.diff10
-rw-r--r--tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff4
-rw-r--r--tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff22
-rw-r--r--tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff22
-rw-r--r--tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff6
-rw-r--r--tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff6
-rw-r--r--tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff4
-rw-r--r--tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff4
-rw-r--r--tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff6
-rw-r--r--tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff6
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff6
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff6
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff2
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff4
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff4
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff2
-rw-r--r--tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff2
-rw-r--r--tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff8
-rw-r--r--tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff8
-rw-r--r--tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff4
-rw-r--r--tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff4
-rw-r--r--tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff2
-rw-r--r--tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff2
-rw-r--r--tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff8
-rw-r--r--tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff8
-rw-r--r--tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff8
-rw-r--r--tests/mir-opt/early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff8
-rw-r--r--tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff12
-rw-r--r--tests/mir-opt/early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff10
-rw-r--r--tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff36
-rw-r--r--tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff12
-rw-r--r--tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff4
-rw-r--r--tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff20
-rw-r--r--tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff20
-rw-r--r--tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff20
-rw-r--r--tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff20
-rw-r--r--tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-abort.diff32
-rw-r--r--tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-unwind.diff32
-rw-r--r--tests/mir-opt/gvn.arithmetic.GVN.panic-abort.diff130
-rw-r--r--tests/mir-opt/gvn.arithmetic.GVN.panic-unwind.diff130
-rw-r--r--tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff50
-rw-r--r--tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff50
-rw-r--r--tests/mir-opt/gvn.arithmetic_float.GVN.panic-abort.diff40
-rw-r--r--tests/mir-opt/gvn.arithmetic_float.GVN.panic-unwind.diff40
-rw-r--r--tests/mir-opt/gvn.borrowed.GVN.panic-abort.diff12
-rw-r--r--tests/mir-opt/gvn.borrowed.GVN.panic-unwind.diff12
-rw-r--r--tests/mir-opt/gvn.cast.GVN.panic-abort.diff60
-rw-r--r--tests/mir-opt/gvn.cast.GVN.panic-unwind.diff60
-rw-r--r--tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-abort.diff46
-rw-r--r--tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-unwind.diff46
-rw-r--r--tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-abort.diff10
-rw-r--r--tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-unwind.diff10
-rw-r--r--tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-abort.diff16
-rw-r--r--tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-unwind.diff16
-rw-r--r--tests/mir-opt/gvn.comparison.GVN.panic-abort.diff20
-rw-r--r--tests/mir-opt/gvn.comparison.GVN.panic-unwind.diff20
-rw-r--r--tests/mir-opt/gvn.constant_index_overflow.GVN.panic-abort.diff26
-rw-r--r--tests/mir-opt/gvn.constant_index_overflow.GVN.panic-unwind.diff26
-rw-r--r--tests/mir-opt/gvn.dereferences.GVN.panic-abort.diff36
-rw-r--r--tests/mir-opt/gvn.dereferences.GVN.panic-unwind.diff36
-rw-r--r--tests/mir-opt/gvn.duplicate_slice.GVN.panic-abort.diff18
-rw-r--r--tests/mir-opt/gvn.duplicate_slice.GVN.panic-unwind.diff18
-rw-r--r--tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff20
-rw-r--r--tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff20
-rw-r--r--tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-abort.diff30
-rw-r--r--tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-unwind.diff30
-rw-r--r--tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff2
-rw-r--r--tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff2
-rw-r--r--tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-abort.diff6
-rw-r--r--tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-unwind.diff6
-rw-r--r--tests/mir-opt/gvn.multiple_branches.GVN.panic-abort.diff64
-rw-r--r--tests/mir-opt/gvn.multiple_branches.GVN.panic-unwind.diff64
-rw-r--r--tests/mir-opt/gvn.non_freeze.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/gvn.non_freeze.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/gvn.references.GVN.panic-abort.diff6
-rw-r--r--tests/mir-opt/gvn.references.GVN.panic-unwind.diff6
-rw-r--r--tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-abort.diff6
-rw-r--r--tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-unwind.diff6
-rw-r--r--tests/mir-opt/gvn.repeat.GVN.panic-abort.diff20
-rw-r--r--tests/mir-opt/gvn.repeat.GVN.panic-unwind.diff20
-rw-r--r--tests/mir-opt/gvn.repeated_index.GVN.panic-abort.diff30
-rw-r--r--tests/mir-opt/gvn.repeated_index.GVN.panic-unwind.diff30
-rw-r--r--tests/mir-opt/gvn.slice_const_length.GVN.panic-abort.diff6
-rw-r--r--tests/mir-opt/gvn.slice_const_length.GVN.panic-unwind.diff6
-rw-r--r--tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-abort.diff16
-rw-r--r--tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-unwind.diff16
-rw-r--r--tests/mir-opt/gvn.slices.GVN.panic-abort.diff56
-rw-r--r--tests/mir-opt/gvn.slices.GVN.panic-unwind.diff56
-rw-r--r--tests/mir-opt/gvn.subexpression_elimination.GVN.panic-abort.diff344
-rw-r--r--tests/mir-opt/gvn.subexpression_elimination.GVN.panic-unwind.diff344
-rw-r--r--tests/mir-opt/gvn.unary.GVN.panic-abort.diff48
-rw-r--r--tests/mir-opt/gvn.unary.GVN.panic-unwind.diff48
-rw-r--r--tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff24
-rw-r--r--tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff24
-rw-r--r--tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-abort.diff76
-rw-r--r--tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-unwind.diff76
-rw-r--r--tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-abort.diff84
-rw-r--r--tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff84
-rw-r--r--tests/mir-opt/gvn.wrap_unwrap.GVN.panic-abort.diff12
-rw-r--r--tests/mir-opt/gvn.wrap_unwrap.GVN.panic-unwind.diff12
-rw-r--r--tests/mir-opt/gvn_copy_moves.fn0.GVN.diff8
-rw-r--r--tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff8
-rw-r--r--tests/mir-opt/gvn_uninhabited.f.GVN.panic-abort.diff8
-rw-r--r--tests/mir-opt/gvn_uninhabited.f.GVN.panic-unwind.diff8
-rw-r--r--tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff2
-rw-r--r--tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff2
-rw-r--r--tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff10
-rw-r--r--tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff2
-rw-r--r--tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff2
-rw-r--r--tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff4
-rw-r--r--tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff2
-rw-r--r--tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff2
-rw-r--r--tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff6
-rw-r--r--tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff6
-rw-r--r--tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff2
-rw-r--r--tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff2
-rw-r--r--tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff2
-rw-r--r--tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff2
-rw-r--r--tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir4
-rw-r--r--tests/mir-opt/inline/inline_closure.foo.Inline.after.mir6
-rw-r--r--tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir6
-rw-r--r--tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir10
-rw-r--r--tests/mir-opt/inline/inline_coroutine.main.Inline.panic-abort.diff8
-rw-r--r--tests/mir-opt/inline/inline_coroutine.main.Inline.panic-unwind.diff8
-rw-r--r--tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff4
-rw-r--r--tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff4
-rw-r--r--tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff2
-rw-r--r--tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff2
-rw-r--r--tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-abort.mir4
-rw-r--r--tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-unwind.mir4
-rw-r--r--tests/mir-opt/inline/inline_retag.bar.Inline.after.mir14
-rw-r--r--tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff2
-rw-r--r--tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff2
-rw-r--r--tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff4
-rw-r--r--tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff4
-rw-r--r--tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff6
-rw-r--r--tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff6
-rw-r--r--tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir8
-rw-r--r--tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir10
-rw-r--r--tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir6
-rw-r--r--tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir8
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff8
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff8
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-abort.diff8
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-unwind.diff8
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline/unsized_argument.caller.Inline.diff2
-rw-r--r--tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff2
-rw-r--r--tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff2
-rw-r--r--tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff10
-rw-r--r--tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff10
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.eq_false.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.eq_true.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.false_eq.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.false_ne.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.ne_false.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.ne_true.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.true_eq.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/bool_compare.true_ne.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/casts.redundant.InstSimplify-after-simplifycfg.diff6
-rw-r--r--tests/mir-opt/instsimplify/casts.roundtrip.InstSimplify-after-simplifycfg.diff2
-rw-r--r--tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-abort.diff20
-rw-r--r--tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-unwind.diff20
-rw-r--r--tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-abort.diff10
-rw-r--r--tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-unwind.diff10
-rw-r--r--tests/mir-opt/instsimplify/duplicate_switch_targets.assert_zero.InstSimplify-after-simplifycfg.diff6
-rw-r--r--tests/mir-opt/instsimplify/ref_of_deref.pointers.InstSimplify-after-simplifycfg.diff4
-rw-r--r--tests/mir-opt/instsimplify/ref_of_deref.references.InstSimplify-after-simplifycfg.diff4
-rw-r--r--tests/mir-opt/instsimplify/ub_check.unwrap_unchecked.InstSimplify-after-simplifycfg.diff4
-rw-r--r--tests/mir-opt/issue_101973.inner.GVN.panic-abort.diff14
-rw-r--r--tests/mir-opt/issue_101973.inner.GVN.panic-unwind.diff14
-rw-r--r--tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir2
-rw-r--r--tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff2
-rw-r--r--tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff2
-rw-r--r--tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff2
-rw-r--r--tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff2
-rw-r--r--tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff6
-rw-r--r--tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff6
-rw-r--r--tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir8
-rw-r--r--tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir8
-rw-r--r--tests/mir-opt/issue_72181.bar.built.after.mir4
-rw-r--r--tests/mir-opt/issue_72181.foo.built.after.mir6
-rw-r--r--tests/mir-opt/issue_72181.main.built.after.mir6
-rw-r--r--tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff4
-rw-r--r--tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff4
-rw-r--r--tests/mir-opt/issue_78192.f.InstSimplify-after-simplifycfg.diff4
-rw-r--r--tests/mir-opt/issue_91633.foo.built.after.mir4
-rw-r--r--tests/mir-opt/issue_91633.fun.built.after.mir4
-rw-r--r--tests/mir-opt/issue_99325.main.built.after.32bit.mir8
-rw-r--r--tests/mir-opt/issue_99325.main.built.after.64bit.mir8
-rw-r--r--tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff12
-rw-r--r--tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-abort.diff10
-rw-r--r--tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-unwind.diff10
-rw-r--r--tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-abort.diff8
-rw-r--r--tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-unwind.diff8
-rw-r--r--tests/mir-opt/jump_threading.assume.JumpThreading.panic-abort.diff6
-rw-r--r--tests/mir-opt/jump_threading.assume.JumpThreading.panic-unwind.diff6
-rw-r--r--tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-abort.diff2
-rw-r--r--tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-unwind.diff2
-rw-r--r--tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-abort.diff6
-rw-r--r--tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff6
-rw-r--r--tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-abort.diff4
-rw-r--r--tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff4
-rw-r--r--tests/mir-opt/jump_threading.floats.JumpThreading.panic-abort.diff2
-rw-r--r--tests/mir-opt/jump_threading.floats.JumpThreading.panic-unwind.diff2
-rw-r--r--tests/mir-opt/jump_threading.identity.JumpThreading.panic-abort.diff14
-rw-r--r--tests/mir-opt/jump_threading.identity.JumpThreading.panic-unwind.diff14
-rw-r--r--tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-abort.diff12
-rw-r--r--tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-unwind.diff12
-rw-r--r--tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-abort.diff2
-rw-r--r--tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-unwind.diff2
-rw-r--r--tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff2
-rw-r--r--tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff2
-rw-r--r--tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-abort.diff10
-rw-r--r--tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff10
-rw-r--r--tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-abort.diff14
-rw-r--r--tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-unwind.diff14
-rw-r--r--tests/mir-opt/lower_array_len.array_bound.GVN.panic-abort.diff20
-rw-r--r--tests/mir-opt/lower_array_len.array_bound.GVN.panic-unwind.diff20
-rw-r--r--tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-abort.diff24
-rw-r--r--tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-unwind.diff24
-rw-r--r--tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-abort.diff6
-rw-r--r--tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-unwind.diff6
-rw-r--r--tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-abort.diff12
-rw-r--r--tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-unwind.diff12
-rw-r--r--tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff4
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff2
-rw-r--r--tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff36
-rw-r--r--tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff36
-rw-r--r--tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff12
-rw-r--r--tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff12
-rw-r--r--tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff12
-rw-r--r--tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff12
-rw-r--r--tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff10
-rw-r--r--tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff10
-rw-r--r--tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff28
-rw-r--r--tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff28
-rw-r--r--tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff16
-rw-r--r--tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff10
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_sext_i8_i16.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_sext_i8_u16.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_trunc_i16_i8.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_trunc_i16_u8.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_trunc_u16_i8.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_trunc_u16_u8.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_u8_i8.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_u8_i8_2.MatchBranchSimplification.diff8
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_u8_i8_2_failed.MatchBranchSimplification.diff4
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_1.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_2.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_zext_u8_i16.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_reduce_branches.match_zext_u8_u16.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff2
-rw-r--r--tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir8
-rw-r--r--tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir8
-rw-r--r--tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff6
-rw-r--r--tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff4
-rw-r--r--tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff4
-rw-r--r--tests/mir-opt/or_pattern.shortcut_second_or.SimplifyCfg-initial.after.mir24
-rw-r--r--tests/mir-opt/or_pattern.single_switchint.SimplifyCfg-initial.after.mir8
-rw-r--r--tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir20
-rw-r--r--tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir20
-rw-r--r--tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir20
-rw-r--r--tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-abort.mir4
-rw-r--r--tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-unwind.mir4
-rw-r--r--tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-abort.mir12
-rw-r--r--tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-unwind.mir12
-rw-r--r--tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir12
-rw-r--r--tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-abort.diff14
-rw-r--r--tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-unwind.diff12
-rw-r--r--tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-abort.diff14
-rw-r--r--tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-unwind.diff12
-rw-r--r--tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir2
-rw-r--r--tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir16
-rw-r--r--tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir4
-rw-r--r--tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-abort.mir4
-rw-r--r--tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-unwind.mir4
-rw-r--r--tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-abort.mir4
-rw-r--r--tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-unwind.mir4
-rw-r--r--tests/mir-opt/pre-codegen/no_inlined_clone.{impl#0}-clone.PreCodegen.after.mir2
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff8
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff8
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff10
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff10
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff10
-rw-r--r--tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff10
-rw-r--r--tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-abort.mir8
-rw-r--r--tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-unwind.mir8
-rw-r--r--tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-abort.mir6
-rw-r--r--tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-unwind.mir6
-rw-r--r--tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir16
-rw-r--r--tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir16
-rw-r--r--tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir8
-rw-r--r--tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir8
-rw-r--r--tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir10
-rw-r--r--tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir10
-rw-r--r--tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir4
-rw-r--r--tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir26
-rw-r--r--tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir18
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir10
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir10
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir12
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir12
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir6
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir6
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir12
-rw-r--r--tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir12
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir36
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir26
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir22
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir22
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir20
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir20
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir24
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir24
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-abort.mir18
-rw-r--r--tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-unwind.mir18
-rw-r--r--tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir8
-rw-r--r--tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir4
-rw-r--r--tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-abort.mir10
-rw-r--r--tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-unwind.mir10
-rw-r--r--tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff6
-rw-r--r--tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff16
-rw-r--r--tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff4
-rw-r--r--tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff10
-rw-r--r--tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff8
-rw-r--r--tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff48
-rw-r--r--tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff52
-rw-r--r--tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff30
-rw-r--r--tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff38
-rw-r--r--tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff8
-rw-r--r--tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff4
-rw-r--r--tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff4
-rw-r--r--tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff6
-rw-r--r--tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff6
-rw-r--r--tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff2
-rw-r--r--tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff2
-rw-r--r--tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff2
-rw-r--r--tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff2
-rw-r--r--tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir14
-rw-r--r--tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir14
-rw-r--r--tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir6
-rw-r--r--tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir6
-rw-r--r--tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir2
-rw-r--r--tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir2
-rw-r--r--tests/mir-opt/separate_const_switch.identity.JumpThreading.diff18
-rw-r--r--tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff14
-rw-r--r--tests/mir-opt/set_no_discriminant.f.JumpThreading.diff2
-rw-r--r--tests/mir-opt/set_no_discriminant.generic.JumpThreading.diff2
-rw-r--r--tests/mir-opt/simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff6
-rw-r--r--tests/mir-opt/simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff2
-rw-r--r--tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff2
-rw-r--r--tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff2
-rw-r--r--tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff2
-rw-r--r--tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff2
-rw-r--r--tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff2
-rw-r--r--tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff4
-rw-r--r--tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff4
-rw-r--r--tests/mir-opt/simplify_match.main.GVN.panic-abort.diff4
-rw-r--r--tests/mir-opt/simplify_match.main.GVN.panic-unwind.diff4
-rw-r--r--tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-abort.diff2
-rw-r--r--tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-unwind.diff2
-rw-r--r--tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-abort.diff2
-rw-r--r--tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-unwind.diff2
-rw-r--r--tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-abort.diff2
-rw-r--r--tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-unwind.diff2
-rw-r--r--tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir4
-rw-r--r--tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff6
-rw-r--r--tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff8
-rw-r--r--tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff32
-rw-r--r--tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff6
-rw-r--r--tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff16
-rw-r--r--tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff18
-rw-r--r--tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff6
-rw-r--r--tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff4
-rw-r--r--tests/mir-opt/storage_ranges.main.nll.0.mir2
-rw-r--r--tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff4
-rw-r--r--tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-abort.diff2
-rw-r--r--tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-unwind.diff2
-rw-r--r--tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-abort.diff2
-rw-r--r--tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-unwind.diff2
-rw-r--r--tests/mir-opt/unnamed-fields/field_access.bar.SimplifyCfg-initial.after.mir8
-rw-r--r--tests/mir-opt/unnamed-fields/field_access.foo.SimplifyCfg-initial.after.mir8
-rw-r--r--tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-abort.diff2
-rw-r--r--tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-unwind.diff2
-rw-r--r--tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-abort.diff2
-rw-r--r--tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-unwind.diff2
-rw-r--r--tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff4
-rw-r--r--tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff4
-rw-r--r--tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff2
-rw-r--r--tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff2
678 files changed, 3567 insertions, 3567 deletions
diff --git a/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir b/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
index cb72ad3d253..be636da4517 100644
--- a/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/address_of.address_of_reborrow.SimplifyCfg-initial.after.mir
@@ -140,7 +140,7 @@ fn address_of_reborrow() -> () {
         StorageLive(_6);
         _6 = &raw const (*_1);
         AscribeUserType(_6, o, UserTypeProjection { base: UserType(0), projs: [] });
-        _5 = _6;
+        _5 = copy _6;
         StorageDead(_6);
         StorageDead(_5);
         StorageLive(_7);
@@ -153,7 +153,7 @@ fn address_of_reborrow() -> () {
         _9 = move _10 as *const dyn std::marker::Send (PointerCoercion(Unsize));
         StorageDead(_10);
         AscribeUserType(_9, o, UserTypeProjection { base: UserType(1), projs: [] });
-        _8 = _9;
+        _8 = copy _9;
         StorageDead(_9);
         StorageDead(_8);
         StorageLive(_11);
@@ -194,7 +194,7 @@ fn address_of_reborrow() -> () {
         StorageLive(_22);
         _22 = &raw const (*_3);
         AscribeUserType(_22, o, UserTypeProjection { base: UserType(10), projs: [] });
-        _21 = _22;
+        _21 = copy _22;
         StorageDead(_22);
         StorageDead(_21);
         StorageLive(_23);
@@ -207,7 +207,7 @@ fn address_of_reborrow() -> () {
         _25 = move _26 as *const dyn std::marker::Send (PointerCoercion(Unsize));
         StorageDead(_26);
         AscribeUserType(_25, o, UserTypeProjection { base: UserType(11), projs: [] });
-        _24 = _25;
+        _24 = copy _25;
         StorageDead(_25);
         StorageDead(_24);
         StorageLive(_27);
@@ -242,7 +242,7 @@ fn address_of_reborrow() -> () {
         StorageLive(_36);
         _36 = &raw mut (*_3);
         AscribeUserType(_36, o, UserTypeProjection { base: UserType(20), projs: [] });
-        _35 = _36;
+        _35 = copy _36;
         StorageDead(_36);
         StorageDead(_35);
         StorageLive(_37);
@@ -255,7 +255,7 @@ fn address_of_reborrow() -> () {
         _39 = move _40 as *mut dyn std::marker::Send (PointerCoercion(Unsize));
         StorageDead(_40);
         AscribeUserType(_39, o, UserTypeProjection { base: UserType(21), projs: [] });
-        _38 = _39;
+        _38 = copy _39;
         StorageDead(_39);
         StorageDead(_38);
         StorageLive(_41);
diff --git a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
index ef51b07827f..a467987e886 100644
--- a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
+++ b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
@@ -33,17 +33,17 @@ fn main() -> () {
         StorageDead(_4);
         StorageLive(_5);
         StorageLive(_6);
-        _6 = _3;
+        _6 = copy _3;
         _5 = foo(move _6) -> [return: bb1, unwind unreachable];
     }
 
     bb1: {
         StorageDead(_6);
         StorageLive(_7);
-        _7 = _2;
+        _7 = copy _2;
         _8 = Len(_1);
-        _9 = Lt(_7, _8);
-        assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind unreachable];
+        _9 = Lt(copy _7, copy _8);
+        assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb2, unwind unreachable];
     }
 
     bb2: {
diff --git a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
index d1aa9382a2c..bd7365543bd 100644
--- a/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
+++ b/tests/mir-opt/array_index_is_temporary.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
@@ -33,17 +33,17 @@ fn main() -> () {
         StorageDead(_4);
         StorageLive(_5);
         StorageLive(_6);
-        _6 = _3;
+        _6 = copy _3;
         _5 = foo(move _6) -> [return: bb1, unwind continue];
     }
 
     bb1: {
         StorageDead(_6);
         StorageLive(_7);
-        _7 = _2;
+        _7 = copy _2;
         _8 = Len(_1);
-        _9 = Lt(_7, _8);
-        assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind continue];
+        _9 = Lt(copy _7, copy _8);
+        assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb2, unwind continue];
     }
 
     bb2: {
diff --git a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-abort.mir b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-abort.mir
index 1c34955a8d9..1f5bb551b8e 100644
--- a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-abort.mir
+++ b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-abort.mir
@@ -22,7 +22,7 @@ yields ()
 
     bb0: {
         StorageLive(_3);
-        _3 = (_1.0: i32);
+        _3 = copy (_1.0: i32);
         FakeRead(ForLet(None), _3);
         StorageLive(_4);
         _4 = &_3;
diff --git a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-unwind.mir b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
index 1c34955a8d9..1f5bb551b8e 100644
--- a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
+++ b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#0}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
@@ -22,7 +22,7 @@ yields ()
 
     bb0: {
         StorageLive(_3);
-        _3 = (_1.0: i32);
+        _3 = copy (_1.0: i32);
         FakeRead(ForLet(None), _3);
         StorageLive(_4);
         _4 = &_3;
diff --git a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-abort.mir b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-abort.mir
index 516908144a6..17fa9314806 100644
--- a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-abort.mir
+++ b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-abort.mir
@@ -22,7 +22,7 @@ yields ()
 
     bb0: {
         StorageLive(_3);
-        _3 = (_1.0: i32);
+        _3 = copy (_1.0: i32);
         FakeRead(ForLet(None), _3);
         StorageLive(_4);
         _4 = &_3;
diff --git a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-unwind.mir b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
index 516908144a6..17fa9314806 100644
--- a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
+++ b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}-{closure#0}.coroutine_by_move.0.panic-unwind.mir
@@ -22,7 +22,7 @@ yields ()
 
     bb0: {
         StorageLive(_3);
-        _3 = (_1.0: i32);
+        _3 = copy (_1.0: i32);
         FakeRead(ForLet(None), _3);
         StorageLive(_4);
         _4 = &_3;
diff --git a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-abort.mir b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-abort.mir
index ba20c28cd01..3fdc81791de 100644
--- a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-abort.mir
+++ b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-abort.mir
@@ -4,7 +4,7 @@ fn main::{closure#0}::{closure#1}(_1: &{async closure@$DIR/async_closure_shims.r
     let mut _0: {async closure body@$DIR/async_closure_shims.rs:62:48: 65:10};
 
     bb0: {
-        _0 = {coroutine@$DIR/async_closure_shims.rs:62:48: 65:10 (#0)} { a: move _2, b: ((*_1).0: &i32) };
+        _0 = {coroutine@$DIR/async_closure_shims.rs:62:48: 65:10 (#0)} { a: move _2, b: copy ((*_1).0: &i32) };
         return;
     }
 }
diff --git a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-unwind.mir b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-unwind.mir
index ba20c28cd01..3fdc81791de 100644
--- a/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-unwind.mir
+++ b/tests/mir-opt/async_closure_shims.main-{closure#0}-{closure#1}.coroutine_closure_by_ref.0.panic-unwind.mir
@@ -4,7 +4,7 @@ fn main::{closure#0}::{closure#1}(_1: &{async closure@$DIR/async_closure_shims.r
     let mut _0: {async closure body@$DIR/async_closure_shims.rs:62:48: 65:10};
 
     bb0: {
-        _0 = {coroutine@$DIR/async_closure_shims.rs:62:48: 65:10 (#0)} { a: move _2, b: ((*_1).0: &i32) };
+        _0 = {coroutine@$DIR/async_closure_shims.rs:62:48: 65:10 (#0)} { a: move _2, b: copy ((*_1).0: &i32) };
         return;
     }
 }
diff --git a/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff b/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff
index f187f959727..2d6adaca19e 100644
--- a/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff
+++ b/tests/mir-opt/basic_assignment.main.ElaborateDrops.diff
@@ -27,7 +27,7 @@
           _1 = const false;
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = move _3;
           StorageDead(_3);
           StorageLive(_4);
diff --git a/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir
index 5c0d1e9b93f..d4f0363e443 100644
--- a/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/basic_assignment.main.SimplifyCfg-initial.after.mir
@@ -31,7 +31,7 @@ fn main() -> () {
         FakeRead(ForLet(None), _1);
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         _2 = move _3;
         StorageDead(_3);
         StorageLive(_4);
diff --git a/tests/mir-opt/building/async_await.b-{closure#0}.coroutine_resume.0.mir b/tests/mir-opt/building/async_await.b-{closure#0}.coroutine_resume.0.mir
index c0f16ee7ec0..c1c2fdcfa94 100644
--- a/tests/mir-opt/building/async_await.b-{closure#0}.coroutine_resume.0.mir
+++ b/tests/mir-opt/building/async_await.b-{closure#0}.coroutine_resume.0.mir
@@ -151,7 +151,7 @@ fn b::{closure#0}(_1: Pin<&mut {async fn body of b()}>, _2: &mut Context<'_>) ->
         StorageLive(_13);
         StorageLive(_14);
         StorageLive(_15);
-        _15 = _38;
+        _15 = copy _38;
         _14 = move _15;
         goto -> bb6;
     }
@@ -194,8 +194,8 @@ fn b::{closure#0}(_1: Pin<&mut {async fn body of b()}>, _2: &mut Context<'_>) ->
 
     bb10: {
         StorageLive(_17);
-        _17 = ((_9 as Ready).0: ());
-        _3 = _17;
+        _17 = copy ((_9 as Ready).0: ());
+        _3 = copy _17;
         StorageDead(_17);
         StorageDead(_14);
         StorageDead(_12);
@@ -253,7 +253,7 @@ fn b::{closure#0}(_1: Pin<&mut {async fn body of b()}>, _2: &mut Context<'_>) ->
         StorageLive(_29);
         StorageLive(_30);
         StorageLive(_31);
-        _31 = _38;
+        _31 = copy _38;
         _30 = move _31;
         goto -> bb18;
     }
@@ -291,8 +291,8 @@ fn b::{closure#0}(_1: Pin<&mut {async fn body of b()}>, _2: &mut Context<'_>) ->
 
     bb21: {
         StorageLive(_33);
-        _33 = ((_25 as Ready).0: ());
-        _37 = _33;
+        _33 = copy ((_25 as Ready).0: ());
+        _37 = copy _33;
         StorageDead(_33);
         StorageDead(_30);
         StorageDead(_28);
diff --git a/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir b/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir
index c14882142f5..6d4d261b895 100644
--- a/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir
+++ b/tests/mir-opt/building/custom/aggregate_exprs.adt.built.after.mir
@@ -9,8 +9,8 @@ fn adt() -> Onion {
     bb0: {
         _1 = const 1_i32;
         _2 = Foo { a: const 1_i32, b: const 2_i32 };
-        _3 = Bar::Foo(move _2, _1);
-        _0 = Onion { neon: ((_3 as variant#0).1: i32) };
+        _3 = Bar::Foo(move _2, copy _1);
+        _0 = Onion { neon: copy ((_3 as variant#0).1: i32) };
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir b/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir
index fde007abab0..2c14258956a 100644
--- a/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir
+++ b/tests/mir-opt/building/custom/aggregate_exprs.array.built.after.mir
@@ -8,7 +8,7 @@ fn array() -> [i32; 2] {
     bb0: {
         _1 = [const 42_i32, const 43_i32];
         _2 = const 1_i32;
-        _1 = [_2, const 2_i32];
+        _1 = [copy _2, const 2_i32];
         _0 = move _1;
         return;
     }
diff --git a/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir b/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir
index 189996f1179..72a16b35885 100644
--- a/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir
+++ b/tests/mir-opt/building/custom/arbitrary_let.arbitrary_let.built.after.mir
@@ -6,17 +6,17 @@ fn arbitrary_let(_1: i32) -> i32 {
     let mut _3: i32;
 
     bb0: {
-        _2 = _1;
+        _2 = copy _1;
         goto -> bb2;
     }
 
     bb1: {
-        _0 = _3;
+        _0 = copy _3;
         return;
     }
 
     bb2: {
-        _3 = _2;
+        _3 = copy _2;
         goto -> bb1;
     }
 }
diff --git a/tests/mir-opt/building/custom/arrays.arrays.built.after.mir b/tests/mir-opt/building/custom/arrays.arrays.built.after.mir
index eaeba302f15..30d11e31e4d 100644
--- a/tests/mir-opt/building/custom/arrays.arrays.built.after.mir
+++ b/tests/mir-opt/building/custom/arrays.arrays.built.after.mir
@@ -8,7 +8,7 @@ fn arrays() -> usize {
     bb0: {
         _1 = [const 5_i32; C];
         _2 = Len(_1);
-        _0 = _2;
+        _0 = copy _2;
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir b/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir
index e3334bc7dbe..93750719d27 100644
--- a/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir
+++ b/tests/mir-opt/building/custom/as_cast.float_to_int.built.after.mir
@@ -4,7 +4,7 @@ fn float_to_int(_1: f32) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = _1 as i32 (FloatToInt);
+        _0 = copy _1 as i32 (FloatToInt);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir b/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir
index d71cb9d78d3..9adec45d64b 100644
--- a/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir
+++ b/tests/mir-opt/building/custom/as_cast.int_to_int.built.after.mir
@@ -4,7 +4,7 @@ fn int_to_int(_1: u32) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = _1 as i32 (IntToInt);
+        _0 = copy _1 as i32 (IntToInt);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir b/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir
index faff79e8c57..aa642258095 100644
--- a/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir
+++ b/tests/mir-opt/building/custom/as_cast.int_to_ptr.built.after.mir
@@ -4,7 +4,7 @@ fn int_to_ptr(_1: usize) -> *const i32 {
     let mut _0: *const i32;
 
     bb0: {
-        _0 = _1 as *const i32 (PointerWithExposedProvenance);
+        _0 = copy _1 as *const i32 (PointerWithExposedProvenance);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/assume.assume_local.built.after.mir b/tests/mir-opt/building/custom/assume.assume_local.built.after.mir
index 7ea1fcd30c2..36e2859ce16 100644
--- a/tests/mir-opt/building/custom/assume.assume_local.built.after.mir
+++ b/tests/mir-opt/building/custom/assume.assume_local.built.after.mir
@@ -4,7 +4,7 @@ fn assume_local(_1: bool) -> () {
     let mut _0: ();
 
     bb0: {
-        assume(_1);
+        assume(copy _1);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/assume.assume_place.built.after.mir b/tests/mir-opt/building/custom/assume.assume_place.built.after.mir
index ce914618d3d..074af333d63 100644
--- a/tests/mir-opt/building/custom/assume.assume_place.built.after.mir
+++ b/tests/mir-opt/building/custom/assume.assume_place.built.after.mir
@@ -4,7 +4,7 @@ fn assume_place(_1: (bool, u8)) -> () {
     let mut _0: ();
 
     bb0: {
-        assume((_1.0: bool));
+        assume(copy (_1.0: bool));
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir b/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir
index f82e5f1c6fd..beefef331df 100644
--- a/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir
+++ b/tests/mir-opt/building/custom/enums.switch_bool.built.after.mir
@@ -4,7 +4,7 @@ fn switch_bool(_1: bool) -> u32 {
     let mut _0: u32;
 
     bb0: {
-        switchInt(_1) -> [1: bb1, 0: bb2, otherwise: bb2];
+        switchInt(copy _1) -> [1: bb1, 0: bb2, otherwise: bb2];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/custom/enums.switch_option.built.after.mir b/tests/mir-opt/building/custom/enums.switch_option.built.after.mir
index fa03f274be3..a854df87866 100644
--- a/tests/mir-opt/building/custom/enums.switch_option.built.after.mir
+++ b/tests/mir-opt/building/custom/enums.switch_option.built.after.mir
@@ -6,7 +6,7 @@ fn switch_option(_1: Option<()>) -> bool {
 
     bb0: {
         _2 = discriminant(_1);
-        switchInt(_2) -> [0: bb1, 1: bb2, otherwise: bb2];
+        switchInt(copy _2) -> [0: bb1, 1: bb2, otherwise: bb2];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir b/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir
index eec2197a8bd..4ffc08772a8 100644
--- a/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir
+++ b/tests/mir-opt/building/custom/enums.switch_option_repr.built.after.mir
@@ -6,7 +6,7 @@ fn switch_option_repr(_1: Bool) -> bool {
 
     bb0: {
         _2 = discriminant(_1);
-        switchInt(_2) -> [0: bb2, otherwise: bb1];
+        switchInt(copy _2) -> [0: bb2, otherwise: bb1];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/custom/operators.f.built.after.mir b/tests/mir-opt/building/custom/operators.f.built.after.mir
index cac82f7b3ea..ed6cddd548f 100644
--- a/tests/mir-opt/building/custom/operators.f.built.after.mir
+++ b/tests/mir-opt/building/custom/operators.f.built.after.mir
@@ -5,26 +5,26 @@ fn f(_1: i32, _2: bool) -> i32 {
     let mut _3: (i32, bool);
 
     bb0: {
-        _1 = Neg(_1);
-        _2 = Not(_2);
-        _1 = Add(_1, _1);
-        _1 = Sub(_1, _1);
-        _1 = Mul(_1, _1);
-        _1 = Div(_1, _1);
-        _1 = Rem(_1, _1);
-        _1 = BitXor(_1, _1);
-        _1 = BitAnd(_1, _1);
-        _1 = Shl(_1, _1);
-        _1 = Shr(_1, _1);
-        _2 = Eq(_1, _1);
-        _2 = Lt(_1, _1);
-        _2 = Le(_1, _1);
-        _2 = Ge(_1, _1);
-        _2 = Gt(_1, _1);
-        _3 = AddWithOverflow(_1, _1);
-        _2 = (_3.1: bool);
-        _1 = (_3.0: i32);
-        _0 = _1;
+        _1 = Neg(copy _1);
+        _2 = Not(copy _2);
+        _1 = Add(copy _1, copy _1);
+        _1 = Sub(copy _1, copy _1);
+        _1 = Mul(copy _1, copy _1);
+        _1 = Div(copy _1, copy _1);
+        _1 = Rem(copy _1, copy _1);
+        _1 = BitXor(copy _1, copy _1);
+        _1 = BitAnd(copy _1, copy _1);
+        _1 = Shl(copy _1, copy _1);
+        _1 = Shr(copy _1, copy _1);
+        _2 = Eq(copy _1, copy _1);
+        _2 = Lt(copy _1, copy _1);
+        _2 = Le(copy _1, copy _1);
+        _2 = Ge(copy _1, copy _1);
+        _2 = Gt(copy _1, copy _1);
+        _3 = AddWithOverflow(copy _1, copy _1);
+        _2 = copy (_3.1: bool);
+        _1 = copy (_3.0: i32);
+        _0 = copy _1;
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/operators.g.runtime.after.mir b/tests/mir-opt/building/custom/operators.g.runtime.after.mir
index a0ad7d0f93f..7d87fd93278 100644
--- a/tests/mir-opt/building/custom/operators.g.runtime.after.mir
+++ b/tests/mir-opt/building/custom/operators.g.runtime.after.mir
@@ -6,8 +6,8 @@ fn g(_1: *const i32, _2: *const [i32]) -> () {
     let mut _4: usize;
 
     bb0: {
-        _3 = PtrMetadata(_1);
-        _4 = PtrMetadata(_2);
+        _3 = PtrMetadata(copy _1);
+        _4 = PtrMetadata(copy _2);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir b/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir
index b1ba5f9314d..b28e96f10ea 100644
--- a/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir
+++ b/tests/mir-opt/building/custom/projections.copy_for_deref.built.after.mir
@@ -6,7 +6,7 @@ fn copy_for_deref(_1: (&i32, i32)) -> i32 {
 
     bb0: {
         _2 = deref_copy (_1.0: &i32);
-        _0 = (*_2);
+        _0 = copy (*_2);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/projections.simple_index.built.after.mir b/tests/mir-opt/building/custom/projections.simple_index.built.after.mir
index f74c61009d3..2cd781696da 100644
--- a/tests/mir-opt/building/custom/projections.simple_index.built.after.mir
+++ b/tests/mir-opt/building/custom/projections.simple_index.built.after.mir
@@ -6,8 +6,8 @@ fn simple_index(_1: [i32; 10], _2: &[i32]) -> i32 {
 
     bb0: {
         _3 = const 3_usize;
-        _0 = _1[_3];
-        _0 = (*_2)[_3];
+        _0 = copy _1[_3];
+        _0 = copy (*_2)[_3];
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/projections.tuples.built.after.mir b/tests/mir-opt/building/custom/projections.tuples.built.after.mir
index a370de2ed84..d07269cd0d3 100644
--- a/tests/mir-opt/building/custom/projections.tuples.built.after.mir
+++ b/tests/mir-opt/building/custom/projections.tuples.built.after.mir
@@ -4,8 +4,8 @@ fn tuples(_1: (u32, i32)) -> (u32, i32) {
     let mut _0: (u32, i32);
 
     bb0: {
-        (_0.0: u32) = (_1.0: u32);
-        (_0.1: i32) = (_1.1: i32);
+        (_0.0: u32) = copy (_1.0: u32);
+        (_0.1: i32) = copy (_1.1: i32);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/projections.unions.built.after.mir b/tests/mir-opt/building/custom/projections.unions.built.after.mir
index 4189b329e8c..fe4f7acebb5 100644
--- a/tests/mir-opt/building/custom/projections.unions.built.after.mir
+++ b/tests/mir-opt/building/custom/projections.unions.built.after.mir
@@ -4,7 +4,7 @@ fn unions(_1: U) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = (_1.0: i32);
+        _0 = copy (_1.0: i32);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/projections.unwrap.built.after.mir b/tests/mir-opt/building/custom/projections.unwrap.built.after.mir
index 0c43bdc9d24..ea706e0a97d 100644
--- a/tests/mir-opt/building/custom/projections.unwrap.built.after.mir
+++ b/tests/mir-opt/building/custom/projections.unwrap.built.after.mir
@@ -4,7 +4,7 @@ fn unwrap(_1: Option<i32>) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = ((_1 as variant#1).0: i32);
+        _0 = copy ((_1 as variant#1).0: i32);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir b/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir
index 39e97851343..eb83dcece3e 100644
--- a/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir
+++ b/tests/mir-opt/building/custom/projections.unwrap_deref.built.after.mir
@@ -4,7 +4,7 @@ fn unwrap_deref(_1: Option<&i32>) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = (*((_1 as variant#1).0: &i32));
+        _0 = copy (*((_1 as variant#1).0: &i32));
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir b/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir
index 8046b543eef..3893613bff9 100644
--- a/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir
+++ b/tests/mir-opt/building/custom/references.raw_pointer_offset.built.after.mir
@@ -4,7 +4,7 @@ fn raw_pointer_offset(_1: *const i32) -> *const i32 {
     let mut _0: *const i32;
 
     bb0: {
-        _0 = Offset(_1, const 1_isize);
+        _0 = Offset(copy _1, const 1_isize);
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir b/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir
index 6f7aaeed979..10ad840f98c 100644
--- a/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir
+++ b/tests/mir-opt/building/custom/simple_assign.simple.built.after.mir
@@ -7,14 +7,14 @@ fn simple(_1: i32) -> i32 {
 
     bb0: {
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         goto -> bb1;
     }
 
     bb1: {
         _3 = move _2;
         StorageDead(_2);
-        _0 = _3;
+        _0 = copy _3;
         return;
     }
 }
diff --git a/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir b/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir
index 9cf26dff350..44030abc797 100644
--- a/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir
+++ b/tests/mir-opt/building/custom/terminators.assert_nonzero.built.after.mir
@@ -4,7 +4,7 @@ fn assert_nonzero(_1: i32) -> () {
     let mut _0: ();
 
     bb0: {
-        switchInt(_1) -> [0: bb1, otherwise: bb2];
+        switchInt(copy _1) -> [0: bb1, otherwise: bb2];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir b/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir
index 07044ceaef4..b29d4ec7095 100644
--- a/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir
+++ b/tests/mir-opt/building/custom/terminators.direct_call.built.after.mir
@@ -4,7 +4,7 @@ fn direct_call(_1: i32) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = ident::<i32>(_1) -> [return: bb1, unwind continue];
+        _0 = ident::<i32>(copy _1) -> [return: bb1, unwind continue];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir b/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir
index 3b849354dcd..b88f6603026 100644
--- a/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir
+++ b/tests/mir-opt/building/custom/terminators.indirect_call.built.after.mir
@@ -4,7 +4,7 @@ fn indirect_call(_1: i32, _2: fn(i32) -> i32) -> i32 {
     let mut _0: i32;
 
     bb0: {
-        _0 = _2(_1) -> [return: bb1, unwind continue];
+        _0 = copy _2(copy _1) -> [return: bb1, unwind continue];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/custom/terminators.tail_call.built.after.mir b/tests/mir-opt/building/custom/terminators.tail_call.built.after.mir
index 4cf6e459aa8..ab3925dae1c 100644
--- a/tests/mir-opt/building/custom/terminators.tail_call.built.after.mir
+++ b/tests/mir-opt/building/custom/terminators.tail_call.built.after.mir
@@ -5,7 +5,7 @@ fn tail_call(_1: i32) -> i32 {
     let mut _2: i32;
 
     bb0: {
-        _2 = Add(_1, const 42_i32);
-        tailcall ident::<i32>(Spanned { node: _2, span: $DIR/terminators.rs:32:28: 32:29 (#0) });
+        _2 = Add(copy _1, const 42_i32);
+        tailcall ident::<i32>(Spanned { node: copy _2, span: $DIR/terminators.rs:32:28: 32:29 (#0) });
     }
 }
diff --git a/tests/mir-opt/building/enum_cast.bar.built.after.mir b/tests/mir-opt/building/enum_cast.bar.built.after.mir
index 512c7321619..72d0cf5d1e8 100644
--- a/tests/mir-opt/building/enum_cast.bar.built.after.mir
+++ b/tests/mir-opt/building/enum_cast.bar.built.after.mir
@@ -12,8 +12,8 @@ fn bar(_1: Bar) -> usize {
         StorageLive(_2);
         _2 = move _1;
         _3 = discriminant(_2);
-        _4 = _3 as u8 (IntToInt);
-        _5 = Le(_4, const 1_u8);
+        _4 = copy _3 as u8 (IntToInt);
+        _5 = Le(copy _4, const 1_u8);
         assume(move _5);
         _0 = move _3 as usize (IntToInt);
         StorageDead(_2);
diff --git a/tests/mir-opt/building/enum_cast.boo.built.after.mir b/tests/mir-opt/building/enum_cast.boo.built.after.mir
index ad0adf14e4a..91e06dc8862 100644
--- a/tests/mir-opt/building/enum_cast.boo.built.after.mir
+++ b/tests/mir-opt/building/enum_cast.boo.built.after.mir
@@ -12,8 +12,8 @@ fn boo(_1: Boo) -> usize {
         StorageLive(_2);
         _2 = move _1;
         _3 = discriminant(_2);
-        _4 = _3 as u8 (IntToInt);
-        _5 = Le(_4, const 1_u8);
+        _4 = copy _3 as u8 (IntToInt);
+        _5 = Le(copy _4, const 1_u8);
         assume(move _5);
         _0 = move _3 as usize (IntToInt);
         StorageDead(_2);
diff --git a/tests/mir-opt/building/enum_cast.droppy.built.after.mir b/tests/mir-opt/building/enum_cast.droppy.built.after.mir
index ea0edb610f5..f53c9199a49 100644
--- a/tests/mir-opt/building/enum_cast.droppy.built.after.mir
+++ b/tests/mir-opt/building/enum_cast.droppy.built.after.mir
@@ -31,8 +31,8 @@ fn droppy() -> () {
         StorageLive(_4);
         _4 = move _2;
         _5 = discriminant(_4);
-        _6 = _5 as u8 (IntToInt);
-        _7 = Le(_6, const 2_u8);
+        _6 = copy _5 as u8 (IntToInt);
+        _7 = Le(copy _6, const 2_u8);
         assume(move _7);
         _3 = move _5 as usize (IntToInt);
         drop(_4) -> [return: bb1, unwind: bb4];
diff --git a/tests/mir-opt/building/enum_cast.far.built.after.mir b/tests/mir-opt/building/enum_cast.far.built.after.mir
index e75803c706d..14eaf344190 100644
--- a/tests/mir-opt/building/enum_cast.far.built.after.mir
+++ b/tests/mir-opt/building/enum_cast.far.built.after.mir
@@ -12,8 +12,8 @@ fn far(_1: Far) -> isize {
         StorageLive(_2);
         _2 = move _1;
         _3 = discriminant(_2);
-        _4 = _3 as u16 (IntToInt);
-        _5 = Le(_4, const 1_u16);
+        _4 = copy _3 as u16 (IntToInt);
+        _5 = Le(copy _4, const 1_u16);
         assume(move _5);
         _0 = move _3 as isize (IntToInt);
         StorageDead(_2);
diff --git a/tests/mir-opt/building/enum_cast.offsetty.built.after.mir b/tests/mir-opt/building/enum_cast.offsetty.built.after.mir
index 282859d7cd0..1c2acbe3023 100644
--- a/tests/mir-opt/building/enum_cast.offsetty.built.after.mir
+++ b/tests/mir-opt/building/enum_cast.offsetty.built.after.mir
@@ -14,9 +14,9 @@ fn offsetty(_1: NotStartingAtZero) -> u32 {
         StorageLive(_2);
         _2 = move _1;
         _3 = discriminant(_2);
-        _4 = _3 as u8 (IntToInt);
-        _5 = Ge(_4, const 4_u8);
-        _6 = Le(_4, const 8_u8);
+        _4 = copy _3 as u8 (IntToInt);
+        _5 = Ge(copy _4, const 4_u8);
+        _6 = Le(copy _4, const 8_u8);
         _7 = BitAnd(move _5, move _6);
         assume(move _7);
         _0 = move _3 as u32 (IntToInt);
diff --git a/tests/mir-opt/building/enum_cast.signy.built.after.mir b/tests/mir-opt/building/enum_cast.signy.built.after.mir
index a9f7d6c7800..39b6dfaf005 100644
--- a/tests/mir-opt/building/enum_cast.signy.built.after.mir
+++ b/tests/mir-opt/building/enum_cast.signy.built.after.mir
@@ -14,9 +14,9 @@ fn signy(_1: SignedAroundZero) -> i16 {
         StorageLive(_2);
         _2 = move _1;
         _3 = discriminant(_2);
-        _4 = _3 as u16 (IntToInt);
-        _5 = Ge(_4, const 65534_u16);
-        _6 = Le(_4, const 2_u16);
+        _4 = copy _3 as u16 (IntToInt);
+        _5 = Ge(copy _4, const 65534_u16);
+        _6 = Le(copy _4, const 2_u16);
         _7 = BitOr(move _5, move _6);
         assume(move _7);
         _0 = move _3 as i16 (IntToInt);
diff --git a/tests/mir-opt/building/eq_never_type._f.built.after.mir b/tests/mir-opt/building/eq_never_type._f.built.after.mir
index 39438258c2e..4711af46f1c 100644
--- a/tests/mir-opt/building/eq_never_type._f.built.after.mir
+++ b/tests/mir-opt/building/eq_never_type._f.built.after.mir
@@ -16,7 +16,7 @@ fn _f(_1: !, _2: !) -> () {
         StorageLive(_4);
         StorageLive(_5);
         StorageLive(_6);
-        _6 = _1;
+        _6 = copy _1;
         unreachable;
     }
 
@@ -25,7 +25,7 @@ fn _f(_1: !, _2: !) -> () {
         StorageLive(_7);
         StorageLive(_8);
         StorageLive(_9);
-        _9 = _2;
+        _9 = copy _2;
         unreachable;
     }
 
diff --git a/tests/mir-opt/building/issue_101867.main.built.after.mir b/tests/mir-opt/building/issue_101867.main.built.after.mir
index 5c50b3db5ca..34e5bedf4ce 100644
--- a/tests/mir-opt/building/issue_101867.main.built.after.mir
+++ b/tests/mir-opt/building/issue_101867.main.built.after.mir
@@ -55,7 +55,7 @@ fn main() -> () {
     }
 
     bb6: {
-        _5 = ((_1 as Some).0: u8);
+        _5 = copy ((_1 as Some).0: u8);
         _0 = const ();
         StorageDead(_5);
         StorageDead(_1);
diff --git a/tests/mir-opt/building/issue_49232.main.built.after.mir b/tests/mir-opt/building/issue_49232.main.built.after.mir
index d09a1748a8b..b78f6691d54 100644
--- a/tests/mir-opt/building/issue_49232.main.built.after.mir
+++ b/tests/mir-opt/building/issue_49232.main.built.after.mir
@@ -25,7 +25,7 @@ fn main() -> () {
         StorageLive(_3);
         _3 = const true;
         PlaceMention(_3);
-        switchInt(_3) -> [0: bb4, otherwise: bb6];
+        switchInt(copy _3) -> [0: bb4, otherwise: bb6];
     }
 
     bb3: {
diff --git a/tests/mir-opt/building/logical_or_in_conditional.test_complex.built.after.mir b/tests/mir-opt/building/logical_or_in_conditional.test_complex.built.after.mir
index 3e16efe6980..72bd4605b26 100644
--- a/tests/mir-opt/building/logical_or_in_conditional.test_complex.built.after.mir
+++ b/tests/mir-opt/building/logical_or_in_conditional.test_complex.built.after.mir
@@ -54,7 +54,7 @@ fn test_complex() -> () {
         StorageLive(_6);
         StorageLive(_7);
         _7 = Droppy(const 0_u8);
-        _6 = (_7.0: u8);
+        _6 = copy (_7.0: u8);
         _5 = Gt(move _6, const 0_u8);
         switchInt(move _5) -> [0: bb10, otherwise: bb9];
     }
@@ -92,7 +92,7 @@ fn test_complex() -> () {
         StorageLive(_9);
         StorageLive(_10);
         _10 = Droppy(const 1_u8);
-        _9 = (_10.0: u8);
+        _9 = copy (_10.0: u8);
         _8 = Gt(move _9, const 1_u8);
         switchInt(move _8) -> [0: bb16, otherwise: bb15];
     }
diff --git a/tests/mir-opt/building/logical_or_in_conditional.test_or.built.after.mir b/tests/mir-opt/building/logical_or_in_conditional.test_or.built.after.mir
index 3e7c116016c..2fc19e7e0fd 100644
--- a/tests/mir-opt/building/logical_or_in_conditional.test_or.built.after.mir
+++ b/tests/mir-opt/building/logical_or_in_conditional.test_or.built.after.mir
@@ -14,7 +14,7 @@ fn test_or() -> () {
         StorageLive(_2);
         StorageLive(_3);
         _3 = Droppy(const 0_u8);
-        _2 = (_3.0: u8);
+        _2 = copy (_3.0: u8);
         _1 = Gt(move _2, const 0_u8);
         switchInt(move _1) -> [0: bb2, otherwise: bb1];
     }
@@ -44,7 +44,7 @@ fn test_or() -> () {
         StorageLive(_5);
         StorageLive(_6);
         _6 = Droppy(const 1_u8);
-        _5 = (_6.0: u8);
+        _5 = copy (_6.0: u8);
         _4 = Gt(move _5, const 1_u8);
         switchInt(move _4) -> [0: bb7, otherwise: bb6];
     }
diff --git a/tests/mir-opt/building/match/deref-patterns/string.foo.PreCodegen.after.mir b/tests/mir-opt/building/match/deref-patterns/string.foo.PreCodegen.after.mir
index 1e4f7485089..9f52a8cd1e5 100644
--- a/tests/mir-opt/building/match/deref-patterns/string.foo.PreCodegen.after.mir
+++ b/tests/mir-opt/building/match/deref-patterns/string.foo.PreCodegen.after.mir
@@ -26,7 +26,7 @@ fn foo(_1: Option<String>) -> i32 {
     }
 
     bb2: {
-        _6 = <str as PartialEq>::eq(_5, const "a") -> [return: bb3, unwind unreachable];
+        _6 = <str as PartialEq>::eq(copy _5, const "a") -> [return: bb3, unwind unreachable];
     }
 
     bb3: {
@@ -52,7 +52,7 @@ fn foo(_1: Option<String>) -> i32 {
     }
 
     bb7: {
-        switchInt(_2) -> [0: bb9, otherwise: bb8];
+        switchInt(copy _2) -> [0: bb9, otherwise: bb8];
     }
 
     bb8: {
diff --git a/tests/mir-opt/building/match/exponential_or.match_tuple.SimplifyCfg-initial.after.mir b/tests/mir-opt/building/match/exponential_or.match_tuple.SimplifyCfg-initial.after.mir
index 596dcef85fd..d52241b459e 100644
--- a/tests/mir-opt/building/match/exponential_or.match_tuple.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/building/match/exponential_or.match_tuple.SimplifyCfg-initial.after.mir
@@ -19,7 +19,7 @@ fn match_tuple(_1: (u32, bool, Option<i32>, u32)) -> u32 {
 
     bb0: {
         PlaceMention(_1);
-        switchInt((_1.0: u32)) -> [1: bb2, 4: bb2, otherwise: bb1];
+        switchInt(copy (_1.0: u32)) -> [1: bb2, 4: bb2, otherwise: bb1];
     }
 
     bb1: {
@@ -33,26 +33,26 @@ fn match_tuple(_1: (u32, bool, Option<i32>, u32)) -> u32 {
     }
 
     bb3: {
-        switchInt((((_1.2: std::option::Option<i32>) as Some).0: i32)) -> [1: bb4, 8: bb4, otherwise: bb1];
+        switchInt(copy (((_1.2: std::option::Option<i32>) as Some).0: i32)) -> [1: bb4, 8: bb4, otherwise: bb1];
     }
 
     bb4: {
-        _5 = Le(const 6_u32, (_1.3: u32));
+        _5 = Le(const 6_u32, copy (_1.3: u32));
         switchInt(move _5) -> [0: bb5, otherwise: bb7];
     }
 
     bb5: {
-        _3 = Le(const 13_u32, (_1.3: u32));
+        _3 = Le(const 13_u32, copy (_1.3: u32));
         switchInt(move _3) -> [0: bb1, otherwise: bb6];
     }
 
     bb6: {
-        _4 = Le((_1.3: u32), const 16_u32);
+        _4 = Le(copy (_1.3: u32), const 16_u32);
         switchInt(move _4) -> [0: bb1, otherwise: bb8];
     }
 
     bb7: {
-        _6 = Le((_1.3: u32), const 9_u32);
+        _6 = Le(copy (_1.3: u32), const 9_u32);
         switchInt(move _6) -> [0: bb5, otherwise: bb8];
     }
 
@@ -62,13 +62,13 @@ fn match_tuple(_1: (u32, bool, Option<i32>, u32)) -> u32 {
 
     bb9: {
         StorageLive(_7);
-        _7 = (_1.0: u32);
+        _7 = copy (_1.0: u32);
         StorageLive(_8);
-        _8 = (_1.3: u32);
+        _8 = copy (_1.3: u32);
         StorageLive(_9);
-        _9 = _7;
+        _9 = copy _7;
         StorageLive(_10);
-        _10 = _8;
+        _10 = copy _8;
         _0 = BitXor(move _9, move _10);
         StorageDead(_10);
         StorageDead(_9);
diff --git a/tests/mir-opt/building/match/match_false_edges.full_tested_match.built.after.mir b/tests/mir-opt/building/match/match_false_edges.full_tested_match.built.after.mir
index a93743edfac..4b0cdcfbb86 100644
--- a/tests/mir-opt/building/match/match_false_edges.full_tested_match.built.after.mir
+++ b/tests/mir-opt/building/match/match_false_edges.full_tested_match.built.after.mir
@@ -59,9 +59,9 @@ fn full_tested_match() -> () {
 
     bb7: {
         StorageLive(_9);
-        _9 = ((_2 as Some).0: i32);
+        _9 = copy ((_2 as Some).0: i32);
         StorageLive(_10);
-        _10 = _9;
+        _10 = copy _9;
         _1 = (const 2_i32, move _10);
         StorageDead(_10);
         StorageDead(_9);
@@ -89,9 +89,9 @@ fn full_tested_match() -> () {
         FakeRead(ForMatchGuard, _3);
         FakeRead(ForGuardBinding, _6);
         StorageLive(_5);
-        _5 = ((_2 as Some).0: i32);
+        _5 = copy ((_2 as Some).0: i32);
         StorageLive(_8);
-        _8 = _5;
+        _8 = copy _5;
         _1 = (const 1_i32, move _8);
         StorageDead(_8);
         StorageDead(_5);
diff --git a/tests/mir-opt/building/match/match_false_edges.full_tested_match2.built.after.mir b/tests/mir-opt/building/match/match_false_edges.full_tested_match2.built.after.mir
index 0d0ea2be1b0..63ec71fdf51 100644
--- a/tests/mir-opt/building/match/match_false_edges.full_tested_match2.built.after.mir
+++ b/tests/mir-opt/building/match/match_false_edges.full_tested_match2.built.after.mir
@@ -42,9 +42,9 @@ fn full_tested_match2() -> () {
 
     bb3: {
         StorageLive(_9);
-        _9 = ((_2 as Some).0: i32);
+        _9 = copy ((_2 as Some).0: i32);
         StorageLive(_10);
-        _10 = _9;
+        _10 = copy _9;
         _1 = (const 2_i32, move _10);
         StorageDead(_10);
         StorageDead(_9);
@@ -89,9 +89,9 @@ fn full_tested_match2() -> () {
         FakeRead(ForMatchGuard, _3);
         FakeRead(ForGuardBinding, _6);
         StorageLive(_5);
-        _5 = ((_2 as Some).0: i32);
+        _5 = copy ((_2 as Some).0: i32);
         StorageLive(_8);
-        _8 = _5;
+        _8 = copy _5;
         _1 = (const 1_i32, move _8);
         StorageDead(_8);
         StorageDead(_5);
diff --git a/tests/mir-opt/building/match/match_false_edges.main.built.after.mir b/tests/mir-opt/building/match/match_false_edges.main.built.after.mir
index 87b7e29848f..3b10adb499c 100644
--- a/tests/mir-opt/building/match/match_false_edges.main.built.after.mir
+++ b/tests/mir-opt/building/match/match_false_edges.main.built.after.mir
@@ -61,7 +61,7 @@ fn main() -> () {
 
     bb5: {
         StorageLive(_14);
-        _14 = _2;
+        _14 = copy _2;
         _1 = const 4_i32;
         StorageDead(_14);
         goto -> bb22;
@@ -86,7 +86,7 @@ fn main() -> () {
         _3 = &fake shallow _2;
         StorageLive(_12);
         StorageLive(_13);
-        _13 = (*_11);
+        _13 = copy (*_11);
         _12 = guard2(move _13) -> [return: bb18, unwind: bb24];
     }
 
@@ -96,7 +96,7 @@ fn main() -> () {
 
     bb11: {
         StorageLive(_9);
-        _9 = _2;
+        _9 = copy _2;
         _1 = const 2_i32;
         StorageDead(_9);
         goto -> bb22;
@@ -123,7 +123,7 @@ fn main() -> () {
         FakeRead(ForMatchGuard, _3);
         FakeRead(ForGuardBinding, _7);
         StorageLive(_6);
-        _6 = ((_2 as Some).0: i32);
+        _6 = copy ((_2 as Some).0: i32);
         _1 = const 1_i32;
         StorageDead(_6);
         StorageDead(_7);
@@ -150,7 +150,7 @@ fn main() -> () {
         FakeRead(ForMatchGuard, _3);
         FakeRead(ForGuardBinding, _11);
         StorageLive(_10);
-        _10 = ((_2 as Some).0: i32);
+        _10 = copy ((_2 as Some).0: i32);
         _1 = const 3_i32;
         StorageDead(_10);
         StorageDead(_11);
diff --git a/tests/mir-opt/building/match/simple_match.match_bool.built.after.mir b/tests/mir-opt/building/match/simple_match.match_bool.built.after.mir
index b0ebdc37b06..0e82d9591a6 100644
--- a/tests/mir-opt/building/match/simple_match.match_bool.built.after.mir
+++ b/tests/mir-opt/building/match/simple_match.match_bool.built.after.mir
@@ -6,7 +6,7 @@ fn match_bool(_1: bool) -> usize {
 
     bb0: {
         PlaceMention(_1);
-        switchInt(_1) -> [0: bb1, otherwise: bb2];
+        switchInt(copy _1) -> [0: bb1, otherwise: bb2];
     }
 
     bb1: {
diff --git a/tests/mir-opt/building/match/sort_candidates.constant_eq.SimplifyCfg-initial.after.mir b/tests/mir-opt/building/match/sort_candidates.constant_eq.SimplifyCfg-initial.after.mir
index 2bce79a3ae7..b8f54fef0fa 100644
--- a/tests/mir-opt/building/match/sort_candidates.constant_eq.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/building/match/sort_candidates.constant_eq.SimplifyCfg-initial.after.mir
@@ -16,18 +16,18 @@ fn constant_eq(_1: &str, _2: bool) -> u32 {
     bb0: {
         StorageLive(_3);
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         StorageLive(_5);
-        _5 = _2;
+        _5 = copy _2;
         _3 = (move _4, move _5);
         StorageDead(_5);
         StorageDead(_4);
         PlaceMention(_3);
-        _9 = <str as PartialEq>::eq((_3.0: &str), const "a") -> [return: bb9, unwind: bb19];
+        _9 = <str as PartialEq>::eq(copy (_3.0: &str), const "a") -> [return: bb9, unwind: bb19];
     }
 
     bb1: {
-        switchInt((_3.1: bool)) -> [0: bb10, otherwise: bb11];
+        switchInt(copy (_3.1: bool)) -> [0: bb10, otherwise: bb11];
     }
 
     bb2: {
@@ -35,7 +35,7 @@ fn constant_eq(_1: &str, _2: bool) -> u32 {
     }
 
     bb3: {
-        switchInt((_3.1: bool)) -> [0: bb1, otherwise: bb4];
+        switchInt(copy (_3.1: bool)) -> [0: bb1, otherwise: bb4];
     }
 
     bb4: {
@@ -43,11 +43,11 @@ fn constant_eq(_1: &str, _2: bool) -> u32 {
     }
 
     bb5: {
-        _8 = <str as PartialEq>::eq((_3.0: &str), const "b") -> [return: bb8, unwind: bb19];
+        _8 = <str as PartialEq>::eq(copy (_3.0: &str), const "b") -> [return: bb8, unwind: bb19];
     }
 
     bb6: {
-        switchInt((_3.1: bool)) -> [0: bb1, otherwise: bb7];
+        switchInt(copy (_3.1: bool)) -> [0: bb1, otherwise: bb7];
     }
 
     bb7: {
diff --git a/tests/mir-opt/building/match/sort_candidates.disjoint_ranges.SimplifyCfg-initial.after.mir b/tests/mir-opt/building/match/sort_candidates.disjoint_ranges.SimplifyCfg-initial.after.mir
index e521fb4509a..d6251680814 100644
--- a/tests/mir-opt/building/match/sort_candidates.disjoint_ranges.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/building/match/sort_candidates.disjoint_ranges.SimplifyCfg-initial.after.mir
@@ -13,7 +13,7 @@ fn disjoint_ranges(_1: i32, _2: bool) -> u32 {
 
     bb0: {
         PlaceMention(_1);
-        _6 = Le(const 0_i32, _1);
+        _6 = Le(const 0_i32, copy _1);
         switchInt(move _6) -> [0: bb3, otherwise: bb8];
     }
 
@@ -27,7 +27,7 @@ fn disjoint_ranges(_1: i32, _2: bool) -> u32 {
     }
 
     bb3: {
-        _4 = Le(const 10_i32, _1);
+        _4 = Le(const 10_i32, copy _1);
         switchInt(move _4) -> [0: bb5, otherwise: bb7];
     }
 
@@ -36,7 +36,7 @@ fn disjoint_ranges(_1: i32, _2: bool) -> u32 {
     }
 
     bb5: {
-        switchInt(_1) -> [4294967295: bb6, otherwise: bb1];
+        switchInt(copy _1) -> [4294967295: bb6, otherwise: bb1];
     }
 
     bb6: {
@@ -44,12 +44,12 @@ fn disjoint_ranges(_1: i32, _2: bool) -> u32 {
     }
 
     bb7: {
-        _5 = Le(_1, const 20_i32);
+        _5 = Le(copy _1, const 20_i32);
         switchInt(move _5) -> [0: bb5, otherwise: bb4];
     }
 
     bb8: {
-        _7 = Lt(_1, const 10_i32);
+        _7 = Lt(copy _1, const 10_i32);
         switchInt(move _7) -> [0: bb3, otherwise: bb2];
     }
 
@@ -66,7 +66,7 @@ fn disjoint_ranges(_1: i32, _2: bool) -> u32 {
     bb11: {
         _3 = &fake shallow _1;
         StorageLive(_8);
-        _8 = _2;
+        _8 = copy _2;
         switchInt(move _8) -> [0: bb13, otherwise: bb12];
     }
 
diff --git a/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir b/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir
index 1855bb0787d..296d71a319d 100644
--- a/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir
+++ b/tests/mir-opt/building/receiver_ptr_mutability.main.built.after.mir
@@ -38,7 +38,7 @@ fn main() -> () {
         StorageLive(_2);
         StorageLive(_3);
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _3 = move _4 as *const Test (PointerCoercion(MutToConstPointer));
         StorageDead(_4);
         _2 = Test::x(move _3) -> [return: bb2, unwind: bb4];
@@ -63,7 +63,7 @@ fn main() -> () {
         StorageLive(_10);
         StorageLive(_11);
         StorageLive(_12);
-        _12 = (*(*(*(*_5))));
+        _12 = copy (*(*(*(*_5))));
         _11 = move _12 as *const Test (PointerCoercion(MutToConstPointer));
         StorageDead(_12);
         _10 = Test::x(move _11) -> [return: bb3, unwind: bb4];
diff --git a/tests/mir-opt/building/shifts.shift_signed.built.after.mir b/tests/mir-opt/building/shifts.shift_signed.built.after.mir
index 8706ee9d446..65e2db300cd 100644
--- a/tests/mir-opt/building/shifts.shift_signed.built.after.mir
+++ b/tests/mir-opt/building/shifts.shift_signed.built.after.mir
@@ -44,12 +44,12 @@ fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128;
         StorageLive(_6);
         StorageLive(_7);
         StorageLive(_8);
-        _8 = _1;
+        _8 = copy _1;
         StorageLive(_9);
-        _9 = _3;
-        _10 = _9 as u8 (IntToInt);
+        _9 = copy _3;
+        _10 = copy _9 as u8 (IntToInt);
         _11 = Lt(move _10, const 8_u8);
-        assert(move _11, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7];
+        assert(move _11, "attempt to shift right by `{}`, which would overflow", copy _9) -> [success: bb1, unwind: bb7];
     }
 
     bb1: {
@@ -58,12 +58,12 @@ fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128;
         StorageDead(_8);
         StorageLive(_12);
         StorageLive(_13);
-        _13 = _1;
+        _13 = copy _1;
         StorageLive(_14);
-        _14 = _4;
-        _15 = _14 as u32 (IntToInt);
+        _14 = copy _4;
+        _15 = copy _14 as u32 (IntToInt);
         _16 = Lt(move _15, const 8_u32);
-        assert(move _16, "attempt to shift right by `{}`, which would overflow", _14) -> [success: bb2, unwind: bb7];
+        assert(move _16, "attempt to shift right by `{}`, which would overflow", copy _14) -> [success: bb2, unwind: bb7];
     }
 
     bb2: {
@@ -72,12 +72,12 @@ fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128;
         StorageDead(_13);
         StorageLive(_17);
         StorageLive(_18);
-        _18 = _1;
+        _18 = copy _1;
         StorageLive(_19);
-        _19 = _5;
-        _20 = _19 as u128 (IntToInt);
+        _19 = copy _5;
+        _20 = copy _19 as u128 (IntToInt);
         _21 = Lt(move _20, const 8_u128);
-        assert(move _21, "attempt to shift right by `{}`, which would overflow", _19) -> [success: bb3, unwind: bb7];
+        assert(move _21, "attempt to shift right by `{}`, which would overflow", copy _19) -> [success: bb3, unwind: bb7];
     }
 
     bb3: {
@@ -91,12 +91,12 @@ fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128;
         StorageLive(_22);
         StorageLive(_23);
         StorageLive(_24);
-        _24 = _2;
+        _24 = copy _2;
         StorageLive(_25);
-        _25 = _3;
-        _26 = _25 as u8 (IntToInt);
+        _25 = copy _3;
+        _26 = copy _25 as u8 (IntToInt);
         _27 = Lt(move _26, const 128_u8);
-        assert(move _27, "attempt to shift left by `{}`, which would overflow", _25) -> [success: bb4, unwind: bb7];
+        assert(move _27, "attempt to shift left by `{}`, which would overflow", copy _25) -> [success: bb4, unwind: bb7];
     }
 
     bb4: {
@@ -105,12 +105,12 @@ fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128;
         StorageDead(_24);
         StorageLive(_28);
         StorageLive(_29);
-        _29 = _2;
+        _29 = copy _2;
         StorageLive(_30);
-        _30 = _4;
-        _31 = _30 as u32 (IntToInt);
+        _30 = copy _4;
+        _31 = copy _30 as u32 (IntToInt);
         _32 = Lt(move _31, const 128_u32);
-        assert(move _32, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb5, unwind: bb7];
+        assert(move _32, "attempt to shift left by `{}`, which would overflow", copy _30) -> [success: bb5, unwind: bb7];
     }
 
     bb5: {
@@ -119,12 +119,12 @@ fn shift_signed(_1: i8, _2: u128, _3: i8, _4: i32, _5: i128) -> ([i8; 3], [u128;
         StorageDead(_29);
         StorageLive(_33);
         StorageLive(_34);
-        _34 = _2;
+        _34 = copy _2;
         StorageLive(_35);
-        _35 = _5;
-        _36 = _35 as u128 (IntToInt);
+        _35 = copy _5;
+        _36 = copy _35 as u128 (IntToInt);
         _37 = Lt(move _36, const 128_u128);
-        assert(move _37, "attempt to shift left by `{}`, which would overflow", _35) -> [success: bb6, unwind: bb7];
+        assert(move _37, "attempt to shift left by `{}`, which would overflow", copy _35) -> [success: bb6, unwind: bb7];
     }
 
     bb6: {
diff --git a/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir b/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir
index dfd3b5b35ad..62536833e49 100644
--- a/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir
+++ b/tests/mir-opt/building/shifts.shift_unsigned.built.after.mir
@@ -38,11 +38,11 @@ fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i12
         StorageLive(_6);
         StorageLive(_7);
         StorageLive(_8);
-        _8 = _1;
+        _8 = copy _1;
         StorageLive(_9);
-        _9 = _3;
-        _10 = Lt(_9, const 8_u8);
-        assert(move _10, "attempt to shift right by `{}`, which would overflow", _9) -> [success: bb1, unwind: bb7];
+        _9 = copy _3;
+        _10 = Lt(copy _9, const 8_u8);
+        assert(move _10, "attempt to shift right by `{}`, which would overflow", copy _9) -> [success: bb1, unwind: bb7];
     }
 
     bb1: {
@@ -51,11 +51,11 @@ fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i12
         StorageDead(_8);
         StorageLive(_11);
         StorageLive(_12);
-        _12 = _1;
+        _12 = copy _1;
         StorageLive(_13);
-        _13 = _4;
-        _14 = Lt(_13, const 8_u32);
-        assert(move _14, "attempt to shift right by `{}`, which would overflow", _13) -> [success: bb2, unwind: bb7];
+        _13 = copy _4;
+        _14 = Lt(copy _13, const 8_u32);
+        assert(move _14, "attempt to shift right by `{}`, which would overflow", copy _13) -> [success: bb2, unwind: bb7];
     }
 
     bb2: {
@@ -64,11 +64,11 @@ fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i12
         StorageDead(_12);
         StorageLive(_15);
         StorageLive(_16);
-        _16 = _1;
+        _16 = copy _1;
         StorageLive(_17);
-        _17 = _5;
-        _18 = Lt(_17, const 8_u128);
-        assert(move _18, "attempt to shift right by `{}`, which would overflow", _17) -> [success: bb3, unwind: bb7];
+        _17 = copy _5;
+        _18 = Lt(copy _17, const 8_u128);
+        assert(move _18, "attempt to shift right by `{}`, which would overflow", copy _17) -> [success: bb3, unwind: bb7];
     }
 
     bb3: {
@@ -82,11 +82,11 @@ fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i12
         StorageLive(_19);
         StorageLive(_20);
         StorageLive(_21);
-        _21 = _2;
+        _21 = copy _2;
         StorageLive(_22);
-        _22 = _3;
-        _23 = Lt(_22, const 128_u8);
-        assert(move _23, "attempt to shift left by `{}`, which would overflow", _22) -> [success: bb4, unwind: bb7];
+        _22 = copy _3;
+        _23 = Lt(copy _22, const 128_u8);
+        assert(move _23, "attempt to shift left by `{}`, which would overflow", copy _22) -> [success: bb4, unwind: bb7];
     }
 
     bb4: {
@@ -95,11 +95,11 @@ fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i12
         StorageDead(_21);
         StorageLive(_24);
         StorageLive(_25);
-        _25 = _2;
+        _25 = copy _2;
         StorageLive(_26);
-        _26 = _4;
-        _27 = Lt(_26, const 128_u32);
-        assert(move _27, "attempt to shift left by `{}`, which would overflow", _26) -> [success: bb5, unwind: bb7];
+        _26 = copy _4;
+        _27 = Lt(copy _26, const 128_u32);
+        assert(move _27, "attempt to shift left by `{}`, which would overflow", copy _26) -> [success: bb5, unwind: bb7];
     }
 
     bb5: {
@@ -108,11 +108,11 @@ fn shift_unsigned(_1: u8, _2: i128, _3: u8, _4: u32, _5: u128) -> ([u8; 3], [i12
         StorageDead(_25);
         StorageLive(_28);
         StorageLive(_29);
-        _29 = _2;
+        _29 = copy _2;
         StorageLive(_30);
-        _30 = _5;
-        _31 = Lt(_30, const 128_u128);
-        assert(move _31, "attempt to shift left by `{}`, which would overflow", _30) -> [success: bb6, unwind: bb7];
+        _30 = copy _5;
+        _31 = Lt(copy _30, const 128_u128);
+        assert(move _31, "attempt to shift left by `{}`, which would overflow", copy _30) -> [success: bb6, unwind: bb7];
     }
 
     bb6: {
diff --git a/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-abort.mir
index 26c82edf2d5..44a8b7342b2 100644
--- a/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-abort.mir
@@ -20,7 +20,7 @@ fn while_loop(_1: bool) -> () {
     bb1: {
         StorageLive(_3);
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         _3 = get_bool(move _2) -> [return: bb2, unwind unreachable];
     }
 
@@ -40,7 +40,7 @@ fn while_loop(_1: bool) -> () {
         StorageDead(_2);
         StorageLive(_5);
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _5 = get_bool(move _4) -> [return: bb5, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-unwind.mir
index 1bb72074846..9a640300674 100644
--- a/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/building/while_storage.while_loop.PreCodegen.after.panic-unwind.mir
@@ -20,7 +20,7 @@ fn while_loop(_1: bool) -> () {
     bb1: {
         StorageLive(_3);
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         _3 = get_bool(move _2) -> [return: bb2, unwind continue];
     }
 
@@ -40,7 +40,7 @@ fn while_loop(_1: bool) -> () {
         StorageDead(_2);
         StorageLive(_5);
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _5 = get_bool(move _4) -> [return: bb5, unwind continue];
     }
 
diff --git a/tests/mir-opt/const_allocation.main.GVN.after.32bit.mir b/tests/mir-opt/const_allocation.main.GVN.after.32bit.mir
index 10d99a13463..a2bd2bc0d92 100644
--- a/tests/mir-opt/const_allocation.main.GVN.after.32bit.mir
+++ b/tests/mir-opt/const_allocation.main.GVN.after.32bit.mir
@@ -9,7 +9,7 @@ fn main() -> () {
         StorageLive(_1);
         StorageLive(_2);
         _2 = const {ALLOC9: &&[(Option<i32>, &[&str])]};
-        _1 = (*_2);
+        _1 = copy (*_2);
         StorageDead(_2);
         StorageDead(_1);
         _0 = const ();
diff --git a/tests/mir-opt/const_allocation.main.GVN.after.64bit.mir b/tests/mir-opt/const_allocation.main.GVN.after.64bit.mir
index 2f23dbe9ee4..a431104d08b 100644
--- a/tests/mir-opt/const_allocation.main.GVN.after.64bit.mir
+++ b/tests/mir-opt/const_allocation.main.GVN.after.64bit.mir
@@ -9,7 +9,7 @@ fn main() -> () {
         StorageLive(_1);
         StorageLive(_2);
         _2 = const {ALLOC9: &&[(Option<i32>, &[&str])]};
-        _1 = (*_2);
+        _1 = copy (*_2);
         StorageDead(_2);
         StorageDead(_1);
         _0 = const ();
diff --git a/tests/mir-opt/const_allocation2.main.GVN.after.32bit.mir b/tests/mir-opt/const_allocation2.main.GVN.after.32bit.mir
index 6499e3676aa..6fae163f107 100644
--- a/tests/mir-opt/const_allocation2.main.GVN.after.32bit.mir
+++ b/tests/mir-opt/const_allocation2.main.GVN.after.32bit.mir
@@ -9,7 +9,7 @@ fn main() -> () {
         StorageLive(_1);
         StorageLive(_2);
         _2 = const {ALLOC9: &&[(Option<i32>, &[&u8])]};
-        _1 = (*_2);
+        _1 = copy (*_2);
         StorageDead(_2);
         StorageDead(_1);
         _0 = const ();
diff --git a/tests/mir-opt/const_allocation2.main.GVN.after.64bit.mir b/tests/mir-opt/const_allocation2.main.GVN.after.64bit.mir
index 02f5ebab847..f2bb5f46b16 100644
--- a/tests/mir-opt/const_allocation2.main.GVN.after.64bit.mir
+++ b/tests/mir-opt/const_allocation2.main.GVN.after.64bit.mir
@@ -9,7 +9,7 @@ fn main() -> () {
         StorageLive(_1);
         StorageLive(_2);
         _2 = const {ALLOC9: &&[(Option<i32>, &[&u8])]};
-        _1 = (*_2);
+        _1 = copy (*_2);
         StorageDead(_2);
         StorageDead(_1);
         _0 = const ();
diff --git a/tests/mir-opt/const_allocation3.main.GVN.after.32bit.mir b/tests/mir-opt/const_allocation3.main.GVN.after.32bit.mir
index c95e696946a..58776b446fa 100644
--- a/tests/mir-opt/const_allocation3.main.GVN.after.32bit.mir
+++ b/tests/mir-opt/const_allocation3.main.GVN.after.32bit.mir
@@ -9,7 +9,7 @@ fn main() -> () {
         StorageLive(_1);
         StorageLive(_2);
         _2 = const {ALLOC4: &&Packed};
-        _1 = (*_2);
+        _1 = copy (*_2);
         StorageDead(_2);
         StorageDead(_1);
         _0 = const ();
diff --git a/tests/mir-opt/const_allocation3.main.GVN.after.64bit.mir b/tests/mir-opt/const_allocation3.main.GVN.after.64bit.mir
index 198bc8bd07e..3ccf4211971 100644
--- a/tests/mir-opt/const_allocation3.main.GVN.after.64bit.mir
+++ b/tests/mir-opt/const_allocation3.main.GVN.after.64bit.mir
@@ -9,7 +9,7 @@ fn main() -> () {
         StorageLive(_1);
         StorageLive(_2);
         _2 = const {ALLOC2: &&Packed};
-        _1 = (*_2);
+        _1 = copy (*_2);
         StorageDead(_2);
         StorageDead(_1);
         _0 = const ();
diff --git a/tests/mir-opt/const_goto_const_eval_fail.f.JumpThreading.diff b/tests/mir-opt/const_goto_const_eval_fail.f.JumpThreading.diff
index 4fc9254b7ba..086abeba0f8 100644
--- a/tests/mir-opt/const_goto_const_eval_fail.f.JumpThreading.diff
+++ b/tests/mir-opt/const_goto_const_eval_fail.f.JumpThreading.diff
@@ -22,7 +22,7 @@
       }
   
       bb3: {
-          switchInt(_1) -> [0: bb5, otherwise: bb4];
+          switchInt(copy _1) -> [0: bb5, otherwise: bb4];
       }
   
       bb4: {
diff --git a/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff b/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff
index ac372f83726..e33185f17bc 100644
--- a/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff
+++ b/tests/mir-opt/const_prop/address_of_pair.fn0.GVN.diff
@@ -34,10 +34,10 @@
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
-          _6 = (_2.1: bool);
+          _6 = copy (_2.1: bool);
           _5 = Not(move _6);
           StorageDead(_6);
-          _0 = _5;
+          _0 = copy _5;
 -         StorageDead(_5);
 +         nop;
           StorageDead(_3);
diff --git a/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-abort.diff b/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-abort.diff
index 4f0f7fa8fa2..c6d3bad0790 100644
--- a/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-abort.diff
@@ -24,11 +24,11 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = (const 0_i32, move _5);
-+         _4 = (const 0_i32, _1);
++         _4 = (const 0_i32, copy _1);
           StorageDead(_5);
--         _3 = (_4.0: i32);
+-         _3 = copy (_4.0: i32);
 -         _2 = Add(move _3, const 1_i32);
 +         _3 = const 0_i32;
 +         _2 = const 1_i32;
@@ -38,11 +38,11 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
 -         _8 = (move _9, const 1_i32);
-+         _8 = (_1, const 1_i32);
++         _8 = (copy _1, const 1_i32);
           StorageDead(_9);
--         _7 = (_8.1: i32);
+-         _7 = copy (_8.1: i32);
 -         _6 = Add(move _7, const 2_i32);
 +         _7 = const 1_i32;
 +         _6 = const 3_i32;
diff --git a/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-unwind.diff
index 4f0f7fa8fa2..c6d3bad0790 100644
--- a/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/aggregate.foo.GVN.panic-unwind.diff
@@ -24,11 +24,11 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = (const 0_i32, move _5);
-+         _4 = (const 0_i32, _1);
++         _4 = (const 0_i32, copy _1);
           StorageDead(_5);
--         _3 = (_4.0: i32);
+-         _3 = copy (_4.0: i32);
 -         _2 = Add(move _3, const 1_i32);
 +         _3 = const 0_i32;
 +         _2 = const 1_i32;
@@ -38,11 +38,11 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
 -         _8 = (move _9, const 1_i32);
-+         _8 = (_1, const 1_i32);
++         _8 = (copy _1, const 1_i32);
           StorageDead(_9);
--         _7 = (_8.1: i32);
+-         _7 = copy (_8.1: i32);
 -         _6 = Add(move _7, const 2_i32);
 +         _7 = const 1_i32;
 +         _6 = const 3_i32;
diff --git a/tests/mir-opt/const_prop/aggregate.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/aggregate.main.GVN.panic-abort.diff
index 854e27445af..0a59c59c2ed 100644
--- a/tests/mir-opt/const_prop/aggregate.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/aggregate.main.GVN.panic-abort.diff
@@ -18,7 +18,7 @@
           StorageLive(_2);
           StorageLive(_3);
           _3 = (const 0_i32, const 1_u8, const 2_i32);
--         _2 = (_3.1: u8);
+-         _2 = copy (_3.1: u8);
 -         _1 = Add(move _2, const 0_u8);
 +         _2 = const 1_u8;
 +         _1 = const 1_u8;
@@ -26,7 +26,7 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _1;
+-         _5 = copy _1;
 -         _4 = foo(move _5) -> [return: bb1, unwind unreachable];
 +         _5 = const 1_u8;
 +         _4 = foo(const 1_u8) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/const_prop/aggregate.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/aggregate.main.GVN.panic-unwind.diff
index f6c4b2c9240..100369a2eee 100644
--- a/tests/mir-opt/const_prop/aggregate.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/aggregate.main.GVN.panic-unwind.diff
@@ -18,7 +18,7 @@
           StorageLive(_2);
           StorageLive(_3);
           _3 = (const 0_i32, const 1_u8, const 2_i32);
--         _2 = (_3.1: u8);
+-         _2 = copy (_3.1: u8);
 -         _1 = Add(move _2, const 0_u8);
 +         _2 = const 1_u8;
 +         _1 = const 1_u8;
@@ -26,7 +26,7 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _1;
+-         _5 = copy _1;
 -         _4 = foo(move _5) -> [return: bb1, unwind continue];
 +         _5 = const 1_u8;
 +         _4 = foo(const 1_u8) -> [return: bb1, unwind continue];
diff --git a/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-abort.diff
index 6d00dd5b212..e754af95ce3 100644
--- a/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-abort.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 2_u32;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-unwind.diff
index 7e2f72ab31b..e15a35c7fe9 100644
--- a/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/array_index.main.GVN.32bit.panic-unwind.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 2_u32;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-abort.diff
index 6d00dd5b212..e754af95ce3 100644
--- a/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-abort.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 2_u32;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-unwind.diff
index 7e2f72ab31b..e15a35c7fe9 100644
--- a/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/array_index.main.GVN.64bit.panic-unwind.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 2_u32;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-abort.diff
index 4838efba6f9..8c535b567c3 100644
--- a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-abort.diff
@@ -23,8 +23,8 @@
           _1 = const 0_i32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
--         _4 = Eq(_3, const 0_i32);
+-         _3 = copy _1;
+-         _4 = Eq(copy _3, const 0_i32);
 -         assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> [success: bb1, unwind unreachable];
 +         _3 = const 0_i32;
 +         _4 = const true;
@@ -32,10 +32,10 @@
       }
   
       bb1: {
--         _5 = Eq(_3, const -1_i32);
+-         _5 = Eq(copy _3, const -1_i32);
 -         _6 = Eq(const 1_i32, const i32::MIN);
 -         _7 = BitAnd(move _5, move _6);
--         assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable];
+-         assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, copy _3) -> [success: bb2, unwind unreachable];
 +         _5 = const false;
 +         _6 = const false;
 +         _7 = const false;
diff --git a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-unwind.diff
index 7f403d6efc1..045f4d81db6 100644
--- a/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/bad_op_div_by_zero.main.GVN.panic-unwind.diff
@@ -23,8 +23,8 @@
           _1 = const 0_i32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
--         _4 = Eq(_3, const 0_i32);
+-         _3 = copy _1;
+-         _4 = Eq(copy _3, const 0_i32);
 -         assert(!move _4, "attempt to divide `{}` by zero", const 1_i32) -> [success: bb1, unwind continue];
 +         _3 = const 0_i32;
 +         _4 = const true;
@@ -32,10 +32,10 @@
       }
   
       bb1: {
--         _5 = Eq(_3, const -1_i32);
+-         _5 = Eq(copy _3, const -1_i32);
 -         _6 = Eq(const 1_i32, const i32::MIN);
 -         _7 = BitAnd(move _5, move _6);
--         assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind continue];
+-         assert(!move _7, "attempt to compute `{} / {}`, which would overflow", const 1_i32, copy _3) -> [success: bb2, unwind continue];
 +         _5 = const false;
 +         _6 = const false;
 +         _7 = const false;
diff --git a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-abort.diff
index 59f2eb86f50..e5a8726b855 100644
--- a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-abort.diff
@@ -23,8 +23,8 @@
           _1 = const 0_i32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
--         _4 = Eq(_3, const 0_i32);
+-         _3 = copy _1;
+-         _4 = Eq(copy _3, const 0_i32);
 -         assert(!move _4, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> [success: bb1, unwind unreachable];
 +         _3 = const 0_i32;
 +         _4 = const true;
@@ -32,10 +32,10 @@
       }
   
       bb1: {
--         _5 = Eq(_3, const -1_i32);
+-         _5 = Eq(copy _3, const -1_i32);
 -         _6 = Eq(const 1_i32, const i32::MIN);
 -         _7 = BitAnd(move _5, move _6);
--         assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind unreachable];
+-         assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, copy _3) -> [success: bb2, unwind unreachable];
 +         _5 = const false;
 +         _6 = const false;
 +         _7 = const false;
diff --git a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-unwind.diff
index 9b866082788..1110ff186dc 100644
--- a/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/bad_op_mod_by_zero.main.GVN.panic-unwind.diff
@@ -23,8 +23,8 @@
           _1 = const 0_i32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
--         _4 = Eq(_3, const 0_i32);
+-         _3 = copy _1;
+-         _4 = Eq(copy _3, const 0_i32);
 -         assert(!move _4, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_i32) -> [success: bb1, unwind continue];
 +         _3 = const 0_i32;
 +         _4 = const true;
@@ -32,10 +32,10 @@
       }
   
       bb1: {
--         _5 = Eq(_3, const -1_i32);
+-         _5 = Eq(copy _3, const -1_i32);
 -         _6 = Eq(const 1_i32, const i32::MIN);
 -         _7 = BitAnd(move _5, move _6);
--         assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, _3) -> [success: bb2, unwind continue];
+-         assert(!move _7, "attempt to compute the remainder of `{} % {}`, which would overflow", const 1_i32, copy _3) -> [success: bb2, unwind continue];
 +         _5 = const false;
 +         _6 = const false;
 +         _7 = const false;
diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-abort.diff
index 826f4c34277..52aa4da49ef 100644
--- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-abort.diff
@@ -33,15 +33,15 @@
           StorageLive(_6);
           _6 = const 3_usize;
           _7 = Len((*_1));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
-+         _8 = Lt(const 3_usize, _7);
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind unreachable];
++         _8 = Lt(const 3_usize, copy _7);
 +         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, const 3_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _5 = (*_1)[_6];
-+         _5 = (*_1)[3 of 4];
+-         _5 = copy (*_1)[_6];
++         _5 = copy (*_1)[3 of 4];
           StorageDead(_6);
           _0 = const ();
           StorageDead(_5);
diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-unwind.diff
index 0e2ec65652f..242ff0e664f 100644
--- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.32bit.panic-unwind.diff
@@ -33,15 +33,15 @@
           StorageLive(_6);
           _6 = const 3_usize;
           _7 = Len((*_1));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue];
-+         _8 = Lt(const 3_usize, _7);
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
++         _8 = Lt(const 3_usize, copy _7);
 +         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, const 3_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _5 = (*_1)[_6];
-+         _5 = (*_1)[3 of 4];
+-         _5 = copy (*_1)[_6];
++         _5 = copy (*_1)[3 of 4];
           StorageDead(_6);
           _0 = const ();
           StorageDead(_5);
diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-abort.diff
index 826f4c34277..52aa4da49ef 100644
--- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-abort.diff
@@ -33,15 +33,15 @@
           StorageLive(_6);
           _6 = const 3_usize;
           _7 = Len((*_1));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
-+         _8 = Lt(const 3_usize, _7);
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind unreachable];
++         _8 = Lt(const 3_usize, copy _7);
 +         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, const 3_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _5 = (*_1)[_6];
-+         _5 = (*_1)[3 of 4];
+-         _5 = copy (*_1)[_6];
++         _5 = copy (*_1)[3 of 4];
           StorageDead(_6);
           _0 = const ();
           StorageDead(_5);
diff --git a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-unwind.diff
index 0e2ec65652f..242ff0e664f 100644
--- a/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/bad_op_unsafe_oob_for_slices.main.GVN.64bit.panic-unwind.diff
@@ -33,15 +33,15 @@
           StorageLive(_6);
           _6 = const 3_usize;
           _7 = Len((*_1));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue];
-+         _8 = Lt(const 3_usize, _7);
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
++         _8 = Lt(const 3_usize, copy _7);
 +         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, const 3_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _5 = (*_1)[_6];
-+         _5 = (*_1)[3 of 4];
+-         _5 = copy (*_1)[_6];
++         _5 = copy (*_1)[3 of 4];
           StorageDead(_6);
           _0 = const ();
           StorageDead(_5);
diff --git a/tests/mir-opt/const_prop/boolean_identities.test.GVN.diff b/tests/mir-opt/const_prop/boolean_identities.test.GVN.diff
index 0bd8413289e..3fe70302b21 100644
--- a/tests/mir-opt/const_prop/boolean_identities.test.GVN.diff
+++ b/tests/mir-opt/const_prop/boolean_identities.test.GVN.diff
@@ -22,22 +22,22 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _3 = BitOr(move _4, const true);
 +         _3 = const true;
           StorageDead(_4);
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         _5 = BitAnd(move _6, const false);
 +         _5 = const false;
           StorageDead(_6);
           StorageLive(_7);
--         _7 = _3;
+-         _7 = copy _3;
 +         _7 = const true;
           StorageLive(_8);
--         _8 = _5;
+-         _8 = copy _5;
 -         _0 = BitAnd(move _7, move _8);
 +         _8 = const false;
 +         _0 = const false;
diff --git a/tests/mir-opt/const_prop/boxes.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/boxes.main.GVN.panic-abort.diff
index a408c197fd1..d5f15b750d4 100644
--- a/tests/mir-opt/const_prop/boxes.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/boxes.main.GVN.panic-abort.diff
@@ -32,15 +32,15 @@
       bb1: {
           StorageLive(_7);
           _7 = ShallowInitBox(move _6, i32);
-          _8 = (((_7.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
+          _8 = copy (((_7.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
           (*_8) = const 42_i32;
           _3 = move _7;
           StorageDead(_7);
-          _9 = (((_3.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
-          _2 = (*_9);
+          _9 = copy (((_3.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
+          _2 = copy (*_9);
 -         _1 = Add(move _2, const 0_i32);
 -         StorageDead(_2);
-+         _1 = _2;
++         _1 = copy _2;
 +         nop;
           drop(_3) -> [return: bb2, unwind unreachable];
       }
diff --git a/tests/mir-opt/const_prop/boxes.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/boxes.main.GVN.panic-unwind.diff
index 5706a739602..d4d4f21be6e 100644
--- a/tests/mir-opt/const_prop/boxes.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/boxes.main.GVN.panic-unwind.diff
@@ -32,15 +32,15 @@
       bb1: {
           StorageLive(_7);
           _7 = ShallowInitBox(move _6, i32);
-          _8 = (((_7.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
+          _8 = copy (((_7.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
           (*_8) = const 42_i32;
           _3 = move _7;
           StorageDead(_7);
-          _9 = (((_3.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
-          _2 = (*_9);
+          _9 = copy (((_3.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
+          _2 = copy (*_9);
 -         _1 = Add(move _2, const 0_i32);
 -         StorageDead(_2);
-+         _1 = _2;
++         _1 = copy _2;
 +         nop;
           drop(_3) -> [return: bb2, unwind: bb3];
       }
diff --git a/tests/mir-opt/const_prop/discriminant.main.GVN.32bit.diff b/tests/mir-opt/const_prop/discriminant.main.GVN.32bit.diff
index 70c3c3fe7e4..2543cf6257d 100644
--- a/tests/mir-opt/const_prop/discriminant.main.GVN.32bit.diff
+++ b/tests/mir-opt/const_prop/discriminant.main.GVN.32bit.diff
@@ -26,7 +26,7 @@
       }
   
       bb1: {
--         switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2];
+-         switchInt(copy ((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2];
 +         switchInt(const true) -> [0: bb3, otherwise: bb2];
       }
   
diff --git a/tests/mir-opt/const_prop/discriminant.main.GVN.64bit.diff b/tests/mir-opt/const_prop/discriminant.main.GVN.64bit.diff
index 70c3c3fe7e4..2543cf6257d 100644
--- a/tests/mir-opt/const_prop/discriminant.main.GVN.64bit.diff
+++ b/tests/mir-opt/const_prop/discriminant.main.GVN.64bit.diff
@@ -26,7 +26,7 @@
       }
   
       bb1: {
--         switchInt(((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2];
+-         switchInt(copy ((_3 as Some).0: bool)) -> [0: bb3, otherwise: bb2];
 +         switchInt(const true) -> [0: bb3, otherwise: bb2];
       }
   
diff --git a/tests/mir-opt/const_prop/indirect.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/indirect.main.GVN.panic-abort.diff
index f24b9755eae..208845942c7 100644
--- a/tests/mir-opt/const_prop/indirect.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/indirect.main.GVN.panic-abort.diff
@@ -14,7 +14,7 @@
           StorageLive(_1);
           StorageLive(_2);
 -         _2 = const 2_u32 as u8 (IntToInt);
--         _3 = AddWithOverflow(_2, const 1_u8);
+-         _3 = AddWithOverflow(copy _2, const 1_u8);
 -         assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind unreachable];
 +         _2 = const 2_u8;
 +         _3 = const (3_u8, false);
diff --git a/tests/mir-opt/const_prop/indirect.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/indirect.main.GVN.panic-unwind.diff
index 44ff313b532..4a7c69bae3c 100644
--- a/tests/mir-opt/const_prop/indirect.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/indirect.main.GVN.panic-unwind.diff
@@ -14,7 +14,7 @@
           StorageLive(_1);
           StorageLive(_2);
 -         _2 = const 2_u32 as u8 (IntToInt);
--         _3 = AddWithOverflow(_2, const 1_u8);
+-         _3 = AddWithOverflow(copy _2, const 1_u8);
 -         assert(!move (_3.1: bool), "attempt to compute `{} + {}`, which would overflow", move _2, const 1_u8) -> [success: bb1, unwind continue];
 +         _2 = const 2_u8;
 +         _3 = const (3_u8, false);
diff --git a/tests/mir-opt/const_prop/indirect_mutation.bar.GVN.diff b/tests/mir-opt/const_prop/indirect_mutation.bar.GVN.diff
index 99a6ba7d08a..849a57e2030 100644
--- a/tests/mir-opt/const_prop/indirect_mutation.bar.GVN.diff
+++ b/tests/mir-opt/const_prop/indirect_mutation.bar.GVN.diff
@@ -28,7 +28,7 @@
           StorageDead(_2);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = (_1.0: i32);
+          _5 = copy (_1.0: i32);
           _4 = Eq(move _5, const 5_i32);
           StorageDead(_5);
           _0 = const ();
diff --git a/tests/mir-opt/const_prop/indirect_mutation.foo.GVN.diff b/tests/mir-opt/const_prop/indirect_mutation.foo.GVN.diff
index c21869dece6..2435f81206b 100644
--- a/tests/mir-opt/const_prop/indirect_mutation.foo.GVN.diff
+++ b/tests/mir-opt/const_prop/indirect_mutation.foo.GVN.diff
@@ -24,7 +24,7 @@
           StorageDead(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = (_1.0: i32);
+          _4 = copy (_1.0: i32);
           _3 = Eq(move _4, const 5_i32);
           StorageDead(_4);
           _0 = const ();
diff --git a/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-abort.diff
index de9cb7a47a2..ab39c5be4e3 100644
--- a/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-abort.diff
@@ -19,8 +19,8 @@
           StorageLive(_3);
           _3 = const 1_u8;
           StorageLive(_4);
--         _4 = AddWithOverflow(_2, _3);
--         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable];
+-         _4 = AddWithOverflow(copy _2, copy _3);
+-         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", copy _2, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const (0_u8, true);
 +         assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> [success: bb1, unwind unreachable];
       }
diff --git a/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-unwind.diff
index 1f19a13c1e8..1aea0dbb5d5 100644
--- a/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/inherit_overflow.main.GVN.panic-unwind.diff
@@ -19,8 +19,8 @@
           StorageLive(_3);
           _3 = const 1_u8;
           StorageLive(_4);
--         _4 = AddWithOverflow(_2, _3);
--         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind continue];
+-         _4 = AddWithOverflow(copy _2, copy _3);
+-         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", copy _2, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const (0_u8, true);
 +         assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> [success: bb1, unwind continue];
       }
diff --git a/tests/mir-opt/const_prop/invalid_constant.main.GVN.diff b/tests/mir-opt/const_prop/invalid_constant.main.GVN.diff
index f5041365604..5e843da8679 100644
--- a/tests/mir-opt/const_prop/invalid_constant.main.GVN.diff
+++ b/tests/mir-opt/const_prop/invalid_constant.main.GVN.diff
@@ -29,13 +29,13 @@
           StorageLive(_1);
           StorageLive(_2);
           _2 = InvalidChar { int: const 1114113_u32 };
-          _1 = (_2.1: char);
+          _1 = copy (_2.1: char);
           StorageDead(_2);
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
           _5 = InvalidTag { int: const 4_u32 };
-          _4 = (_5.1: E);
+          _4 = copy (_5.1: E);
           _3 = [move _4];
           StorageDead(_4);
           StorageDead(_5);
diff --git a/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff b/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff
index 6e5ad8d6b81..6593b329756 100644
--- a/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff
+++ b/tests/mir-opt/const_prop/invalid_constant.main.RemoveZsts.diff
@@ -31,13 +31,13 @@
           StorageLive(_1);
           StorageLive(_2);
           _2 = InvalidChar { int: const 1114113_u32 };
-          _1 = (_2.1: char);
+          _1 = copy (_2.1: char);
           StorageDead(_2);
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
           _5 = InvalidTag { int: const 4_u32 };
-          _4 = (_5.1: E);
+          _4 = copy (_5.1: E);
           _3 = [move _4];
           StorageDead(_4);
           StorageDead(_5);
@@ -47,7 +47,7 @@
 +         nop;
           StorageLive(_8);
           _8 = NoVariants { int: const 0_u32 };
--         _7 = (_8.1: Empty);
+-         _7 = copy (_8.1: Empty);
 -         _6 = [move _7];
 -         StorageDead(_7);
 +         nop;
diff --git a/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-abort.diff
index bd987c01ab1..49ea51deed6 100644
--- a/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-abort.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 0_u8;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-unwind.diff
index e9ebef84ae0..103bfbcaf64 100644
--- a/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/large_array_index.main.GVN.32bit.panic-unwind.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 0_u8;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-abort.diff
index bd987c01ab1..49ea51deed6 100644
--- a/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-abort.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 0_u8;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-unwind.diff
index e9ebef84ae0..103bfbcaf64 100644
--- a/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/large_array_index.main.GVN.64bit.panic-unwind.diff
@@ -19,15 +19,15 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
+-         _1 = copy _2[_3];
 +         _1 = const 0_u8;
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/mult_by_zero.test.GVN.diff b/tests/mir-opt/const_prop/mult_by_zero.test.GVN.diff
index 6c2aab45d48..290d9d62ce0 100644
--- a/tests/mir-opt/const_prop/mult_by_zero.test.GVN.diff
+++ b/tests/mir-opt/const_prop/mult_by_zero.test.GVN.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = Mul(move _2, const 0_i32);
 +         _0 = const 0_i32;
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/mutable_variable.main.GVN.diff b/tests/mir-opt/const_prop/mutable_variable.main.GVN.diff
index 11464e32400..cc25b6caf90 100644
--- a/tests/mir-opt/const_prop/mutable_variable.main.GVN.diff
+++ b/tests/mir-opt/const_prop/mutable_variable.main.GVN.diff
@@ -17,7 +17,7 @@
           _1 = const 42_i32;
           _1 = const 99_i32;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _0 = const ();
           StorageDead(_2);
           StorageDead(_1);
diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff
index 7584353620e..3cc71eee710 100644
--- a/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_aggregate.main.GVN.diff
@@ -18,7 +18,7 @@
 +         _1 = const (42_i32, 43_i32);
           (_1.1: i32) = const 99_i32;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _0 = const ();
           StorageDead(_2);
           StorageDead(_1);
diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff
index e16e2969eb8..569ad62b5cc 100644
--- a/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_mut_ref.main.GVN.diff
@@ -24,7 +24,7 @@
           _2 = &mut _1;
           ((*_2).1: i32) = const 99_i32;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _0 = const ();
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-abort.diff
index 6480e480f8c..5b4d18a3c07 100644
--- a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-abort.diff
@@ -21,7 +21,7 @@
           (_1.1: i32) = const 99_i32;
           (_1.0: i32) = const 42_i32;
           StorageLive(_2);
-          _2 = (_1.1: i32);
+          _2 = copy (_1.1: i32);
           _0 = const ();
           StorageDead(_2);
           StorageDead(_1);
diff --git a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-unwind.diff
index fb757801082..d58febe368d 100644
--- a/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_aggregate_partial_read.main.GVN.panic-unwind.diff
@@ -21,7 +21,7 @@
           (_1.1: i32) = const 99_i32;
           (_1.0: i32) = const 42_i32;
           StorageLive(_2);
-          _2 = (_1.1: i32);
+          _2 = copy (_1.1: i32);
           _0 = const ();
           StorageDead(_2);
           StorageDead(_1);
diff --git a/tests/mir-opt/const_prop/mutable_variable_no_prop.main.GVN.diff b/tests/mir-opt/const_prop/mutable_variable_no_prop.main.GVN.diff
index 31c839f6749..3f8dc12f4ae 100644
--- a/tests/mir-opt/const_prop/mutable_variable_no_prop.main.GVN.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_no_prop.main.GVN.diff
@@ -22,14 +22,14 @@
           StorageLive(_3);
           StorageLive(_4);
           _4 = const {ALLOC0: *mut u32};
-          _3 = (*_4);
+          _3 = copy (*_4);
           _1 = move _3;
           StorageDead(_3);
           StorageDead(_4);
           _2 = const ();
           StorageDead(_2);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           _0 = const ();
           StorageDead(_5);
           StorageDead(_1);
diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff
index 19d79694666..7ca1b39d771 100644
--- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-abort.diff
@@ -32,14 +32,14 @@
 -         _2 = (const 1_i32, const 2_i32);
 +         _2 = const (1_i32, 2_i32);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         (_2.1: i32) = move _3;
-+         (_2.1: i32) = _1;
++         (_2.1: i32) = copy _1;
           StorageDead(_3);
           StorageLive(_4);
-          _4 = (_2.1: i32);
+          _4 = copy (_2.1: i32);
           StorageLive(_5);
-          _5 = (_2.0: i32);
+          _5 = copy (_2.0: i32);
           _0 = const ();
           StorageDead(_5);
           StorageDead(_4);
diff --git a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff
index 2bb277bf27f..f6379513806 100644
--- a/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/mutable_variable_unprop_assign.main.GVN.panic-unwind.diff
@@ -32,14 +32,14 @@
 -         _2 = (const 1_i32, const 2_i32);
 +         _2 = const (1_i32, 2_i32);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         (_2.1: i32) = move _3;
-+         (_2.1: i32) = _1;
++         (_2.1: i32) = copy _1;
           StorageDead(_3);
           StorageLive(_4);
-          _4 = (_2.1: i32);
+          _4 = copy (_2.1: i32);
           StorageLive(_5);
-          _5 = (_2.0: i32);
+          _5 = copy (_2.0: i32);
           _0 = const ();
           StorageDead(_5);
           StorageDead(_4);
diff --git a/tests/mir-opt/const_prop/overwrite_with_const_with_params.size_of.GVN.diff b/tests/mir-opt/const_prop/overwrite_with_const_with_params.size_of.GVN.diff
index 1eadffa4f36..da6ef0a978b 100644
--- a/tests/mir-opt/const_prop/overwrite_with_const_with_params.size_of.GVN.diff
+++ b/tests/mir-opt/const_prop/overwrite_with_const_with_params.size_of.GVN.diff
@@ -12,7 +12,7 @@
           StorageLive(_1);
           _1 = const 0_usize;
           _1 = const SizeOfConst::<T>::SIZE;
-          _0 = _1;
+          _0 = copy _1;
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-abort.diff
index 79a95b618d1..657fa7a5fea 100644
--- a/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-abort.diff
@@ -24,9 +24,9 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = read(move _5) -> [return: bb1, unwind unreachable];
-+         _4 = read(_1) -> [return: bb1, unwind unreachable];
++         _4 = read(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-unwind.diff
index 9d1bcd92fef..8fef6591d41 100644
--- a/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/pointer_expose_provenance.main.GVN.panic-unwind.diff
@@ -24,9 +24,9 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = read(move _5) -> [return: bb1, unwind continue];
-+         _4 = read(_1) -> [return: bb1, unwind continue];
++         _4 = read(copy _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/const_prop/read_immutable_static.main.GVN.diff b/tests/mir-opt/const_prop/read_immutable_static.main.GVN.diff
index 38f23505230..8df262b351f 100644
--- a/tests/mir-opt/const_prop/read_immutable_static.main.GVN.diff
+++ b/tests/mir-opt/const_prop/read_immutable_static.main.GVN.diff
@@ -19,12 +19,12 @@
 +         nop;
 +         nop;
           _3 = const {ALLOC0: &u8};
--         _2 = (*_3);
+-         _2 = copy (*_3);
 +         _2 = const 2_u8;
           StorageLive(_4);
           StorageLive(_5);
           _5 = const {ALLOC0: &u8};
--         _4 = (*_5);
+-         _4 = copy (*_5);
 -         _1 = Add(move _2, move _4);
 +         _4 = const 2_u8;
 +         _1 = const 4_u8;
diff --git a/tests/mir-opt/const_prop/ref_deref.main.GVN.diff b/tests/mir-opt/const_prop/ref_deref.main.GVN.diff
index 509924a91c5..b9e269266b0 100644
--- a/tests/mir-opt/const_prop/ref_deref.main.GVN.diff
+++ b/tests/mir-opt/const_prop/ref_deref.main.GVN.diff
@@ -16,7 +16,7 @@
           StorageLive(_2);
           _4 = const main::promoted[0];
           _2 = &(*_4);
--         _1 = (*_2);
+-         _1 = copy (*_2);
 +         _1 = const 4_i32;
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/const_prop/ref_deref_project.main.GVN.diff b/tests/mir-opt/const_prop/ref_deref_project.main.GVN.diff
index 820c6cc0680..dcc13c9251c 100644
--- a/tests/mir-opt/const_prop/ref_deref_project.main.GVN.diff
+++ b/tests/mir-opt/const_prop/ref_deref_project.main.GVN.diff
@@ -16,7 +16,7 @@
           StorageLive(_2);
           _4 = const main::promoted[0];
           _2 = &((*_4).1: i32);
--         _1 = (*_2);
+-         _1 = copy (*_2);
 +         _1 = const 5_i32;
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-abort.diff
index 71635b8e9c3..f7c1c2da01f 100644
--- a/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-abort.diff
@@ -21,15 +21,15 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind unreachable];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _2 = _3[_4];
+-         _2 = copy _3[_4];
 -         _1 = Add(move _2, const 0_u32);
 +         _2 = const 42_u32;
 +         _1 = const 42_u32;
diff --git a/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-unwind.diff
index 84205028d6d..436773c8556 100644
--- a/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/repeat.main.GVN.32bit.panic-unwind.diff
@@ -21,15 +21,15 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind continue];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind continue];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _2 = _3[_4];
+-         _2 = copy _3[_4];
 -         _1 = Add(move _2, const 0_u32);
 +         _2 = const 42_u32;
 +         _1 = const 42_u32;
diff --git a/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-abort.diff
index 71635b8e9c3..f7c1c2da01f 100644
--- a/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-abort.diff
@@ -21,15 +21,15 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind unreachable];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _2 = _3[_4];
+-         _2 = copy _3[_4];
 -         _1 = Add(move _2, const 0_u32);
 +         _2 = const 42_u32;
 +         _1 = const 42_u32;
diff --git a/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-unwind.diff
index 84205028d6d..436773c8556 100644
--- a/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/repeat.main.GVN.64bit.panic-unwind.diff
@@ -21,15 +21,15 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind continue];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind continue];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _2 = _3[_4];
+-         _2 = copy _3[_4];
 -         _1 = Add(move _2, const 0_u32);
 +         _2 = const 42_u32;
 +         _1 = const 42_u32;
diff --git a/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-abort.diff
index 0a20fb0e59e..3c73d34474c 100644
--- a/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-abort.diff
@@ -16,7 +16,7 @@
           _1 = const 1_u32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = consume(move _3) -> [return: bb1, unwind unreachable];
 +         _3 = const 1_u32;
 +         _2 = consume(const 1_u32) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-unwind.diff
index 8b9519d3adc..0a7fddee39b 100644
--- a/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/scalar_literal_propagation.main.GVN.panic-unwind.diff
@@ -16,7 +16,7 @@
           _1 = const 1_u32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = consume(move _3) -> [return: bb1, unwind continue];
 +         _3 = const 1_u32;
 +         _2 = consume(const 1_u32) -> [return: bb1, unwind continue];
diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff
index 21d91d0320a..e834a5802c3 100644
--- a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-abort.diff
@@ -22,24 +22,24 @@
           StorageLive(_3);
           StorageLive(_4);
           _9 = const main::promoted[0];
-          _4 = _9;
--         _3 = _4;
+          _4 = copy _9;
+-         _3 = copy _4;
 -         _2 = move _3 as &[u32] (PointerCoercion(Unsize));
-+         _3 = _9;
-+         _2 = _9 as &[u32] (PointerCoercion(Unsize));
++         _3 = copy _9;
++         _2 = copy _9 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind unreachable];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
+-         _1 = copy (*_2)[_6];
 +         _1 = const 2_u32;
           StorageDead(_6);
           StorageDead(_4);
diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff
index 889114c9862..55ffc501805 100644
--- a/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/slice_len.main.GVN.32bit.panic-unwind.diff
@@ -22,24 +22,24 @@
           StorageLive(_3);
           StorageLive(_4);
           _9 = const main::promoted[0];
-          _4 = _9;
--         _3 = _4;
+          _4 = copy _9;
+-         _3 = copy _4;
 -         _2 = move _3 as &[u32] (PointerCoercion(Unsize));
-+         _3 = _9;
-+         _2 = _9 as &[u32] (PointerCoercion(Unsize));
++         _3 = copy _9;
++         _2 = copy _9 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
+-         _1 = copy (*_2)[_6];
 +         _1 = const 2_u32;
           StorageDead(_6);
           StorageDead(_4);
diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff
index 21d91d0320a..e834a5802c3 100644
--- a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-abort.diff
@@ -22,24 +22,24 @@
           StorageLive(_3);
           StorageLive(_4);
           _9 = const main::promoted[0];
-          _4 = _9;
--         _3 = _4;
+          _4 = copy _9;
+-         _3 = copy _4;
 -         _2 = move _3 as &[u32] (PointerCoercion(Unsize));
-+         _3 = _9;
-+         _2 = _9 as &[u32] (PointerCoercion(Unsize));
++         _3 = copy _9;
++         _2 = copy _9 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind unreachable];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
+-         _1 = copy (*_2)[_6];
 +         _1 = const 2_u32;
           StorageDead(_6);
           StorageDead(_4);
diff --git a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff
index 889114c9862..55ffc501805 100644
--- a/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/slice_len.main.GVN.64bit.panic-unwind.diff
@@ -22,24 +22,24 @@
           StorageLive(_3);
           StorageLive(_4);
           _9 = const main::promoted[0];
-          _4 = _9;
--         _3 = _4;
+          _4 = copy _9;
+-         _3 = copy _4;
 -         _2 = move _3 as &[u32] (PointerCoercion(Unsize));
-+         _3 = _9;
-+         _2 = _9 as &[u32] (PointerCoercion(Unsize));
++         _3 = copy _9;
++         _2 = copy _9 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
+-         _1 = copy (*_2)[_6];
 +         _1 = const 2_u32;
           StorageDead(_6);
           StorageDead(_4);
diff --git a/tests/mir-opt/const_prop/switch_int.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/switch_int.main.GVN.panic-abort.diff
index ee9f2d5c7f5..2339f110f5a 100644
--- a/tests/mir-opt/const_prop/switch_int.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/switch_int.main.GVN.panic-abort.diff
@@ -8,7 +8,7 @@
       bb0: {
           StorageLive(_1);
           _1 = const 1_i32;
--         switchInt(_1) -> [1: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [1: bb2, otherwise: bb1];
 +         switchInt(const 1_i32) -> [1: bb2, otherwise: bb1];
       }
   
diff --git a/tests/mir-opt/const_prop/switch_int.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/switch_int.main.GVN.panic-unwind.diff
index 143d04ac984..49082e6ba52 100644
--- a/tests/mir-opt/const_prop/switch_int.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/switch_int.main.GVN.panic-unwind.diff
@@ -8,7 +8,7 @@
       bb0: {
           StorageLive(_1);
           _1 = const 1_i32;
--         switchInt(_1) -> [1: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [1: bb2, otherwise: bb1];
 +         switchInt(const 1_i32) -> [1: bb2, otherwise: bb1];
       }
   
diff --git a/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.32bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.32bit.diff
index 7a289563c50..de0b1a57f80 100644
--- a/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.32bit.diff
+++ b/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.32bit.diff
@@ -12,7 +12,7 @@
       bb0: {
           StorageLive(_1);
 -         _1 = const 1_usize as std::boxed::Box<Never> (Transmute);
--         _2 = (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
+-         _2 = copy (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
 +         _1 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global);
 +         _2 = const {0x1 as *const Never};
           unreachable;
diff --git a/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.64bit.diff b/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.64bit.diff
index 7a289563c50..de0b1a57f80 100644
--- a/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.64bit.diff
+++ b/tests/mir-opt/const_prop/transmute.unreachable_box.GVN.64bit.diff
@@ -12,7 +12,7 @@
       bb0: {
           StorageLive(_1);
 -         _1 = const 1_usize as std::boxed::Box<Never> (Transmute);
--         _2 = (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
+-         _2 = copy (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
 +         _1 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global);
 +         _2 = const {0x1 as *const Never};
           unreachable;
diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff
index bf8fece3d37..01d86ce8717 100644
--- a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-abort.diff
@@ -17,7 +17,7 @@
 +         _1 = const (1_u32, 2_u32);
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = consume(move _3) -> [return: bb1, unwind unreachable];
 +         _3 = const (1_u32, 2_u32);
 +         _2 = consume(const (1_u32, 2_u32)) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff
index 02a75849d88..bd7d494212c 100644
--- a/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/const_prop/tuple_literal_propagation.main.GVN.panic-unwind.diff
@@ -17,7 +17,7 @@
 +         _1 = const (1_u32, 2_u32);
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = consume(move _3) -> [return: bb1, unwind continue];
 +         _3 = const (1_u32, 2_u32);
 +         _2 = consume(const (1_u32, 2_u32)) -> [return: bb1, unwind continue];
diff --git a/tests/mir-opt/const_prop/while_let_loops.change_loop_body.GVN.diff b/tests/mir-opt/const_prop/while_let_loops.change_loop_body.GVN.diff
index 9548afc9d40..f830624cae7 100644
--- a/tests/mir-opt/const_prop/while_let_loops.change_loop_body.GVN.diff
+++ b/tests/mir-opt/const_prop/while_let_loops.change_loop_body.GVN.diff
@@ -30,7 +30,7 @@
       }
   
       bb1: {
--         switchInt(((_3 as Some).0: u32)) -> [0: bb2, otherwise: bb3];
+-         switchInt(copy ((_3 as Some).0: u32)) -> [0: bb2, otherwise: bb3];
 +         switchInt(const Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: u32) -> [0: bb2, otherwise: bb3];
       }
   
diff --git a/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-abort.diff
index 897592a0e2f..40e8c06f357 100644
--- a/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-abort.diff
@@ -7,14 +7,14 @@
       let mut _3: &T;
   
       bb0: {
--         _2 = _1;
+-         _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind unreachable];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
--         _0 = opaque::<T>(_2) -> [return: bb2, unwind unreachable];
-+         _0 = opaque::<T>(_1) -> [return: bb2, unwind unreachable];
+-         _0 = opaque::<T>(copy _2) -> [return: bb2, unwind unreachable];
++         _0 = opaque::<T>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-unwind.diff
index 33c05af91a1..d09c96c0f2b 100644
--- a/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/borrowed_local.borrowed.CopyProp.panic-unwind.diff
@@ -7,14 +7,14 @@
       let mut _3: &T;
   
       bb0: {
--         _2 = _1;
+-         _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind continue];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind continue];
       }
   
       bb1: {
--         _0 = opaque::<T>(_2) -> [return: bb2, unwind continue];
-+         _0 = opaque::<T>(_1) -> [return: bb2, unwind continue];
+-         _0 = opaque::<T>(copy _2) -> [return: bb2, unwind continue];
++         _0 = opaque::<T>(copy _1) -> [return: bb2, unwind continue];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-abort.diff
index 3d6b5dffba4..7e63911d843 100644
--- a/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-abort.diff
@@ -11,13 +11,13 @@
       bb0: {
           _1 = const 5_u8;
           _2 = &_1;
-          _3 = _1;
+          _3 = copy _1;
           _4 = &_3;
-          _0 = cmp_ref(_2, _4) -> [return: bb1, unwind unreachable];
+          _0 = cmp_ref(copy _2, copy _4) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
-          _0 = opaque::<u8>(_3) -> [return: bb2, unwind unreachable];
+          _0 = opaque::<u8>(copy _3) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-unwind.diff
index 0f29d2681de..8e5f8b21fe7 100644
--- a/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/borrowed_local.compare_address.CopyProp.panic-unwind.diff
@@ -11,13 +11,13 @@
       bb0: {
           _1 = const 5_u8;
           _2 = &_1;
-          _3 = _1;
+          _3 = copy _1;
           _4 = &_3;
-          _0 = cmp_ref(_2, _4) -> [return: bb1, unwind continue];
+          _0 = cmp_ref(copy _2, copy _4) -> [return: bb1, unwind continue];
       }
   
       bb1: {
-          _0 = opaque::<u8>(_3) -> [return: bb2, unwind continue];
+          _0 = opaque::<u8>(copy _3) -> [return: bb2, unwind continue];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-abort.diff
index af2aeb0dcab..99dda2a95ff 100644
--- a/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-abort.diff
@@ -7,13 +7,13 @@
       let mut _3: &T;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind unreachable];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
-          _0 = opaque::<T>(_2) -> [return: bb2, unwind unreachable];
+          _0 = opaque::<T>(copy _2) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-unwind.diff
index 040ed0aec16..6eb48cd8dbc 100644
--- a/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/borrowed_local.non_freeze.CopyProp.panic-unwind.diff
@@ -7,13 +7,13 @@
       let mut _3: &T;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind continue];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind continue];
       }
   
       bb1: {
-          _0 = opaque::<T>(_2) -> [return: bb2, unwind continue];
+          _0 = opaque::<T>(copy _2) -> [return: bb2, unwind continue];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff
index 3334cdf92e7..c8889ee716f 100644
--- a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-abort.diff
@@ -30,7 +30,7 @@
       }
   
       bb3: {
-          _2 = _1;
+          _2 = copy _1;
           goto -> bb6;
       }
   
@@ -41,13 +41,13 @@
   
       bb5: {
           StorageDead(_4);
-          _2 = _1;
+          _2 = copy _1;
           goto -> bb6;
       }
   
       bb6: {
           StorageDead(_3);
-          _0 = _2;
+          _0 = copy _2;
           StorageDead(_2);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff
index 2f92d8818cf..a41c28cb8c8 100644
--- a/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/branch.foo.CopyProp.panic-unwind.diff
@@ -30,7 +30,7 @@
       }
   
       bb3: {
-          _2 = _1;
+          _2 = copy _1;
           goto -> bb6;
       }
   
@@ -41,13 +41,13 @@
   
       bb5: {
           StorageDead(_4);
-          _2 = _1;
+          _2 = copy _1;
           goto -> bb6;
       }
   
       bb6: {
           StorageDead(_3);
-          _0 = _2;
+          _0 = copy _2;
           StorageDead(_2);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/copy-prop/calls.multiple_edges.CopyProp.diff b/tests/mir-opt/copy-prop/calls.multiple_edges.CopyProp.diff
index 4d56a8b25d3..9d0a1644ae4 100644
--- a/tests/mir-opt/copy-prop/calls.multiple_edges.CopyProp.diff
+++ b/tests/mir-opt/copy-prop/calls.multiple_edges.CopyProp.diff
@@ -6,7 +6,7 @@
       let mut _2: u8;
   
       bb0: {
-          switchInt(_1) -> [1: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -14,7 +14,7 @@
       }
   
       bb2: {
-          _0 = _2;
+          _0 = copy _2;
           return;
       }
   }
diff --git a/tests/mir-opt/copy-prop/calls.nrvo.CopyProp.diff b/tests/mir-opt/copy-prop/calls.nrvo.CopyProp.diff
index b5d56909b0d..29d9ec3f2fc 100644
--- a/tests/mir-opt/copy-prop/calls.nrvo.CopyProp.diff
+++ b/tests/mir-opt/copy-prop/calls.nrvo.CopyProp.diff
@@ -16,7 +16,7 @@
       }
   
       bb1: {
--         _0 = _1;
+-         _0 = copy _1;
 -         StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff
index 70674a912ed..280908ac63a 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-abort.diff
@@ -12,10 +12,10 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
-+         _0 = _1;
+-         _2 = copy _1;
++         _0 = copy _1;
           _1 = const 123_i32;
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff
index 70674a912ed..280908ac63a 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.arg_src.CopyProp.panic-unwind.diff
@@ -12,10 +12,10 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
-+         _0 = _1;
+-         _2 = copy _1;
++         _0 = copy _1;
           _1 = const 123_i32;
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff
index 9ec014e2b25..eea07d5839d 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-abort.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = dummy(move _3) -> [return: bb1, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff
index ef9c343a264..b0e5219913a 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.bar.CopyProp.panic-unwind.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = dummy(move _3) -> [return: bb1, unwind continue];
       }
   
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff
index 71facf91df7..5fb14902fef 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-abort.diff
@@ -8,10 +8,10 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _1 = move _2;
           StorageDead(_2);
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff
index 71facf91df7..5fb14902fef 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.baz.CopyProp.panic-unwind.diff
@@ -8,10 +8,10 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _1 = move _2;
           StorageDead(_2);
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff
index 81b73e18763..685a290492e 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-abort.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = dummy(move _3) -> [return: bb1, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff
index 769089e16f3..4a0601431ab 100644
--- a/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/copy_propagation_arg.foo.CopyProp.panic-unwind.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = dummy(move _3) -> [return: bb1, unwind continue];
       }
   
diff --git a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff
index 7ba85301051..1445b899dee 100644
--- a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-abort.diff
@@ -7,15 +7,15 @@
       let mut _3: NotCopy;
   
       bb0: {
--         _2 = _1;
+-         _2 = copy _1;
 -         _0 = opaque::<NotCopy>(move _1) -> [return: bb1, unwind unreachable];
-+         _0 = opaque::<NotCopy>(_1) -> [return: bb1, unwind unreachable];
++         _0 = opaque::<NotCopy>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
 -         _3 = move _2;
--         _0 = opaque::<NotCopy>(_3) -> [return: bb2, unwind unreachable];
-+         _0 = opaque::<NotCopy>(_1) -> [return: bb2, unwind unreachable];
+-         _0 = opaque::<NotCopy>(copy _3) -> [return: bb2, unwind unreachable];
++         _0 = opaque::<NotCopy>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff
index 7ba85301051..1445b899dee 100644
--- a/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/custom_move_arg.f.CopyProp.panic-unwind.diff
@@ -7,15 +7,15 @@
       let mut _3: NotCopy;
   
       bb0: {
--         _2 = _1;
+-         _2 = copy _1;
 -         _0 = opaque::<NotCopy>(move _1) -> [return: bb1, unwind unreachable];
-+         _0 = opaque::<NotCopy>(_1) -> [return: bb1, unwind unreachable];
++         _0 = opaque::<NotCopy>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
 -         _3 = move _2;
--         _0 = opaque::<NotCopy>(_3) -> [return: bb2, unwind unreachable];
-+         _0 = opaque::<NotCopy>(_1) -> [return: bb2, unwind unreachable];
+-         _0 = opaque::<NotCopy>(copy _3) -> [return: bb2, unwind unreachable];
++         _0 = opaque::<NotCopy>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
diff --git a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff
index 8f97c4e439e..d133091e6a4 100644
--- a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-abort.diff
@@ -27,17 +27,17 @@
   
       bb1: {
 -         StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         StorageLive(_3);
--         _3 = _2;
+-         _3 = copy _2;
 -         StorageLive(_4);
--         _4 = _3;
+-         _4 = copy _3;
 -         _1 = move _4;
 -         StorageDead(_4);
-+         _1 = _2;
++         _1 = copy _2;
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
           _5 = std::mem::drop::<i32>(move _6) -> [return: bb2, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff
index e343b78924a..bd4ad737cec 100644
--- a/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/cycle.main.CopyProp.panic-unwind.diff
@@ -27,17 +27,17 @@
   
       bb1: {
 -         StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         StorageLive(_3);
--         _3 = _2;
+-         _3 = copy _2;
 -         StorageLive(_4);
--         _4 = _3;
+-         _4 = copy _3;
 -         _1 = move _4;
 -         StorageDead(_4);
-+         _1 = _2;
++         _1 = copy _2;
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
           _5 = std::mem::drop::<i32>(move _6) -> [return: bb2, unwind continue];
       }
   
diff --git a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir
index 02b88d14003..4781fdfd902 100644
--- a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir
+++ b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-abort.mir
@@ -11,11 +11,11 @@ fn f(_1: usize) -> usize {
     }
 
     bb0: {
-        _2 = _1;
+        _2 = copy _1;
         _1 = const 5_usize;
-        _1 = _2;
+        _1 = copy _2;
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _0 = id::<usize>(move _4) -> [return: bb1, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir
index f8c285ff384..f5fded45c13 100644
--- a/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir
+++ b/tests/mir-opt/copy-prop/dead_stores_79191.f.CopyProp.after.panic-unwind.mir
@@ -11,11 +11,11 @@ fn f(_1: usize) -> usize {
     }
 
     bb0: {
-        _2 = _1;
+        _2 = copy _1;
         _1 = const 5_usize;
-        _1 = _2;
+        _1 = copy _2;
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _0 = id::<usize>(move _4) -> [return: bb1, unwind continue];
     }
 
diff --git a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir
index 02b88d14003..4781fdfd902 100644
--- a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir
+++ b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-abort.mir
@@ -11,11 +11,11 @@ fn f(_1: usize) -> usize {
     }
 
     bb0: {
-        _2 = _1;
+        _2 = copy _1;
         _1 = const 5_usize;
-        _1 = _2;
+        _1 = copy _2;
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _0 = id::<usize>(move _4) -> [return: bb1, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir
index f8c285ff384..f5fded45c13 100644
--- a/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir
+++ b/tests/mir-opt/copy-prop/dead_stores_better.f.CopyProp.after.panic-unwind.mir
@@ -11,11 +11,11 @@ fn f(_1: usize) -> usize {
     }
 
     bb0: {
-        _2 = _1;
+        _2 = copy _1;
         _1 = const 5_usize;
-        _1 = _2;
+        _1 = copy _2;
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         _0 = id::<usize>(move _4) -> [return: bb1, unwind continue];
     }
 
diff --git a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff
index 51390e2abbe..f4411886f9a 100644
--- a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-abort.diff
@@ -88,15 +88,15 @@
   
       bb6: {
 -         StorageLive(_16);
-          _16 = ((_11 as Some).0: usize);
+          _16 = copy ((_11 as Some).0: usize);
           StorageLive(_17);
 -         StorageLive(_18);
--         _18 = _16;
+-         _18 = copy _16;
           _19 = Len(_2);
--         _20 = Lt(_18, _19);
--         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _18) -> [success: bb8, unwind unreachable];
-+         _20 = Lt(_16, _19);
-+         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _16) -> [success: bb8, unwind unreachable];
+-         _20 = Lt(copy _18, copy _19);
+-         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, copy _18) -> [success: bb8, unwind unreachable];
++         _20 = Lt(copy _16, copy _19);
++         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, copy _16) -> [success: bb8, unwind unreachable];
       }
   
       bb7: {
@@ -112,9 +112,9 @@
       }
   
       bb8: {
--         _17 = _2[_18];
-+         _17 = _2[_16];
-          _1 = Add(_1, move _17);
+-         _17 = copy _2[_18];
++         _17 = copy _2[_16];
+          _1 = Add(copy _1, move _17);
           StorageDead(_17);
 -         StorageDead(_18);
 -         _10 = const ();
diff --git a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff
index 8a2cbb68824..833588aa4e9 100644
--- a/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/issue_107511.main.CopyProp.panic-unwind.diff
@@ -88,15 +88,15 @@
   
       bb6: {
 -         StorageLive(_16);
-          _16 = ((_11 as Some).0: usize);
+          _16 = copy ((_11 as Some).0: usize);
           StorageLive(_17);
 -         StorageLive(_18);
--         _18 = _16;
+-         _18 = copy _16;
           _19 = Len(_2);
--         _20 = Lt(_18, _19);
--         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _18) -> [success: bb8, unwind continue];
-+         _20 = Lt(_16, _19);
-+         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, _16) -> [success: bb8, unwind continue];
+-         _20 = Lt(copy _18, copy _19);
+-         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, copy _18) -> [success: bb8, unwind continue];
++         _20 = Lt(copy _16, copy _19);
++         assert(move _20, "index out of bounds: the length is {} but the index is {}", move _19, copy _16) -> [success: bb8, unwind continue];
       }
   
       bb7: {
@@ -112,9 +112,9 @@
       }
   
       bb8: {
--         _17 = _2[_18];
-+         _17 = _2[_16];
-          _1 = Add(_1, move _17);
+-         _17 = copy _2[_18];
++         _17 = copy _2[_16];
+          _1 = Add(copy _1, move _17);
           StorageDead(_17);
 -         StorageDead(_18);
 -         _10 = const ();
diff --git a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff
index cf04f213efb..da9904bfa01 100644
--- a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-abort.diff
@@ -15,14 +15,14 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
           StorageLive(_3);
 -         StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 -         StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
 -         _3 = g::<T>(move _4, move _5) -> [return: bb1, unwind unreachable];
-+         _3 = g::<T>(_1, _1) -> [return: bb1, unwind unreachable];
++         _3 = g::<T>(copy _1, copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff
index 0c6a3c6d5c9..9b0de655bd2 100644
--- a/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/move_arg.f.CopyProp.panic-unwind.diff
@@ -15,14 +15,14 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
           StorageLive(_3);
 -         StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 -         StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
 -         _3 = g::<T>(move _4, move _5) -> [return: bb1, unwind continue];
-+         _3 = g::<T>(_1, _1) -> [return: bb1, unwind continue];
++         _3 = g::<T>(copy _1, copy _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff
index b2b89968d70..973bcd6de83 100644
--- a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-abort.diff
@@ -7,11 +7,11 @@
       let mut _3: u8;
   
       bb0: {
--         _2 = _1;
+-         _2 = copy _1;
 -         _3 = move (_2.0: u8);
 -         _0 = opaque::<Foo>(move _1) -> [return: bb1, unwind unreachable];
-+         _3 = (_1.0: u8);
-+         _0 = opaque::<Foo>(_1) -> [return: bb1, unwind unreachable];
++         _3 = copy (_1.0: u8);
++         _0 = opaque::<Foo>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff
index b2b89968d70..973bcd6de83 100644
--- a/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/move_projection.f.CopyProp.panic-unwind.diff
@@ -7,11 +7,11 @@
       let mut _3: u8;
   
       bb0: {
--         _2 = _1;
+-         _2 = copy _1;
 -         _3 = move (_2.0: u8);
 -         _0 = opaque::<Foo>(move _1) -> [return: bb1, unwind unreachable];
-+         _3 = (_1.0: u8);
-+         _0 = opaque::<Foo>(_1) -> [return: bb1, unwind unreachable];
++         _3 = copy (_1.0: u8);
++         _0 = opaque::<Foo>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff b/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff
index 7f6802beeae..f96be627129 100644
--- a/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff
+++ b/tests/mir-opt/copy-prop/mutate_through_pointer.f.CopyProp.diff
@@ -8,11 +8,11 @@
       let mut _4: *mut bool;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &raw const _2;
           _4 = &raw mut (*_3);
           (*_4) = const false;
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff b/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff
index 5bf2335943c..6955d694e5a 100644
--- a/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff
+++ b/tests/mir-opt/copy-prop/non_dominate.f.CopyProp.diff
@@ -11,18 +11,18 @@
       }
   
       bb1: {
-          _3 = _1;
-          switchInt(_3) -> [0: bb3, otherwise: bb2];
+          _3 = copy _1;
+          switchInt(copy _3) -> [0: bb3, otherwise: bb2];
       }
   
       bb2: {
-          _2 = _3;
+          _2 = copy _3;
           _1 = const false;
           goto -> bb1;
       }
   
       bb3: {
-          _0 = _2;
+          _0 = copy _2;
           return;
       }
   }
diff --git a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff
index ef30ac2fc8c..676c5cee343 100644
--- a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-abort.diff
@@ -30,12 +30,12 @@
           _3 = &mut (*_4);
           StorageDead(_4);
 -         StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
           StorageLive(_6);
 -         StorageLive(_7);
--         _7 = _5;
+-         _7 = copy _5;
 -         _6 = opaque::<*mut u8>(move _7) -> [return: bb1, unwind unreachable];
-+         _6 = opaque::<*mut u8>(_2) -> [return: bb1, unwind unreachable];
++         _6 = opaque::<*mut u8>(copy _2) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff
index a743a3e829a..ca2232ce54a 100644
--- a/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/reborrow.demiraw.CopyProp.panic-unwind.diff
@@ -30,12 +30,12 @@
           _3 = &mut (*_4);
           StorageDead(_4);
 -         StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
           StorageLive(_6);
 -         StorageLive(_7);
--         _7 = _5;
+-         _7 = copy _5;
 -         _6 = opaque::<*mut u8>(move _7) -> [return: bb1, unwind continue];
-+         _6 = opaque::<*mut u8>(_2) -> [return: bb1, unwind continue];
++         _6 = opaque::<*mut u8>(copy _2) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff
index 2de6f85ce64..1968696905f 100644
--- a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff
+++ b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-abort.diff
@@ -26,12 +26,12 @@
           StorageLive(_3);
           _3 = &raw mut (*_2);
 -         StorageLive(_4);
--         _4 = _2;
+-         _4 = copy _2;
           StorageLive(_5);
 -         StorageLive(_6);
--         _6 = _4;
+-         _6 = copy _4;
 -         _5 = opaque::<*mut u8>(move _6) -> [return: bb1, unwind unreachable];
-+         _5 = opaque::<*mut u8>(_2) -> [return: bb1, unwind unreachable];
++         _5 = opaque::<*mut u8>(copy _2) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff
index 2afec4898bc..9a3c9665bc8 100644
--- a/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff
+++ b/tests/mir-opt/copy-prop/reborrow.miraw.CopyProp.panic-unwind.diff
@@ -26,12 +26,12 @@
           StorageLive(_3);
           _3 = &raw mut (*_2);
 -         StorageLive(_4);
--         _4 = _2;
+-         _4 = copy _2;
           StorageLive(_5);
 -         StorageLive(_6);
--         _6 = _4;
+-         _6 = copy _4;
 -         _5 = opaque::<*mut u8>(move _6) -> [return: bb1, unwind continue];
-+         _5 = opaque::<*mut u8>(_2) -> [return: bb1, unwind continue];
++         _5 = opaque::<*mut u8>(copy _2) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff b/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff
index 3d791734f46..eeeac70b5b8 100644
--- a/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff
+++ b/tests/mir-opt/coverage/branch_match_arms.main.InstrumentCoverage.diff
@@ -71,33 +71,33 @@
       bb5: {
 +         Coverage::ExpressionUsed(2);
           StorageLive(_9);
-          _9 = ((_1 as A).0: u32);
+          _9 = copy ((_1 as A).0: u32);
           StorageLive(_10);
-          _10 = _9;
+          _10 = copy _9;
           _0 = consume(move _10) -> [return: bb12, unwind: bb14];
       }
   
       bb6: {
           StorageLive(_7);
-          _7 = ((_1 as B).0: u32);
+          _7 = copy ((_1 as B).0: u32);
           StorageLive(_8);
-          _8 = _7;
+          _8 = copy _7;
           _0 = consume(move _8) -> [return: bb11, unwind: bb14];
       }
   
       bb7: {
           StorageLive(_5);
-          _5 = ((_1 as C).0: u32);
+          _5 = copy ((_1 as C).0: u32);
           StorageLive(_6);
-          _6 = _5;
+          _6 = copy _5;
           _0 = consume(move _6) -> [return: bb10, unwind: bb14];
       }
   
       bb8: {
           StorageLive(_3);
-          _3 = ((_1 as D).0: u32);
+          _3 = copy ((_1 as D).0: u32);
           StorageLive(_4);
-          _4 = _3;
+          _4 = copy _3;
           _0 = consume(move _4) -> [return: bb9, unwind: bb14];
       }
   
diff --git a/tests/mir-opt/dataflow-const-prop/aggregate_copy.foo.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/aggregate_copy.foo.DataflowConstProp.diff
index 3b739a25cb8..8dd34d84580 100644
--- a/tests/mir-opt/dataflow-const-prop/aggregate_copy.foo.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/aggregate_copy.foo.DataflowConstProp.diff
@@ -22,14 +22,14 @@
           StorageLive(_1);
           _1 = const Foo;
           StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 +         _2 = const (5_u32, 3_u32);
           StorageLive(_3);
--         _3 = (_2.1: u32);
+-         _3 = copy (_2.1: u32);
 +         _3 = const 3_u32;
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _3;
+-         _5 = copy _3;
 -         _4 = Ge(move _5, const 2_u32);
 -         switchInt(move _4) -> [0: bb2, otherwise: bb1];
 +         _5 = const 3_u32;
@@ -39,7 +39,7 @@
   
       bb1: {
           StorageDead(_5);
--         _0 = (_2.0: u32);
+-         _0 = copy (_2.0: u32);
 +         _0 = const 5_u32;
           goto -> bb3;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-abort.diff
index 212ddc5b154..a46daef435f 100644
--- a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-abort.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-unwind.diff
index 5c53d4f4461..1a4e15b45fa 100644
--- a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.32bit.panic-unwind.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-abort.diff
index 212ddc5b154..a46daef435f 100644
--- a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-abort.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-unwind.diff
index 5c53d4f4461..1a4e15b45fa 100644
--- a/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/array_index.main.DataflowConstProp.64bit.panic-unwind.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 4_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 4_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/boolean_identities.test.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/boolean_identities.test.DataflowConstProp.diff
index 5440c38ce4b..89175fbad5c 100644
--- a/tests/mir-opt/dataflow-const-prop/boolean_identities.test.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/boolean_identities.test.DataflowConstProp.diff
@@ -13,13 +13,13 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _3 = BitOr(move _4, const true);
 +         _3 = const true;
           StorageDead(_4);
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         _5 = BitAnd(move _6, const false);
 +         _5 = const false;
           StorageDead(_6);
diff --git a/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff
index 0ca446c89f2..f2c262f9fe2 100644
--- a/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/cast.main.DataflowConstProp.diff
@@ -20,7 +20,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 -         _3 = move _4 as u8 (IntToInt);
 +         _4 = const 257_i32;
 +         _3 = const 1_u8;
diff --git a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff
index 79ea5561748..867e768790f 100644
--- a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-abort.diff
@@ -36,11 +36,11 @@
           _2 = const 2_i32;
           StorageLive(_3);
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 +         _4 = const 1_i32;
           StorageLive(_5);
--         _5 = _2;
--         _6 = AddWithOverflow(_4, _5);
+-         _5 = copy _2;
+-         _6 = AddWithOverflow(copy _4, copy _5);
 -         assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> [success: bb1, unwind unreachable];
 +         _5 = const 2_i32;
 +         _6 = const (3_i32, false);
@@ -56,8 +56,8 @@
           _7 = const core::num::<impl i32>::MAX;
           StorageLive(_8);
           StorageLive(_9);
--         _9 = _7;
--         _10 = AddWithOverflow(_9, const 1_i32);
+-         _9 = copy _7;
+-         _10 = AddWithOverflow(copy _9, const 1_i32);
 -         assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> [success: bb2, unwind unreachable];
 +         _9 = const i32::MAX;
 +         _10 = const (i32::MIN, true);
diff --git a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff
index bd22c50dd8f..c22edaaec40 100644
--- a/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/checked.main.DataflowConstProp.panic-unwind.diff
@@ -36,11 +36,11 @@
           _2 = const 2_i32;
           StorageLive(_3);
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 +         _4 = const 1_i32;
           StorageLive(_5);
--         _5 = _2;
--         _6 = AddWithOverflow(_4, _5);
+-         _5 = copy _2;
+-         _6 = AddWithOverflow(copy _4, copy _5);
 -         assert(!move (_6.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, move _5) -> [success: bb1, unwind continue];
 +         _5 = const 2_i32;
 +         _6 = const (3_i32, false);
@@ -56,8 +56,8 @@
           _7 = const core::num::<impl i32>::MAX;
           StorageLive(_8);
           StorageLive(_9);
--         _9 = _7;
--         _10 = AddWithOverflow(_9, const 1_i32);
+-         _9 = copy _7;
+-         _10 = AddWithOverflow(copy _9, const 1_i32);
 -         assert(!move (_10.1: bool), "attempt to compute `{} + {}`, which would overflow", move _9, const 1_i32) -> [success: bb2, unwind continue];
 +         _9 = const i32::MAX;
 +         _10 = const (i32::MIN, true);
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
index 9d96e895c8a..c7870a7902b 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-abort.diff
@@ -50,7 +50,7 @@
           StorageLive(_6);
           StorageLive(_7);
 -         _7 = AlignOf([bool; 0]);
--         _6 = _7 as *mut [bool; 0] (Transmute);
+-         _6 = copy _7 as *mut [bool; 0] (Transmute);
 +         _7 = const 1_usize;
 +         _6 = const {0x1 as *mut [bool; 0]};
           StorageDead(_7);
@@ -67,7 +67,7 @@
   
       bb2: {
           StorageLive(_10);
--         _10 = _6 as *mut () (PtrToPtr);
+-         _10 = copy _6 as *mut () (PtrToPtr);
 -         _9 = NonNull::<T>::new_unchecked::precondition_check(move _10) -> [return: bb3, unwind unreachable];
 +         _10 = const {0x1 as *mut ()};
 +         _9 = NonNull::<T>::new_unchecked::precondition_check(const {0x1 as *mut ()}) -> [return: bb3, unwind unreachable];
@@ -80,8 +80,8 @@
   
       bb4: {
           StorageDead(_8);
--         _11 = _6 as *const [bool; 0] (PtrToPtr);
--         _5 = NonNull::<[bool; 0]> { pointer: _11 };
+-         _11 = copy _6 as *const [bool; 0] (PtrToPtr);
+-         _5 = NonNull::<[bool; 0]> { pointer: copy _11 };
 +         _11 = const {0x1 as *const [bool; 0]};
 +         _5 = const NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }};
           StorageDead(_11);
@@ -92,7 +92,7 @@
 -         _3 = move _4 as std::ptr::Unique<[bool]> (PointerCoercion(Unsize));
 +         _3 = const Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }};
           StorageDead(_4);
--         _2 = Box::<[bool]>(_3, const std::alloc::Global);
+-         _2 = Box::<[bool]>(copy _3, const std::alloc::Global);
 +         _2 = const Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global);
           StorageDead(_9);
           StorageDead(_3);
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
index 0bdff584b01..f5de7a361bc 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.32bit.panic-unwind.diff
@@ -50,7 +50,7 @@
           StorageLive(_6);
           StorageLive(_7);
 -         _7 = AlignOf([bool; 0]);
--         _6 = _7 as *mut [bool; 0] (Transmute);
+-         _6 = copy _7 as *mut [bool; 0] (Transmute);
 +         _7 = const 1_usize;
 +         _6 = const {0x1 as *mut [bool; 0]};
           StorageDead(_7);
@@ -71,7 +71,7 @@
   
       bb3: {
           StorageLive(_10);
--         _10 = _6 as *mut () (PtrToPtr);
+-         _10 = copy _6 as *mut () (PtrToPtr);
 -         _9 = NonNull::<T>::new_unchecked::precondition_check(move _10) -> [return: bb4, unwind unreachable];
 +         _10 = const {0x1 as *mut ()};
 +         _9 = NonNull::<T>::new_unchecked::precondition_check(const {0x1 as *mut ()}) -> [return: bb4, unwind unreachable];
@@ -84,8 +84,8 @@
   
       bb5: {
           StorageDead(_8);
--         _11 = _6 as *const [bool; 0] (PtrToPtr);
--         _5 = NonNull::<[bool; 0]> { pointer: _11 };
+-         _11 = copy _6 as *const [bool; 0] (PtrToPtr);
+-         _5 = NonNull::<[bool; 0]> { pointer: copy _11 };
 +         _11 = const {0x1 as *const [bool; 0]};
 +         _5 = const NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }};
           StorageDead(_11);
@@ -96,7 +96,7 @@
 -         _3 = move _4 as std::ptr::Unique<[bool]> (PointerCoercion(Unsize));
 +         _3 = const Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }};
           StorageDead(_4);
--         _2 = Box::<[bool]>(_3, const std::alloc::Global);
+-         _2 = Box::<[bool]>(copy _3, const std::alloc::Global);
 +         _2 = const Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global);
           StorageDead(_9);
           StorageDead(_3);
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
index 99e96fe5d70..3b0bc6377da 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-abort.diff
@@ -50,7 +50,7 @@
           StorageLive(_6);
           StorageLive(_7);
 -         _7 = AlignOf([bool; 0]);
--         _6 = _7 as *mut [bool; 0] (Transmute);
+-         _6 = copy _7 as *mut [bool; 0] (Transmute);
 +         _7 = const 1_usize;
 +         _6 = const {0x1 as *mut [bool; 0]};
           StorageDead(_7);
@@ -67,7 +67,7 @@
   
       bb2: {
           StorageLive(_10);
--         _10 = _6 as *mut () (PtrToPtr);
+-         _10 = copy _6 as *mut () (PtrToPtr);
 -         _9 = NonNull::<T>::new_unchecked::precondition_check(move _10) -> [return: bb3, unwind unreachable];
 +         _10 = const {0x1 as *mut ()};
 +         _9 = NonNull::<T>::new_unchecked::precondition_check(const {0x1 as *mut ()}) -> [return: bb3, unwind unreachable];
@@ -80,8 +80,8 @@
   
       bb4: {
           StorageDead(_8);
--         _11 = _6 as *const [bool; 0] (PtrToPtr);
--         _5 = NonNull::<[bool; 0]> { pointer: _11 };
+-         _11 = copy _6 as *const [bool; 0] (PtrToPtr);
+-         _5 = NonNull::<[bool; 0]> { pointer: copy _11 };
 +         _11 = const {0x1 as *const [bool; 0]};
 +         _5 = const NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }};
           StorageDead(_11);
@@ -92,7 +92,7 @@
 -         _3 = move _4 as std::ptr::Unique<[bool]> (PointerCoercion(Unsize));
 +         _3 = const Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }};
           StorageDead(_4);
--         _2 = Box::<[bool]>(_3, const std::alloc::Global);
+-         _2 = Box::<[bool]>(copy _3, const std::alloc::Global);
 +         _2 = const Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global);
           StorageDead(_9);
           StorageDead(_3);
diff --git a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
index 5eefabeac38..5dd7ad9a117 100644
--- a/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/default_boxed_slice.main.GVN.64bit.panic-unwind.diff
@@ -50,7 +50,7 @@
           StorageLive(_6);
           StorageLive(_7);
 -         _7 = AlignOf([bool; 0]);
--         _6 = _7 as *mut [bool; 0] (Transmute);
+-         _6 = copy _7 as *mut [bool; 0] (Transmute);
 +         _7 = const 1_usize;
 +         _6 = const {0x1 as *mut [bool; 0]};
           StorageDead(_7);
@@ -71,7 +71,7 @@
   
       bb3: {
           StorageLive(_10);
--         _10 = _6 as *mut () (PtrToPtr);
+-         _10 = copy _6 as *mut () (PtrToPtr);
 -         _9 = NonNull::<T>::new_unchecked::precondition_check(move _10) -> [return: bb4, unwind unreachable];
 +         _10 = const {0x1 as *mut ()};
 +         _9 = NonNull::<T>::new_unchecked::precondition_check(const {0x1 as *mut ()}) -> [return: bb4, unwind unreachable];
@@ -84,8 +84,8 @@
   
       bb5: {
           StorageDead(_8);
--         _11 = _6 as *const [bool; 0] (PtrToPtr);
--         _5 = NonNull::<[bool; 0]> { pointer: _11 };
+-         _11 = copy _6 as *const [bool; 0] (PtrToPtr);
+-         _5 = NonNull::<[bool; 0]> { pointer: copy _11 };
 +         _11 = const {0x1 as *const [bool; 0]};
 +         _5 = const NonNull::<[bool; 0]> {{ pointer: {0x1 as *const [bool; 0]} }};
           StorageDead(_11);
@@ -96,7 +96,7 @@
 -         _3 = move _4 as std::ptr::Unique<[bool]> (PointerCoercion(Unsize));
 +         _3 = const Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }};
           StorageDead(_4);
--         _2 = Box::<[bool]>(_3, const std::alloc::Global);
+-         _2 = Box::<[bool]>(copy _3, const std::alloc::Global);
 +         _2 = const Box::<[bool]>(Unique::<[bool]> {{ pointer: NonNull::<[bool]> {{ pointer: Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [bool] }}, _marker: PhantomData::<[bool]> }}, std::alloc::Global);
           StorageDead(_9);
           StorageDead(_3);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.32bit.diff
index 9da1caf9004..ef3b24cd440 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.32bit.diff
@@ -37,16 +37,16 @@
   
       bb2: {
           StorageLive(_5);
-          _5 = ((_1 as V2).0: i32);
-          _2 = _5;
+          _5 = copy ((_1 as V2).0: i32);
+          _2 = copy _5;
           StorageDead(_5);
           goto -> bb4;
       }
   
       bb3: {
           StorageLive(_4);
--         _4 = ((_1 as V1).0: i32);
--         _2 = _4;
+-         _4 = copy ((_1 as V1).0: i32);
+-         _2 = copy _4;
 +         _4 = const 0_i32;
 +         _2 = const 0_i32;
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.64bit.diff
index 9da1caf9004..ef3b24cd440 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.constant.DataflowConstProp.64bit.diff
@@ -37,16 +37,16 @@
   
       bb2: {
           StorageLive(_5);
-          _5 = ((_1 as V2).0: i32);
-          _2 = _5;
+          _5 = copy ((_1 as V2).0: i32);
+          _2 = copy _5;
           StorageDead(_5);
           goto -> bb4;
       }
   
       bb3: {
           StorageLive(_4);
--         _4 = ((_1 as V1).0: i32);
--         _2 = _4;
+-         _4 = copy ((_1 as V1).0: i32);
+-         _2 = copy _4;
 +         _4 = const 0_i32;
 +         _2 = const 0_i32;
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.32bit.diff
index 10d33767c90..db8352bcbcf 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.32bit.diff
@@ -28,13 +28,13 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           switchInt(move _4) -> [0: bb2, otherwise: bb1];
       }
   
       bb1: {
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           _3 = Option::<u8>::Some(move _5);
           StorageDead(_5);
           goto -> bb3;
@@ -63,15 +63,15 @@
   
       bb6: {
           StorageLive(_8);
-          _8 = ((_3 as Some).0: u8);
-          _6 = _8;
+          _8 = copy ((_3 as Some).0: u8);
+          _6 = copy _8;
           StorageDead(_8);
           goto -> bb7;
       }
   
       bb7: {
           StorageLive(_9);
-          _9 = _6;
+          _9 = copy _6;
           _0 = const ();
           StorageDead(_9);
           StorageDead(_6);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.64bit.diff
index 10d33767c90..db8352bcbcf 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.multiple.DataflowConstProp.64bit.diff
@@ -28,13 +28,13 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           switchInt(move _4) -> [0: bb2, otherwise: bb1];
       }
   
       bb1: {
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           _3 = Option::<u8>::Some(move _5);
           StorageDead(_5);
           goto -> bb3;
@@ -63,15 +63,15 @@
   
       bb6: {
           StorageLive(_8);
-          _8 = ((_3 as Some).0: u8);
-          _6 = _8;
+          _8 = copy ((_3 as Some).0: u8);
+          _6 = copy _8;
           StorageDead(_8);
           goto -> bb7;
       }
   
       bb7: {
           StorageLive(_9);
-          _9 = _6;
+          _9 = copy _6;
           _0 = const ();
           StorageDead(_9);
           StorageDead(_6);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.32bit.diff
index 960e69ee916..e2cd73404be 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.32bit.diff
@@ -10,7 +10,7 @@
           discriminant(_1) = 1;
           (((_1 as variant#1).0: NonZeroUsize).0: usize) = const 0_usize;
           _2 = discriminant(_1);
-          switchInt(_2) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _2) -> [0: bb1, otherwise: bb2];
       }
   
       bb1: {
diff --git a/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.64bit.diff
index 960e69ee916..e2cd73404be 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.mutate_discriminant.DataflowConstProp.64bit.diff
@@ -10,7 +10,7 @@
           discriminant(_1) = 1;
           (((_1 as variant#1).0: NonZeroUsize).0: usize) = const 0_usize;
           _2 = discriminant(_1);
-          switchInt(_2) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _2) -> [0: bb1, otherwise: bb2];
       }
   
       bb1: {
diff --git a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff
index a64dda0d06c..d79c163effc 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.32bit.diff
@@ -38,16 +38,16 @@
   
       bb2: {
           StorageLive(_5);
-          _5 = ((_1 as V2).0: i32);
-          _2 = _5;
+          _5 = copy ((_1 as V2).0: i32);
+          _2 = copy _5;
           StorageDead(_5);
           goto -> bb4;
       }
   
       bb3: {
           StorageLive(_4);
--         _4 = ((_1 as V1).0: i32);
--         _2 = _4;
+-         _4 = copy ((_1 as V1).0: i32);
+-         _2 = copy _4;
 +         _4 = const 0_i32;
 +         _2 = const 0_i32;
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff
index a64dda0d06c..d79c163effc 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.simple.DataflowConstProp.64bit.diff
@@ -38,16 +38,16 @@
   
       bb2: {
           StorageLive(_5);
-          _5 = ((_1 as V2).0: i32);
-          _2 = _5;
+          _5 = copy ((_1 as V2).0: i32);
+          _2 = copy _5;
           StorageDead(_5);
           goto -> bb4;
       }
   
       bb3: {
           StorageLive(_4);
--         _4 = ((_1 as V1).0: i32);
--         _2 = _4;
+-         _4 = copy ((_1 as V1).0: i32);
+-         _2 = copy _4;
 +         _4 = const 0_i32;
 +         _2 = const 0_i32;
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff
index b4d14f25fe2..9823a48785a 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.32bit.diff
@@ -44,7 +44,7 @@
           StorageLive(_1);
           StorageLive(_2);
           _2 = const {ALLOC0: &E};
--         _1 = (*_2);
+-         _1 = copy (*_2);
 +         _1 = const E::V1(0_i32);
           StorageDead(_2);
           StorageLive(_3);
@@ -60,16 +60,16 @@
   
       bb2: {
           StorageLive(_6);
-          _6 = ((_1 as V2).0: i32);
-          _3 = _6;
+          _6 = copy ((_1 as V2).0: i32);
+          _3 = copy _6;
           StorageDead(_6);
           goto -> bb4;
       }
   
       bb3: {
           StorageLive(_5);
--         _5 = ((_1 as V1).0: i32);
--         _3 = _5;
+-         _5 = copy ((_1 as V1).0: i32);
+-         _3 = copy _5;
 +         _5 = const 0_i32;
 +         _3 = const 0_i32;
           StorageDead(_5);
@@ -80,7 +80,7 @@
           StorageLive(_7);
           StorageLive(_8);
           _8 = const {ALLOC1: &&E};
-          _7 = (*_8);
+          _7 = copy (*_8);
           StorageDead(_8);
           StorageLive(_9);
           _10 = discriminant((*_7));
@@ -98,7 +98,7 @@
       bb6: {
           StorageLive(_11);
           _11 = &(((*_7) as V1).0: i32);
-          _9 = _11;
+          _9 = copy _11;
           StorageDead(_11);
           goto -> bb7;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff
index 57d02b87d13..e4e68483f25 100644
--- a/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/enum.statics.DataflowConstProp.64bit.diff
@@ -44,7 +44,7 @@
           StorageLive(_1);
           StorageLive(_2);
           _2 = const {ALLOC0: &E};
--         _1 = (*_2);
+-         _1 = copy (*_2);
 +         _1 = const E::V1(0_i32);
           StorageDead(_2);
           StorageLive(_3);
@@ -60,16 +60,16 @@
   
       bb2: {
           StorageLive(_6);
-          _6 = ((_1 as V2).0: i32);
-          _3 = _6;
+          _6 = copy ((_1 as V2).0: i32);
+          _3 = copy _6;
           StorageDead(_6);
           goto -> bb4;
       }
   
       bb3: {
           StorageLive(_5);
--         _5 = ((_1 as V1).0: i32);
--         _3 = _5;
+-         _5 = copy ((_1 as V1).0: i32);
+-         _3 = copy _5;
 +         _5 = const 0_i32;
 +         _3 = const 0_i32;
           StorageDead(_5);
@@ -80,7 +80,7 @@
           StorageLive(_7);
           StorageLive(_8);
           _8 = const {ALLOC1: &&E};
-          _7 = (*_8);
+          _7 = copy (*_8);
           StorageDead(_8);
           StorageLive(_9);
           _10 = discriminant((*_7));
@@ -98,7 +98,7 @@
       bb6: {
           StorageLive(_11);
           _11 = &(((*_7) as V1).0: i32);
-          _9 = _11;
+          _9 = copy _11;
           StorageDead(_11);
           goto -> bb7;
       }
diff --git a/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff
index 355f28b03db..5f013b1d134 100644
--- a/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/if.main.DataflowConstProp.diff
@@ -37,7 +37,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 -         _3 = Eq(move _4, const 1_i32);
 -         switchInt(move _3) -> [0: bb2, otherwise: bb1];
 +         _4 = const 1_i32;
@@ -61,7 +61,7 @@
           StorageDead(_3);
           StorageLive(_5);
           StorageLive(_6);
--         _6 = _2;
+-         _6 = copy _2;
 -         _5 = Add(move _6, const 1_i32);
 +         _6 = const 2_i32;
 +         _5 = const 3_i32;
@@ -69,7 +69,7 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
--         _9 = _1;
+-         _9 = copy _1;
 -         _8 = Eq(move _9, const 1_i32);
 -         switchInt(move _8) -> [0: bb5, otherwise: bb4];
 +         _9 = const 1_i32;
@@ -79,7 +79,7 @@
   
       bb4: {
           StorageDead(_9);
--         _7 = _1;
+-         _7 = copy _1;
 +         _7 = const 1_i32;
           goto -> bb6;
       }
@@ -87,7 +87,7 @@
       bb5: {
           StorageDead(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           _7 = Add(move _10, const 1_i32);
           StorageDead(_10);
           goto -> bb6;
@@ -97,7 +97,7 @@
           StorageDead(_8);
           StorageLive(_11);
           StorageLive(_12);
--         _12 = _7;
+-         _12 = copy _7;
 -         _11 = Add(move _12, const 1_i32);
 +         _12 = const 1_i32;
 +         _11 = const 2_i32;
diff --git a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff
index 8d62de0c821..1b695e4b53c 100644
--- a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-abort.diff
@@ -19,8 +19,8 @@
           StorageLive(_3);
           _3 = const 1_u8;
           StorageLive(_4);
--         _4 = AddWithOverflow(_2, _3);
--         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind unreachable];
+-         _4 = AddWithOverflow(copy _2, copy _3);
+-         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", copy _2, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const (0_u8, true);
 +         assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> [success: bb1, unwind unreachable];
       }
diff --git a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff
index 25624851cb3..a0bd8e17d8c 100644
--- a/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/inherit_overflow.main.DataflowConstProp.panic-unwind.diff
@@ -19,8 +19,8 @@
           StorageLive(_3);
           _3 = const 1_u8;
           StorageLive(_4);
--         _4 = AddWithOverflow(_2, _3);
--         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", _2, _3) -> [success: bb1, unwind continue];
+-         _4 = AddWithOverflow(copy _2, copy _3);
+-         assert(!move (_4.1: bool), "attempt to compute `{} + {}`, which would overflow", copy _2, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const (0_u8, true);
 +         assert(!const true, "attempt to compute `{} + {}`, which would overflow", const u8::MAX, const 1_u8) -> [success: bb1, unwind continue];
       }
diff --git a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-abort.diff
index 6c612d46725..b7ff0b671f7 100644
--- a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-abort.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-unwind.diff
index 87024da2628..af6e3626142 100644
--- a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.32bit.panic-unwind.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-abort.diff
index 6c612d46725..b7ff0b671f7 100644
--- a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-abort.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-unwind.diff
index 87024da2628..af6e3626142 100644
--- a/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/large_array_index.main.DataflowConstProp.64bit.panic-unwind.diff
@@ -19,16 +19,16 @@
           StorageLive(_3);
           _3 = const 2_usize;
 -         _4 = Len(_2);
--         _5 = Lt(_3, _4);
--         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+-         _5 = Lt(copy _3, copy _4);
+-         assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
 +         _4 = const 5000_usize;
 +         _5 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 5000_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = _2[_3];
-+         _1 = _2[2 of 3];
+-         _1 = copy _2[_3];
++         _1 = copy _2[2 of 3];
           StorageDead(_3);
           StorageDead(_2);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/mult_by_zero.test.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/mult_by_zero.test.DataflowConstProp.diff
index 91bc10a562f..8b05386b38a 100644
--- a/tests/mir-opt/dataflow-const-prop/mult_by_zero.test.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/mult_by_zero.test.DataflowConstProp.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = Mul(move _2, const 0_i32);
 +         _0 = const 0_i32;
           StorageDead(_2);
diff --git a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff
index fbbfd61bbed..a0e83265d31 100644
--- a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-abort.diff
@@ -39,7 +39,7 @@
       bb2: {
           StorageDead(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
           _0 = const ();
           StorageDead(_6);
           StorageDead(_1);
diff --git a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff
index 4e1d26acfa3..6dead031a9f 100644
--- a/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/ref_without_sb.main.DataflowConstProp.panic-unwind.diff
@@ -39,7 +39,7 @@
       bb2: {
           StorageDead(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
           _0 = const ();
           StorageDead(_6);
           StorageDead(_1);
diff --git a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-abort.diff
index a18ef6c9db7..dfa541b1200 100644
--- a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-abort.diff
@@ -21,16 +21,16 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind unreachable];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _2 = _3[_4];
-+         _2 = _3[2 of 3];
+-         _2 = copy _3[_4];
++         _2 = copy _3[2 of 3];
           _1 = Add(move _2, const 0_u32);
           StorageDead(_2);
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-unwind.diff
index 3356ef98b14..9ede3c5f7ac 100644
--- a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.32bit.panic-unwind.diff
@@ -21,16 +21,16 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind continue];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind continue];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _2 = _3[_4];
-+         _2 = _3[2 of 3];
+-         _2 = copy _3[_4];
++         _2 = copy _3[2 of 3];
           _1 = Add(move _2, const 0_u32);
           StorageDead(_2);
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-abort.diff
index a18ef6c9db7..dfa541b1200 100644
--- a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-abort.diff
@@ -21,16 +21,16 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind unreachable];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind unreachable];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _2 = _3[_4];
-+         _2 = _3[2 of 3];
+-         _2 = copy _3[_4];
++         _2 = copy _3[2 of 3];
           _1 = Add(move _2, const 0_u32);
           StorageDead(_2);
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-unwind.diff
index 3356ef98b14..9ede3c5f7ac 100644
--- a/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/repeat.main.DataflowConstProp.64bit.panic-unwind.diff
@@ -21,16 +21,16 @@
           StorageLive(_4);
           _4 = const 2_usize;
 -         _5 = Len(_3);
--         _6 = Lt(_4, _5);
--         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind continue];
+-         _6 = Lt(copy _4, copy _5);
+-         assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind continue];
 +         _5 = const 8_usize;
 +         _6 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 8_usize, const 2_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _2 = _3[_4];
-+         _2 = _3[2 of 3];
+-         _2 = copy _3[_4];
++         _2 = copy _3[2 of 3];
           _1 = Add(move _2, const 0_u32);
           StorageDead(_2);
           StorageDead(_4);
diff --git a/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff
index 98bd40ab2c3..d0915432aaa 100644
--- a/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/repr_transparent.main.DataflowConstProp.diff
@@ -22,10 +22,10 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = (_1.0: i32);
+-         _4 = copy (_1.0: i32);
 +         _4 = const 0_i32;
           StorageLive(_5);
--         _5 = (_1.0: i32);
+-         _5 = copy (_1.0: i32);
 -         _3 = Add(move _4, move _5);
 +         _5 = const 0_i32;
 +         _3 = const 0_i32;
diff --git a/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff
index fbdbb3fa35c..e54a0d64b16 100644
--- a/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/self_assign.main.DataflowConstProp.diff
@@ -20,21 +20,21 @@
           StorageLive(_1);
           _1 = const 0_i32;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _1 = Add(move _2, const 1_i32);
           StorageDead(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _1 = move _3;
           StorageDead(_3);
           StorageLive(_4);
           _4 = &_1;
           StorageLive(_5);
-          _5 = _4;
+          _5 = copy _4;
           _4 = move _5;
           StorageDead(_5);
           StorageLive(_6);
-          _6 = (*_4);
+          _6 = copy (*_4);
           _1 = move _6;
           StorageDead(_6);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff b/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff
index e2468a9645d..77762ed9041 100644
--- a/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff
+++ b/tests/mir-opt/dataflow-const-prop/self_assign_add.main.DataflowConstProp.diff
@@ -11,8 +11,8 @@
       bb0: {
           StorageLive(_1);
           _1 = const 0_i32;
--         _1 = Add(_1, const 1_i32);
--         _1 = Add(_1, const 1_i32);
+-         _1 = Add(copy _1, const 1_i32);
+-         _1 = Add(copy _1, const 1_i32);
 +         _1 = const 1_i32;
 +         _1 = const 2_i32;
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff
index a5e40990751..178ebad6105 100644
--- a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-abort.diff
@@ -27,7 +27,7 @@
           _3 = &raw mut (_1.0: u8);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _3;
+          _5 = copy _3;
           _4 = std::ptr::mut_ptr::<impl *mut u8>::add(move _5, const 1_usize) -> [return: bb1, unwind unreachable];
       }
   
@@ -39,7 +39,7 @@
           StorageDead(_3);
           StorageDead(_2);
           StorageLive(_6);
-          _6 = (_1.1: u8);
+          _6 = copy (_1.1: u8);
           _0 = const ();
           StorageDead(_6);
           StorageDead(_1);
diff --git a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff
index ce2178ddbee..ce2545589f1 100644
--- a/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/sibling_ptr.main.DataflowConstProp.panic-unwind.diff
@@ -27,7 +27,7 @@
           _3 = &raw mut (_1.0: u8);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _3;
+          _5 = copy _3;
           _4 = std::ptr::mut_ptr::<impl *mut u8>::add(move _5, const 1_usize) -> [return: bb1, unwind continue];
       }
   
@@ -39,7 +39,7 @@
           StorageDead(_3);
           StorageDead(_2);
           StorageLive(_6);
-          _6 = (_1.1: u8);
+          _6 = copy (_1.1: u8);
           _0 = const ();
           StorageDead(_6);
           StorageDead(_1);
diff --git a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-abort.diff
index efba4a4646c..40632db667a 100644
--- a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-abort.diff
@@ -30,23 +30,23 @@
           StorageLive(_3);
           StorageLive(_4);
           _14 = const main::promoted[0];
-          _4 = _14;
-          _3 = _4;
+          _4 = copy _14;
+          _3 = copy _4;
           _2 = move _3 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind unreachable];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
-+         _1 = (*_2)[1 of 2];
+-         _1 = copy (*_2)[_6];
++         _1 = copy (*_2)[1 of 2];
           StorageDead(_6);
           StorageDead(_4);
           StorageDead(_2);
@@ -56,16 +56,16 @@
           StorageLive(_11);
           _11 = const 1_usize;
 -         _12 = Len((*_10));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb2, unwind unreachable];
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb2, unwind unreachable];
 +         _12 = const 3_usize;
 +         _13 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
--         _9 = (*_10)[_11];
-+         _9 = (*_10)[1 of 2];
+-         _9 = copy (*_10)[_11];
++         _9 = copy (*_10)[1 of 2];
           StorageDead(_11);
           StorageDead(_10);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-unwind.diff
index bf477d7e041..596b4ac9b1e 100644
--- a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.32bit.panic-unwind.diff
@@ -30,23 +30,23 @@
           StorageLive(_3);
           StorageLive(_4);
           _14 = const main::promoted[0];
-          _4 = _14;
-          _3 = _4;
+          _4 = copy _14;
+          _3 = copy _4;
           _2 = move _3 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
-+         _1 = (*_2)[1 of 2];
+-         _1 = copy (*_2)[_6];
++         _1 = copy (*_2)[1 of 2];
           StorageDead(_6);
           StorageDead(_4);
           StorageDead(_2);
@@ -56,16 +56,16 @@
           StorageLive(_11);
           _11 = const 1_usize;
 -         _12 = Len((*_10));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb2, unwind continue];
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb2, unwind continue];
 +         _12 = const 3_usize;
 +         _13 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb2, unwind continue];
       }
   
       bb2: {
--         _9 = (*_10)[_11];
-+         _9 = (*_10)[1 of 2];
+-         _9 = copy (*_10)[_11];
++         _9 = copy (*_10)[1 of 2];
           StorageDead(_11);
           StorageDead(_10);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-abort.diff
index efba4a4646c..40632db667a 100644
--- a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-abort.diff
@@ -30,23 +30,23 @@
           StorageLive(_3);
           StorageLive(_4);
           _14 = const main::promoted[0];
-          _4 = _14;
-          _3 = _4;
+          _4 = copy _14;
+          _3 = copy _4;
           _2 = move _3 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind unreachable];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind unreachable];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
-+         _1 = (*_2)[1 of 2];
+-         _1 = copy (*_2)[_6];
++         _1 = copy (*_2)[1 of 2];
           StorageDead(_6);
           StorageDead(_4);
           StorageDead(_2);
@@ -56,16 +56,16 @@
           StorageLive(_11);
           _11 = const 1_usize;
 -         _12 = Len((*_10));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb2, unwind unreachable];
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb2, unwind unreachable];
 +         _12 = const 3_usize;
 +         _13 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
--         _9 = (*_10)[_11];
-+         _9 = (*_10)[1 of 2];
+-         _9 = copy (*_10)[_11];
++         _9 = copy (*_10)[1 of 2];
           StorageDead(_11);
           StorageDead(_10);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-unwind.diff
index bf477d7e041..596b4ac9b1e 100644
--- a/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/slice_len.main.DataflowConstProp.64bit.panic-unwind.diff
@@ -30,23 +30,23 @@
           StorageLive(_3);
           StorageLive(_4);
           _14 = const main::promoted[0];
-          _4 = _14;
-          _3 = _4;
+          _4 = copy _14;
+          _3 = copy _4;
           _2 = move _3 as &[u32] (PointerCoercion(Unsize));
           StorageDead(_3);
           StorageLive(_6);
           _6 = const 1_usize;
 -         _7 = Len((*_2));
--         _8 = Lt(_6, _7);
--         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb1, unwind continue];
+-         _8 = Lt(copy _6, copy _7);
+-         assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb1, unwind continue];
 +         _7 = const 3_usize;
 +         _8 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _1 = (*_2)[_6];
-+         _1 = (*_2)[1 of 2];
+-         _1 = copy (*_2)[_6];
++         _1 = copy (*_2)[1 of 2];
           StorageDead(_6);
           StorageDead(_4);
           StorageDead(_2);
@@ -56,16 +56,16 @@
           StorageLive(_11);
           _11 = const 1_usize;
 -         _12 = Len((*_10));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb2, unwind continue];
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb2, unwind continue];
 +         _12 = const 3_usize;
 +         _13 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 3_usize, const 1_usize) -> [success: bb2, unwind continue];
       }
   
       bb2: {
--         _9 = (*_10)[_11];
-+         _9 = (*_10)[1 of 2];
+-         _9 = copy (*_10)[_11];
++         _9 = copy (*_10)[1 of 2];
           StorageDead(_11);
           StorageDead(_10);
           _0 = const ();
diff --git a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff
index 5e89382ea8f..3ea49265cee 100644
--- a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.32bit.diff
@@ -83,7 +83,7 @@
 +         _1 = const S(1_i32);
           StorageLive(_2);
           StorageLive(_3);
--         _3 = (_1.0: i32);
+-         _3 = copy (_1.0: i32);
 -         _2 = Add(move _3, const 2_i32);
 +         _3 = const 1_i32;
 +         _2 = const 3_i32;
@@ -91,10 +91,10 @@
           (_1.0: i32) = const 3_i32;
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
 +         _5 = const 3_i32;
           StorageLive(_6);
--         _6 = (_1.0: i32);
+-         _6 = copy (_1.0: i32);
 -         _4 = Add(move _5, move _6);
 +         _6 = const 3_i32;
 +         _4 = const 6_i32;
@@ -103,35 +103,35 @@
           StorageLive(_10);
           _10 = const main::SMALL_VAL;
           StorageLive(_7);
--         _7 = (_10.0: f32);
+-         _7 = copy (_10.0: f32);
 +         _7 = const 4f32;
           StorageLive(_8);
-          _8 = (_10.1: std::option::Option<S>);
+          _8 = copy (_10.1: std::option::Option<S>);
           StorageLive(_9);
-          _9 = (_10.2: &[f32]);
+          _9 = copy (_10.2: &[f32]);
           StorageDead(_10);
           StorageLive(_14);
           _14 = const {ALLOC0: &&SmallStruct};
           _31 = deref_copy (*_14);
           StorageLive(_11);
           _32 = deref_copy (*_14);
--         _11 = ((*_32).0: f32);
+-         _11 = copy ((*_32).0: f32);
 +         _11 = const 9f32;
           StorageLive(_12);
           _33 = deref_copy (*_14);
-          _12 = ((*_33).1: std::option::Option<S>);
+          _12 = copy ((*_33).1: std::option::Option<S>);
           StorageLive(_13);
           _34 = deref_copy (*_14);
-          _13 = ((*_34).2: &[f32]);
+          _13 = copy ((*_34).2: &[f32]);
           StorageDead(_14);
           StorageLive(_15);
           StorageLive(_16);
--         _16 = _11;
+-         _16 = copy _11;
 +         _16 = const 9f32;
           StorageLive(_17);
-          _17 = _12;
+          _17 = copy _12;
           StorageLive(_18);
-          _18 = _13;
+          _18 = copy _13;
 -         _15 = SmallStruct(move _16, move _17, move _18);
 +         _15 = SmallStruct(const 9f32, move _17, move _18);
           StorageDead(_18);
@@ -140,35 +140,35 @@
           StorageLive(_22);
           _22 = const main::BIG_VAL;
           StorageLive(_19);
--         _19 = (_22.0: f32);
+-         _19 = copy (_22.0: f32);
 +         _19 = const 25f32;
           StorageLive(_20);
-          _20 = (_22.1: std::option::Option<S>);
+          _20 = copy (_22.1: std::option::Option<S>);
           StorageLive(_21);
-          _21 = (_22.2: &[f32]);
+          _21 = copy (_22.2: &[f32]);
           StorageDead(_22);
           StorageLive(_26);
           _26 = const {ALLOC1: &&BigStruct};
           _35 = deref_copy (*_26);
           StorageLive(_23);
           _36 = deref_copy (*_26);
--         _23 = ((*_36).0: f32);
+-         _23 = copy ((*_36).0: f32);
 +         _23 = const 82f32;
           StorageLive(_24);
           _37 = deref_copy (*_26);
-          _24 = ((*_37).1: std::option::Option<S>);
+          _24 = copy ((*_37).1: std::option::Option<S>);
           StorageLive(_25);
           _38 = deref_copy (*_26);
-          _25 = ((*_38).2: &[f32]);
+          _25 = copy ((*_38).2: &[f32]);
           StorageDead(_26);
           StorageLive(_27);
           StorageLive(_28);
--         _28 = _23;
+-         _28 = copy _23;
 +         _28 = const 82f32;
           StorageLive(_29);
-          _29 = _24;
+          _29 = copy _24;
           StorageLive(_30);
-          _30 = _25;
+          _30 = copy _25;
 -         _27 = BigStruct(move _28, move _29, move _30);
 +         _27 = BigStruct(const 82f32, move _29, move _30);
           StorageDead(_30);
diff --git a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff
index a707d7e5e76..78a0944975c 100644
--- a/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/struct.main.DataflowConstProp.64bit.diff
@@ -83,7 +83,7 @@
 +         _1 = const S(1_i32);
           StorageLive(_2);
           StorageLive(_3);
--         _3 = (_1.0: i32);
+-         _3 = copy (_1.0: i32);
 -         _2 = Add(move _3, const 2_i32);
 +         _3 = const 1_i32;
 +         _2 = const 3_i32;
@@ -91,10 +91,10 @@
           (_1.0: i32) = const 3_i32;
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
 +         _5 = const 3_i32;
           StorageLive(_6);
--         _6 = (_1.0: i32);
+-         _6 = copy (_1.0: i32);
 -         _4 = Add(move _5, move _6);
 +         _6 = const 3_i32;
 +         _4 = const 6_i32;
@@ -103,35 +103,35 @@
           StorageLive(_10);
           _10 = const main::SMALL_VAL;
           StorageLive(_7);
--         _7 = (_10.0: f32);
+-         _7 = copy (_10.0: f32);
 +         _7 = const 4f32;
           StorageLive(_8);
-          _8 = (_10.1: std::option::Option<S>);
+          _8 = copy (_10.1: std::option::Option<S>);
           StorageLive(_9);
-          _9 = (_10.2: &[f32]);
+          _9 = copy (_10.2: &[f32]);
           StorageDead(_10);
           StorageLive(_14);
           _14 = const {ALLOC0: &&SmallStruct};
           _31 = deref_copy (*_14);
           StorageLive(_11);
           _32 = deref_copy (*_14);
--         _11 = ((*_32).0: f32);
+-         _11 = copy ((*_32).0: f32);
 +         _11 = const 9f32;
           StorageLive(_12);
           _33 = deref_copy (*_14);
-          _12 = ((*_33).1: std::option::Option<S>);
+          _12 = copy ((*_33).1: std::option::Option<S>);
           StorageLive(_13);
           _34 = deref_copy (*_14);
-          _13 = ((*_34).2: &[f32]);
+          _13 = copy ((*_34).2: &[f32]);
           StorageDead(_14);
           StorageLive(_15);
           StorageLive(_16);
--         _16 = _11;
+-         _16 = copy _11;
 +         _16 = const 9f32;
           StorageLive(_17);
-          _17 = _12;
+          _17 = copy _12;
           StorageLive(_18);
-          _18 = _13;
+          _18 = copy _13;
 -         _15 = SmallStruct(move _16, move _17, move _18);
 +         _15 = SmallStruct(const 9f32, move _17, move _18);
           StorageDead(_18);
@@ -140,35 +140,35 @@
           StorageLive(_22);
           _22 = const main::BIG_VAL;
           StorageLive(_19);
--         _19 = (_22.0: f32);
+-         _19 = copy (_22.0: f32);
 +         _19 = const 25f32;
           StorageLive(_20);
-          _20 = (_22.1: std::option::Option<S>);
+          _20 = copy (_22.1: std::option::Option<S>);
           StorageLive(_21);
-          _21 = (_22.2: &[f32]);
+          _21 = copy (_22.2: &[f32]);
           StorageDead(_22);
           StorageLive(_26);
           _26 = const {ALLOC1: &&BigStruct};
           _35 = deref_copy (*_26);
           StorageLive(_23);
           _36 = deref_copy (*_26);
--         _23 = ((*_36).0: f32);
+-         _23 = copy ((*_36).0: f32);
 +         _23 = const 82f32;
           StorageLive(_24);
           _37 = deref_copy (*_26);
-          _24 = ((*_37).1: std::option::Option<S>);
+          _24 = copy ((*_37).1: std::option::Option<S>);
           StorageLive(_25);
           _38 = deref_copy (*_26);
-          _25 = ((*_38).2: &[f32]);
+          _25 = copy ((*_38).2: &[f32]);
           StorageDead(_26);
           StorageLive(_27);
           StorageLive(_28);
--         _28 = _23;
+-         _28 = copy _23;
 +         _28 = const 82f32;
           StorageLive(_29);
-          _29 = _24;
+          _29 = copy _24;
           StorageLive(_30);
-          _30 = _25;
+          _30 = copy _25;
 -         _27 = BigStruct(move _28, move _29, move _30);
 +         _27 = BigStruct(const 82f32, move _29, move _30);
           StorageDead(_30);
diff --git a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff
index c0f378cc21f..e13b2aa9f7e 100644
--- a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff
+++ b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-abort.diff
@@ -17,7 +17,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 -         _3 = Add(move _4, const 1_i32);
 +         _4 = const 1_i32;
 +         _3 = const 2_i32;
diff --git a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff
index 395620fec52..4be25fdcc38 100644
--- a/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff
+++ b/tests/mir-opt/dataflow-const-prop/terminator.main.DataflowConstProp.panic-unwind.diff
@@ -17,7 +17,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 -         _3 = Add(move _4, const 1_i32);
 +         _4 = const 1_i32;
 +         _3 = const 2_i32;
diff --git a/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.32bit.diff
index 258e2b454eb..2d67ac92209 100644
--- a/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.32bit.diff
@@ -13,7 +13,7 @@
           StorageLive(_1);
 -         _1 = const 1_usize as std::boxed::Box<Never> (Transmute);
 +         _1 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global);
-          _2 = (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
+          _2 = copy (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
           unreachable;
       }
   }
diff --git a/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.64bit.diff
index 258e2b454eb..2d67ac92209 100644
--- a/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/transmute.unreachable_box.DataflowConstProp.64bit.diff
@@ -13,7 +13,7 @@
           StorageLive(_1);
 -         _1 = const 1_usize as std::boxed::Box<Never> (Transmute);
 +         _1 = const Box::<Never>(Unique::<Never> {{ pointer: NonNull::<Never> {{ pointer: {0x1 as *const Never} }}, _marker: PhantomData::<Never> }}, std::alloc::Global);
-          _2 = (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
+          _2 = copy (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
           unreachable;
       }
   }
diff --git a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff
index e4031b65caa..f7846823e19 100644
--- a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.32bit.diff
@@ -37,10 +37,10 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = (_1.0: i32);
+-         _4 = copy (_1.0: i32);
 +         _4 = const 1_i32;
           StorageLive(_5);
--         _5 = (_1.1: i32);
+-         _5 = copy (_1.1: i32);
 -         _3 = Add(move _4, move _5);
 +         _5 = const 2_i32;
 +         _3 = const 3_i32;
@@ -54,17 +54,17 @@
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
--         _8 = (_1.0: i32);
+-         _8 = copy (_1.0: i32);
 +         _8 = const 2_i32;
           StorageLive(_9);
--         _9 = (_1.1: i32);
+-         _9 = copy (_1.1: i32);
 -         _7 = Add(move _8, move _9);
 +         _9 = const 3_i32;
 +         _7 = const 5_i32;
           StorageDead(_9);
           StorageDead(_8);
           StorageLive(_10);
--         _10 = _2;
+-         _10 = copy _2;
 -         _6 = Add(move _7, move _10);
 +         _10 = const 6_i32;
 +         _6 = const 11_i32;
@@ -72,13 +72,13 @@
           StorageDead(_7);
           StorageLive(_11);
           StorageLive(_12);
--         _12 = _2;
+-         _12 = copy _2;
 +         _12 = const 6_i32;
           StorageLive(_13);
--         _13 = _1;
+-         _13 = copy _1;
 +         _13 = const (2_i32, 3_i32);
           StorageLive(_14);
--         _14 = _6;
+-         _14 = copy _6;
 -         _11 = (move _12, move _13, move _14);
 +         _14 = const 11_i32;
 +         _11 = (const 6_i32, const (2_i32, 3_i32), const 11_i32);
diff --git a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff
index e4031b65caa..f7846823e19 100644
--- a/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff
+++ b/tests/mir-opt/dataflow-const-prop/tuple.main.DataflowConstProp.64bit.diff
@@ -37,10 +37,10 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
--         _4 = (_1.0: i32);
+-         _4 = copy (_1.0: i32);
 +         _4 = const 1_i32;
           StorageLive(_5);
--         _5 = (_1.1: i32);
+-         _5 = copy (_1.1: i32);
 -         _3 = Add(move _4, move _5);
 +         _5 = const 2_i32;
 +         _3 = const 3_i32;
@@ -54,17 +54,17 @@
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
--         _8 = (_1.0: i32);
+-         _8 = copy (_1.0: i32);
 +         _8 = const 2_i32;
           StorageLive(_9);
--         _9 = (_1.1: i32);
+-         _9 = copy (_1.1: i32);
 -         _7 = Add(move _8, move _9);
 +         _9 = const 3_i32;
 +         _7 = const 5_i32;
           StorageDead(_9);
           StorageDead(_8);
           StorageLive(_10);
--         _10 = _2;
+-         _10 = copy _2;
 -         _6 = Add(move _7, move _10);
 +         _10 = const 6_i32;
 +         _6 = const 11_i32;
@@ -72,13 +72,13 @@
           StorageDead(_7);
           StorageLive(_11);
           StorageLive(_12);
--         _12 = _2;
+-         _12 = copy _2;
 +         _12 = const 6_i32;
           StorageLive(_13);
--         _13 = _1;
+-         _13 = copy _1;
 +         _13 = const (2_i32, 3_i32);
           StorageLive(_14);
--         _14 = _6;
+-         _14 = copy _6;
 -         _11 = (move _12, move _13, move _14);
 +         _14 = const 11_i32;
 +         _11 = (const 6_i32, const (2_i32, 3_i32), const 11_i32);
diff --git a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-abort.diff b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-abort.diff
index 07fb8301b9a..80b727dd1a4 100644
--- a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-abort.diff
+++ b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-abort.diff
@@ -5,7 +5,7 @@
       let mut _0: ();
   
       bb0: {
-          _0 = use_both(const 0_i32, (_1.1: i32)) -> [return: bb1, unwind unreachable];
+          _0 = use_both(const 0_i32, copy (_1.1: i32)) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-unwind.diff b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-unwind.diff
index cac3badfa67..c7aff795bd8 100644
--- a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-unwind.diff
+++ b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_packed.DeadStoreElimination-final.panic-unwind.diff
@@ -5,7 +5,7 @@
       let mut _0: ();
   
       bb0: {
-          _0 = use_both(const 0_i32, (_1.1: i32)) -> [return: bb1, unwind continue];
+          _0 = use_both(const 0_i32, copy (_1.1: i32)) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-abort.diff b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-abort.diff
index f9bc9405d6a..a09ef3e4f34 100644
--- a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-abort.diff
+++ b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-abort.diff
@@ -10,8 +10,8 @@
   
       bb0: {
           StorageLive(_2);
--         _2 = use_both(_1, _1) -> [return: bb1, unwind unreachable];
-+         _2 = use_both(_1, move _1) -> [return: bb1, unwind unreachable];
+-         _2 = use_both(copy _1, copy _1) -> [return: bb1, unwind unreachable];
++         _2 = use_both(copy _1, move _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-unwind.diff b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-unwind.diff
index efe165422d9..09413c99fef 100644
--- a/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-unwind.diff
+++ b/tests/mir-opt/dead-store-elimination/call_arg_copy.move_simple.DeadStoreElimination-final.panic-unwind.diff
@@ -10,8 +10,8 @@
   
       bb0: {
           StorageLive(_2);
--         _2 = use_both(_1, _1) -> [return: bb1, unwind continue];
-+         _2 = use_both(_1, move _1) -> [return: bb1, unwind continue];
+-         _2 = use_both(copy _1, copy _1) -> [return: bb1, unwind continue];
++         _2 = use_both(copy _1, move _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination-initial.diff b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination-initial.diff
index 2766b6ce6a9..ff18df1efcf 100644
--- a/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination-initial.diff
+++ b/tests/mir-opt/dead-store-elimination/cycle.cycle.DeadStoreElimination-initial.diff
@@ -11,14 +11,14 @@
       }
   
       bb1: {
-          switchInt(_4) -> [1: bb2, otherwise: bb3];
+          switchInt(copy _4) -> [1: bb2, otherwise: bb3];
       }
   
       bb2: {
--         _5 = _3;
--         _3 = _2;
--         _2 = _1;
--         _1 = _5;
+-         _5 = copy _3;
+-         _3 = copy _2;
+-         _2 = copy _1;
+-         _1 = copy _5;
 +         nop;
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff b/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff
index 56d5c24ae1d..5d054e2ea16 100644
--- a/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff
+++ b/tests/mir-opt/dead-store-elimination/provenance_soundness.pointer_to_int.DeadStoreElimination-initial.diff
@@ -18,12 +18,12 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = move _3 as usize (PointerExposeProvenance);
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           _4 = move _5 as isize (PointerExposeProvenance);
           StorageDead(_5);
           _0 = const ();
diff --git a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
index efb28ba344b..60742ef0e9a 100644
--- a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
+++ b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-abort.diff
@@ -37,40 +37,40 @@
       }
   
       bb3: {
-          switchInt((*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
+          switchInt(copy (*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
       }
   
       bb4: {
-          switchInt((*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
+          switchInt(copy (*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
       }
   
       bb5: {
-          switchInt((*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
+          switchInt(copy (*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
       }
   
       bb6: {
--         switchInt((*_2)[3 of 4]) -> [47: bb13, otherwise: bb2];
-+         switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
+-         switchInt(copy (*_2)[3 of 4]) -> [47: bb13, otherwise: bb2];
++         switchInt(copy (*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
       }
   
       bb7: {
 -         _0 = const false;
 -         goto -> bb14;
-+         switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb11];
++         switchInt(copy (*_2)[0 of 3]) -> [47: bb8, otherwise: bb11];
       }
   
       bb8: {
--         switchInt((*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
-+         switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb11];
+-         switchInt(copy (*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
++         switchInt(copy (*_2)[1 of 3]) -> [47: bb9, otherwise: bb11];
       }
   
       bb9: {
--         switchInt((*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
-+         switchInt((*_2)[2 of 3]) -> [47: bb10, 33: bb10, otherwise: bb11];
+-         switchInt(copy (*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
++         switchInt(copy (*_2)[2 of 3]) -> [47: bb10, 33: bb10, otherwise: bb11];
       }
   
       bb10: {
--         switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb11, otherwise: bb7];
+-         switchInt(copy (*_2)[2 of 3]) -> [47: bb12, 33: bb11, otherwise: bb7];
 -     }
 - 
 -     bb11: {
diff --git a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
index c6e2d3a5512..7337a32f525 100644
--- a/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
+++ b/tests/mir-opt/deduplicate_blocks.is_line_doc_comment_2.DeduplicateBlocks.panic-unwind.diff
@@ -37,40 +37,40 @@
       }
   
       bb3: {
-          switchInt((*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
+          switchInt(copy (*_2)[0 of 4]) -> [47: bb4, otherwise: bb2];
       }
   
       bb4: {
-          switchInt((*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
+          switchInt(copy (*_2)[1 of 4]) -> [47: bb5, otherwise: bb2];
       }
   
       bb5: {
-          switchInt((*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
+          switchInt(copy (*_2)[2 of 4]) -> [47: bb6, otherwise: bb2];
       }
   
       bb6: {
--         switchInt((*_2)[3 of 4]) -> [47: bb13, otherwise: bb2];
-+         switchInt((*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
+-         switchInt(copy (*_2)[3 of 4]) -> [47: bb13, otherwise: bb2];
++         switchInt(copy (*_2)[3 of 4]) -> [47: bb11, otherwise: bb2];
       }
   
       bb7: {
 -         _0 = const false;
 -         goto -> bb14;
-+         switchInt((*_2)[0 of 3]) -> [47: bb8, otherwise: bb11];
++         switchInt(copy (*_2)[0 of 3]) -> [47: bb8, otherwise: bb11];
       }
   
       bb8: {
--         switchInt((*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
-+         switchInt((*_2)[1 of 3]) -> [47: bb9, otherwise: bb11];
+-         switchInt(copy (*_2)[0 of 3]) -> [47: bb9, otherwise: bb7];
++         switchInt(copy (*_2)[1 of 3]) -> [47: bb9, otherwise: bb11];
       }
   
       bb9: {
--         switchInt((*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
-+         switchInt((*_2)[2 of 3]) -> [47: bb10, 33: bb10, otherwise: bb11];
+-         switchInt(copy (*_2)[1 of 3]) -> [47: bb10, otherwise: bb7];
++         switchInt(copy (*_2)[2 of 3]) -> [47: bb10, 33: bb10, otherwise: bb11];
       }
   
       bb10: {
--         switchInt((*_2)[2 of 3]) -> [47: bb12, 33: bb11, otherwise: bb7];
+-         switchInt(copy (*_2)[2 of 3]) -> [47: bb12, 33: bb11, otherwise: bb7];
 -     }
 - 
 -     bb11: {
diff --git a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff
index 4ead50e96d8..bac62c88668 100644
--- a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff
+++ b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-abort.diff
@@ -64,11 +64,11 @@
   
       bb5: {
           StorageLive(_12);
--         _12 = (*((_7 as Some).0: &i32));
+-         _12 = copy (*((_7 as Some).0: &i32));
 +         _15 = deref_copy ((_7 as Some).0: &i32);
-+         _12 = (*_15);
++         _12 = copy (*_15);
           StorageLive(_13);
-          _13 = _12;
+          _13 = copy _12;
           _6 = std::mem::drop::<i32>(move _13) -> [return: bb7, unwind: bb8];
       }
   
diff --git a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff
index c7cf5f02e0e..55cd2e427ee 100644
--- a/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff
+++ b/tests/mir-opt/derefer_complex_case.main.Derefer.panic-unwind.diff
@@ -64,11 +64,11 @@
   
       bb5: {
           StorageLive(_12);
--         _12 = (*((_7 as Some).0: &i32));
+-         _12 = copy (*((_7 as Some).0: &i32));
 +         _15 = deref_copy ((_7 as Some).0: &i32);
-+         _12 = (*_15);
++         _12 = copy (*_15);
           StorageLive(_13);
-          _13 = _12;
+          _13 = copy _12;
           _6 = std::mem::drop::<i32>(move _13) -> [return: bb7, unwind continue];
       }
   
diff --git a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff
index f4c034517f7..012d2eb8b72 100644
--- a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff
+++ b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-abort.diff
@@ -52,7 +52,7 @@
           _5 = &_6;
           _4 = &_5;
 -         PlaceMention((*(*(*(*_4)))));
--         switchInt((*(*(*(*_4))))) -> [0: bb3, otherwise: bb4];
+-         switchInt(copy (*(*(*(*_4))))) -> [0: bb3, otherwise: bb4];
 +         _10 = deref_copy (*_4);
 +         _11 = deref_copy (*_10);
 +         _12 = deref_copy (*_11);
@@ -60,7 +60,7 @@
 +         _13 = deref_copy (*_4);
 +         _14 = deref_copy (*_13);
 +         _15 = deref_copy (*_14);
-+         switchInt((*_15)) -> [0: bb3, otherwise: bb4];
++         switchInt(copy (*_15)) -> [0: bb3, otherwise: bb4];
       }
   
       bb3: {
diff --git a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff
index e3c0c6b7dd2..43cee292335 100644
--- a/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff
+++ b/tests/mir-opt/derefer_terminator_test.main.Derefer.panic-unwind.diff
@@ -52,7 +52,7 @@
           _5 = &_6;
           _4 = &_5;
 -         PlaceMention((*(*(*(*_4)))));
--         switchInt((*(*(*(*_4))))) -> [0: bb3, otherwise: bb4];
+-         switchInt(copy (*(*(*(*_4))))) -> [0: bb3, otherwise: bb4];
 +         _10 = deref_copy (*_4);
 +         _11 = deref_copy (*_10);
 +         _12 = deref_copy (*_11);
@@ -60,7 +60,7 @@
 +         _13 = deref_copy (*_4);
 +         _14 = deref_copy (*_13);
 +         _15 = deref_copy (*_14);
-+         switchInt((*_15)) -> [0: bb3, otherwise: bb4];
++         switchInt(copy (*_15)) -> [0: bb3, otherwise: bb4];
       }
   
       bb3: {
diff --git a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff
index 10ec3aa555e..775d51ea49f 100644
--- a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-abort.diff
@@ -35,7 +35,7 @@
       }
   
       bb3: {
--         _2 = _1;
+-         _2 = copy _1;
 +         nop;
           goto -> bb6;
       }
@@ -47,14 +47,14 @@
   
       bb5: {
           StorageDead(_4);
--         _2 = _1;
+-         _2 = copy _1;
 +         nop;
           goto -> bb6;
       }
   
       bb6: {
           StorageDead(_3);
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
 -         StorageDead(_1);
 +         nop;
diff --git a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff
index 759c1cabf45..875ef8829d0 100644
--- a/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/branch.foo.DestinationPropagation.panic-unwind.diff
@@ -35,7 +35,7 @@
       }
   
       bb3: {
--         _2 = _1;
+-         _2 = copy _1;
 +         nop;
           goto -> bb6;
       }
@@ -47,14 +47,14 @@
   
       bb5: {
           StorageDead(_4);
--         _2 = _1;
+-         _2 = copy _1;
 +         nop;
           goto -> bb6;
       }
   
       bb6: {
           StorageDead(_3);
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
 -         StorageDead(_1);
 +         nop;
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff
index 1aed07f9e6a..a4908c05e2e 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-abort.diff
@@ -12,11 +12,11 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 +         nop;
-+         _0 = _1;
++         _0 = copy _1;
           _1 = const 123_i32;
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff
index 1aed07f9e6a..a4908c05e2e 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.arg_src.DestinationPropagation.panic-unwind.diff
@@ -12,11 +12,11 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 +         nop;
-+         _0 = _1;
++         _0 = copy _1;
           _1 = const 123_i32;
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff
index 641dea594e1..24f2b464e2c 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-abort.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
 -         StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = dummy(move _3) -> [return: bb1, unwind unreachable];
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff
index 8b2835c8ced..d42ac52b631 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.bar.DestinationPropagation.panic-unwind.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
 -         StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = dummy(move _3) -> [return: bb1, unwind continue];
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff
index 4cddaec01d2..f1f1714b472 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-abort.diff
@@ -8,14 +8,14 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 -         _1 = move _2;
 -         StorageDead(_2);
 +         nop;
 +         nop;
 +         nop;
 +         nop;
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff
index 4cddaec01d2..f1f1714b472 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.baz.DestinationPropagation.panic-unwind.diff
@@ -8,14 +8,14 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 -         _1 = move _2;
 -         StorageDead(_2);
 +         nop;
 +         nop;
 +         nop;
 +         nop;
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff
index b461869be31..0328fc6b745 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-abort.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
 -         StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = dummy(move _3) -> [return: bb1, unwind unreachable];
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff
index d5c2e07c6c2..30e2248db82 100644
--- a/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/copy_propagation_arg.foo.DestinationPropagation.panic-unwind.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
 -         StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 -         _2 = dummy(move _3) -> [return: bb1, unwind continue];
 +         nop;
 +         nop;
diff --git a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff
index 98b4ee866d2..5d8aaedae37 100644
--- a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-abort.diff
@@ -31,11 +31,11 @@
   
       bb1: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 -         StorageLive(_3);
--         _3 = _2;
+-         _3 = copy _2;
 -         StorageLive(_4);
--         _4 = _3;
+-         _4 = copy _3;
 -         _1 = move _4;
 -         StorageDead(_4);
 +         nop;
@@ -48,7 +48,7 @@
 +         nop;
           StorageLive(_5);
 -         StorageLive(_6);
--         _6 = _1;
+-         _6 = copy _1;
 +         nop;
 +         nop;
           _5 = std::mem::drop::<i32>(move _6) -> [return: bb2, unwind unreachable];
diff --git a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff
index 6f6e01d37b1..05c9bcc1d73 100644
--- a/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/cycle.main.DestinationPropagation.panic-unwind.diff
@@ -31,11 +31,11 @@
   
       bb1: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 -         StorageLive(_3);
--         _3 = _2;
+-         _3 = copy _2;
 -         StorageLive(_4);
--         _4 = _3;
+-         _4 = copy _3;
 -         _1 = move _4;
 -         StorageDead(_4);
 +         nop;
@@ -48,7 +48,7 @@
 +         nop;
           StorageLive(_5);
 -         StorageLive(_6);
--         _6 = _1;
+-         _6 = copy _1;
 +         nop;
 +         nop;
           _5 = std::mem::drop::<i32>(move _6) -> [return: bb2, unwind continue];
diff --git a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir
index eb160fc194a..eb4209731c6 100644
--- a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir
+++ b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn f(_1: usize) -> usize {
 
     bb0: {
         nop;
-        _3 = _1;
+        _3 = copy _1;
         _1 = const 5_usize;
         nop;
         nop;
diff --git a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir
index 9147de2ec47..fe9a7376a58 100644
--- a/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir
+++ b/tests/mir-opt/dest-prop/dead_stores_79191.f.DestinationPropagation.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn f(_1: usize) -> usize {
 
     bb0: {
         nop;
-        _3 = _1;
+        _3 = copy _1;
         _1 = const 5_usize;
         nop;
         nop;
diff --git a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir
index eb160fc194a..eb4209731c6 100644
--- a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir
+++ b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn f(_1: usize) -> usize {
 
     bb0: {
         nop;
-        _3 = _1;
+        _3 = copy _1;
         _1 = const 5_usize;
         nop;
         nop;
diff --git a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir
index 9147de2ec47..fe9a7376a58 100644
--- a/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir
+++ b/tests/mir-opt/dest-prop/dead_stores_better.f.DestinationPropagation.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn f(_1: usize) -> usize {
 
     bb0: {
         nop;
-        _3 = _1;
+        _3 = copy _1;
         _1 = const 5_usize;
         nop;
         nop;
diff --git a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff
index 4d34f43fd5c..e9fbcf20a72 100644
--- a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-abort.diff
@@ -18,7 +18,7 @@
           _2 = [const 0_u8; 1024];
           StorageLive(_3);
 -         StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 +         nop;
 +         nop;
           StorageLive(_5);
@@ -35,7 +35,7 @@
 +         nop;
           StorageDead(_6);
           StorageDead(_3);
-          _0 = _2;
+          _0 = copy _2;
           StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff
index 9c3cbef38d6..95d5fe1b930 100644
--- a/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/simple.nrvo.DestinationPropagation.panic-unwind.diff
@@ -18,7 +18,7 @@
           _2 = [const 0_u8; 1024];
           StorageLive(_3);
 -         StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 +         nop;
 +         nop;
           StorageLive(_5);
@@ -35,7 +35,7 @@
 +         nop;
           StorageDead(_6);
           StorageDead(_3);
-          _0 = _2;
+          _0 = copy _2;
           StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff
index b596e25ddfd..557320f0179 100644
--- a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff
+++ b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-abort.diff
@@ -22,7 +22,7 @@
           _1 = Un { us: const 1_u32 };
           StorageDead(_2);
           StorageLive(_3);
-          _3 = (_1.0: u32);
+          _3 = copy (_1.0: u32);
           StorageDead(_3);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff
index b596e25ddfd..557320f0179 100644
--- a/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff
+++ b/tests/mir-opt/dest-prop/union.main.DestinationPropagation.panic-unwind.diff
@@ -22,7 +22,7 @@
           _1 = Un { us: const 1_u32 };
           StorageDead(_2);
           StorageLive(_3);
-          _3 = (_1.0: u32);
+          _3 = copy (_1.0: u32);
           StorageDead(_3);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff
index 4af3ed3e1d1..51c41996678 100644
--- a/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch.opt1.EarlyOtherwiseBranch.diff
@@ -20,9 +20,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           _3 = (move _4, move _5);
           StorageDead(_5);
           StorageDead(_4);
@@ -42,9 +42,9 @@
   
       bb3: {
           StorageLive(_8);
-          _8 = (((_3.0: std::option::Option<u32>) as Some).0: u32);
+          _8 = copy (((_3.0: std::option::Option<u32>) as Some).0: u32);
           StorageLive(_9);
-          _9 = (((_3.1: std::option::Option<u32>) as Some).0: u32);
+          _9 = copy (((_3.1: std::option::Option<u32>) as Some).0: u32);
           _0 = const 0_u32;
           StorageDead(_9);
           StorageDead(_8);
diff --git a/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff
index 41ae2fd3af3..f17ebee9416 100644
--- a/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch.opt2.EarlyOtherwiseBranch.diff
@@ -21,9 +21,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           _3 = (move _4, move _5);
           StorageDead(_5);
           StorageDead(_4);
@@ -53,9 +53,9 @@
   
       bb5: {
           StorageLive(_9);
-          _9 = (((_3.0: std::option::Option<u32>) as Some).0: u32);
+          _9 = copy (((_3.0: std::option::Option<u32>) as Some).0: u32);
           StorageLive(_10);
-          _10 = (((_3.1: std::option::Option<u32>) as Some).0: u32);
+          _10 = copy (((_3.1: std::option::Option<u32>) as Some).0: u32);
           _0 = const 0_u32;
           StorageDead(_10);
           StorageDead(_9);
diff --git a/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff
index 302fd0bfded..7b94a4c2bf7 100644
--- a/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch.opt3.EarlyOtherwiseBranch.diff
@@ -35,7 +35,7 @@
 +         StorageLive(_12);
 +         _12 = discriminant((_3.1: Option2<bool>));
 +         StorageLive(_13);
-+         _13 = Ne(_9, move _12);
++         _13 = Ne(copy _9, move _12);
 +         StorageDead(_12);
 +         switchInt(move _13) -> [0: bb7, otherwise: bb1];
       }
@@ -78,9 +78,9 @@
 -     bb7: {
 +     bb4: {
           StorageLive(_10);
-          _10 = (((_3.0: Option2<u32>) as Some).0: u32);
+          _10 = copy (((_3.0: Option2<u32>) as Some).0: u32);
           StorageLive(_11);
-          _11 = (((_3.1: Option2<bool>) as Some).0: bool);
+          _11 = copy (((_3.1: Option2<bool>) as Some).0: bool);
           _0 = const 0_u32;
           StorageDead(_11);
           StorageDead(_10);
@@ -101,7 +101,7 @@
 + 
 +     bb7: {
 +         StorageDead(_13);
-+         switchInt(_9) -> [0: bb4, 1: bb3, 2: bb2, otherwise: bb6];
++         switchInt(copy _9) -> [0: bb4, 1: bb3, 2: bb2, otherwise: bb6];
       }
   }
   
diff --git a/tests/mir-opt/early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff
index eef4fb3278c..f52795baef8 100644
--- a/tests/mir-opt/early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch.opt4.EarlyOtherwiseBranch.diff
@@ -35,7 +35,7 @@
 +         StorageLive(_12);
 +         _12 = discriminant((_3.1: Option2<u32>));
 +         StorageLive(_13);
-+         _13 = Ne(_9, move _12);
++         _13 = Ne(copy _9, move _12);
 +         StorageDead(_12);
 +         switchInt(move _13) -> [0: bb7, otherwise: bb1];
       }
@@ -78,9 +78,9 @@
 -     bb7: {
 +     bb4: {
           StorageLive(_10);
-          _10 = (((_3.0: Option2<u32>) as Some).0: u32);
+          _10 = copy (((_3.0: Option2<u32>) as Some).0: u32);
           StorageLive(_11);
-          _11 = (((_3.1: Option2<u32>) as Some).0: u32);
+          _11 = copy (((_3.1: Option2<u32>) as Some).0: u32);
           _0 = const 0_u32;
           StorageDead(_11);
           StorageDead(_10);
@@ -101,7 +101,7 @@
 + 
 +     bb7: {
 +         StorageDead(_13);
-+         switchInt(_9) -> [0: bb4, 1: bb3, 2: bb2, otherwise: bb6];
++         switchInt(copy _9) -> [0: bb4, 1: bb3, 2: bb2, otherwise: bb6];
       }
   }
   
diff --git a/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff
index cb03e2697cc..98df9934af0 100644
--- a/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt1.EarlyOtherwiseBranch.diff
@@ -27,11 +27,11 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
           StorageLive(_7);
-          _7 = _3;
+          _7 = copy _3;
           _4 = (move _5, move _6, move _7);
           StorageDead(_7);
           StorageDead(_6);
@@ -72,11 +72,11 @@
   
       bb7: {
           StorageLive(_13);
-          _13 = (((_4.0: std::option::Option<u32>) as Some).0: u32);
+          _13 = copy (((_4.0: std::option::Option<u32>) as Some).0: u32);
           StorageLive(_14);
-          _14 = (((_4.1: std::option::Option<u32>) as Some).0: u32);
+          _14 = copy (((_4.1: std::option::Option<u32>) as Some).0: u32);
           StorageLive(_15);
-          _15 = (((_4.2: std::option::Option<u32>) as Some).0: u32);
+          _15 = copy (((_4.2: std::option::Option<u32>) as Some).0: u32);
           _0 = const 0_u32;
           StorageDead(_15);
           StorageDead(_14);
diff --git a/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff
index 5634df253a5..831d8cbb4d6 100644
--- a/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch_3_element_tuple.opt2.EarlyOtherwiseBranch.diff
@@ -45,7 +45,7 @@
 +         StorageLive(_18);
 +         _18 = discriminant((_4.1: Option2<u32>));
 +         StorageLive(_19);
-+         _19 = Ne(_14, move _18);
++         _19 = Ne(copy _14, move _18);
 +         StorageDead(_18);
 +         switchInt(move _19) -> [0: bb10, otherwise: bb1];
       }
@@ -109,11 +109,11 @@
 -     bb10: {
 +     bb7: {
           StorageLive(_15);
-          _15 = (((_4.0: Option2<u32>) as Some).0: u32);
+          _15 = copy (((_4.0: Option2<u32>) as Some).0: u32);
           StorageLive(_16);
-          _16 = (((_4.1: Option2<u32>) as Some).0: u32);
+          _16 = copy (((_4.1: Option2<u32>) as Some).0: u32);
           StorageLive(_17);
-          _17 = (((_4.2: Option2<u32>) as Some).0: u32);
+          _17 = copy (((_4.2: Option2<u32>) as Some).0: u32);
           _0 = const 0_u32;
           StorageDead(_17);
           StorageDead(_16);
@@ -135,7 +135,7 @@
 + 
 +     bb10: {
 +         StorageDead(_19);
-+         switchInt(_14) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb9];
++         switchInt(copy _14) -> [0: bb2, 1: bb3, 2: bb4, otherwise: bb9];
       }
   }
   
diff --git a/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
index 8179d9dd115..fec318c1ab4 100644
--- a/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch_68867.try_sum.EarlyOtherwiseBranch.diff
@@ -70,9 +70,9 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
           _4 = (move _5, move _6);
           StorageDead(_6);
           StorageDead(_5);
@@ -118,15 +118,15 @@
       bb6: {
           StorageLive(_27);
           _39 = deref_copy (_4.0: &ViewportPercentageLength);
-          _27 = (((*_39) as Vmax).0: f32);
+          _27 = copy (((*_39) as Vmax).0: f32);
           StorageLive(_28);
           _40 = deref_copy (_4.1: &ViewportPercentageLength);
-          _28 = (((*_40) as Vmax).0: f32);
+          _28 = copy (((*_40) as Vmax).0: f32);
           StorageLive(_29);
           StorageLive(_30);
-          _30 = _27;
+          _30 = copy _27;
           StorageLive(_31);
-          _31 = _28;
+          _31 = copy _28;
           _29 = Add(move _30, move _31);
           StorageDead(_31);
           StorageDead(_30);
@@ -140,15 +140,15 @@
       bb7: {
           StorageLive(_22);
           _41 = deref_copy (_4.0: &ViewportPercentageLength);
-          _22 = (((*_41) as Vmin).0: f32);
+          _22 = copy (((*_41) as Vmin).0: f32);
           StorageLive(_23);
           _42 = deref_copy (_4.1: &ViewportPercentageLength);
-          _23 = (((*_42) as Vmin).0: f32);
+          _23 = copy (((*_42) as Vmin).0: f32);
           StorageLive(_24);
           StorageLive(_25);
-          _25 = _22;
+          _25 = copy _22;
           StorageLive(_26);
-          _26 = _23;
+          _26 = copy _23;
           _24 = Add(move _25, move _26);
           StorageDead(_26);
           StorageDead(_25);
@@ -162,15 +162,15 @@
       bb8: {
           StorageLive(_17);
           _43 = deref_copy (_4.0: &ViewportPercentageLength);
-          _17 = (((*_43) as Vh).0: f32);
+          _17 = copy (((*_43) as Vh).0: f32);
           StorageLive(_18);
           _44 = deref_copy (_4.1: &ViewportPercentageLength);
-          _18 = (((*_44) as Vh).0: f32);
+          _18 = copy (((*_44) as Vh).0: f32);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _17;
+          _20 = copy _17;
           StorageLive(_21);
-          _21 = _18;
+          _21 = copy _18;
           _19 = Add(move _20, move _21);
           StorageDead(_21);
           StorageDead(_20);
@@ -184,15 +184,15 @@
       bb9: {
           StorageLive(_12);
           _45 = deref_copy (_4.0: &ViewportPercentageLength);
-          _12 = (((*_45) as Vw).0: f32);
+          _12 = copy (((*_45) as Vw).0: f32);
           StorageLive(_13);
           _46 = deref_copy (_4.1: &ViewportPercentageLength);
-          _13 = (((*_46) as Vw).0: f32);
+          _13 = copy (((*_46) as Vw).0: f32);
           StorageLive(_14);
           StorageLive(_15);
-          _15 = _12;
+          _15 = copy _12;
           StorageLive(_16);
-          _16 = _13;
+          _16 = copy _13;
           _14 = Add(move _15, move _16);
           StorageDead(_16);
           StorageDead(_15);
diff --git a/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff
index 651b1de4ddd..8ed2274a72b 100644
--- a/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch_noopt.noopt1.EarlyOtherwiseBranch.diff
@@ -29,9 +29,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           _3 = (move _4, move _5);
           StorageDead(_5);
           StorageDead(_4);
@@ -60,7 +60,7 @@
   
       bb5: {
           StorageLive(_12);
-          _12 = (((_3.1: std::option::Option<u32>) as Some).0: u32);
+          _12 = copy (((_3.1: std::option::Option<u32>) as Some).0: u32);
           _0 = const 2_u32;
           StorageDead(_12);
           goto -> bb8;
@@ -68,7 +68,7 @@
   
       bb6: {
           StorageLive(_11);
-          _11 = (((_3.0: std::option::Option<u32>) as Some).0: u32);
+          _11 = copy (((_3.0: std::option::Option<u32>) as Some).0: u32);
           _0 = const 1_u32;
           StorageDead(_11);
           goto -> bb8;
@@ -76,9 +76,9 @@
   
       bb7: {
           StorageLive(_9);
-          _9 = (((_3.0: std::option::Option<u32>) as Some).0: u32);
+          _9 = copy (((_3.0: std::option::Option<u32>) as Some).0: u32);
           StorageLive(_10);
-          _10 = (((_3.1: std::option::Option<u32>) as Some).0: u32);
+          _10 = copy (((_3.1: std::option::Option<u32>) as Some).0: u32);
           _0 = const 0_u32;
           StorageDead(_10);
           StorageDead(_9);
diff --git a/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff b/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff
index 8eab59823f4..eeb8b766b5d 100644
--- a/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff
+++ b/tests/mir-opt/early_otherwise_branch_soundness.no_deref_ptr.EarlyOtherwiseBranch.diff
@@ -34,8 +34,8 @@
   
       bb4: {
           StorageLive(_5);
-          _5 = (((*_2) as Some).0: i32);
-          _0 = _5;
+          _5 = copy (((*_2) as Some).0: i32);
+          _0 = copy _5;
           StorageDead(_5);
           goto -> bb5;
       }
diff --git a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff
index 085c55caaa0..727efe4b0d9 100644
--- a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff
+++ b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.32bit.diff
@@ -38,28 +38,28 @@
 +         StorageLive(_4);
 +         _4 = const [2_usize, 8197_usize];
 +         _5 = discriminant(_2);
-+         _6 = _5 as usize (IntToInt);
-+         _7 = _4[_6];
++         _6 = copy _5 as usize (IntToInt);
++         _7 = copy _4[_6];
 +         _8 = &raw mut _1;
-+         _9 = _8 as *mut u8 (PtrToPtr);
++         _9 = copy _8 as *mut u8 (PtrToPtr);
 +         _10 = &raw const _2;
-+         _11 = _10 as *const u8 (PtrToPtr);
++         _11 = copy _10 as *const u8 (PtrToPtr);
 +         Deinit(_8);
-+         copy_nonoverlapping(dst = _9, src = _11, count = _7);
++         copy_nonoverlapping(dst = copy _9, src = copy _11, count = copy _7);
 +         StorageDead(_4);
           StorageDead(_2);
 -         _0 = move _1;
 +         StorageLive(_12);
 +         _12 = const [2_usize, 8197_usize];
 +         _13 = discriminant(_1);
-+         _14 = _13 as usize (IntToInt);
-+         _15 = _12[_14];
++         _14 = copy _13 as usize (IntToInt);
++         _15 = copy _12[_14];
 +         _16 = &raw mut _0;
-+         _17 = _16 as *mut u8 (PtrToPtr);
++         _17 = copy _16 as *mut u8 (PtrToPtr);
 +         _18 = &raw const _1;
-+         _19 = _18 as *const u8 (PtrToPtr);
++         _19 = copy _18 as *const u8 (PtrToPtr);
 +         Deinit(_16);
-+         copy_nonoverlapping(dst = _17, src = _19, count = _15);
++         copy_nonoverlapping(dst = copy _17, src = copy _19, count = copy _15);
 +         StorageDead(_12);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff
index 798b7c10fe8..8d0cd97f786 100644
--- a/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff
+++ b/tests/mir-opt/enum_opt.cand.EnumSizeOpt.64bit.diff
@@ -38,28 +38,28 @@
 +         StorageLive(_4);
 +         _4 = const [2_usize, 8197_usize];
 +         _5 = discriminant(_2);
-+         _6 = _5 as usize (IntToInt);
-+         _7 = _4[_6];
++         _6 = copy _5 as usize (IntToInt);
++         _7 = copy _4[_6];
 +         _8 = &raw mut _1;
-+         _9 = _8 as *mut u8 (PtrToPtr);
++         _9 = copy _8 as *mut u8 (PtrToPtr);
 +         _10 = &raw const _2;
-+         _11 = _10 as *const u8 (PtrToPtr);
++         _11 = copy _10 as *const u8 (PtrToPtr);
 +         Deinit(_8);
-+         copy_nonoverlapping(dst = _9, src = _11, count = _7);
++         copy_nonoverlapping(dst = copy _9, src = copy _11, count = copy _7);
 +         StorageDead(_4);
           StorageDead(_2);
 -         _0 = move _1;
 +         StorageLive(_12);
 +         _12 = const [2_usize, 8197_usize];
 +         _13 = discriminant(_1);
-+         _14 = _13 as usize (IntToInt);
-+         _15 = _12[_14];
++         _14 = copy _13 as usize (IntToInt);
++         _15 = copy _12[_14];
 +         _16 = &raw mut _0;
-+         _17 = _16 as *mut u8 (PtrToPtr);
++         _17 = copy _16 as *mut u8 (PtrToPtr);
 +         _18 = &raw const _1;
-+         _19 = _18 as *const u8 (PtrToPtr);
++         _19 = copy _18 as *const u8 (PtrToPtr);
 +         Deinit(_16);
-+         copy_nonoverlapping(dst = _17, src = _19, count = _15);
++         copy_nonoverlapping(dst = copy _17, src = copy _19, count = copy _15);
 +         StorageDead(_12);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff
index a04829af4b5..6d1e2a72fdb 100644
--- a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff
+++ b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.32bit.diff
@@ -38,28 +38,28 @@
 +         StorageLive(_4);
 +         _4 = const [8197_usize, 1_usize];
 +         _5 = discriminant(_2);
-+         _6 = _5 as usize (IntToInt);
-+         _7 = _4[_6];
++         _6 = copy _5 as usize (IntToInt);
++         _7 = copy _4[_6];
 +         _8 = &raw mut _1;
-+         _9 = _8 as *mut u8 (PtrToPtr);
++         _9 = copy _8 as *mut u8 (PtrToPtr);
 +         _10 = &raw const _2;
-+         _11 = _10 as *const u8 (PtrToPtr);
++         _11 = copy _10 as *const u8 (PtrToPtr);
 +         Deinit(_8);
-+         copy_nonoverlapping(dst = _9, src = _11, count = _7);
++         copy_nonoverlapping(dst = copy _9, src = copy _11, count = copy _7);
 +         StorageDead(_4);
           StorageDead(_2);
 -         _0 = move _1;
 +         StorageLive(_12);
 +         _12 = const [8197_usize, 1_usize];
 +         _13 = discriminant(_1);
-+         _14 = _13 as usize (IntToInt);
-+         _15 = _12[_14];
++         _14 = copy _13 as usize (IntToInt);
++         _15 = copy _12[_14];
 +         _16 = &raw mut _0;
-+         _17 = _16 as *mut u8 (PtrToPtr);
++         _17 = copy _16 as *mut u8 (PtrToPtr);
 +         _18 = &raw const _1;
-+         _19 = _18 as *const u8 (PtrToPtr);
++         _19 = copy _18 as *const u8 (PtrToPtr);
 +         Deinit(_16);
-+         copy_nonoverlapping(dst = _17, src = _19, count = _15);
++         copy_nonoverlapping(dst = copy _17, src = copy _19, count = copy _15);
 +         StorageDead(_12);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff
index f5521a1e22a..4b1406d0d62 100644
--- a/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff
+++ b/tests/mir-opt/enum_opt.unin.EnumSizeOpt.64bit.diff
@@ -38,28 +38,28 @@
 +         StorageLive(_4);
 +         _4 = const [8197_usize, 1_usize];
 +         _5 = discriminant(_2);
-+         _6 = _5 as usize (IntToInt);
-+         _7 = _4[_6];
++         _6 = copy _5 as usize (IntToInt);
++         _7 = copy _4[_6];
 +         _8 = &raw mut _1;
-+         _9 = _8 as *mut u8 (PtrToPtr);
++         _9 = copy _8 as *mut u8 (PtrToPtr);
 +         _10 = &raw const _2;
-+         _11 = _10 as *const u8 (PtrToPtr);
++         _11 = copy _10 as *const u8 (PtrToPtr);
 +         Deinit(_8);
-+         copy_nonoverlapping(dst = _9, src = _11, count = _7);
++         copy_nonoverlapping(dst = copy _9, src = copy _11, count = copy _7);
 +         StorageDead(_4);
           StorageDead(_2);
 -         _0 = move _1;
 +         StorageLive(_12);
 +         _12 = const [8197_usize, 1_usize];
 +         _13 = discriminant(_1);
-+         _14 = _13 as usize (IntToInt);
-+         _15 = _12[_14];
++         _14 = copy _13 as usize (IntToInt);
++         _15 = copy _12[_14];
 +         _16 = &raw mut _0;
-+         _17 = _16 as *mut u8 (PtrToPtr);
++         _17 = copy _16 as *mut u8 (PtrToPtr);
 +         _18 = &raw const _1;
-+         _19 = _18 as *const u8 (PtrToPtr);
++         _19 = copy _18 as *const u8 (PtrToPtr);
 +         Deinit(_16);
-+         copy_nonoverlapping(dst = _17, src = _19, count = _15);
++         copy_nonoverlapping(dst = copy _17, src = copy _19, count = copy _15);
 +         StorageDead(_12);
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-abort.diff b/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-abort.diff
index 8a701641ff9..ed72ca72629 100644
--- a/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-abort.diff
+++ b/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-abort.diff
@@ -42,13 +42,13 @@
           StorageLive(_4);
           StorageLive(_20);
           StorageLive(_21);
-          _21 = ((*_1).0: u32);
+          _21 = copy ((*_1).0: u32);
           _20 = BitAnd(move _21, const 1_u32);
           StorageDead(_21);
           _4 = Ne(move _20, const 0_u32);
           StorageDead(_20);
           StorageLive(_5);
-          switchInt(_4) -> [0: bb2, otherwise: bb1];
+          switchInt(copy _4) -> [0: bb2, otherwise: bb1];
       }
   
       bb1: {
@@ -65,7 +65,7 @@
   
       bb3: {
           StorageLive(_6);
-          _6 = ((*_1).4: std::option::Option<usize>);
+          _6 = copy ((*_1).4: std::option::Option<usize>);
           _7 = discriminant(_6);
           switchInt(move _7) -> [1: bb4, 0: bb6, otherwise: bb9];
       }
@@ -73,26 +73,26 @@
       bb4: {
 -         StorageLive(_8);
 +         nop;
-          _8 = ((_6 as Some).0: usize);
+          _8 = copy ((_6 as Some).0: usize);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
           StorageLive(_10);
-          _10 = _2;
+          _10 = copy _2;
           StorageLive(_11);
-          _11 = _5;
+          _11 = copy _5;
           StorageLive(_12);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _8;
+          _14 = copy _8;
 -         _13 = move _14 as u32 (IntToInt);
-+         _13 = _8 as u32 (IntToInt);
++         _13 = copy _8 as u32 (IntToInt);
           StorageDead(_14);
           _12 = Add(move _13, const 1_u32);
           StorageDead(_13);
           StorageLive(_15);
-          _15 = _3;
+          _15 = copy _3;
 -         _0 = float_to_exponential_common_exact::<T>(move _9, move _10, move _11, move _12, move _15) -> [return: bb5, unwind unreachable];
-+         _0 = float_to_exponential_common_exact::<T>(_1, _2, move _11, move _12, _3) -> [return: bb5, unwind unreachable];
++         _0 = float_to_exponential_common_exact::<T>(copy _1, copy _2, move _11, move _12, copy _3) -> [return: bb5, unwind unreachable];
       }
   
       bb5: {
@@ -108,15 +108,15 @@
   
       bb6: {
           StorageLive(_16);
-          _16 = _1;
+          _16 = copy _1;
           StorageLive(_17);
-          _17 = _2;
+          _17 = copy _2;
           StorageLive(_18);
-          _18 = _5;
+          _18 = copy _5;
           StorageLive(_19);
-          _19 = _3;
+          _19 = copy _3;
 -         _0 = float_to_exponential_common_shortest::<T>(move _16, move _17, move _18, move _19) -> [return: bb7, unwind unreachable];
-+         _0 = float_to_exponential_common_shortest::<T>(_1, _2, move _18, _3) -> [return: bb7, unwind unreachable];
++         _0 = float_to_exponential_common_shortest::<T>(copy _1, copy _2, move _18, copy _3) -> [return: bb7, unwind unreachable];
       }
   
       bb7: {
diff --git a/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-unwind.diff b/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-unwind.diff
index 5e65700ee4a..42d99883749 100644
--- a/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-unwind.diff
+++ b/tests/mir-opt/funky_arms.float_to_exponential_common.GVN.panic-unwind.diff
@@ -42,13 +42,13 @@
           StorageLive(_4);
           StorageLive(_20);
           StorageLive(_21);
-          _21 = ((*_1).0: u32);
+          _21 = copy ((*_1).0: u32);
           _20 = BitAnd(move _21, const 1_u32);
           StorageDead(_21);
           _4 = Ne(move _20, const 0_u32);
           StorageDead(_20);
           StorageLive(_5);
-          switchInt(_4) -> [0: bb2, otherwise: bb1];
+          switchInt(copy _4) -> [0: bb2, otherwise: bb1];
       }
   
       bb1: {
@@ -65,7 +65,7 @@
   
       bb3: {
           StorageLive(_6);
-          _6 = ((*_1).4: std::option::Option<usize>);
+          _6 = copy ((*_1).4: std::option::Option<usize>);
           _7 = discriminant(_6);
           switchInt(move _7) -> [1: bb4, 0: bb6, otherwise: bb9];
       }
@@ -73,26 +73,26 @@
       bb4: {
 -         StorageLive(_8);
 +         nop;
-          _8 = ((_6 as Some).0: usize);
+          _8 = copy ((_6 as Some).0: usize);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
           StorageLive(_10);
-          _10 = _2;
+          _10 = copy _2;
           StorageLive(_11);
-          _11 = _5;
+          _11 = copy _5;
           StorageLive(_12);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _8;
+          _14 = copy _8;
 -         _13 = move _14 as u32 (IntToInt);
-+         _13 = _8 as u32 (IntToInt);
++         _13 = copy _8 as u32 (IntToInt);
           StorageDead(_14);
           _12 = Add(move _13, const 1_u32);
           StorageDead(_13);
           StorageLive(_15);
-          _15 = _3;
+          _15 = copy _3;
 -         _0 = float_to_exponential_common_exact::<T>(move _9, move _10, move _11, move _12, move _15) -> [return: bb5, unwind continue];
-+         _0 = float_to_exponential_common_exact::<T>(_1, _2, move _11, move _12, _3) -> [return: bb5, unwind continue];
++         _0 = float_to_exponential_common_exact::<T>(copy _1, copy _2, move _11, move _12, copy _3) -> [return: bb5, unwind continue];
       }
   
       bb5: {
@@ -108,15 +108,15 @@
   
       bb6: {
           StorageLive(_16);
-          _16 = _1;
+          _16 = copy _1;
           StorageLive(_17);
-          _17 = _2;
+          _17 = copy _2;
           StorageLive(_18);
-          _18 = _5;
+          _18 = copy _5;
           StorageLive(_19);
-          _19 = _3;
+          _19 = copy _3;
 -         _0 = float_to_exponential_common_shortest::<T>(move _16, move _17, move _18, move _19) -> [return: bb7, unwind continue];
-+         _0 = float_to_exponential_common_shortest::<T>(_1, _2, move _18, _3) -> [return: bb7, unwind continue];
++         _0 = float_to_exponential_common_shortest::<T>(copy _1, copy _2, move _18, copy _3) -> [return: bb7, unwind continue];
       }
   
       bb7: {
diff --git a/tests/mir-opt/gvn.arithmetic.GVN.panic-abort.diff b/tests/mir-opt/gvn.arithmetic.GVN.panic-abort.diff
index cb87d902015..f980645b1d0 100644
--- a/tests/mir-opt/gvn.arithmetic.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.arithmetic.GVN.panic-abort.diff
@@ -82,12 +82,12 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = Add(move _4, const 0_u64);
-+         _3 = _1;
++         _3 = copy _1;
           StorageDead(_4);
 -         _2 = opaque::<u64>(move _3) -> [return: bb1, unwind unreachable];
-+         _2 = opaque::<u64>(_1) -> [return: bb1, unwind unreachable];
++         _2 = opaque::<u64>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
@@ -96,12 +96,12 @@
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
 -         _6 = Sub(move _7, const 0_u64);
-+         _6 = _1;
++         _6 = copy _1;
           StorageDead(_7);
 -         _5 = opaque::<u64>(move _6) -> [return: bb2, unwind unreachable];
-+         _5 = opaque::<u64>(_1) -> [return: bb2, unwind unreachable];
++         _5 = opaque::<u64>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -111,9 +111,9 @@
 -         StorageLive(_9);
 +         nop;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _1;
+          _11 = copy _1;
 -         _9 = Sub(move _10, move _11);
 +         _9 = const 0_u64;
           StorageDead(_11);
@@ -129,7 +129,7 @@
           StorageLive(_12);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
 -         _13 = Mul(move _14, const 0_u64);
 +         _13 = const 0_u64;
           StorageDead(_14);
@@ -143,12 +143,12 @@
           StorageLive(_15);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
+          _17 = copy _1;
 -         _16 = Mul(move _17, const 1_u64);
-+         _16 = _1;
++         _16 = copy _1;
           StorageDead(_17);
 -         _15 = opaque::<u64>(move _16) -> [return: bb5, unwind unreachable];
-+         _15 = opaque::<u64>(_1) -> [return: bb5, unwind unreachable];
++         _15 = opaque::<u64>(copy _1) -> [return: bb5, unwind unreachable];
       }
   
       bb5: {
@@ -157,16 +157,16 @@
           StorageLive(_18);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _1;
+          _20 = copy _1;
 -         _21 = Eq(const 0_u64, const 0_u64);
--         assert(!move _21, "attempt to divide `{}` by zero", _20) -> [success: bb6, unwind unreachable];
+-         assert(!move _21, "attempt to divide `{}` by zero", copy _20) -> [success: bb6, unwind unreachable];
 +         _21 = const true;
-+         assert(!const true, "attempt to divide `{}` by zero", _1) -> [success: bb6, unwind unreachable];
++         assert(!const true, "attempt to divide `{}` by zero", copy _1) -> [success: bb6, unwind unreachable];
       }
   
       bb6: {
 -         _19 = Div(move _20, const 0_u64);
-+         _19 = Div(_1, const 0_u64);
++         _19 = Div(copy _1, const 0_u64);
           StorageDead(_20);
           _18 = opaque::<u64>(move _19) -> [return: bb7, unwind unreachable];
       }
@@ -177,19 +177,19 @@
           StorageLive(_22);
           StorageLive(_23);
           StorageLive(_24);
-          _24 = _1;
+          _24 = copy _1;
 -         _25 = Eq(const 1_u64, const 0_u64);
--         assert(!move _25, "attempt to divide `{}` by zero", _24) -> [success: bb8, unwind unreachable];
+-         assert(!move _25, "attempt to divide `{}` by zero", copy _24) -> [success: bb8, unwind unreachable];
 +         _25 = const false;
-+         assert(!const false, "attempt to divide `{}` by zero", _1) -> [success: bb8, unwind unreachable];
++         assert(!const false, "attempt to divide `{}` by zero", copy _1) -> [success: bb8, unwind unreachable];
       }
   
       bb8: {
 -         _23 = Div(move _24, const 1_u64);
-+         _23 = _1;
++         _23 = copy _1;
           StorageDead(_24);
 -         _22 = opaque::<u64>(move _23) -> [return: bb9, unwind unreachable];
-+         _22 = opaque::<u64>(_1) -> [return: bb9, unwind unreachable];
++         _22 = opaque::<u64>(copy _1) -> [return: bb9, unwind unreachable];
       }
   
       bb9: {
@@ -198,11 +198,11 @@
           StorageLive(_26);
           StorageLive(_27);
           StorageLive(_28);
-          _28 = _1;
--         _29 = Eq(_28, const 0_u64);
+          _28 = copy _1;
+-         _29 = Eq(copy _28, const 0_u64);
 -         assert(!move _29, "attempt to divide `{}` by zero", const 0_u64) -> [success: bb10, unwind unreachable];
-+         _29 = Eq(_1, const 0_u64);
-+         assert(!_29, "attempt to divide `{}` by zero", const 0_u64) -> [success: bb10, unwind unreachable];
++         _29 = Eq(copy _1, const 0_u64);
++         assert(!copy _29, "attempt to divide `{}` by zero", const 0_u64) -> [success: bb10, unwind unreachable];
       }
   
       bb10: {
@@ -219,16 +219,16 @@
           StorageLive(_30);
           StorageLive(_31);
           StorageLive(_32);
-          _32 = _1;
--         _33 = Eq(_32, const 0_u64);
+          _32 = copy _1;
+-         _33 = Eq(copy _32, const 0_u64);
 -         assert(!move _33, "attempt to divide `{}` by zero", const 1_u64) -> [success: bb12, unwind unreachable];
-+         _33 = _29;
-+         assert(!_29, "attempt to divide `{}` by zero", const 1_u64) -> [success: bb12, unwind unreachable];
++         _33 = copy _29;
++         assert(!copy _29, "attempt to divide `{}` by zero", const 1_u64) -> [success: bb12, unwind unreachable];
       }
   
       bb12: {
 -         _31 = Div(const 1_u64, move _32);
-+         _31 = Div(const 1_u64, _1);
++         _31 = Div(const 1_u64, copy _1);
           StorageDead(_32);
           _30 = opaque::<u64>(move _31) -> [return: bb13, unwind unreachable];
       }
@@ -239,16 +239,16 @@
           StorageLive(_34);
           StorageLive(_35);
           StorageLive(_36);
-          _36 = _1;
+          _36 = copy _1;
 -         _37 = Eq(const 0_u64, const 0_u64);
--         assert(!move _37, "attempt to calculate the remainder of `{}` with a divisor of zero", _36) -> [success: bb14, unwind unreachable];
+-         assert(!move _37, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _36) -> [success: bb14, unwind unreachable];
 +         _37 = const true;
-+         assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb14, unwind unreachable];
++         assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb14, unwind unreachable];
       }
   
       bb14: {
 -         _35 = Rem(move _36, const 0_u64);
-+         _35 = Rem(_1, const 0_u64);
++         _35 = Rem(copy _1, const 0_u64);
           StorageDead(_36);
           _34 = opaque::<u64>(move _35) -> [return: bb15, unwind unreachable];
       }
@@ -259,11 +259,11 @@
           StorageLive(_38);
           StorageLive(_39);
           StorageLive(_40);
-          _40 = _1;
+          _40 = copy _1;
 -         _41 = Eq(const 1_u64, const 0_u64);
--         assert(!move _41, "attempt to calculate the remainder of `{}` with a divisor of zero", _40) -> [success: bb16, unwind unreachable];
+-         assert(!move _41, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _40) -> [success: bb16, unwind unreachable];
 +         _41 = const false;
-+         assert(!const false, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb16, unwind unreachable];
++         assert(!const false, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb16, unwind unreachable];
       }
   
       bb16: {
@@ -280,11 +280,11 @@
           StorageLive(_42);
           StorageLive(_43);
           StorageLive(_44);
-          _44 = _1;
--         _45 = Eq(_44, const 0_u64);
+          _44 = copy _1;
+-         _45 = Eq(copy _44, const 0_u64);
 -         assert(!move _45, "attempt to calculate the remainder of `{}` with a divisor of zero", const 0_u64) -> [success: bb18, unwind unreachable];
-+         _45 = _29;
-+         assert(!_29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 0_u64) -> [success: bb18, unwind unreachable];
++         _45 = copy _29;
++         assert(!copy _29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 0_u64) -> [success: bb18, unwind unreachable];
       }
   
       bb18: {
@@ -301,16 +301,16 @@
           StorageLive(_46);
           StorageLive(_47);
           StorageLive(_48);
-          _48 = _1;
--         _49 = Eq(_48, const 0_u64);
+          _48 = copy _1;
+-         _49 = Eq(copy _48, const 0_u64);
 -         assert(!move _49, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_u64) -> [success: bb20, unwind unreachable];
-+         _49 = _29;
-+         assert(!_29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_u64) -> [success: bb20, unwind unreachable];
++         _49 = copy _29;
++         assert(!copy _29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_u64) -> [success: bb20, unwind unreachable];
       }
   
       bb20: {
 -         _47 = Rem(const 1_u64, move _48);
-+         _47 = Rem(const 1_u64, _1);
++         _47 = Rem(const 1_u64, copy _1);
           StorageDead(_48);
           _46 = opaque::<u64>(move _47) -> [return: bb21, unwind unreachable];
       }
@@ -321,7 +321,7 @@
           StorageLive(_50);
           StorageLive(_51);
           StorageLive(_52);
-          _52 = _1;
+          _52 = copy _1;
 -         _51 = BitAnd(move _52, const 0_u64);
 +         _51 = const 0_u64;
           StorageDead(_52);
@@ -335,12 +335,12 @@
           StorageLive(_53);
           StorageLive(_54);
           StorageLive(_55);
-          _55 = _1;
+          _55 = copy _1;
 -         _54 = BitAnd(move _55, const core::num::<impl u64>::MAX);
-+         _54 = _1;
++         _54 = copy _1;
           StorageDead(_55);
 -         _53 = opaque::<u64>(move _54) -> [return: bb23, unwind unreachable];
-+         _53 = opaque::<u64>(_1) -> [return: bb23, unwind unreachable];
++         _53 = opaque::<u64>(copy _1) -> [return: bb23, unwind unreachable];
       }
   
       bb23: {
@@ -349,12 +349,12 @@
           StorageLive(_56);
           StorageLive(_57);
           StorageLive(_58);
-          _58 = _1;
+          _58 = copy _1;
 -         _57 = BitOr(move _58, const 0_u64);
-+         _57 = _1;
++         _57 = copy _1;
           StorageDead(_58);
 -         _56 = opaque::<u64>(move _57) -> [return: bb24, unwind unreachable];
-+         _56 = opaque::<u64>(_1) -> [return: bb24, unwind unreachable];
++         _56 = opaque::<u64>(copy _1) -> [return: bb24, unwind unreachable];
       }
   
       bb24: {
@@ -363,7 +363,7 @@
           StorageLive(_59);
           StorageLive(_60);
           StorageLive(_61);
-          _61 = _1;
+          _61 = copy _1;
 -         _60 = BitOr(move _61, const core::num::<impl u64>::MAX);
 +         _60 = const u64::MAX;
           StorageDead(_61);
@@ -377,12 +377,12 @@
           StorageLive(_62);
           StorageLive(_63);
           StorageLive(_64);
-          _64 = _1;
+          _64 = copy _1;
 -         _63 = BitXor(move _64, const 0_u64);
-+         _63 = _1;
++         _63 = copy _1;
           StorageDead(_64);
 -         _62 = opaque::<u64>(move _63) -> [return: bb26, unwind unreachable];
-+         _62 = opaque::<u64>(_1) -> [return: bb26, unwind unreachable];
++         _62 = opaque::<u64>(copy _1) -> [return: bb26, unwind unreachable];
       }
   
       bb26: {
@@ -391,9 +391,9 @@
           StorageLive(_65);
           StorageLive(_66);
           StorageLive(_67);
-          _67 = _1;
+          _67 = copy _1;
           StorageLive(_68);
-          _68 = _1;
+          _68 = copy _1;
 -         _66 = BitXor(move _67, move _68);
 +         _66 = const 0_u64;
           StorageDead(_68);
@@ -408,12 +408,12 @@
           StorageLive(_69);
           StorageLive(_70);
           StorageLive(_71);
-          _71 = _1;
+          _71 = copy _1;
 -         _70 = Shr(move _71, const 0_i32);
-+         _70 = _1;
++         _70 = copy _1;
           StorageDead(_71);
 -         _69 = opaque::<u64>(move _70) -> [return: bb28, unwind unreachable];
-+         _69 = opaque::<u64>(_1) -> [return: bb28, unwind unreachable];
++         _69 = opaque::<u64>(copy _1) -> [return: bb28, unwind unreachable];
       }
   
       bb28: {
@@ -422,12 +422,12 @@
           StorageLive(_72);
           StorageLive(_73);
           StorageLive(_74);
-          _74 = _1;
+          _74 = copy _1;
 -         _73 = Shl(move _74, const 0_i32);
-+         _73 = _1;
++         _73 = copy _1;
           StorageDead(_74);
 -         _72 = opaque::<u64>(move _73) -> [return: bb29, unwind unreachable];
-+         _72 = opaque::<u64>(_1) -> [return: bb29, unwind unreachable];
++         _72 = opaque::<u64>(copy _1) -> [return: bb29, unwind unreachable];
       }
   
       bb29: {
diff --git a/tests/mir-opt/gvn.arithmetic.GVN.panic-unwind.diff b/tests/mir-opt/gvn.arithmetic.GVN.panic-unwind.diff
index fa7536efc8e..b8e4967fe8b 100644
--- a/tests/mir-opt/gvn.arithmetic.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.arithmetic.GVN.panic-unwind.diff
@@ -82,12 +82,12 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = Add(move _4, const 0_u64);
-+         _3 = _1;
++         _3 = copy _1;
           StorageDead(_4);
 -         _2 = opaque::<u64>(move _3) -> [return: bb1, unwind continue];
-+         _2 = opaque::<u64>(_1) -> [return: bb1, unwind continue];
++         _2 = opaque::<u64>(copy _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
@@ -96,12 +96,12 @@
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
 -         _6 = Sub(move _7, const 0_u64);
-+         _6 = _1;
++         _6 = copy _1;
           StorageDead(_7);
 -         _5 = opaque::<u64>(move _6) -> [return: bb2, unwind continue];
-+         _5 = opaque::<u64>(_1) -> [return: bb2, unwind continue];
++         _5 = opaque::<u64>(copy _1) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -111,9 +111,9 @@
 -         StorageLive(_9);
 +         nop;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _1;
+          _11 = copy _1;
 -         _9 = Sub(move _10, move _11);
 +         _9 = const 0_u64;
           StorageDead(_11);
@@ -129,7 +129,7 @@
           StorageLive(_12);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
 -         _13 = Mul(move _14, const 0_u64);
 +         _13 = const 0_u64;
           StorageDead(_14);
@@ -143,12 +143,12 @@
           StorageLive(_15);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
+          _17 = copy _1;
 -         _16 = Mul(move _17, const 1_u64);
-+         _16 = _1;
++         _16 = copy _1;
           StorageDead(_17);
 -         _15 = opaque::<u64>(move _16) -> [return: bb5, unwind continue];
-+         _15 = opaque::<u64>(_1) -> [return: bb5, unwind continue];
++         _15 = opaque::<u64>(copy _1) -> [return: bb5, unwind continue];
       }
   
       bb5: {
@@ -157,16 +157,16 @@
           StorageLive(_18);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _1;
+          _20 = copy _1;
 -         _21 = Eq(const 0_u64, const 0_u64);
--         assert(!move _21, "attempt to divide `{}` by zero", _20) -> [success: bb6, unwind continue];
+-         assert(!move _21, "attempt to divide `{}` by zero", copy _20) -> [success: bb6, unwind continue];
 +         _21 = const true;
-+         assert(!const true, "attempt to divide `{}` by zero", _1) -> [success: bb6, unwind continue];
++         assert(!const true, "attempt to divide `{}` by zero", copy _1) -> [success: bb6, unwind continue];
       }
   
       bb6: {
 -         _19 = Div(move _20, const 0_u64);
-+         _19 = Div(_1, const 0_u64);
++         _19 = Div(copy _1, const 0_u64);
           StorageDead(_20);
           _18 = opaque::<u64>(move _19) -> [return: bb7, unwind continue];
       }
@@ -177,19 +177,19 @@
           StorageLive(_22);
           StorageLive(_23);
           StorageLive(_24);
-          _24 = _1;
+          _24 = copy _1;
 -         _25 = Eq(const 1_u64, const 0_u64);
--         assert(!move _25, "attempt to divide `{}` by zero", _24) -> [success: bb8, unwind continue];
+-         assert(!move _25, "attempt to divide `{}` by zero", copy _24) -> [success: bb8, unwind continue];
 +         _25 = const false;
-+         assert(!const false, "attempt to divide `{}` by zero", _1) -> [success: bb8, unwind continue];
++         assert(!const false, "attempt to divide `{}` by zero", copy _1) -> [success: bb8, unwind continue];
       }
   
       bb8: {
 -         _23 = Div(move _24, const 1_u64);
-+         _23 = _1;
++         _23 = copy _1;
           StorageDead(_24);
 -         _22 = opaque::<u64>(move _23) -> [return: bb9, unwind continue];
-+         _22 = opaque::<u64>(_1) -> [return: bb9, unwind continue];
++         _22 = opaque::<u64>(copy _1) -> [return: bb9, unwind continue];
       }
   
       bb9: {
@@ -198,11 +198,11 @@
           StorageLive(_26);
           StorageLive(_27);
           StorageLive(_28);
-          _28 = _1;
--         _29 = Eq(_28, const 0_u64);
+          _28 = copy _1;
+-         _29 = Eq(copy _28, const 0_u64);
 -         assert(!move _29, "attempt to divide `{}` by zero", const 0_u64) -> [success: bb10, unwind continue];
-+         _29 = Eq(_1, const 0_u64);
-+         assert(!_29, "attempt to divide `{}` by zero", const 0_u64) -> [success: bb10, unwind continue];
++         _29 = Eq(copy _1, const 0_u64);
++         assert(!copy _29, "attempt to divide `{}` by zero", const 0_u64) -> [success: bb10, unwind continue];
       }
   
       bb10: {
@@ -219,16 +219,16 @@
           StorageLive(_30);
           StorageLive(_31);
           StorageLive(_32);
-          _32 = _1;
--         _33 = Eq(_32, const 0_u64);
+          _32 = copy _1;
+-         _33 = Eq(copy _32, const 0_u64);
 -         assert(!move _33, "attempt to divide `{}` by zero", const 1_u64) -> [success: bb12, unwind continue];
-+         _33 = _29;
-+         assert(!_29, "attempt to divide `{}` by zero", const 1_u64) -> [success: bb12, unwind continue];
++         _33 = copy _29;
++         assert(!copy _29, "attempt to divide `{}` by zero", const 1_u64) -> [success: bb12, unwind continue];
       }
   
       bb12: {
 -         _31 = Div(const 1_u64, move _32);
-+         _31 = Div(const 1_u64, _1);
++         _31 = Div(const 1_u64, copy _1);
           StorageDead(_32);
           _30 = opaque::<u64>(move _31) -> [return: bb13, unwind continue];
       }
@@ -239,16 +239,16 @@
           StorageLive(_34);
           StorageLive(_35);
           StorageLive(_36);
-          _36 = _1;
+          _36 = copy _1;
 -         _37 = Eq(const 0_u64, const 0_u64);
--         assert(!move _37, "attempt to calculate the remainder of `{}` with a divisor of zero", _36) -> [success: bb14, unwind continue];
+-         assert(!move _37, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _36) -> [success: bb14, unwind continue];
 +         _37 = const true;
-+         assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb14, unwind continue];
++         assert(!const true, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb14, unwind continue];
       }
   
       bb14: {
 -         _35 = Rem(move _36, const 0_u64);
-+         _35 = Rem(_1, const 0_u64);
++         _35 = Rem(copy _1, const 0_u64);
           StorageDead(_36);
           _34 = opaque::<u64>(move _35) -> [return: bb15, unwind continue];
       }
@@ -259,11 +259,11 @@
           StorageLive(_38);
           StorageLive(_39);
           StorageLive(_40);
-          _40 = _1;
+          _40 = copy _1;
 -         _41 = Eq(const 1_u64, const 0_u64);
--         assert(!move _41, "attempt to calculate the remainder of `{}` with a divisor of zero", _40) -> [success: bb16, unwind continue];
+-         assert(!move _41, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _40) -> [success: bb16, unwind continue];
 +         _41 = const false;
-+         assert(!const false, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb16, unwind continue];
++         assert(!const false, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb16, unwind continue];
       }
   
       bb16: {
@@ -280,11 +280,11 @@
           StorageLive(_42);
           StorageLive(_43);
           StorageLive(_44);
-          _44 = _1;
--         _45 = Eq(_44, const 0_u64);
+          _44 = copy _1;
+-         _45 = Eq(copy _44, const 0_u64);
 -         assert(!move _45, "attempt to calculate the remainder of `{}` with a divisor of zero", const 0_u64) -> [success: bb18, unwind continue];
-+         _45 = _29;
-+         assert(!_29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 0_u64) -> [success: bb18, unwind continue];
++         _45 = copy _29;
++         assert(!copy _29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 0_u64) -> [success: bb18, unwind continue];
       }
   
       bb18: {
@@ -301,16 +301,16 @@
           StorageLive(_46);
           StorageLive(_47);
           StorageLive(_48);
-          _48 = _1;
--         _49 = Eq(_48, const 0_u64);
+          _48 = copy _1;
+-         _49 = Eq(copy _48, const 0_u64);
 -         assert(!move _49, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_u64) -> [success: bb20, unwind continue];
-+         _49 = _29;
-+         assert(!_29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_u64) -> [success: bb20, unwind continue];
++         _49 = copy _29;
++         assert(!copy _29, "attempt to calculate the remainder of `{}` with a divisor of zero", const 1_u64) -> [success: bb20, unwind continue];
       }
   
       bb20: {
 -         _47 = Rem(const 1_u64, move _48);
-+         _47 = Rem(const 1_u64, _1);
++         _47 = Rem(const 1_u64, copy _1);
           StorageDead(_48);
           _46 = opaque::<u64>(move _47) -> [return: bb21, unwind continue];
       }
@@ -321,7 +321,7 @@
           StorageLive(_50);
           StorageLive(_51);
           StorageLive(_52);
-          _52 = _1;
+          _52 = copy _1;
 -         _51 = BitAnd(move _52, const 0_u64);
 +         _51 = const 0_u64;
           StorageDead(_52);
@@ -335,12 +335,12 @@
           StorageLive(_53);
           StorageLive(_54);
           StorageLive(_55);
-          _55 = _1;
+          _55 = copy _1;
 -         _54 = BitAnd(move _55, const core::num::<impl u64>::MAX);
-+         _54 = _1;
++         _54 = copy _1;
           StorageDead(_55);
 -         _53 = opaque::<u64>(move _54) -> [return: bb23, unwind continue];
-+         _53 = opaque::<u64>(_1) -> [return: bb23, unwind continue];
++         _53 = opaque::<u64>(copy _1) -> [return: bb23, unwind continue];
       }
   
       bb23: {
@@ -349,12 +349,12 @@
           StorageLive(_56);
           StorageLive(_57);
           StorageLive(_58);
-          _58 = _1;
+          _58 = copy _1;
 -         _57 = BitOr(move _58, const 0_u64);
-+         _57 = _1;
++         _57 = copy _1;
           StorageDead(_58);
 -         _56 = opaque::<u64>(move _57) -> [return: bb24, unwind continue];
-+         _56 = opaque::<u64>(_1) -> [return: bb24, unwind continue];
++         _56 = opaque::<u64>(copy _1) -> [return: bb24, unwind continue];
       }
   
       bb24: {
@@ -363,7 +363,7 @@
           StorageLive(_59);
           StorageLive(_60);
           StorageLive(_61);
-          _61 = _1;
+          _61 = copy _1;
 -         _60 = BitOr(move _61, const core::num::<impl u64>::MAX);
 +         _60 = const u64::MAX;
           StorageDead(_61);
@@ -377,12 +377,12 @@
           StorageLive(_62);
           StorageLive(_63);
           StorageLive(_64);
-          _64 = _1;
+          _64 = copy _1;
 -         _63 = BitXor(move _64, const 0_u64);
-+         _63 = _1;
++         _63 = copy _1;
           StorageDead(_64);
 -         _62 = opaque::<u64>(move _63) -> [return: bb26, unwind continue];
-+         _62 = opaque::<u64>(_1) -> [return: bb26, unwind continue];
++         _62 = opaque::<u64>(copy _1) -> [return: bb26, unwind continue];
       }
   
       bb26: {
@@ -391,9 +391,9 @@
           StorageLive(_65);
           StorageLive(_66);
           StorageLive(_67);
-          _67 = _1;
+          _67 = copy _1;
           StorageLive(_68);
-          _68 = _1;
+          _68 = copy _1;
 -         _66 = BitXor(move _67, move _68);
 +         _66 = const 0_u64;
           StorageDead(_68);
@@ -408,12 +408,12 @@
           StorageLive(_69);
           StorageLive(_70);
           StorageLive(_71);
-          _71 = _1;
+          _71 = copy _1;
 -         _70 = Shr(move _71, const 0_i32);
-+         _70 = _1;
++         _70 = copy _1;
           StorageDead(_71);
 -         _69 = opaque::<u64>(move _70) -> [return: bb28, unwind continue];
-+         _69 = opaque::<u64>(_1) -> [return: bb28, unwind continue];
++         _69 = opaque::<u64>(copy _1) -> [return: bb28, unwind continue];
       }
   
       bb28: {
@@ -422,12 +422,12 @@
           StorageLive(_72);
           StorageLive(_73);
           StorageLive(_74);
-          _74 = _1;
+          _74 = copy _1;
 -         _73 = Shl(move _74, const 0_i32);
-+         _73 = _1;
++         _73 = copy _1;
           StorageDead(_74);
 -         _72 = opaque::<u64>(move _73) -> [return: bb29, unwind continue];
-+         _72 = opaque::<u64>(_1) -> [return: bb29, unwind continue];
++         _72 = opaque::<u64>(copy _1) -> [return: bb29, unwind continue];
       }
   
       bb29: {
diff --git a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff
index 0e3f2459fae..acf8bfc71be 100644
--- a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-abort.diff
@@ -30,19 +30,19 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
--         _5 = AddWithOverflow(_4, const 0_u64);
+          _4 = copy _1;
+-         _5 = AddWithOverflow(copy _4, const 0_u64);
 -         assert(!move (_5.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, const 0_u64) -> [success: bb1, unwind unreachable];
-+         _5 = AddWithOverflow(_1, const 0_u64);
-+         assert(!const false, "attempt to compute `{} + {}`, which would overflow", _1, const 0_u64) -> [success: bb1, unwind unreachable];
++         _5 = AddWithOverflow(copy _1, const 0_u64);
++         assert(!const false, "attempt to compute `{} + {}`, which would overflow", copy _1, const 0_u64) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
 -         _3 = move (_5.0: u64);
-+         _3 = _1;
++         _3 = copy _1;
           StorageDead(_4);
 -         _2 = opaque::<u64>(move _3) -> [return: bb2, unwind unreachable];
-+         _2 = opaque::<u64>(_1) -> [return: bb2, unwind unreachable];
++         _2 = opaque::<u64>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -51,19 +51,19 @@
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _1;
--         _9 = SubWithOverflow(_8, const 0_u64);
+          _8 = copy _1;
+-         _9 = SubWithOverflow(copy _8, const 0_u64);
 -         assert(!move (_9.1: bool), "attempt to compute `{} - {}`, which would overflow", move _8, const 0_u64) -> [success: bb3, unwind unreachable];
-+         _9 = _5;
-+         assert(!const false, "attempt to compute `{} - {}`, which would overflow", _1, const 0_u64) -> [success: bb3, unwind unreachable];
++         _9 = copy _5;
++         assert(!const false, "attempt to compute `{} - {}`, which would overflow", copy _1, const 0_u64) -> [success: bb3, unwind unreachable];
       }
   
       bb3: {
 -         _7 = move (_9.0: u64);
-+         _7 = _1;
++         _7 = copy _1;
           StorageDead(_8);
 -         _6 = opaque::<u64>(move _7) -> [return: bb4, unwind unreachable];
-+         _6 = opaque::<u64>(_1) -> [return: bb4, unwind unreachable];
++         _6 = opaque::<u64>(copy _1) -> [return: bb4, unwind unreachable];
       }
   
       bb4: {
@@ -73,13 +73,13 @@
 -         StorageLive(_11);
 +         nop;
           StorageLive(_12);
-          _12 = _1;
+          _12 = copy _1;
           StorageLive(_13);
-          _13 = _1;
--         _14 = SubWithOverflow(_12, _13);
+          _13 = copy _1;
+-         _14 = SubWithOverflow(copy _12, copy _13);
 -         assert(!move (_14.1: bool), "attempt to compute `{} - {}`, which would overflow", move _12, move _13) -> [success: bb5, unwind unreachable];
 +         _14 = const (0_u64, false);
-+         assert(!const false, "attempt to compute `{} - {}`, which would overflow", _1, _1) -> [success: bb5, unwind unreachable];
++         assert(!const false, "attempt to compute `{} - {}`, which would overflow", copy _1, copy _1) -> [success: bb5, unwind unreachable];
       }
   
       bb5: {
@@ -98,11 +98,11 @@
           StorageLive(_15);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
--         _18 = MulWithOverflow(_17, const 0_u64);
+          _17 = copy _1;
+-         _18 = MulWithOverflow(copy _17, const 0_u64);
 -         assert(!move (_18.1: bool), "attempt to compute `{} * {}`, which would overflow", move _17, const 0_u64) -> [success: bb7, unwind unreachable];
 +         _18 = const (0_u64, false);
-+         assert(!const false, "attempt to compute `{} * {}`, which would overflow", _1, const 0_u64) -> [success: bb7, unwind unreachable];
++         assert(!const false, "attempt to compute `{} * {}`, which would overflow", copy _1, const 0_u64) -> [success: bb7, unwind unreachable];
       }
   
       bb7: {
@@ -119,19 +119,19 @@
           StorageLive(_19);
           StorageLive(_20);
           StorageLive(_21);
-          _21 = _1;
--         _22 = MulWithOverflow(_21, const 1_u64);
+          _21 = copy _1;
+-         _22 = MulWithOverflow(copy _21, const 1_u64);
 -         assert(!move (_22.1: bool), "attempt to compute `{} * {}`, which would overflow", move _21, const 1_u64) -> [success: bb9, unwind unreachable];
-+         _22 = _5;
-+         assert(!const false, "attempt to compute `{} * {}`, which would overflow", _1, const 1_u64) -> [success: bb9, unwind unreachable];
++         _22 = copy _5;
++         assert(!const false, "attempt to compute `{} * {}`, which would overflow", copy _1, const 1_u64) -> [success: bb9, unwind unreachable];
       }
   
       bb9: {
 -         _20 = move (_22.0: u64);
-+         _20 = _1;
++         _20 = copy _1;
           StorageDead(_21);
 -         _19 = opaque::<u64>(move _20) -> [return: bb10, unwind unreachable];
-+         _19 = opaque::<u64>(_1) -> [return: bb10, unwind unreachable];
++         _19 = opaque::<u64>(copy _1) -> [return: bb10, unwind unreachable];
       }
   
       bb10: {
diff --git a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff
index 2873d7ef0ab..f3f6b381a81 100644
--- a/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.arithmetic_checked.GVN.panic-unwind.diff
@@ -30,19 +30,19 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
--         _5 = AddWithOverflow(_4, const 0_u64);
+          _4 = copy _1;
+-         _5 = AddWithOverflow(copy _4, const 0_u64);
 -         assert(!move (_5.1: bool), "attempt to compute `{} + {}`, which would overflow", move _4, const 0_u64) -> [success: bb1, unwind continue];
-+         _5 = AddWithOverflow(_1, const 0_u64);
-+         assert(!const false, "attempt to compute `{} + {}`, which would overflow", _1, const 0_u64) -> [success: bb1, unwind continue];
++         _5 = AddWithOverflow(copy _1, const 0_u64);
++         assert(!const false, "attempt to compute `{} + {}`, which would overflow", copy _1, const 0_u64) -> [success: bb1, unwind continue];
       }
   
       bb1: {
 -         _3 = move (_5.0: u64);
-+         _3 = _1;
++         _3 = copy _1;
           StorageDead(_4);
 -         _2 = opaque::<u64>(move _3) -> [return: bb2, unwind continue];
-+         _2 = opaque::<u64>(_1) -> [return: bb2, unwind continue];
++         _2 = opaque::<u64>(copy _1) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -51,19 +51,19 @@
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _1;
--         _9 = SubWithOverflow(_8, const 0_u64);
+          _8 = copy _1;
+-         _9 = SubWithOverflow(copy _8, const 0_u64);
 -         assert(!move (_9.1: bool), "attempt to compute `{} - {}`, which would overflow", move _8, const 0_u64) -> [success: bb3, unwind continue];
-+         _9 = _5;
-+         assert(!const false, "attempt to compute `{} - {}`, which would overflow", _1, const 0_u64) -> [success: bb3, unwind continue];
++         _9 = copy _5;
++         assert(!const false, "attempt to compute `{} - {}`, which would overflow", copy _1, const 0_u64) -> [success: bb3, unwind continue];
       }
   
       bb3: {
 -         _7 = move (_9.0: u64);
-+         _7 = _1;
++         _7 = copy _1;
           StorageDead(_8);
 -         _6 = opaque::<u64>(move _7) -> [return: bb4, unwind continue];
-+         _6 = opaque::<u64>(_1) -> [return: bb4, unwind continue];
++         _6 = opaque::<u64>(copy _1) -> [return: bb4, unwind continue];
       }
   
       bb4: {
@@ -73,13 +73,13 @@
 -         StorageLive(_11);
 +         nop;
           StorageLive(_12);
-          _12 = _1;
+          _12 = copy _1;
           StorageLive(_13);
-          _13 = _1;
--         _14 = SubWithOverflow(_12, _13);
+          _13 = copy _1;
+-         _14 = SubWithOverflow(copy _12, copy _13);
 -         assert(!move (_14.1: bool), "attempt to compute `{} - {}`, which would overflow", move _12, move _13) -> [success: bb5, unwind continue];
 +         _14 = const (0_u64, false);
-+         assert(!const false, "attempt to compute `{} - {}`, which would overflow", _1, _1) -> [success: bb5, unwind continue];
++         assert(!const false, "attempt to compute `{} - {}`, which would overflow", copy _1, copy _1) -> [success: bb5, unwind continue];
       }
   
       bb5: {
@@ -98,11 +98,11 @@
           StorageLive(_15);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
--         _18 = MulWithOverflow(_17, const 0_u64);
+          _17 = copy _1;
+-         _18 = MulWithOverflow(copy _17, const 0_u64);
 -         assert(!move (_18.1: bool), "attempt to compute `{} * {}`, which would overflow", move _17, const 0_u64) -> [success: bb7, unwind continue];
 +         _18 = const (0_u64, false);
-+         assert(!const false, "attempt to compute `{} * {}`, which would overflow", _1, const 0_u64) -> [success: bb7, unwind continue];
++         assert(!const false, "attempt to compute `{} * {}`, which would overflow", copy _1, const 0_u64) -> [success: bb7, unwind continue];
       }
   
       bb7: {
@@ -119,19 +119,19 @@
           StorageLive(_19);
           StorageLive(_20);
           StorageLive(_21);
-          _21 = _1;
--         _22 = MulWithOverflow(_21, const 1_u64);
+          _21 = copy _1;
+-         _22 = MulWithOverflow(copy _21, const 1_u64);
 -         assert(!move (_22.1: bool), "attempt to compute `{} * {}`, which would overflow", move _21, const 1_u64) -> [success: bb9, unwind continue];
-+         _22 = _5;
-+         assert(!const false, "attempt to compute `{} * {}`, which would overflow", _1, const 1_u64) -> [success: bb9, unwind continue];
++         _22 = copy _5;
++         assert(!const false, "attempt to compute `{} * {}`, which would overflow", copy _1, const 1_u64) -> [success: bb9, unwind continue];
       }
   
       bb9: {
 -         _20 = move (_22.0: u64);
-+         _20 = _1;
++         _20 = copy _1;
           StorageDead(_21);
 -         _19 = opaque::<u64>(move _20) -> [return: bb10, unwind continue];
-+         _19 = opaque::<u64>(_1) -> [return: bb10, unwind continue];
++         _19 = opaque::<u64>(copy _1) -> [return: bb10, unwind continue];
       }
   
       bb10: {
diff --git a/tests/mir-opt/gvn.arithmetic_float.GVN.panic-abort.diff b/tests/mir-opt/gvn.arithmetic_float.GVN.panic-abort.diff
index b332100eaf0..31a85468126 100644
--- a/tests/mir-opt/gvn.arithmetic_float.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.arithmetic_float.GVN.panic-abort.diff
@@ -38,9 +38,9 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = Add(move _4, const 0f64);
-+         _3 = Add(_1, const 0f64);
++         _3 = Add(copy _1, const 0f64);
           StorageDead(_4);
           _2 = opaque::<f64>(move _3) -> [return: bb1, unwind unreachable];
       }
@@ -51,9 +51,9 @@
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
 -         _6 = Sub(move _7, const 0f64);
-+         _6 = Sub(_1, const 0f64);
++         _6 = Sub(copy _1, const 0f64);
           StorageDead(_7);
           _5 = opaque::<f64>(move _6) -> [return: bb2, unwind unreachable];
       }
@@ -64,9 +64,9 @@
           StorageLive(_8);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
 -         _9 = Mul(move _10, const 0f64);
-+         _9 = Mul(_1, const 0f64);
++         _9 = Mul(copy _1, const 0f64);
           StorageDead(_10);
           _8 = opaque::<f64>(move _9) -> [return: bb3, unwind unreachable];
       }
@@ -77,9 +77,9 @@
           StorageLive(_11);
           StorageLive(_12);
           StorageLive(_13);
-          _13 = _1;
+          _13 = copy _1;
 -         _12 = Div(move _13, const 0f64);
-+         _12 = Div(_1, const 0f64);
++         _12 = Div(copy _1, const 0f64);
           StorageDead(_13);
           _11 = opaque::<f64>(move _12) -> [return: bb4, unwind unreachable];
       }
@@ -90,9 +90,9 @@
           StorageLive(_14);
           StorageLive(_15);
           StorageLive(_16);
-          _16 = _1;
+          _16 = copy _1;
 -         _15 = Div(const 0f64, move _16);
-+         _15 = Div(const 0f64, _1);
++         _15 = Div(const 0f64, copy _1);
           StorageDead(_16);
           _14 = opaque::<f64>(move _15) -> [return: bb5, unwind unreachable];
       }
@@ -103,9 +103,9 @@
           StorageLive(_17);
           StorageLive(_18);
           StorageLive(_19);
-          _19 = _1;
+          _19 = copy _1;
 -         _18 = Rem(move _19, const 0f64);
-+         _18 = Rem(_1, const 0f64);
++         _18 = Rem(copy _1, const 0f64);
           StorageDead(_19);
           _17 = opaque::<f64>(move _18) -> [return: bb6, unwind unreachable];
       }
@@ -116,9 +116,9 @@
           StorageLive(_20);
           StorageLive(_21);
           StorageLive(_22);
-          _22 = _1;
+          _22 = copy _1;
 -         _21 = Rem(const 0f64, move _22);
-+         _21 = Rem(const 0f64, _1);
++         _21 = Rem(const 0f64, copy _1);
           StorageDead(_22);
           _20 = opaque::<f64>(move _21) -> [return: bb7, unwind unreachable];
       }
@@ -129,11 +129,11 @@
           StorageLive(_23);
           StorageLive(_24);
           StorageLive(_25);
-          _25 = _1;
+          _25 = copy _1;
           StorageLive(_26);
-          _26 = _1;
+          _26 = copy _1;
 -         _24 = Eq(move _25, move _26);
-+         _24 = Eq(_1, _1);
++         _24 = Eq(copy _1, copy _1);
           StorageDead(_26);
           StorageDead(_25);
           _23 = opaque::<bool>(move _24) -> [return: bb8, unwind unreachable];
@@ -145,11 +145,11 @@
           StorageLive(_27);
           StorageLive(_28);
           StorageLive(_29);
-          _29 = _1;
+          _29 = copy _1;
           StorageLive(_30);
-          _30 = _1;
+          _30 = copy _1;
 -         _28 = Ne(move _29, move _30);
-+         _28 = Ne(_1, _1);
++         _28 = Ne(copy _1, copy _1);
           StorageDead(_30);
           StorageDead(_29);
           _27 = opaque::<bool>(move _28) -> [return: bb9, unwind unreachable];
diff --git a/tests/mir-opt/gvn.arithmetic_float.GVN.panic-unwind.diff b/tests/mir-opt/gvn.arithmetic_float.GVN.panic-unwind.diff
index 28664cb0ac8..4e42b1af4fc 100644
--- a/tests/mir-opt/gvn.arithmetic_float.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.arithmetic_float.GVN.panic-unwind.diff
@@ -38,9 +38,9 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = Add(move _4, const 0f64);
-+         _3 = Add(_1, const 0f64);
++         _3 = Add(copy _1, const 0f64);
           StorageDead(_4);
           _2 = opaque::<f64>(move _3) -> [return: bb1, unwind continue];
       }
@@ -51,9 +51,9 @@
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
 -         _6 = Sub(move _7, const 0f64);
-+         _6 = Sub(_1, const 0f64);
++         _6 = Sub(copy _1, const 0f64);
           StorageDead(_7);
           _5 = opaque::<f64>(move _6) -> [return: bb2, unwind continue];
       }
@@ -64,9 +64,9 @@
           StorageLive(_8);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
 -         _9 = Mul(move _10, const 0f64);
-+         _9 = Mul(_1, const 0f64);
++         _9 = Mul(copy _1, const 0f64);
           StorageDead(_10);
           _8 = opaque::<f64>(move _9) -> [return: bb3, unwind continue];
       }
@@ -77,9 +77,9 @@
           StorageLive(_11);
           StorageLive(_12);
           StorageLive(_13);
-          _13 = _1;
+          _13 = copy _1;
 -         _12 = Div(move _13, const 0f64);
-+         _12 = Div(_1, const 0f64);
++         _12 = Div(copy _1, const 0f64);
           StorageDead(_13);
           _11 = opaque::<f64>(move _12) -> [return: bb4, unwind continue];
       }
@@ -90,9 +90,9 @@
           StorageLive(_14);
           StorageLive(_15);
           StorageLive(_16);
-          _16 = _1;
+          _16 = copy _1;
 -         _15 = Div(const 0f64, move _16);
-+         _15 = Div(const 0f64, _1);
++         _15 = Div(const 0f64, copy _1);
           StorageDead(_16);
           _14 = opaque::<f64>(move _15) -> [return: bb5, unwind continue];
       }
@@ -103,9 +103,9 @@
           StorageLive(_17);
           StorageLive(_18);
           StorageLive(_19);
-          _19 = _1;
+          _19 = copy _1;
 -         _18 = Rem(move _19, const 0f64);
-+         _18 = Rem(_1, const 0f64);
++         _18 = Rem(copy _1, const 0f64);
           StorageDead(_19);
           _17 = opaque::<f64>(move _18) -> [return: bb6, unwind continue];
       }
@@ -116,9 +116,9 @@
           StorageLive(_20);
           StorageLive(_21);
           StorageLive(_22);
-          _22 = _1;
+          _22 = copy _1;
 -         _21 = Rem(const 0f64, move _22);
-+         _21 = Rem(const 0f64, _1);
++         _21 = Rem(const 0f64, copy _1);
           StorageDead(_22);
           _20 = opaque::<f64>(move _21) -> [return: bb7, unwind continue];
       }
@@ -129,11 +129,11 @@
           StorageLive(_23);
           StorageLive(_24);
           StorageLive(_25);
-          _25 = _1;
+          _25 = copy _1;
           StorageLive(_26);
-          _26 = _1;
+          _26 = copy _1;
 -         _24 = Eq(move _25, move _26);
-+         _24 = Eq(_1, _1);
++         _24 = Eq(copy _1, copy _1);
           StorageDead(_26);
           StorageDead(_25);
           _23 = opaque::<bool>(move _24) -> [return: bb8, unwind continue];
@@ -145,11 +145,11 @@
           StorageLive(_27);
           StorageLive(_28);
           StorageLive(_29);
-          _29 = _1;
+          _29 = copy _1;
           StorageLive(_30);
-          _30 = _1;
+          _30 = copy _1;
 -         _28 = Ne(move _29, move _30);
-+         _28 = Ne(_1, _1);
++         _28 = Ne(copy _1, copy _1);
           StorageDead(_30);
           StorageDead(_29);
           _27 = opaque::<bool>(move _28) -> [return: bb9, unwind continue];
diff --git a/tests/mir-opt/gvn.borrowed.GVN.panic-abort.diff b/tests/mir-opt/gvn.borrowed.GVN.panic-abort.diff
index 9520bd382ee..b0702696e18 100644
--- a/tests/mir-opt/gvn.borrowed.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.borrowed.GVN.panic-abort.diff
@@ -7,19 +7,19 @@
       let mut _3: &T;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind unreachable];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
--         _0 = opaque::<T>(_2) -> [return: bb2, unwind unreachable];
-+         _0 = opaque::<T>(_1) -> [return: bb2, unwind unreachable];
+-         _0 = opaque::<T>(copy _2) -> [return: bb2, unwind unreachable];
++         _0 = opaque::<T>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
--         _0 = opaque::<T>((*_3)) -> [return: bb3, unwind unreachable];
-+         _0 = opaque::<T>(_1) -> [return: bb3, unwind unreachable];
+-         _0 = opaque::<T>(copy (*_3)) -> [return: bb3, unwind unreachable];
++         _0 = opaque::<T>(copy _1) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
diff --git a/tests/mir-opt/gvn.borrowed.GVN.panic-unwind.diff b/tests/mir-opt/gvn.borrowed.GVN.panic-unwind.diff
index 4f5d76d5644..fe05d4deeed 100644
--- a/tests/mir-opt/gvn.borrowed.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.borrowed.GVN.panic-unwind.diff
@@ -7,19 +7,19 @@
       let mut _3: &T;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind continue];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind continue];
       }
   
       bb1: {
--         _0 = opaque::<T>(_2) -> [return: bb2, unwind continue];
-+         _0 = opaque::<T>(_1) -> [return: bb2, unwind continue];
+-         _0 = opaque::<T>(copy _2) -> [return: bb2, unwind continue];
++         _0 = opaque::<T>(copy _1) -> [return: bb2, unwind continue];
       }
   
       bb2: {
--         _0 = opaque::<T>((*_3)) -> [return: bb3, unwind continue];
-+         _0 = opaque::<T>(_1) -> [return: bb3, unwind continue];
+-         _0 = opaque::<T>(copy (*_3)) -> [return: bb3, unwind continue];
++         _0 = opaque::<T>(copy _1) -> [return: bb3, unwind continue];
       }
   
       bb3: {
diff --git a/tests/mir-opt/gvn.cast.GVN.panic-abort.diff b/tests/mir-opt/gvn.cast.GVN.panic-abort.diff
index d43198c9911..1d523d22ca6 100644
--- a/tests/mir-opt/gvn.cast.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.cast.GVN.panic-abort.diff
@@ -116,7 +116,7 @@
           StorageLive(_4);
           StorageLive(_5);
           StorageLive(_6);
--         _6 = _1;
+-         _6 = copy _1;
 -         _5 = move _6 as u8 (IntToInt);
 +         _6 = const 1_i64;
 +         _5 = const 1_u8;
@@ -131,7 +131,7 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
--         _9 = _1;
+-         _9 = copy _1;
 -         _8 = move _9 as u16 (IntToInt);
 +         _9 = const 1_i64;
 +         _8 = const 1_u16;
@@ -146,7 +146,7 @@
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
--         _12 = _1;
+-         _12 = copy _1;
 -         _11 = move _12 as u32 (IntToInt);
 +         _12 = const 1_i64;
 +         _11 = const 1_u32;
@@ -161,7 +161,7 @@
           StorageLive(_13);
           StorageLive(_14);
           StorageLive(_15);
--         _15 = _1;
+-         _15 = copy _1;
 -         _14 = move _15 as u64 (IntToInt);
 +         _15 = const 1_i64;
 +         _14 = const 1_u64;
@@ -176,7 +176,7 @@
           StorageLive(_16);
           StorageLive(_17);
           StorageLive(_18);
--         _18 = _1;
+-         _18 = copy _1;
 -         _17 = move _18 as i8 (IntToInt);
 +         _18 = const 1_i64;
 +         _17 = const 1_i8;
@@ -191,7 +191,7 @@
           StorageLive(_19);
           StorageLive(_20);
           StorageLive(_21);
--         _21 = _1;
+-         _21 = copy _1;
 -         _20 = move _21 as i16 (IntToInt);
 +         _21 = const 1_i64;
 +         _20 = const 1_i16;
@@ -206,7 +206,7 @@
           StorageLive(_22);
           StorageLive(_23);
           StorageLive(_24);
--         _24 = _1;
+-         _24 = copy _1;
 -         _23 = move _24 as i32 (IntToInt);
 +         _24 = const 1_i64;
 +         _23 = const 1_i32;
@@ -220,7 +220,7 @@
           StorageDead(_22);
           StorageLive(_25);
           StorageLive(_26);
--         _26 = _1;
+-         _26 = copy _1;
 -         _25 = opaque::<i64>(move _26) -> [return: bb8, unwind unreachable];
 +         _26 = const 1_i64;
 +         _25 = opaque::<i64>(const 1_i64) -> [return: bb8, unwind unreachable];
@@ -232,7 +232,7 @@
           StorageLive(_27);
           StorageLive(_28);
           StorageLive(_29);
--         _29 = _1;
+-         _29 = copy _1;
 -         _28 = move _29 as f32 (IntToFloat);
 +         _29 = const 1_i64;
 +         _28 = const 1f32;
@@ -247,7 +247,7 @@
           StorageLive(_30);
           StorageLive(_31);
           StorageLive(_32);
--         _32 = _1;
+-         _32 = copy _1;
 -         _31 = move _32 as f64 (IntToFloat);
 +         _32 = const 1_i64;
 +         _31 = const 1f64;
@@ -262,7 +262,7 @@
           StorageLive(_33);
           StorageLive(_34);
           StorageLive(_35);
--         _35 = _2;
+-         _35 = copy _2;
 -         _34 = move _35 as u8 (IntToInt);
 +         _35 = const 1_u64;
 +         _34 = const 1_u8;
@@ -277,7 +277,7 @@
           StorageLive(_36);
           StorageLive(_37);
           StorageLive(_38);
--         _38 = _2;
+-         _38 = copy _2;
 -         _37 = move _38 as u16 (IntToInt);
 +         _38 = const 1_u64;
 +         _37 = const 1_u16;
@@ -292,7 +292,7 @@
           StorageLive(_39);
           StorageLive(_40);
           StorageLive(_41);
--         _41 = _2;
+-         _41 = copy _2;
 -         _40 = move _41 as u32 (IntToInt);
 +         _41 = const 1_u64;
 +         _40 = const 1_u32;
@@ -306,7 +306,7 @@
           StorageDead(_39);
           StorageLive(_42);
           StorageLive(_43);
--         _43 = _2;
+-         _43 = copy _2;
 -         _42 = opaque::<u64>(move _43) -> [return: bb14, unwind unreachable];
 +         _43 = const 1_u64;
 +         _42 = opaque::<u64>(const 1_u64) -> [return: bb14, unwind unreachable];
@@ -318,7 +318,7 @@
           StorageLive(_44);
           StorageLive(_45);
           StorageLive(_46);
--         _46 = _2;
+-         _46 = copy _2;
 -         _45 = move _46 as i8 (IntToInt);
 +         _46 = const 1_u64;
 +         _45 = const 1_i8;
@@ -333,7 +333,7 @@
           StorageLive(_47);
           StorageLive(_48);
           StorageLive(_49);
--         _49 = _2;
+-         _49 = copy _2;
 -         _48 = move _49 as i16 (IntToInt);
 +         _49 = const 1_u64;
 +         _48 = const 1_i16;
@@ -348,7 +348,7 @@
           StorageLive(_50);
           StorageLive(_51);
           StorageLive(_52);
--         _52 = _2;
+-         _52 = copy _2;
 -         _51 = move _52 as i32 (IntToInt);
 +         _52 = const 1_u64;
 +         _51 = const 1_i32;
@@ -363,7 +363,7 @@
           StorageLive(_53);
           StorageLive(_54);
           StorageLive(_55);
--         _55 = _2;
+-         _55 = copy _2;
 -         _54 = move _55 as i64 (IntToInt);
 +         _55 = const 1_u64;
 +         _54 = const 1_i64;
@@ -378,7 +378,7 @@
           StorageLive(_56);
           StorageLive(_57);
           StorageLive(_58);
--         _58 = _2;
+-         _58 = copy _2;
 -         _57 = move _58 as f32 (IntToFloat);
 +         _58 = const 1_u64;
 +         _57 = const 1f32;
@@ -393,7 +393,7 @@
           StorageLive(_59);
           StorageLive(_60);
           StorageLive(_61);
--         _61 = _2;
+-         _61 = copy _2;
 -         _60 = move _61 as f64 (IntToFloat);
 +         _61 = const 1_u64;
 +         _60 = const 1f64;
@@ -408,7 +408,7 @@
           StorageLive(_62);
           StorageLive(_63);
           StorageLive(_64);
--         _64 = _3;
+-         _64 = copy _3;
 -         _63 = move _64 as u8 (FloatToInt);
 +         _64 = const 1f64;
 +         _63 = const 1_u8;
@@ -423,7 +423,7 @@
           StorageLive(_65);
           StorageLive(_66);
           StorageLive(_67);
--         _67 = _3;
+-         _67 = copy _3;
 -         _66 = move _67 as u16 (FloatToInt);
 +         _67 = const 1f64;
 +         _66 = const 1_u16;
@@ -438,7 +438,7 @@
           StorageLive(_68);
           StorageLive(_69);
           StorageLive(_70);
--         _70 = _3;
+-         _70 = copy _3;
 -         _69 = move _70 as u32 (FloatToInt);
 +         _70 = const 1f64;
 +         _69 = const 1_u32;
@@ -453,7 +453,7 @@
           StorageLive(_71);
           StorageLive(_72);
           StorageLive(_73);
--         _73 = _3;
+-         _73 = copy _3;
 -         _72 = move _73 as u64 (FloatToInt);
 +         _73 = const 1f64;
 +         _72 = const 1_u64;
@@ -468,7 +468,7 @@
           StorageLive(_74);
           StorageLive(_75);
           StorageLive(_76);
--         _76 = _3;
+-         _76 = copy _3;
 -         _75 = move _76 as i8 (FloatToInt);
 +         _76 = const 1f64;
 +         _75 = const 1_i8;
@@ -483,7 +483,7 @@
           StorageLive(_77);
           StorageLive(_78);
           StorageLive(_79);
--         _79 = _3;
+-         _79 = copy _3;
 -         _78 = move _79 as i16 (FloatToInt);
 +         _79 = const 1f64;
 +         _78 = const 1_i16;
@@ -498,7 +498,7 @@
           StorageLive(_80);
           StorageLive(_81);
           StorageLive(_82);
--         _82 = _3;
+-         _82 = copy _3;
 -         _81 = move _82 as i32 (FloatToInt);
 +         _82 = const 1f64;
 +         _81 = const 1_i32;
@@ -513,7 +513,7 @@
           StorageLive(_83);
           StorageLive(_84);
           StorageLive(_85);
--         _85 = _3;
+-         _85 = copy _3;
 -         _84 = move _85 as i64 (FloatToInt);
 +         _85 = const 1f64;
 +         _84 = const 1_i64;
@@ -528,7 +528,7 @@
           StorageLive(_86);
           StorageLive(_87);
           StorageLive(_88);
--         _88 = _3;
+-         _88 = copy _3;
 -         _87 = move _88 as f32 (FloatToFloat);
 +         _88 = const 1f64;
 +         _87 = const 1f32;
@@ -542,7 +542,7 @@
           StorageDead(_86);
           StorageLive(_89);
           StorageLive(_90);
--         _90 = _3;
+-         _90 = copy _3;
 -         _89 = opaque::<f64>(move _90) -> [return: bb30, unwind unreachable];
 +         _90 = const 1f64;
 +         _89 = opaque::<f64>(const 1f64) -> [return: bb30, unwind unreachable];
diff --git a/tests/mir-opt/gvn.cast.GVN.panic-unwind.diff b/tests/mir-opt/gvn.cast.GVN.panic-unwind.diff
index 08b97e13aa0..3541c10da64 100644
--- a/tests/mir-opt/gvn.cast.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.cast.GVN.panic-unwind.diff
@@ -116,7 +116,7 @@
           StorageLive(_4);
           StorageLive(_5);
           StorageLive(_6);
--         _6 = _1;
+-         _6 = copy _1;
 -         _5 = move _6 as u8 (IntToInt);
 +         _6 = const 1_i64;
 +         _5 = const 1_u8;
@@ -131,7 +131,7 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
--         _9 = _1;
+-         _9 = copy _1;
 -         _8 = move _9 as u16 (IntToInt);
 +         _9 = const 1_i64;
 +         _8 = const 1_u16;
@@ -146,7 +146,7 @@
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
--         _12 = _1;
+-         _12 = copy _1;
 -         _11 = move _12 as u32 (IntToInt);
 +         _12 = const 1_i64;
 +         _11 = const 1_u32;
@@ -161,7 +161,7 @@
           StorageLive(_13);
           StorageLive(_14);
           StorageLive(_15);
--         _15 = _1;
+-         _15 = copy _1;
 -         _14 = move _15 as u64 (IntToInt);
 +         _15 = const 1_i64;
 +         _14 = const 1_u64;
@@ -176,7 +176,7 @@
           StorageLive(_16);
           StorageLive(_17);
           StorageLive(_18);
--         _18 = _1;
+-         _18 = copy _1;
 -         _17 = move _18 as i8 (IntToInt);
 +         _18 = const 1_i64;
 +         _17 = const 1_i8;
@@ -191,7 +191,7 @@
           StorageLive(_19);
           StorageLive(_20);
           StorageLive(_21);
--         _21 = _1;
+-         _21 = copy _1;
 -         _20 = move _21 as i16 (IntToInt);
 +         _21 = const 1_i64;
 +         _20 = const 1_i16;
@@ -206,7 +206,7 @@
           StorageLive(_22);
           StorageLive(_23);
           StorageLive(_24);
--         _24 = _1;
+-         _24 = copy _1;
 -         _23 = move _24 as i32 (IntToInt);
 +         _24 = const 1_i64;
 +         _23 = const 1_i32;
@@ -220,7 +220,7 @@
           StorageDead(_22);
           StorageLive(_25);
           StorageLive(_26);
--         _26 = _1;
+-         _26 = copy _1;
 -         _25 = opaque::<i64>(move _26) -> [return: bb8, unwind continue];
 +         _26 = const 1_i64;
 +         _25 = opaque::<i64>(const 1_i64) -> [return: bb8, unwind continue];
@@ -232,7 +232,7 @@
           StorageLive(_27);
           StorageLive(_28);
           StorageLive(_29);
--         _29 = _1;
+-         _29 = copy _1;
 -         _28 = move _29 as f32 (IntToFloat);
 +         _29 = const 1_i64;
 +         _28 = const 1f32;
@@ -247,7 +247,7 @@
           StorageLive(_30);
           StorageLive(_31);
           StorageLive(_32);
--         _32 = _1;
+-         _32 = copy _1;
 -         _31 = move _32 as f64 (IntToFloat);
 +         _32 = const 1_i64;
 +         _31 = const 1f64;
@@ -262,7 +262,7 @@
           StorageLive(_33);
           StorageLive(_34);
           StorageLive(_35);
--         _35 = _2;
+-         _35 = copy _2;
 -         _34 = move _35 as u8 (IntToInt);
 +         _35 = const 1_u64;
 +         _34 = const 1_u8;
@@ -277,7 +277,7 @@
           StorageLive(_36);
           StorageLive(_37);
           StorageLive(_38);
--         _38 = _2;
+-         _38 = copy _2;
 -         _37 = move _38 as u16 (IntToInt);
 +         _38 = const 1_u64;
 +         _37 = const 1_u16;
@@ -292,7 +292,7 @@
           StorageLive(_39);
           StorageLive(_40);
           StorageLive(_41);
--         _41 = _2;
+-         _41 = copy _2;
 -         _40 = move _41 as u32 (IntToInt);
 +         _41 = const 1_u64;
 +         _40 = const 1_u32;
@@ -306,7 +306,7 @@
           StorageDead(_39);
           StorageLive(_42);
           StorageLive(_43);
--         _43 = _2;
+-         _43 = copy _2;
 -         _42 = opaque::<u64>(move _43) -> [return: bb14, unwind continue];
 +         _43 = const 1_u64;
 +         _42 = opaque::<u64>(const 1_u64) -> [return: bb14, unwind continue];
@@ -318,7 +318,7 @@
           StorageLive(_44);
           StorageLive(_45);
           StorageLive(_46);
--         _46 = _2;
+-         _46 = copy _2;
 -         _45 = move _46 as i8 (IntToInt);
 +         _46 = const 1_u64;
 +         _45 = const 1_i8;
@@ -333,7 +333,7 @@
           StorageLive(_47);
           StorageLive(_48);
           StorageLive(_49);
--         _49 = _2;
+-         _49 = copy _2;
 -         _48 = move _49 as i16 (IntToInt);
 +         _49 = const 1_u64;
 +         _48 = const 1_i16;
@@ -348,7 +348,7 @@
           StorageLive(_50);
           StorageLive(_51);
           StorageLive(_52);
--         _52 = _2;
+-         _52 = copy _2;
 -         _51 = move _52 as i32 (IntToInt);
 +         _52 = const 1_u64;
 +         _51 = const 1_i32;
@@ -363,7 +363,7 @@
           StorageLive(_53);
           StorageLive(_54);
           StorageLive(_55);
--         _55 = _2;
+-         _55 = copy _2;
 -         _54 = move _55 as i64 (IntToInt);
 +         _55 = const 1_u64;
 +         _54 = const 1_i64;
@@ -378,7 +378,7 @@
           StorageLive(_56);
           StorageLive(_57);
           StorageLive(_58);
--         _58 = _2;
+-         _58 = copy _2;
 -         _57 = move _58 as f32 (IntToFloat);
 +         _58 = const 1_u64;
 +         _57 = const 1f32;
@@ -393,7 +393,7 @@
           StorageLive(_59);
           StorageLive(_60);
           StorageLive(_61);
--         _61 = _2;
+-         _61 = copy _2;
 -         _60 = move _61 as f64 (IntToFloat);
 +         _61 = const 1_u64;
 +         _60 = const 1f64;
@@ -408,7 +408,7 @@
           StorageLive(_62);
           StorageLive(_63);
           StorageLive(_64);
--         _64 = _3;
+-         _64 = copy _3;
 -         _63 = move _64 as u8 (FloatToInt);
 +         _64 = const 1f64;
 +         _63 = const 1_u8;
@@ -423,7 +423,7 @@
           StorageLive(_65);
           StorageLive(_66);
           StorageLive(_67);
--         _67 = _3;
+-         _67 = copy _3;
 -         _66 = move _67 as u16 (FloatToInt);
 +         _67 = const 1f64;
 +         _66 = const 1_u16;
@@ -438,7 +438,7 @@
           StorageLive(_68);
           StorageLive(_69);
           StorageLive(_70);
--         _70 = _3;
+-         _70 = copy _3;
 -         _69 = move _70 as u32 (FloatToInt);
 +         _70 = const 1f64;
 +         _69 = const 1_u32;
@@ -453,7 +453,7 @@
           StorageLive(_71);
           StorageLive(_72);
           StorageLive(_73);
--         _73 = _3;
+-         _73 = copy _3;
 -         _72 = move _73 as u64 (FloatToInt);
 +         _73 = const 1f64;
 +         _72 = const 1_u64;
@@ -468,7 +468,7 @@
           StorageLive(_74);
           StorageLive(_75);
           StorageLive(_76);
--         _76 = _3;
+-         _76 = copy _3;
 -         _75 = move _76 as i8 (FloatToInt);
 +         _76 = const 1f64;
 +         _75 = const 1_i8;
@@ -483,7 +483,7 @@
           StorageLive(_77);
           StorageLive(_78);
           StorageLive(_79);
--         _79 = _3;
+-         _79 = copy _3;
 -         _78 = move _79 as i16 (FloatToInt);
 +         _79 = const 1f64;
 +         _78 = const 1_i16;
@@ -498,7 +498,7 @@
           StorageLive(_80);
           StorageLive(_81);
           StorageLive(_82);
--         _82 = _3;
+-         _82 = copy _3;
 -         _81 = move _82 as i32 (FloatToInt);
 +         _82 = const 1f64;
 +         _81 = const 1_i32;
@@ -513,7 +513,7 @@
           StorageLive(_83);
           StorageLive(_84);
           StorageLive(_85);
--         _85 = _3;
+-         _85 = copy _3;
 -         _84 = move _85 as i64 (FloatToInt);
 +         _85 = const 1f64;
 +         _84 = const 1_i64;
@@ -528,7 +528,7 @@
           StorageLive(_86);
           StorageLive(_87);
           StorageLive(_88);
--         _88 = _3;
+-         _88 = copy _3;
 -         _87 = move _88 as f32 (FloatToFloat);
 +         _88 = const 1f64;
 +         _87 = const 1f32;
@@ -542,7 +542,7 @@
           StorageDead(_86);
           StorageLive(_89);
           StorageLive(_90);
--         _90 = _3;
+-         _90 = copy _3;
 -         _89 = opaque::<f64>(move _90) -> [return: bb30, unwind continue];
 +         _90 = const 1f64;
 +         _89 = opaque::<f64>(const 1f64) -> [return: bb30, unwind continue];
diff --git a/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-abort.diff b/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-abort.diff
index 757ab959813..f66aed0f441 100644
--- a/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-abort.diff
@@ -52,70 +52,70 @@
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         _5 = move _6 as *const u32 (PtrToPtr);
-+         _5 = _1 as *const u32 (PtrToPtr);
++         _5 = copy _1 as *const u32 (PtrToPtr);
           StorageDead(_6);
           StorageLive(_7);
 -         StorageLive(_8);
 +         nop;
           StorageLive(_9);
-          _9 = _2;
+          _9 = copy _2;
 -         _8 = move _9 as *const u32 (PtrToPtr);
-+         _8 = _2 as *const u32 (PtrToPtr);
++         _8 = copy _2 as *const u32 (PtrToPtr);
           StorageDead(_9);
 -         _7 = move _8 as *const u32 (PtrToPtr);
 -         StorageDead(_8);
-+         _7 = _8;
++         _7 = copy _8;
 +         nop;
           StorageLive(_10);
 -         StorageLive(_11);
 +         nop;
           StorageLive(_12);
-          _12 = _3;
+          _12 = copy _3;
 -         _11 = move _12 as *const u32 (PtrToPtr);
-+         _11 = _3 as *const u32 (PtrToPtr);
++         _11 = copy _3 as *const u32 (PtrToPtr);
           StorageDead(_12);
 -         _10 = move _11 as *const u32 (PtrToPtr);
 -         StorageDead(_11);
 -         StorageLive(_13);
-+         _10 = _11;
++         _10 = copy _11;
 +         nop;
 +         nop;
           StorageLive(_14);
-          _14 = _4;
+          _14 = copy _4;
 -         _13 = move _14 as *const u32 (PtrToPtr);
-+         _13 = _4 as *const u32 (PtrToPtr);
++         _13 = copy _4 as *const u32 (PtrToPtr);
           StorageDead(_14);
           StorageLive(_15);
           StorageLive(_16);
-          _16 = _5;
+          _16 = copy _5;
           StorageLive(_17);
--         _17 = _7;
+-         _17 = copy _7;
 -         _15 = Eq(move _16, move _17);
-+         _17 = _8;
-+         _15 = Eq(_5, _8);
++         _17 = copy _8;
++         _15 = Eq(copy _5, copy _8);
           StorageDead(_17);
           StorageDead(_16);
           StorageLive(_18);
           StorageLive(_19);
--         _19 = _7;
-+         _19 = _8;
+-         _19 = copy _7;
++         _19 = copy _8;
           StorageLive(_20);
--         _20 = _10;
+-         _20 = copy _10;
 -         _18 = Eq(move _19, move _20);
-+         _20 = _11;
-+         _18 = Eq(_2, _3);
++         _20 = copy _11;
++         _18 = Eq(copy _2, copy _3);
           StorageDead(_20);
           StorageDead(_19);
           StorageLive(_21);
           StorageLive(_22);
--         _22 = _10;
-+         _22 = _11;
+-         _22 = copy _10;
++         _22 = copy _11;
           StorageLive(_23);
-          _23 = _13;
+          _23 = copy _13;
 -         _21 = Eq(move _22, move _23);
-+         _21 = Eq(_11, _13);
++         _21 = Eq(copy _11, copy _13);
           StorageDead(_23);
           StorageDead(_22);
           _0 = const ();
diff --git a/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-unwind.diff b/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-unwind.diff
index 757ab959813..f66aed0f441 100644
--- a/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.cast_pointer_eq.GVN.panic-unwind.diff
@@ -52,70 +52,70 @@
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         _5 = move _6 as *const u32 (PtrToPtr);
-+         _5 = _1 as *const u32 (PtrToPtr);
++         _5 = copy _1 as *const u32 (PtrToPtr);
           StorageDead(_6);
           StorageLive(_7);
 -         StorageLive(_8);
 +         nop;
           StorageLive(_9);
-          _9 = _2;
+          _9 = copy _2;
 -         _8 = move _9 as *const u32 (PtrToPtr);
-+         _8 = _2 as *const u32 (PtrToPtr);
++         _8 = copy _2 as *const u32 (PtrToPtr);
           StorageDead(_9);
 -         _7 = move _8 as *const u32 (PtrToPtr);
 -         StorageDead(_8);
-+         _7 = _8;
++         _7 = copy _8;
 +         nop;
           StorageLive(_10);
 -         StorageLive(_11);
 +         nop;
           StorageLive(_12);
-          _12 = _3;
+          _12 = copy _3;
 -         _11 = move _12 as *const u32 (PtrToPtr);
-+         _11 = _3 as *const u32 (PtrToPtr);
++         _11 = copy _3 as *const u32 (PtrToPtr);
           StorageDead(_12);
 -         _10 = move _11 as *const u32 (PtrToPtr);
 -         StorageDead(_11);
 -         StorageLive(_13);
-+         _10 = _11;
++         _10 = copy _11;
 +         nop;
 +         nop;
           StorageLive(_14);
-          _14 = _4;
+          _14 = copy _4;
 -         _13 = move _14 as *const u32 (PtrToPtr);
-+         _13 = _4 as *const u32 (PtrToPtr);
++         _13 = copy _4 as *const u32 (PtrToPtr);
           StorageDead(_14);
           StorageLive(_15);
           StorageLive(_16);
-          _16 = _5;
+          _16 = copy _5;
           StorageLive(_17);
--         _17 = _7;
+-         _17 = copy _7;
 -         _15 = Eq(move _16, move _17);
-+         _17 = _8;
-+         _15 = Eq(_5, _8);
++         _17 = copy _8;
++         _15 = Eq(copy _5, copy _8);
           StorageDead(_17);
           StorageDead(_16);
           StorageLive(_18);
           StorageLive(_19);
--         _19 = _7;
-+         _19 = _8;
+-         _19 = copy _7;
++         _19 = copy _8;
           StorageLive(_20);
--         _20 = _10;
+-         _20 = copy _10;
 -         _18 = Eq(move _19, move _20);
-+         _20 = _11;
-+         _18 = Eq(_2, _3);
++         _20 = copy _11;
++         _18 = Eq(copy _2, copy _3);
           StorageDead(_20);
           StorageDead(_19);
           StorageLive(_21);
           StorageLive(_22);
--         _22 = _10;
-+         _22 = _11;
+-         _22 = copy _10;
++         _22 = copy _11;
           StorageLive(_23);
-          _23 = _13;
+          _23 = copy _13;
 -         _21 = Eq(move _22, move _23);
-+         _21 = Eq(_11, _13);
++         _21 = Eq(copy _11, copy _13);
           StorageDead(_23);
           StorageDead(_22);
           _0 = const ();
diff --git a/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-abort.diff b/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-abort.diff
index 8133f6e0b00..d9f945d2c41 100644
--- a/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-abort.diff
@@ -22,19 +22,19 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = move _5 as *const () (PtrToPtr);
-+         _4 = _1 as *const () (PtrToPtr);
++         _4 = copy _1 as *const () (PtrToPtr);
           StorageDead(_5);
 -         _3 = move _4 as usize (Transmute);
-+         _3 = _1 as usize (Transmute);
++         _3 = copy _1 as usize (Transmute);
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
 -         _7 = move _8 as *const () (PtrToPtr);
-+         _7 = _2 as *const () (PtrToPtr);
++         _7 = copy _2 as *const () (PtrToPtr);
           StorageDead(_8);
           _6 = move _7 as usize (Transmute);
           StorageDead(_7);
diff --git a/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-unwind.diff b/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-unwind.diff
index 8133f6e0b00..d9f945d2c41 100644
--- a/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.cast_pointer_then_transmute.GVN.panic-unwind.diff
@@ -22,19 +22,19 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = move _5 as *const () (PtrToPtr);
-+         _4 = _1 as *const () (PtrToPtr);
++         _4 = copy _1 as *const () (PtrToPtr);
           StorageDead(_5);
 -         _3 = move _4 as usize (Transmute);
-+         _3 = _1 as usize (Transmute);
++         _3 = copy _1 as usize (Transmute);
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
 -         _7 = move _8 as *const () (PtrToPtr);
-+         _7 = _2 as *const () (PtrToPtr);
++         _7 = copy _2 as *const () (PtrToPtr);
           StorageDead(_8);
           _6 = move _7 as usize (Transmute);
           StorageDead(_7);
diff --git a/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-abort.diff b/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-abort.diff
index 6e5bdb16595..fd09310fabd 100644
--- a/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-abort.diff
@@ -25,28 +25,28 @@
 -         StorageLive(_2);
 +         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = move _3 as *const [u8; 4] (PtrToPtr);
-+         _2 = _1 as *const [u8; 4] (PtrToPtr);
++         _2 = copy _1 as *const [u8; 4] (PtrToPtr);
           StorageDead(_3);
 -         StorageLive(_4);
 +         nop;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _4 = move _5 as *const u8 (PtrToPtr);
-+         _4 = _1 as *const u8 (PtrToPtr);
++         _4 = copy _1 as *const u8 (PtrToPtr);
           StorageDead(_5);
 -         StorageLive(_6);
 +         nop;
           StorageLive(_7);
-          _7 = _4;
+          _7 = copy _4;
 -         _6 = move _7 as *const () (PtrToPtr);
-+         _6 = _1 as *const () (PtrToPtr);
++         _6 = copy _1 as *const () (PtrToPtr);
           StorageDead(_7);
           StorageLive(_8);
-          _8 = _6;
+          _8 = copy _6;
 -         _0 = *const [u8] from (move _8, const 4_usize);
-+         _0 = *const [u8] from (_1, const 4_usize);
++         _0 = *const [u8] from (copy _1, const 4_usize);
           StorageDead(_8);
 -         StorageDead(_6);
 -         StorageDead(_4);
diff --git a/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-unwind.diff b/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-unwind.diff
index 6e5bdb16595..fd09310fabd 100644
--- a/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.casts_before_aggregate_raw_ptr.GVN.panic-unwind.diff
@@ -25,28 +25,28 @@
 -         StorageLive(_2);
 +         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = move _3 as *const [u8; 4] (PtrToPtr);
-+         _2 = _1 as *const [u8; 4] (PtrToPtr);
++         _2 = copy _1 as *const [u8; 4] (PtrToPtr);
           StorageDead(_3);
 -         StorageLive(_4);
 +         nop;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _4 = move _5 as *const u8 (PtrToPtr);
-+         _4 = _1 as *const u8 (PtrToPtr);
++         _4 = copy _1 as *const u8 (PtrToPtr);
           StorageDead(_5);
 -         StorageLive(_6);
 +         nop;
           StorageLive(_7);
-          _7 = _4;
+          _7 = copy _4;
 -         _6 = move _7 as *const () (PtrToPtr);
-+         _6 = _1 as *const () (PtrToPtr);
++         _6 = copy _1 as *const () (PtrToPtr);
           StorageDead(_7);
           StorageLive(_8);
-          _8 = _6;
+          _8 = copy _6;
 -         _0 = *const [u8] from (move _8, const 4_usize);
-+         _0 = *const [u8] from (_1, const 4_usize);
++         _0 = *const [u8] from (copy _1, const 4_usize);
           StorageDead(_8);
 -         StorageDead(_6);
 -         StorageDead(_4);
diff --git a/tests/mir-opt/gvn.comparison.GVN.panic-abort.diff b/tests/mir-opt/gvn.comparison.GVN.panic-abort.diff
index fefdf14bddc..7b25dedbb88 100644
--- a/tests/mir-opt/gvn.comparison.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.comparison.GVN.panic-abort.diff
@@ -26,9 +26,9 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         _4 = Eq(move _5, move _6);
 +         _4 = const true;
           StorageDead(_6);
@@ -43,9 +43,9 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
 -         _8 = Ne(move _9, move _10);
 +         _8 = const false;
           StorageDead(_10);
@@ -60,11 +60,11 @@
           StorageLive(_11);
           StorageLive(_12);
           StorageLive(_13);
-          _13 = _1;
+          _13 = copy _1;
           StorageLive(_14);
-          _14 = _2;
+          _14 = copy _2;
 -         _12 = Eq(move _13, move _14);
-+         _12 = Eq(_1, _2);
++         _12 = Eq(copy _1, copy _2);
           StorageDead(_14);
           StorageDead(_13);
           _11 = opaque::<bool>(move _12) -> [return: bb3, unwind unreachable];
@@ -76,11 +76,11 @@
           StorageLive(_15);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
+          _17 = copy _1;
           StorageLive(_18);
-          _18 = _2;
+          _18 = copy _2;
 -         _16 = Ne(move _17, move _18);
-+         _16 = Ne(_1, _2);
++         _16 = Ne(copy _1, copy _2);
           StorageDead(_18);
           StorageDead(_17);
           _15 = opaque::<bool>(move _16) -> [return: bb4, unwind unreachable];
diff --git a/tests/mir-opt/gvn.comparison.GVN.panic-unwind.diff b/tests/mir-opt/gvn.comparison.GVN.panic-unwind.diff
index 9f19b2b59fa..416ae1ee559 100644
--- a/tests/mir-opt/gvn.comparison.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.comparison.GVN.panic-unwind.diff
@@ -26,9 +26,9 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         _4 = Eq(move _5, move _6);
 +         _4 = const true;
           StorageDead(_6);
@@ -43,9 +43,9 @@
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
 -         _8 = Ne(move _9, move _10);
 +         _8 = const false;
           StorageDead(_10);
@@ -60,11 +60,11 @@
           StorageLive(_11);
           StorageLive(_12);
           StorageLive(_13);
-          _13 = _1;
+          _13 = copy _1;
           StorageLive(_14);
-          _14 = _2;
+          _14 = copy _2;
 -         _12 = Eq(move _13, move _14);
-+         _12 = Eq(_1, _2);
++         _12 = Eq(copy _1, copy _2);
           StorageDead(_14);
           StorageDead(_13);
           _11 = opaque::<bool>(move _12) -> [return: bb3, unwind continue];
@@ -76,11 +76,11 @@
           StorageLive(_15);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
+          _17 = copy _1;
           StorageLive(_18);
-          _18 = _2;
+          _18 = copy _2;
 -         _16 = Ne(move _17, move _18);
-+         _16 = Ne(_1, _2);
++         _16 = Ne(copy _1, copy _2);
           StorageDead(_18);
           StorageDead(_17);
           _15 = opaque::<bool>(move _16) -> [return: bb4, unwind continue];
diff --git a/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-abort.diff b/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-abort.diff
index c417c51f9b7..3f052ee19fd 100644
--- a/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-abort.diff
@@ -32,7 +32,7 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
 +         _5 = const usize::MAX;
           StorageLive(_6);
           StorageLive(_7);
@@ -51,18 +51,18 @@
           StorageDead(_6);
           StorageDead(_5);
           StorageLive(_8);
--         _8 = _2;
+-         _8 = copy _2;
 +         _8 = const usize::MAX;
           _9 = Len((*_1));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable];
-+         _10 = Lt(const usize::MAX, _9);
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb3, unwind unreachable];
++         _10 = Lt(const usize::MAX, copy _9);
 +         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, const usize::MAX) -> [success: bb3, unwind unreachable];
       }
   
       bb3: {
--         _3 = (*_1)[_8];
-+         _3 = (*_1)[_2];
+-         _3 = copy (*_1)[_8];
++         _3 = copy (*_1)[_2];
           StorageDead(_8);
           goto -> bb6;
       }
@@ -73,15 +73,15 @@
           StorageLive(_11);
           _11 = const 0_usize;
           _12 = Len((*_1));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind unreachable];
-+         _13 = Lt(const 0_usize, _12);
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb5, unwind unreachable];
++         _13 = Lt(const 0_usize, copy _12);
 +         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, const 0_usize) -> [success: bb5, unwind unreachable];
       }
   
       bb5: {
--         _3 = (*_1)[_11];
-+         _3 = (*_1)[0 of 1];
+-         _3 = copy (*_1)[_11];
++         _3 = copy (*_1)[0 of 1];
           StorageDead(_11);
           goto -> bb6;
       }
@@ -89,7 +89,7 @@
       bb6: {
           StorageDead(_4);
           StorageLive(_14);
-          _14 = _3;
+          _14 = copy _3;
           _0 = opaque::<T>(move _14) -> [return: bb7, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-unwind.diff b/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-unwind.diff
index 7a23fbe7cc0..84b738c7804 100644
--- a/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.constant_index_overflow.GVN.panic-unwind.diff
@@ -32,7 +32,7 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _2;
+-         _5 = copy _2;
 +         _5 = const usize::MAX;
           StorageLive(_6);
           StorageLive(_7);
@@ -51,18 +51,18 @@
           StorageDead(_6);
           StorageDead(_5);
           StorageLive(_8);
--         _8 = _2;
+-         _8 = copy _2;
 +         _8 = const usize::MAX;
           _9 = Len((*_1));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind continue];
-+         _10 = Lt(const usize::MAX, _9);
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb3, unwind continue];
++         _10 = Lt(const usize::MAX, copy _9);
 +         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, const usize::MAX) -> [success: bb3, unwind continue];
       }
   
       bb3: {
--         _3 = (*_1)[_8];
-+         _3 = (*_1)[_2];
+-         _3 = copy (*_1)[_8];
++         _3 = copy (*_1)[_2];
           StorageDead(_8);
           goto -> bb6;
       }
@@ -73,15 +73,15 @@
           StorageLive(_11);
           _11 = const 0_usize;
           _12 = Len((*_1));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind continue];
-+         _13 = Lt(const 0_usize, _12);
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb5, unwind continue];
++         _13 = Lt(const 0_usize, copy _12);
 +         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, const 0_usize) -> [success: bb5, unwind continue];
       }
   
       bb5: {
--         _3 = (*_1)[_11];
-+         _3 = (*_1)[0 of 1];
+-         _3 = copy (*_1)[_11];
++         _3 = copy (*_1)[0 of 1];
           StorageDead(_11);
           goto -> bb6;
       }
@@ -89,7 +89,7 @@
       bb6: {
           StorageDead(_4);
           StorageLive(_14);
-          _14 = _3;
+          _14 = copy _3;
           _0 = opaque::<T>(move _14) -> [return: bb7, unwind continue];
       }
   
diff --git a/tests/mir-opt/gvn.dereferences.GVN.panic-abort.diff b/tests/mir-opt/gvn.dereferences.GVN.panic-abort.diff
index 906835530d8..a763614dc64 100644
--- a/tests/mir-opt/gvn.dereferences.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.dereferences.GVN.panic-abort.diff
@@ -48,7 +48,7 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = (*_1);
+          _5 = copy (*_1);
           _4 = opaque::<u32>(move _5) -> [return: bb1, unwind unreachable];
       }
   
@@ -57,7 +57,7 @@
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = (*_1);
+          _7 = copy (*_1);
           _6 = opaque::<u32>(move _7) -> [return: bb2, unwind unreachable];
       }
   
@@ -68,7 +68,7 @@
           _8 = &raw const (*_1);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = (*_8);
+          _10 = copy (*_8);
           _9 = opaque::<u32>(move _10) -> [return: bb3, unwind unreachable];
       }
   
@@ -77,7 +77,7 @@
           StorageDead(_9);
           StorageLive(_11);
           StorageLive(_12);
-          _12 = (*_8);
+          _12 = copy (*_8);
           _11 = opaque::<u32>(move _12) -> [return: bb4, unwind unreachable];
       }
   
@@ -88,7 +88,7 @@
           _13 = &raw mut (*_1);
           StorageLive(_14);
           StorageLive(_15);
-          _15 = (*_13);
+          _15 = copy (*_13);
           _14 = opaque::<u32>(move _15) -> [return: bb5, unwind unreachable];
       }
   
@@ -97,7 +97,7 @@
           StorageDead(_14);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = (*_13);
+          _17 = copy (*_13);
           _16 = opaque::<u32>(move _17) -> [return: bb6, unwind unreachable];
       }
   
@@ -109,9 +109,9 @@
           StorageLive(_19);
 -         StorageLive(_20);
 +         nop;
-          _20 = (*_18);
+          _20 = copy (*_18);
 -         _19 = opaque::<u32>(move _20) -> [return: bb7, unwind unreachable];
-+         _19 = opaque::<u32>(_20) -> [return: bb7, unwind unreachable];
++         _19 = opaque::<u32>(copy _20) -> [return: bb7, unwind unreachable];
       }
   
       bb7: {
@@ -120,10 +120,10 @@
           StorageDead(_19);
           StorageLive(_21);
           StorageLive(_22);
--         _22 = (*_18);
+-         _22 = copy (*_18);
 -         _21 = opaque::<u32>(move _22) -> [return: bb8, unwind unreachable];
-+         _22 = _20;
-+         _21 = opaque::<u32>(_20) -> [return: bb8, unwind unreachable];
++         _22 = copy _20;
++         _21 = opaque::<u32>(copy _20) -> [return: bb8, unwind unreachable];
       }
   
       bb8: {
@@ -140,7 +140,7 @@
           StorageDead(_23);
           StorageLive(_25);
           StorageLive(_26);
-          _26 = (*_2);
+          _26 = copy (*_2);
           _25 = opaque::<impl Copy>(move _26) -> [return: bb10, unwind unreachable];
       }
   
@@ -149,7 +149,7 @@
           StorageDead(_25);
           StorageLive(_27);
           StorageLive(_28);
-          _28 = (*_2);
+          _28 = copy (*_2);
           _27 = opaque::<impl Copy>(move _28) -> [return: bb11, unwind unreachable];
       }
   
@@ -159,9 +159,9 @@
           StorageLive(_29);
 -         StorageLive(_30);
 +         nop;
-          _30 = ((*_3).0: u32);
+          _30 = copy ((*_3).0: u32);
 -         _29 = opaque::<u32>(move _30) -> [return: bb12, unwind unreachable];
-+         _29 = opaque::<u32>(_30) -> [return: bb12, unwind unreachable];
++         _29 = opaque::<u32>(copy _30) -> [return: bb12, unwind unreachable];
       }
   
       bb12: {
@@ -170,10 +170,10 @@
           StorageDead(_29);
           StorageLive(_31);
           StorageLive(_32);
--         _32 = ((*_3).0: u32);
+-         _32 = copy ((*_3).0: u32);
 -         _31 = opaque::<u32>(move _32) -> [return: bb13, unwind unreachable];
-+         _32 = _30;
-+         _31 = opaque::<u32>(_30) -> [return: bb13, unwind unreachable];
++         _32 = copy _30;
++         _31 = opaque::<u32>(copy _30) -> [return: bb13, unwind unreachable];
       }
   
       bb13: {
diff --git a/tests/mir-opt/gvn.dereferences.GVN.panic-unwind.diff b/tests/mir-opt/gvn.dereferences.GVN.panic-unwind.diff
index 006b5da646c..ca6fda48364 100644
--- a/tests/mir-opt/gvn.dereferences.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.dereferences.GVN.panic-unwind.diff
@@ -48,7 +48,7 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = (*_1);
+          _5 = copy (*_1);
           _4 = opaque::<u32>(move _5) -> [return: bb1, unwind continue];
       }
   
@@ -57,7 +57,7 @@
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = (*_1);
+          _7 = copy (*_1);
           _6 = opaque::<u32>(move _7) -> [return: bb2, unwind continue];
       }
   
@@ -68,7 +68,7 @@
           _8 = &raw const (*_1);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = (*_8);
+          _10 = copy (*_8);
           _9 = opaque::<u32>(move _10) -> [return: bb3, unwind continue];
       }
   
@@ -77,7 +77,7 @@
           StorageDead(_9);
           StorageLive(_11);
           StorageLive(_12);
-          _12 = (*_8);
+          _12 = copy (*_8);
           _11 = opaque::<u32>(move _12) -> [return: bb4, unwind continue];
       }
   
@@ -88,7 +88,7 @@
           _13 = &raw mut (*_1);
           StorageLive(_14);
           StorageLive(_15);
-          _15 = (*_13);
+          _15 = copy (*_13);
           _14 = opaque::<u32>(move _15) -> [return: bb5, unwind continue];
       }
   
@@ -97,7 +97,7 @@
           StorageDead(_14);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = (*_13);
+          _17 = copy (*_13);
           _16 = opaque::<u32>(move _17) -> [return: bb6, unwind continue];
       }
   
@@ -109,9 +109,9 @@
           StorageLive(_19);
 -         StorageLive(_20);
 +         nop;
-          _20 = (*_18);
+          _20 = copy (*_18);
 -         _19 = opaque::<u32>(move _20) -> [return: bb7, unwind continue];
-+         _19 = opaque::<u32>(_20) -> [return: bb7, unwind continue];
++         _19 = opaque::<u32>(copy _20) -> [return: bb7, unwind continue];
       }
   
       bb7: {
@@ -120,10 +120,10 @@
           StorageDead(_19);
           StorageLive(_21);
           StorageLive(_22);
--         _22 = (*_18);
+-         _22 = copy (*_18);
 -         _21 = opaque::<u32>(move _22) -> [return: bb8, unwind continue];
-+         _22 = _20;
-+         _21 = opaque::<u32>(_20) -> [return: bb8, unwind continue];
++         _22 = copy _20;
++         _21 = opaque::<u32>(copy _20) -> [return: bb8, unwind continue];
       }
   
       bb8: {
@@ -140,7 +140,7 @@
           StorageDead(_23);
           StorageLive(_25);
           StorageLive(_26);
-          _26 = (*_2);
+          _26 = copy (*_2);
           _25 = opaque::<impl Copy>(move _26) -> [return: bb10, unwind continue];
       }
   
@@ -149,7 +149,7 @@
           StorageDead(_25);
           StorageLive(_27);
           StorageLive(_28);
-          _28 = (*_2);
+          _28 = copy (*_2);
           _27 = opaque::<impl Copy>(move _28) -> [return: bb11, unwind continue];
       }
   
@@ -159,9 +159,9 @@
           StorageLive(_29);
 -         StorageLive(_30);
 +         nop;
-          _30 = ((*_3).0: u32);
+          _30 = copy ((*_3).0: u32);
 -         _29 = opaque::<u32>(move _30) -> [return: bb12, unwind continue];
-+         _29 = opaque::<u32>(_30) -> [return: bb12, unwind continue];
++         _29 = opaque::<u32>(copy _30) -> [return: bb12, unwind continue];
       }
   
       bb12: {
@@ -170,10 +170,10 @@
           StorageDead(_29);
           StorageLive(_31);
           StorageLive(_32);
--         _32 = ((*_3).0: u32);
+-         _32 = copy ((*_3).0: u32);
 -         _31 = opaque::<u32>(move _32) -> [return: bb13, unwind continue];
-+         _32 = _30;
-+         _31 = opaque::<u32>(_30) -> [return: bb13, unwind continue];
++         _32 = copy _30;
++         _31 = opaque::<u32>(copy _30) -> [return: bb13, unwind continue];
       }
   
       bb13: {
diff --git a/tests/mir-opt/gvn.duplicate_slice.GVN.panic-abort.diff b/tests/mir-opt/gvn.duplicate_slice.GVN.panic-abort.diff
index 7ae1fae68e8..18c2897d528 100644
--- a/tests/mir-opt/gvn.duplicate_slice.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.duplicate_slice.GVN.panic-abort.diff
@@ -16,22 +16,22 @@
   
       bb0: {
           _7 = (const "a",);
-          _1 = (_7.0: &str) as u128 (Transmute);
-          _5 = identity::<&str>((_7.0: &str)) -> [return: bb1, unwind unreachable];
+          _1 = copy (_7.0: &str) as u128 (Transmute);
+          _5 = identity::<&str>(copy (_7.0: &str)) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
-          _3 = _5 as u128 (Transmute);
+          _3 = copy _5 as u128 (Transmute);
           _8 = const "a";
-          _2 = _8 as u128 (Transmute);
-          _6 = identity::<&str>(_8) -> [return: bb2, unwind unreachable];
+          _2 = copy _8 as u128 (Transmute);
+          _6 = identity::<&str>(copy _8) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
-          _4 = _6 as u128 (Transmute);
-          _9 = Eq(_1, _2);
-          _10 = Eq(_3, _4);
-          _0 = (_9, _10);
+          _4 = copy _6 as u128 (Transmute);
+          _9 = Eq(copy _1, copy _2);
+          _10 = Eq(copy _3, copy _4);
+          _0 = (copy _9, copy _10);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.duplicate_slice.GVN.panic-unwind.diff b/tests/mir-opt/gvn.duplicate_slice.GVN.panic-unwind.diff
index 8c96edaa280..55f382e926e 100644
--- a/tests/mir-opt/gvn.duplicate_slice.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.duplicate_slice.GVN.panic-unwind.diff
@@ -16,22 +16,22 @@
   
       bb0: {
           _7 = (const "a",);
-          _1 = (_7.0: &str) as u128 (Transmute);
-          _5 = identity::<&str>((_7.0: &str)) -> [return: bb1, unwind continue];
+          _1 = copy (_7.0: &str) as u128 (Transmute);
+          _5 = identity::<&str>(copy (_7.0: &str)) -> [return: bb1, unwind continue];
       }
   
       bb1: {
-          _3 = _5 as u128 (Transmute);
+          _3 = copy _5 as u128 (Transmute);
           _8 = const "a";
-          _2 = _8 as u128 (Transmute);
-          _6 = identity::<&str>(_8) -> [return: bb2, unwind continue];
+          _2 = copy _8 as u128 (Transmute);
+          _6 = identity::<&str>(copy _8) -> [return: bb2, unwind continue];
       }
   
       bb2: {
-          _4 = _6 as u128 (Transmute);
-          _9 = Eq(_1, _2);
-          _10 = Eq(_3, _4);
-          _0 = (_9, _10);
+          _4 = copy _6 as u128 (Transmute);
+          _9 = Eq(copy _1, copy _2);
+          _10 = Eq(copy _3, copy _4);
+          _0 = (copy _9, copy _10);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff b/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff
index b5c0cee7846..42075d11b6c 100644
--- a/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.fn_pointers.GVN.panic-abort.diff
@@ -40,9 +40,9 @@
           _1 = identity::<u8> as fn(u8) -> u8 (PointerCoercion(ReifyFnPointer));
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = opaque::<fn(u8) -> u8>(move _3) -> [return: bb1, unwind unreachable];
-+         _2 = opaque::<fn(u8) -> u8>(_1) -> [return: bb1, unwind unreachable];
++         _2 = opaque::<fn(u8) -> u8>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
@@ -53,9 +53,9 @@
           _4 = identity::<u8> as fn(u8) -> u8 (PointerCoercion(ReifyFnPointer));
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _4;
+          _6 = copy _4;
 -         _5 = opaque::<fn(u8) -> u8>(move _6) -> [return: bb2, unwind unreachable];
-+         _5 = opaque::<fn(u8) -> u8>(_4) -> [return: bb2, unwind unreachable];
++         _5 = opaque::<fn(u8) -> u8>(copy _4) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -68,16 +68,16 @@
 +         _7 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21};
 +         nop;
           StorageLive(_9);
--         _9 = _7;
+-         _9 = copy _7;
 -         _8 = move _9 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
 +         _9 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21};
 +         _8 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
           StorageDead(_9);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _8;
+          _11 = copy _8;
 -         _10 = opaque::<fn()>(move _11) -> [return: bb3, unwind unreachable];
-+         _10 = opaque::<fn()>(_8) -> [return: bb3, unwind unreachable];
++         _10 = opaque::<fn()>(copy _8) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
@@ -86,16 +86,16 @@
 -         StorageLive(_12);
 +         nop;
           StorageLive(_13);
--         _13 = _7;
+-         _13 = copy _7;
 -         _12 = move _13 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
 +         _13 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21};
 +         _12 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
           StorageDead(_13);
           StorageLive(_14);
           StorageLive(_15);
-          _15 = _12;
+          _15 = copy _12;
 -         _14 = opaque::<fn()>(move _15) -> [return: bb4, unwind unreachable];
-+         _14 = opaque::<fn()>(_12) -> [return: bb4, unwind unreachable];
++         _14 = opaque::<fn()>(copy _12) -> [return: bb4, unwind unreachable];
       }
   
       bb4: {
diff --git a/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff b/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff
index 7bc6573c13d..f6ad045bbfa 100644
--- a/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.fn_pointers.GVN.panic-unwind.diff
@@ -40,9 +40,9 @@
           _1 = identity::<u8> as fn(u8) -> u8 (PointerCoercion(ReifyFnPointer));
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = opaque::<fn(u8) -> u8>(move _3) -> [return: bb1, unwind continue];
-+         _2 = opaque::<fn(u8) -> u8>(_1) -> [return: bb1, unwind continue];
++         _2 = opaque::<fn(u8) -> u8>(copy _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
@@ -53,9 +53,9 @@
           _4 = identity::<u8> as fn(u8) -> u8 (PointerCoercion(ReifyFnPointer));
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _4;
+          _6 = copy _4;
 -         _5 = opaque::<fn(u8) -> u8>(move _6) -> [return: bb2, unwind continue];
-+         _5 = opaque::<fn(u8) -> u8>(_4) -> [return: bb2, unwind continue];
++         _5 = opaque::<fn(u8) -> u8>(copy _4) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -68,16 +68,16 @@
 +         _7 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21};
 +         nop;
           StorageLive(_9);
--         _9 = _7;
+-         _9 = copy _7;
 -         _8 = move _9 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
 +         _9 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21};
 +         _8 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
           StorageDead(_9);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _8;
+          _11 = copy _8;
 -         _10 = opaque::<fn()>(move _11) -> [return: bb3, unwind continue];
-+         _10 = opaque::<fn()>(_8) -> [return: bb3, unwind continue];
++         _10 = opaque::<fn()>(copy _8) -> [return: bb3, unwind continue];
       }
   
       bb3: {
@@ -86,16 +86,16 @@
 -         StorageLive(_12);
 +         nop;
           StorageLive(_13);
--         _13 = _7;
+-         _13 = copy _7;
 -         _12 = move _13 as fn() (PointerCoercion(ClosureFnPointer(Safe)));
 +         _13 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21};
 +         _12 = const ZeroSized: {closure@$DIR/gvn.rs:615:19: 615:21} as fn() (PointerCoercion(ClosureFnPointer(Safe)));
           StorageDead(_13);
           StorageLive(_14);
           StorageLive(_15);
-          _15 = _12;
+          _15 = copy _12;
 -         _14 = opaque::<fn()>(move _15) -> [return: bb4, unwind continue];
-+         _14 = opaque::<fn()>(_12) -> [return: bb4, unwind continue];
++         _14 = opaque::<fn()>(copy _12) -> [return: bb4, unwind continue];
       }
   
       bb4: {
diff --git a/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-abort.diff b/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-abort.diff
index 1d462a8a23c..770c6730775 100644
--- a/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-abort.diff
@@ -17,21 +17,21 @@
       let mut _15: <B as std::ptr::Pointee>::Metadata;
   
       bb0: {
-          _4 = _1 as *const T (PtrToPtr);
-          _5 = PtrMetadata(_4);
-          _6 = _1 as *const (&A, [T]) (PtrToPtr);
--         _7 = PtrMetadata(_6);
-+         _7 = PtrMetadata(_1);
-          _8 = _2 as *const (T, B) (PtrToPtr);
-          _9 = PtrMetadata(_8);
-          _10 = _2 as *const (T, A) (PtrToPtr);
--         _11 = PtrMetadata(_10);
-+         _11 = PtrMetadata(_2);
-          _12 = _3 as *mut A (PtrToPtr);
-          _13 = PtrMetadata(_12);
-          _14 = _3 as *mut B (PtrToPtr);
--         _15 = PtrMetadata(_14);
-+         _15 = PtrMetadata(_3);
+          _4 = copy _1 as *const T (PtrToPtr);
+          _5 = PtrMetadata(copy _4);
+          _6 = copy _1 as *const (&A, [T]) (PtrToPtr);
+-         _7 = PtrMetadata(copy _6);
++         _7 = PtrMetadata(copy _1);
+          _8 = copy _2 as *const (T, B) (PtrToPtr);
+          _9 = PtrMetadata(copy _8);
+          _10 = copy _2 as *const (T, A) (PtrToPtr);
+-         _11 = PtrMetadata(copy _10);
++         _11 = PtrMetadata(copy _2);
+          _12 = copy _3 as *mut A (PtrToPtr);
+          _13 = PtrMetadata(copy _12);
+          _14 = copy _3 as *mut B (PtrToPtr);
+-         _15 = PtrMetadata(copy _14);
++         _15 = PtrMetadata(copy _3);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-unwind.diff b/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-unwind.diff
index 1d462a8a23c..770c6730775 100644
--- a/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.generic_cast_metadata.GVN.panic-unwind.diff
@@ -17,21 +17,21 @@
       let mut _15: <B as std::ptr::Pointee>::Metadata;
   
       bb0: {
-          _4 = _1 as *const T (PtrToPtr);
-          _5 = PtrMetadata(_4);
-          _6 = _1 as *const (&A, [T]) (PtrToPtr);
--         _7 = PtrMetadata(_6);
-+         _7 = PtrMetadata(_1);
-          _8 = _2 as *const (T, B) (PtrToPtr);
-          _9 = PtrMetadata(_8);
-          _10 = _2 as *const (T, A) (PtrToPtr);
--         _11 = PtrMetadata(_10);
-+         _11 = PtrMetadata(_2);
-          _12 = _3 as *mut A (PtrToPtr);
-          _13 = PtrMetadata(_12);
-          _14 = _3 as *mut B (PtrToPtr);
--         _15 = PtrMetadata(_14);
-+         _15 = PtrMetadata(_3);
+          _4 = copy _1 as *const T (PtrToPtr);
+          _5 = PtrMetadata(copy _4);
+          _6 = copy _1 as *const (&A, [T]) (PtrToPtr);
+-         _7 = PtrMetadata(copy _6);
++         _7 = PtrMetadata(copy _1);
+          _8 = copy _2 as *const (T, B) (PtrToPtr);
+          _9 = PtrMetadata(copy _8);
+          _10 = copy _2 as *const (T, A) (PtrToPtr);
+-         _11 = PtrMetadata(copy _10);
++         _11 = PtrMetadata(copy _2);
+          _12 = copy _3 as *mut A (PtrToPtr);
+          _13 = PtrMetadata(copy _12);
+          _14 = copy _3 as *mut B (PtrToPtr);
+-         _15 = PtrMetadata(copy _14);
++         _15 = PtrMetadata(copy _3);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff b/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff
index e84f91e495d..97f41f89fb2 100644
--- a/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.indirect_static.GVN.panic-abort.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           _1 = const {ALLOC0: &Option<u8>};
-          _2 = (((*_1) as variant#1).0: u8);
+          _2 = copy (((*_1) as variant#1).0: u8);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff b/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff
index e84f91e495d..97f41f89fb2 100644
--- a/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.indirect_static.GVN.panic-unwind.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           _1 = const {ALLOC0: &Option<u8>};
-          _2 = (((*_1) as variant#1).0: u8);
+          _2 = copy (((*_1) as variant#1).0: u8);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-abort.diff b/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-abort.diff
index c877d8a3c0e..936fa3db82a 100644
--- a/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-abort.diff
@@ -22,14 +22,14 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _3 = move _4 as *const [i32] (PtrToPtr);
-+         _3 = _2 as *const [i32] (PtrToPtr);
++         _3 = copy _2 as *const [i32] (PtrToPtr);
           StorageDead(_4);
           StorageLive(_5);
-          _5 = _3;
+          _5 = copy _3;
 -         _0 = PtrMetadata(move _5);
-+         _0 = PtrMetadata(_1);
++         _0 = PtrMetadata(copy _1);
           StorageDead(_5);
 -         StorageDead(_3);
 -         StorageDead(_2);
diff --git a/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-unwind.diff b/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-unwind.diff
index c877d8a3c0e..936fa3db82a 100644
--- a/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.manual_slice_mut_len.GVN.panic-unwind.diff
@@ -22,14 +22,14 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _3 = move _4 as *const [i32] (PtrToPtr);
-+         _3 = _2 as *const [i32] (PtrToPtr);
++         _3 = copy _2 as *const [i32] (PtrToPtr);
           StorageDead(_4);
           StorageLive(_5);
-          _5 = _3;
+          _5 = copy _3;
 -         _0 = PtrMetadata(move _5);
-+         _0 = PtrMetadata(_1);
++         _0 = PtrMetadata(copy _1);
           StorageDead(_5);
 -         StorageDead(_3);
 -         StorageDead(_2);
diff --git a/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-abort.diff b/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-abort.diff
index 73dbabb56b3..3ed6c2b5308 100644
--- a/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-abort.diff
@@ -15,12 +15,12 @@
 -         StorageLive(_2);
 +         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = *const [i32] from (move _3, const 1_usize);
-+         _2 = *const [i32] from (_1, const 1_usize);
++         _2 = *const [i32] from (copy _1, const 1_usize);
           StorageDead(_3);
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = PtrMetadata(move _4);
 +         _0 = const 1_usize;
           StorageDead(_4);
diff --git a/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-unwind.diff b/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-unwind.diff
index 73dbabb56b3..3ed6c2b5308 100644
--- a/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.meta_of_ref_to_slice.GVN.panic-unwind.diff
@@ -15,12 +15,12 @@
 -         StorageLive(_2);
 +         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = *const [i32] from (move _3, const 1_usize);
-+         _2 = *const [i32] from (_1, const 1_usize);
++         _2 = *const [i32] from (copy _1, const 1_usize);
           StorageDead(_3);
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = PtrMetadata(move _4);
 +         _0 = const 1_usize;
           StorageDead(_4);
diff --git a/tests/mir-opt/gvn.multiple_branches.GVN.panic-abort.diff b/tests/mir-opt/gvn.multiple_branches.GVN.panic-abort.diff
index 29ca1ba5902..f300ce7e884 100644
--- a/tests/mir-opt/gvn.multiple_branches.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.multiple_branches.GVN.panic-abort.diff
@@ -41,9 +41,9 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         switchInt(move _5) -> [0: bb4, otherwise: bb1];
-+         switchInt(_1) -> [0: bb4, otherwise: bb1];
++         switchInt(copy _1) -> [0: bb4, otherwise: bb1];
       }
   
       bb1: {
@@ -51,15 +51,15 @@
 -         StorageLive(_7);
 +         nop;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
           StorageLive(_9);
-          _9 = _3;
+          _9 = copy _3;
 -         _7 = Add(move _8, move _9);
-+         _7 = Add(_2, _3);
++         _7 = Add(copy _2, copy _3);
           StorageDead(_9);
           StorageDead(_8);
 -         _6 = opaque::<u8>(move _7) -> [return: bb2, unwind unreachable];
-+         _6 = opaque::<u8>(_7) -> [return: bb2, unwind unreachable];
++         _6 = opaque::<u8>(copy _7) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -69,15 +69,15 @@
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
           StorageLive(_13);
-          _13 = _3;
+          _13 = copy _3;
 -         _11 = Add(move _12, move _13);
-+         _11 = _7;
++         _11 = copy _7;
           StorageDead(_13);
           StorageDead(_12);
 -         _10 = opaque::<u8>(move _11) -> [return: bb3, unwind unreachable];
-+         _10 = opaque::<u8>(_7) -> [return: bb3, unwind unreachable];
++         _10 = opaque::<u8>(copy _7) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
@@ -92,15 +92,15 @@
 -         StorageLive(_15);
 +         nop;
           StorageLive(_16);
-          _16 = _2;
+          _16 = copy _2;
           StorageLive(_17);
-          _17 = _3;
+          _17 = copy _3;
 -         _15 = Add(move _16, move _17);
-+         _15 = Add(_2, _3);
++         _15 = Add(copy _2, copy _3);
           StorageDead(_17);
           StorageDead(_16);
 -         _14 = opaque::<u8>(move _15) -> [return: bb5, unwind unreachable];
-+         _14 = opaque::<u8>(_15) -> [return: bb5, unwind unreachable];
++         _14 = opaque::<u8>(copy _15) -> [return: bb5, unwind unreachable];
       }
   
       bb5: {
@@ -110,15 +110,15 @@
           StorageLive(_18);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _2;
+          _20 = copy _2;
           StorageLive(_21);
-          _21 = _3;
+          _21 = copy _3;
 -         _19 = Add(move _20, move _21);
-+         _19 = _15;
++         _19 = copy _15;
           StorageDead(_21);
           StorageDead(_20);
 -         _18 = opaque::<u8>(move _19) -> [return: bb6, unwind unreachable];
-+         _18 = opaque::<u8>(_15) -> [return: bb6, unwind unreachable];
++         _18 = opaque::<u8>(copy _15) -> [return: bb6, unwind unreachable];
       }
   
       bb6: {
@@ -135,15 +135,15 @@
 -         StorageLive(_23);
 +         nop;
           StorageLive(_24);
-          _24 = _2;
+          _24 = copy _2;
           StorageLive(_25);
-          _25 = _3;
+          _25 = copy _3;
 -         _23 = Add(move _24, move _25);
-+         _23 = Add(_2, _3);
++         _23 = Add(copy _2, copy _3);
           StorageDead(_25);
           StorageDead(_24);
 -         _22 = opaque::<u8>(move _23) -> [return: bb8, unwind unreachable];
-+         _22 = opaque::<u8>(_23) -> [return: bb8, unwind unreachable];
++         _22 = opaque::<u8>(copy _23) -> [return: bb8, unwind unreachable];
       }
   
       bb8: {
@@ -151,24 +151,24 @@
 +         nop;
           StorageDead(_22);
           StorageLive(_26);
-          _26 = _1;
+          _26 = copy _1;
 -         switchInt(move _26) -> [0: bb11, otherwise: bb9];
-+         switchInt(_1) -> [0: bb11, otherwise: bb9];
++         switchInt(copy _1) -> [0: bb11, otherwise: bb9];
       }
   
       bb9: {
           StorageLive(_27);
           StorageLive(_28);
           StorageLive(_29);
-          _29 = _2;
+          _29 = copy _2;
           StorageLive(_30);
-          _30 = _3;
+          _30 = copy _3;
 -         _28 = Add(move _29, move _30);
-+         _28 = _23;
++         _28 = copy _23;
           StorageDead(_30);
           StorageDead(_29);
 -         _27 = opaque::<u8>(move _28) -> [return: bb10, unwind unreachable];
-+         _27 = opaque::<u8>(_23) -> [return: bb10, unwind unreachable];
++         _27 = opaque::<u8>(copy _23) -> [return: bb10, unwind unreachable];
       }
   
       bb10: {
@@ -182,15 +182,15 @@
           StorageLive(_31);
           StorageLive(_32);
           StorageLive(_33);
-          _33 = _2;
+          _33 = copy _2;
           StorageLive(_34);
-          _34 = _3;
+          _34 = copy _3;
 -         _32 = Add(move _33, move _34);
-+         _32 = _23;
++         _32 = copy _23;
           StorageDead(_34);
           StorageDead(_33);
 -         _31 = opaque::<u8>(move _32) -> [return: bb12, unwind unreachable];
-+         _31 = opaque::<u8>(_23) -> [return: bb12, unwind unreachable];
++         _31 = opaque::<u8>(copy _23) -> [return: bb12, unwind unreachable];
       }
   
       bb12: {
diff --git a/tests/mir-opt/gvn.multiple_branches.GVN.panic-unwind.diff b/tests/mir-opt/gvn.multiple_branches.GVN.panic-unwind.diff
index 5394dc8be8a..f34765534cc 100644
--- a/tests/mir-opt/gvn.multiple_branches.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.multiple_branches.GVN.panic-unwind.diff
@@ -41,9 +41,9 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         switchInt(move _5) -> [0: bb4, otherwise: bb1];
-+         switchInt(_1) -> [0: bb4, otherwise: bb1];
++         switchInt(copy _1) -> [0: bb4, otherwise: bb1];
       }
   
       bb1: {
@@ -51,15 +51,15 @@
 -         StorageLive(_7);
 +         nop;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
           StorageLive(_9);
-          _9 = _3;
+          _9 = copy _3;
 -         _7 = Add(move _8, move _9);
-+         _7 = Add(_2, _3);
++         _7 = Add(copy _2, copy _3);
           StorageDead(_9);
           StorageDead(_8);
 -         _6 = opaque::<u8>(move _7) -> [return: bb2, unwind continue];
-+         _6 = opaque::<u8>(_7) -> [return: bb2, unwind continue];
++         _6 = opaque::<u8>(copy _7) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -69,15 +69,15 @@
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
           StorageLive(_13);
-          _13 = _3;
+          _13 = copy _3;
 -         _11 = Add(move _12, move _13);
-+         _11 = _7;
++         _11 = copy _7;
           StorageDead(_13);
           StorageDead(_12);
 -         _10 = opaque::<u8>(move _11) -> [return: bb3, unwind continue];
-+         _10 = opaque::<u8>(_7) -> [return: bb3, unwind continue];
++         _10 = opaque::<u8>(copy _7) -> [return: bb3, unwind continue];
       }
   
       bb3: {
@@ -92,15 +92,15 @@
 -         StorageLive(_15);
 +         nop;
           StorageLive(_16);
-          _16 = _2;
+          _16 = copy _2;
           StorageLive(_17);
-          _17 = _3;
+          _17 = copy _3;
 -         _15 = Add(move _16, move _17);
-+         _15 = Add(_2, _3);
++         _15 = Add(copy _2, copy _3);
           StorageDead(_17);
           StorageDead(_16);
 -         _14 = opaque::<u8>(move _15) -> [return: bb5, unwind continue];
-+         _14 = opaque::<u8>(_15) -> [return: bb5, unwind continue];
++         _14 = opaque::<u8>(copy _15) -> [return: bb5, unwind continue];
       }
   
       bb5: {
@@ -110,15 +110,15 @@
           StorageLive(_18);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _2;
+          _20 = copy _2;
           StorageLive(_21);
-          _21 = _3;
+          _21 = copy _3;
 -         _19 = Add(move _20, move _21);
-+         _19 = _15;
++         _19 = copy _15;
           StorageDead(_21);
           StorageDead(_20);
 -         _18 = opaque::<u8>(move _19) -> [return: bb6, unwind continue];
-+         _18 = opaque::<u8>(_15) -> [return: bb6, unwind continue];
++         _18 = opaque::<u8>(copy _15) -> [return: bb6, unwind continue];
       }
   
       bb6: {
@@ -135,15 +135,15 @@
 -         StorageLive(_23);
 +         nop;
           StorageLive(_24);
-          _24 = _2;
+          _24 = copy _2;
           StorageLive(_25);
-          _25 = _3;
+          _25 = copy _3;
 -         _23 = Add(move _24, move _25);
-+         _23 = Add(_2, _3);
++         _23 = Add(copy _2, copy _3);
           StorageDead(_25);
           StorageDead(_24);
 -         _22 = opaque::<u8>(move _23) -> [return: bb8, unwind continue];
-+         _22 = opaque::<u8>(_23) -> [return: bb8, unwind continue];
++         _22 = opaque::<u8>(copy _23) -> [return: bb8, unwind continue];
       }
   
       bb8: {
@@ -151,24 +151,24 @@
 +         nop;
           StorageDead(_22);
           StorageLive(_26);
-          _26 = _1;
+          _26 = copy _1;
 -         switchInt(move _26) -> [0: bb11, otherwise: bb9];
-+         switchInt(_1) -> [0: bb11, otherwise: bb9];
++         switchInt(copy _1) -> [0: bb11, otherwise: bb9];
       }
   
       bb9: {
           StorageLive(_27);
           StorageLive(_28);
           StorageLive(_29);
-          _29 = _2;
+          _29 = copy _2;
           StorageLive(_30);
-          _30 = _3;
+          _30 = copy _3;
 -         _28 = Add(move _29, move _30);
-+         _28 = _23;
++         _28 = copy _23;
           StorageDead(_30);
           StorageDead(_29);
 -         _27 = opaque::<u8>(move _28) -> [return: bb10, unwind continue];
-+         _27 = opaque::<u8>(_23) -> [return: bb10, unwind continue];
++         _27 = opaque::<u8>(copy _23) -> [return: bb10, unwind continue];
       }
   
       bb10: {
@@ -182,15 +182,15 @@
           StorageLive(_31);
           StorageLive(_32);
           StorageLive(_33);
-          _33 = _2;
+          _33 = copy _2;
           StorageLive(_34);
-          _34 = _3;
+          _34 = copy _3;
 -         _32 = Add(move _33, move _34);
-+         _32 = _23;
++         _32 = copy _23;
           StorageDead(_34);
           StorageDead(_33);
 -         _31 = opaque::<u8>(move _32) -> [return: bb12, unwind continue];
-+         _31 = opaque::<u8>(_23) -> [return: bb12, unwind continue];
++         _31 = opaque::<u8>(copy _23) -> [return: bb12, unwind continue];
       }
   
       bb12: {
diff --git a/tests/mir-opt/gvn.non_freeze.GVN.panic-abort.diff b/tests/mir-opt/gvn.non_freeze.GVN.panic-abort.diff
index 7b6ed096118..377b4d7670c 100644
--- a/tests/mir-opt/gvn.non_freeze.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.non_freeze.GVN.panic-abort.diff
@@ -7,17 +7,17 @@
       let mut _3: &T;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind unreachable];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
-          _0 = opaque::<T>(_2) -> [return: bb2, unwind unreachable];
+          _0 = opaque::<T>(copy _2) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
-          _0 = opaque::<T>((*_3)) -> [return: bb3, unwind unreachable];
+          _0 = opaque::<T>(copy (*_3)) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
diff --git a/tests/mir-opt/gvn.non_freeze.GVN.panic-unwind.diff b/tests/mir-opt/gvn.non_freeze.GVN.panic-unwind.diff
index 641a2f4609a..988eee07cc9 100644
--- a/tests/mir-opt/gvn.non_freeze.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.non_freeze.GVN.panic-unwind.diff
@@ -7,17 +7,17 @@
       let mut _3: &T;
   
       bb0: {
-          _2 = _1;
+          _2 = copy _1;
           _3 = &_1;
-          _0 = opaque::<&T>(_3) -> [return: bb1, unwind continue];
+          _0 = opaque::<&T>(copy _3) -> [return: bb1, unwind continue];
       }
   
       bb1: {
-          _0 = opaque::<T>(_2) -> [return: bb2, unwind continue];
+          _0 = opaque::<T>(copy _2) -> [return: bb2, unwind continue];
       }
   
       bb2: {
-          _0 = opaque::<T>((*_3)) -> [return: bb3, unwind continue];
+          _0 = opaque::<T>(copy (*_3)) -> [return: bb3, unwind continue];
       }
   
       bb3: {
diff --git a/tests/mir-opt/gvn.references.GVN.panic-abort.diff b/tests/mir-opt/gvn.references.GVN.panic-abort.diff
index 7799c611445..62a487dee82 100644
--- a/tests/mir-opt/gvn.references.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.references.GVN.panic-abort.diff
@@ -120,11 +120,11 @@
           StorageLive(_21);
 -         _21 = move _18;
 -         _20 = S::<&mut impl Sized>(move _21);
-+         _21 = _18;
-+         _20 = S::<&mut impl Sized>(_18);
++         _21 = copy _18;
++         _20 = S::<&mut impl Sized>(copy _18);
           StorageDead(_21);
 -         _19 = move (_20.0: &mut impl Sized);
-+         _19 = _18;
++         _19 = copy _18;
           StorageDead(_20);
           StorageLive(_22);
           StorageLive(_23);
diff --git a/tests/mir-opt/gvn.references.GVN.panic-unwind.diff b/tests/mir-opt/gvn.references.GVN.panic-unwind.diff
index 880e7913fa9..6dd986907fc 100644
--- a/tests/mir-opt/gvn.references.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.references.GVN.panic-unwind.diff
@@ -120,11 +120,11 @@
           StorageLive(_21);
 -         _21 = move _18;
 -         _20 = S::<&mut impl Sized>(move _21);
-+         _21 = _18;
-+         _20 = S::<&mut impl Sized>(_18);
++         _21 = copy _18;
++         _20 = S::<&mut impl Sized>(copy _18);
           StorageDead(_21);
 -         _19 = move (_20.0: &mut impl Sized);
-+         _19 = _18;
++         _19 = copy _18;
           StorageDead(_20);
           StorageLive(_22);
           StorageLive(_23);
diff --git a/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-abort.diff b/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-abort.diff
index 8b4bfb70401..98cb34810bc 100644
--- a/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-abort.diff
@@ -7,9 +7,9 @@
       let mut _4: *const u8;
   
       bb0: {
-          _3 = (*_1) as *const u8 (PtrToPtr);
-          _4 = _2 as *const u8 (PtrToPtr);
-          _0 = Eq(_3, _4);
+          _3 = copy (*_1) as *const u8 (PtrToPtr);
+          _4 = copy _2 as *const u8 (PtrToPtr);
+          _0 = Eq(copy _3, copy _4);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-unwind.diff b/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-unwind.diff
index 8b4bfb70401..98cb34810bc 100644
--- a/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.remove_casts_must_change_both_sides.GVN.panic-unwind.diff
@@ -7,9 +7,9 @@
       let mut _4: *const u8;
   
       bb0: {
-          _3 = (*_1) as *const u8 (PtrToPtr);
-          _4 = _2 as *const u8 (PtrToPtr);
-          _0 = Eq(_3, _4);
+          _3 = copy (*_1) as *const u8 (PtrToPtr);
+          _4 = copy _2 as *const u8 (PtrToPtr);
+          _0 = Eq(copy _3, copy _4);
           return;
       }
   }
diff --git a/tests/mir-opt/gvn.repeat.GVN.panic-abort.diff b/tests/mir-opt/gvn.repeat.GVN.panic-abort.diff
index 37915f8578d..ef2eb1a6677 100644
--- a/tests/mir-opt/gvn.repeat.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.repeat.GVN.panic-abort.diff
@@ -28,34 +28,34 @@
           _1 = const 5_i32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 +         _3 = const 5_i32;
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 +         _4 = const 5_i32;
           StorageLive(_5);
--         _5 = _1;
+-         _5 = copy _1;
 +         _5 = const 5_i32;
           StorageLive(_6);
--         _6 = _1;
+-         _6 = copy _1;
 +         _6 = const 5_i32;
           StorageLive(_7);
--         _7 = _1;
+-         _7 = copy _1;
 +         _7 = const 5_i32;
           StorageLive(_8);
--         _8 = _1;
+-         _8 = copy _1;
 +         _8 = const 5_i32;
           StorageLive(_9);
--         _9 = _1;
+-         _9 = copy _1;
 +         _9 = const 5_i32;
           StorageLive(_10);
--         _10 = _1;
+-         _10 = copy _1;
 +         _10 = const 5_i32;
           StorageLive(_11);
--         _11 = _1;
+-         _11 = copy _1;
 +         _11 = const 5_i32;
           StorageLive(_12);
--         _12 = _1;
+-         _12 = copy _1;
 -         _2 = [move _3, move _4, move _5, move _6, move _7, move _8, move _9, move _10, move _11, move _12];
 +         _12 = const 5_i32;
 +         _2 = [const 5_i32; 10];
diff --git a/tests/mir-opt/gvn.repeat.GVN.panic-unwind.diff b/tests/mir-opt/gvn.repeat.GVN.panic-unwind.diff
index 37915f8578d..ef2eb1a6677 100644
--- a/tests/mir-opt/gvn.repeat.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.repeat.GVN.panic-unwind.diff
@@ -28,34 +28,34 @@
           _1 = const 5_i32;
           StorageLive(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 +         _3 = const 5_i32;
           StorageLive(_4);
--         _4 = _1;
+-         _4 = copy _1;
 +         _4 = const 5_i32;
           StorageLive(_5);
--         _5 = _1;
+-         _5 = copy _1;
 +         _5 = const 5_i32;
           StorageLive(_6);
--         _6 = _1;
+-         _6 = copy _1;
 +         _6 = const 5_i32;
           StorageLive(_7);
--         _7 = _1;
+-         _7 = copy _1;
 +         _7 = const 5_i32;
           StorageLive(_8);
--         _8 = _1;
+-         _8 = copy _1;
 +         _8 = const 5_i32;
           StorageLive(_9);
--         _9 = _1;
+-         _9 = copy _1;
 +         _9 = const 5_i32;
           StorageLive(_10);
--         _10 = _1;
+-         _10 = copy _1;
 +         _10 = const 5_i32;
           StorageLive(_11);
--         _11 = _1;
+-         _11 = copy _1;
 +         _11 = const 5_i32;
           StorageLive(_12);
--         _12 = _1;
+-         _12 = copy _1;
 -         _2 = [move _3, move _4, move _5, move _6, move _7, move _8, move _9, move _10, move _11, move _12];
 +         _12 = const 5_i32;
 +         _2 = [const 5_i32; 10];
diff --git a/tests/mir-opt/gvn.repeated_index.GVN.panic-abort.diff b/tests/mir-opt/gvn.repeated_index.GVN.panic-abort.diff
index 8ce05c9b340..d4b22d05f6c 100644
--- a/tests/mir-opt/gvn.repeated_index.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.repeated_index.GVN.panic-abort.diff
@@ -24,27 +24,27 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = [move _4; N];
-+         _3 = [_1; N];
++         _3 = [copy _1; N];
           StorageDead(_4);
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
           _7 = const 0_usize;
 -         _8 = Len(_3);
--         _9 = Lt(_7, _8);
--         assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb1, unwind unreachable];
+-         _9 = Lt(copy _7, copy _8);
+-         assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb1, unwind unreachable];
 +         _8 = const N;
 +         _9 = Lt(const 0_usize, const N);
 +         assert(move _9, "index out of bounds: the length is {} but the index is {}", const N, const 0_usize) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
--         _6 = _3[_7];
+-         _6 = copy _3[_7];
 -         _5 = opaque::<T>(move _6) -> [return: bb2, unwind unreachable];
-+         _6 = _1;
-+         _5 = opaque::<T>(_1) -> [return: bb2, unwind unreachable];
++         _6 = copy _1;
++         _5 = opaque::<T>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -54,20 +54,20 @@
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
 -         _13 = Len(_3);
--         _14 = Lt(_12, _13);
--         assert(move _14, "index out of bounds: the length is {} but the index is {}", move _13, _12) -> [success: bb3, unwind unreachable];
+-         _14 = Lt(copy _12, copy _13);
+-         assert(move _14, "index out of bounds: the length is {} but the index is {}", move _13, copy _12) -> [success: bb3, unwind unreachable];
 +         _13 = const N;
-+         _14 = Lt(_2, const N);
-+         assert(move _14, "index out of bounds: the length is {} but the index is {}", const N, _2) -> [success: bb3, unwind unreachable];
++         _14 = Lt(copy _2, const N);
++         assert(move _14, "index out of bounds: the length is {} but the index is {}", const N, copy _2) -> [success: bb3, unwind unreachable];
       }
   
       bb3: {
--         _11 = _3[_12];
+-         _11 = copy _3[_12];
 -         _10 = opaque::<T>(move _11) -> [return: bb4, unwind unreachable];
-+         _11 = _1;
-+         _10 = opaque::<T>(_1) -> [return: bb4, unwind unreachable];
++         _11 = copy _1;
++         _10 = opaque::<T>(copy _1) -> [return: bb4, unwind unreachable];
       }
   
       bb4: {
diff --git a/tests/mir-opt/gvn.repeated_index.GVN.panic-unwind.diff b/tests/mir-opt/gvn.repeated_index.GVN.panic-unwind.diff
index 7ed547eeb4a..708c0f92e54 100644
--- a/tests/mir-opt/gvn.repeated_index.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.repeated_index.GVN.panic-unwind.diff
@@ -24,27 +24,27 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = [move _4; N];
-+         _3 = [_1; N];
++         _3 = [copy _1; N];
           StorageDead(_4);
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
           _7 = const 0_usize;
 -         _8 = Len(_3);
--         _9 = Lt(_7, _8);
--         assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb1, unwind continue];
+-         _9 = Lt(copy _7, copy _8);
+-         assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb1, unwind continue];
 +         _8 = const N;
 +         _9 = Lt(const 0_usize, const N);
 +         assert(move _9, "index out of bounds: the length is {} but the index is {}", const N, const 0_usize) -> [success: bb1, unwind continue];
       }
   
       bb1: {
--         _6 = _3[_7];
+-         _6 = copy _3[_7];
 -         _5 = opaque::<T>(move _6) -> [return: bb2, unwind continue];
-+         _6 = _1;
-+         _5 = opaque::<T>(_1) -> [return: bb2, unwind continue];
++         _6 = copy _1;
++         _5 = opaque::<T>(copy _1) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -54,20 +54,20 @@
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
 -         _13 = Len(_3);
--         _14 = Lt(_12, _13);
--         assert(move _14, "index out of bounds: the length is {} but the index is {}", move _13, _12) -> [success: bb3, unwind continue];
+-         _14 = Lt(copy _12, copy _13);
+-         assert(move _14, "index out of bounds: the length is {} but the index is {}", move _13, copy _12) -> [success: bb3, unwind continue];
 +         _13 = const N;
-+         _14 = Lt(_2, const N);
-+         assert(move _14, "index out of bounds: the length is {} but the index is {}", const N, _2) -> [success: bb3, unwind continue];
++         _14 = Lt(copy _2, const N);
++         assert(move _14, "index out of bounds: the length is {} but the index is {}", const N, copy _2) -> [success: bb3, unwind continue];
       }
   
       bb3: {
--         _11 = _3[_12];
+-         _11 = copy _3[_12];
 -         _10 = opaque::<T>(move _11) -> [return: bb4, unwind continue];
-+         _11 = _1;
-+         _10 = opaque::<T>(_1) -> [return: bb4, unwind continue];
++         _11 = copy _1;
++         _10 = opaque::<T>(copy _1) -> [return: bb4, unwind continue];
       }
   
       bb4: {
diff --git a/tests/mir-opt/gvn.slice_const_length.GVN.panic-abort.diff b/tests/mir-opt/gvn.slice_const_length.GVN.panic-abort.diff
index fd5fa035d81..1a6204e4ac8 100644
--- a/tests/mir-opt/gvn.slice_const_length.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.slice_const_length.GVN.panic-abort.diff
@@ -30,12 +30,12 @@
 +         nop;
           _4 = const 123_usize;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           StorageLive(_6);
--         _6 = _4;
+-         _6 = copy _4;
 -         _0 = *const [i32] from (move _5, move _6);
 +         _6 = const 123_usize;
-+         _0 = *const [i32] from (_2, const 123_usize);
++         _0 = *const [i32] from (copy _2, const 123_usize);
           StorageDead(_6);
           StorageDead(_5);
 -         StorageDead(_4);
diff --git a/tests/mir-opt/gvn.slice_const_length.GVN.panic-unwind.diff b/tests/mir-opt/gvn.slice_const_length.GVN.panic-unwind.diff
index 98945cf9724..62d57b0fe28 100644
--- a/tests/mir-opt/gvn.slice_const_length.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.slice_const_length.GVN.panic-unwind.diff
@@ -30,12 +30,12 @@
 +         nop;
           _4 = const 123_usize;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           StorageLive(_6);
--         _6 = _4;
+-         _6 = copy _4;
 -         _0 = *const [i32] from (move _5, move _6);
 +         _6 = const 123_usize;
-+         _0 = *const [i32] from (_2, const 123_usize);
++         _0 = *const [i32] from (copy _2, const 123_usize);
           StorageDead(_6);
           StorageDead(_5);
 -         StorageDead(_4);
diff --git a/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-abort.diff b/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-abort.diff
index 75bcd2a8d72..4a2cc251891 100644
--- a/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-abort.diff
@@ -20,27 +20,27 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = *const [u16] from (move _4, move _5);
-+         _3 = *const [u16] from (_1, _2);
++         _3 = *const [u16] from (copy _1, copy _2);
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _3;
+          _7 = copy _3;
 -         _6 = move _7 as *const u16 (PtrToPtr);
-+         _6 = _1;
++         _6 = copy _1;
           StorageDead(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _3;
+          _9 = copy _3;
 -         _8 = move _9 as *const f32 (PtrToPtr);
-+         _8 = _1 as *const f32 (PtrToPtr);
++         _8 = copy _1 as *const f32 (PtrToPtr);
           StorageDead(_9);
 -         _0 = (move _6, move _8);
-+         _0 = (_1, move _8);
++         _0 = (copy _1, move _8);
           StorageDead(_8);
           StorageDead(_6);
 -         StorageDead(_3);
diff --git a/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-unwind.diff b/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-unwind.diff
index 75bcd2a8d72..4a2cc251891 100644
--- a/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.slice_from_raw_parts_as_ptr.GVN.panic-unwind.diff
@@ -20,27 +20,27 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = *const [u16] from (move _4, move _5);
-+         _3 = *const [u16] from (_1, _2);
++         _3 = *const [u16] from (copy _1, copy _2);
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _3;
+          _7 = copy _3;
 -         _6 = move _7 as *const u16 (PtrToPtr);
-+         _6 = _1;
++         _6 = copy _1;
           StorageDead(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _3;
+          _9 = copy _3;
 -         _8 = move _9 as *const f32 (PtrToPtr);
-+         _8 = _1 as *const f32 (PtrToPtr);
++         _8 = copy _1 as *const f32 (PtrToPtr);
           StorageDead(_9);
 -         _0 = (move _6, move _8);
-+         _0 = (_1, move _8);
++         _0 = (copy _1, move _8);
           StorageDead(_8);
           StorageDead(_6);
 -         StorageDead(_3);
diff --git a/tests/mir-opt/gvn.slices.GVN.panic-abort.diff b/tests/mir-opt/gvn.slices.GVN.panic-abort.diff
index fb67e3d5994..e8e99b44e72 100644
--- a/tests/mir-opt/gvn.slices.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.slices.GVN.panic-abort.diff
@@ -87,22 +87,22 @@
           _1 = const "my favourite slice";
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = opaque::<&str>(move _3) -> [return: bb1, unwind unreachable];
-+         _2 = opaque::<&str>(_1) -> [return: bb1, unwind unreachable];
++         _2 = opaque::<&str>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
           StorageDead(_3);
           StorageDead(_2);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
           StorageLive(_6);
--         _6 = _4;
+-         _6 = copy _4;
 -         _5 = opaque::<&str>(move _6) -> [return: bb2, unwind unreachable];
-+         _6 = _1;
-+         _5 = opaque::<&str>(_1) -> [return: bb2, unwind unreachable];
++         _6 = copy _1;
++         _5 = opaque::<&str>(copy _1) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -138,24 +138,24 @@
 -         _8 = (move _9, move _12);
 -         StorageDead(_12);
 -         StorageDead(_9);
-+         _8 = (_9, _12);
++         _8 = (copy _9, copy _12);
 +         nop;
 +         nop;
           StorageLive(_15);
--         _15 = (_8.0: &*const u8);
-+         _15 = _9;
+-         _15 = copy (_8.0: &*const u8);
++         _15 = copy _9;
           StorageLive(_16);
--         _16 = (_8.1: &*const u8);
-+         _16 = _12;
+-         _16 = copy (_8.1: &*const u8);
++         _16 = copy _12;
           StorageLive(_17);
           StorageLive(_18);
--         _18 = (*_15);
-+         _18 = _10;
+-         _18 = copy (*_15);
++         _18 = copy _10;
           StorageLive(_19);
--         _19 = (*_16);
+-         _19 = copy (*_16);
 -         _17 = Eq(move _18, move _19);
-+         _19 = _13;
-+         _17 = Eq(_10, _13);
++         _19 = copy _13;
++         _17 = Eq(copy _10, copy _13);
           switchInt(move _17) -> [0: bb6, otherwise: bb5];
       }
   
@@ -180,9 +180,9 @@
           StorageDead(_30);
           StorageLive(_31);
           StorageLive(_32);
-          _32 = _29;
+          _32 = copy _29;
 -         _31 = opaque::<&[u8]>(move _32) -> [return: bb7, unwind unreachable];
-+         _31 = opaque::<&[u8]>(_29) -> [return: bb7, unwind unreachable];
++         _31 = opaque::<&[u8]>(copy _29) -> [return: bb7, unwind unreachable];
       }
   
       bb6: {
@@ -244,24 +244,24 @@
 -         _34 = (move _35, move _38);
 -         StorageDead(_38);
 -         StorageDead(_35);
-+         _34 = (_35, _38);
++         _34 = (copy _35, copy _38);
 +         nop;
 +         nop;
           StorageLive(_41);
--         _41 = (_34.0: &*const u8);
-+         _41 = _35;
+-         _41 = copy (_34.0: &*const u8);
++         _41 = copy _35;
           StorageLive(_42);
--         _42 = (_34.1: &*const u8);
-+         _42 = _38;
+-         _42 = copy (_34.1: &*const u8);
++         _42 = copy _38;
           StorageLive(_43);
           StorageLive(_44);
--         _44 = (*_41);
-+         _44 = _36;
+-         _44 = copy (*_41);
++         _44 = copy _36;
           StorageLive(_45);
--         _45 = (*_42);
+-         _45 = copy (*_42);
 -         _43 = Eq(move _44, move _45);
-+         _45 = _39;
-+         _43 = Eq(_36, _39);
++         _45 = copy _39;
++         _43 = Eq(copy _36, copy _39);
           switchInt(move _43) -> [0: bb11, otherwise: bb10];
       }
   
diff --git a/tests/mir-opt/gvn.slices.GVN.panic-unwind.diff b/tests/mir-opt/gvn.slices.GVN.panic-unwind.diff
index ae3013b011e..4296d4d4a59 100644
--- a/tests/mir-opt/gvn.slices.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.slices.GVN.panic-unwind.diff
@@ -87,22 +87,22 @@
           _1 = const "my favourite slice";
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = opaque::<&str>(move _3) -> [return: bb1, unwind continue];
-+         _2 = opaque::<&str>(_1) -> [return: bb1, unwind continue];
++         _2 = opaque::<&str>(copy _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
           StorageDead(_3);
           StorageDead(_2);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
           StorageLive(_6);
--         _6 = _4;
+-         _6 = copy _4;
 -         _5 = opaque::<&str>(move _6) -> [return: bb2, unwind continue];
-+         _6 = _1;
-+         _5 = opaque::<&str>(_1) -> [return: bb2, unwind continue];
++         _6 = copy _1;
++         _5 = opaque::<&str>(copy _1) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -138,24 +138,24 @@
 -         _8 = (move _9, move _12);
 -         StorageDead(_12);
 -         StorageDead(_9);
-+         _8 = (_9, _12);
++         _8 = (copy _9, copy _12);
 +         nop;
 +         nop;
           StorageLive(_15);
--         _15 = (_8.0: &*const u8);
-+         _15 = _9;
+-         _15 = copy (_8.0: &*const u8);
++         _15 = copy _9;
           StorageLive(_16);
--         _16 = (_8.1: &*const u8);
-+         _16 = _12;
+-         _16 = copy (_8.1: &*const u8);
++         _16 = copy _12;
           StorageLive(_17);
           StorageLive(_18);
--         _18 = (*_15);
-+         _18 = _10;
+-         _18 = copy (*_15);
++         _18 = copy _10;
           StorageLive(_19);
--         _19 = (*_16);
+-         _19 = copy (*_16);
 -         _17 = Eq(move _18, move _19);
-+         _19 = _13;
-+         _17 = Eq(_10, _13);
++         _19 = copy _13;
++         _17 = Eq(copy _10, copy _13);
           switchInt(move _17) -> [0: bb6, otherwise: bb5];
       }
   
@@ -180,9 +180,9 @@
           StorageDead(_30);
           StorageLive(_31);
           StorageLive(_32);
-          _32 = _29;
+          _32 = copy _29;
 -         _31 = opaque::<&[u8]>(move _32) -> [return: bb7, unwind continue];
-+         _31 = opaque::<&[u8]>(_29) -> [return: bb7, unwind continue];
++         _31 = opaque::<&[u8]>(copy _29) -> [return: bb7, unwind continue];
       }
   
       bb6: {
@@ -244,24 +244,24 @@
 -         _34 = (move _35, move _38);
 -         StorageDead(_38);
 -         StorageDead(_35);
-+         _34 = (_35, _38);
++         _34 = (copy _35, copy _38);
 +         nop;
 +         nop;
           StorageLive(_41);
--         _41 = (_34.0: &*const u8);
-+         _41 = _35;
+-         _41 = copy (_34.0: &*const u8);
++         _41 = copy _35;
           StorageLive(_42);
--         _42 = (_34.1: &*const u8);
-+         _42 = _38;
+-         _42 = copy (_34.1: &*const u8);
++         _42 = copy _38;
           StorageLive(_43);
           StorageLive(_44);
--         _44 = (*_41);
-+         _44 = _36;
+-         _44 = copy (*_41);
++         _44 = copy _36;
           StorageLive(_45);
--         _45 = (*_42);
+-         _45 = copy (*_42);
 -         _43 = Eq(move _44, move _45);
-+         _45 = _39;
-+         _43 = Eq(_36, _39);
++         _45 = copy _39;
++         _43 = Eq(copy _36, copy _39);
           switchInt(move _43) -> [0: bb11, otherwise: bb10];
       }
   
diff --git a/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-abort.diff b/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-abort.diff
index ba9e507560d..7a479bc55da 100644
--- a/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-abort.diff
@@ -195,15 +195,15 @@
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
           StorageLive(_7);
-          _7 = _2;
+          _7 = copy _2;
 -         _5 = Add(move _6, move _7);
-+         _5 = Add(_1, _2);
++         _5 = Add(copy _1, copy _2);
           StorageDead(_7);
           StorageDead(_6);
 -         _4 = opaque::<u64>(move _5) -> [return: bb1, unwind unreachable];
-+         _4 = opaque::<u64>(_5) -> [return: bb1, unwind unreachable];
++         _4 = opaque::<u64>(copy _5) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
@@ -214,15 +214,15 @@
 -         StorageLive(_9);
 +         nop;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
 -         _9 = Mul(move _10, move _11);
-+         _9 = Mul(_1, _2);
++         _9 = Mul(copy _1, copy _2);
           StorageDead(_11);
           StorageDead(_10);
 -         _8 = opaque::<u64>(move _9) -> [return: bb2, unwind unreachable];
-+         _8 = opaque::<u64>(_9) -> [return: bb2, unwind unreachable];
++         _8 = opaque::<u64>(copy _9) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -233,15 +233,15 @@
 -         StorageLive(_13);
 +         nop;
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
           StorageLive(_15);
-          _15 = _2;
+          _15 = copy _2;
 -         _13 = Sub(move _14, move _15);
-+         _13 = Sub(_1, _2);
++         _13 = Sub(copy _1, copy _2);
           StorageDead(_15);
           StorageDead(_14);
 -         _12 = opaque::<u64>(move _13) -> [return: bb3, unwind unreachable];
-+         _12 = opaque::<u64>(_13) -> [return: bb3, unwind unreachable];
++         _12 = opaque::<u64>(copy _13) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
@@ -252,22 +252,22 @@
 -         StorageLive(_17);
 +         nop;
           StorageLive(_18);
-          _18 = _1;
+          _18 = copy _1;
           StorageLive(_19);
-          _19 = _2;
--         _20 = Eq(_19, const 0_u64);
--         assert(!move _20, "attempt to divide `{}` by zero", _18) -> [success: bb4, unwind unreachable];
-+         _20 = Eq(_2, const 0_u64);
-+         assert(!_20, "attempt to divide `{}` by zero", _1) -> [success: bb4, unwind unreachable];
+          _19 = copy _2;
+-         _20 = Eq(copy _19, const 0_u64);
+-         assert(!move _20, "attempt to divide `{}` by zero", copy _18) -> [success: bb4, unwind unreachable];
++         _20 = Eq(copy _2, const 0_u64);
++         assert(!copy _20, "attempt to divide `{}` by zero", copy _1) -> [success: bb4, unwind unreachable];
       }
   
       bb4: {
 -         _17 = Div(move _18, move _19);
-+         _17 = Div(_1, _2);
++         _17 = Div(copy _1, copy _2);
           StorageDead(_19);
           StorageDead(_18);
 -         _16 = opaque::<u64>(move _17) -> [return: bb5, unwind unreachable];
-+         _16 = opaque::<u64>(_17) -> [return: bb5, unwind unreachable];
++         _16 = opaque::<u64>(copy _17) -> [return: bb5, unwind unreachable];
       }
   
       bb5: {
@@ -278,22 +278,22 @@
 -         StorageLive(_22);
 +         nop;
           StorageLive(_23);
-          _23 = _1;
+          _23 = copy _1;
           StorageLive(_24);
-          _24 = _2;
--         _25 = Eq(_24, const 0_u64);
--         assert(!move _25, "attempt to calculate the remainder of `{}` with a divisor of zero", _23) -> [success: bb6, unwind unreachable];
-+         _25 = _20;
-+         assert(!_20, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb6, unwind unreachable];
+          _24 = copy _2;
+-         _25 = Eq(copy _24, const 0_u64);
+-         assert(!move _25, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _23) -> [success: bb6, unwind unreachable];
++         _25 = copy _20;
++         assert(!copy _20, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb6, unwind unreachable];
       }
   
       bb6: {
 -         _22 = Rem(move _23, move _24);
-+         _22 = Rem(_1, _2);
++         _22 = Rem(copy _1, copy _2);
           StorageDead(_24);
           StorageDead(_23);
 -         _21 = opaque::<u64>(move _22) -> [return: bb7, unwind unreachable];
-+         _21 = opaque::<u64>(_22) -> [return: bb7, unwind unreachable];
++         _21 = opaque::<u64>(copy _22) -> [return: bb7, unwind unreachable];
       }
   
       bb7: {
@@ -304,15 +304,15 @@
 -         StorageLive(_27);
 +         nop;
           StorageLive(_28);
-          _28 = _1;
+          _28 = copy _1;
           StorageLive(_29);
-          _29 = _2;
+          _29 = copy _2;
 -         _27 = BitAnd(move _28, move _29);
-+         _27 = BitAnd(_1, _2);
++         _27 = BitAnd(copy _1, copy _2);
           StorageDead(_29);
           StorageDead(_28);
 -         _26 = opaque::<u64>(move _27) -> [return: bb8, unwind unreachable];
-+         _26 = opaque::<u64>(_27) -> [return: bb8, unwind unreachable];
++         _26 = opaque::<u64>(copy _27) -> [return: bb8, unwind unreachable];
       }
   
       bb8: {
@@ -323,15 +323,15 @@
 -         StorageLive(_31);
 +         nop;
           StorageLive(_32);
-          _32 = _1;
+          _32 = copy _1;
           StorageLive(_33);
-          _33 = _2;
+          _33 = copy _2;
 -         _31 = BitOr(move _32, move _33);
-+         _31 = BitOr(_1, _2);
++         _31 = BitOr(copy _1, copy _2);
           StorageDead(_33);
           StorageDead(_32);
 -         _30 = opaque::<u64>(move _31) -> [return: bb9, unwind unreachable];
-+         _30 = opaque::<u64>(_31) -> [return: bb9, unwind unreachable];
++         _30 = opaque::<u64>(copy _31) -> [return: bb9, unwind unreachable];
       }
   
       bb9: {
@@ -342,15 +342,15 @@
 -         StorageLive(_35);
 +         nop;
           StorageLive(_36);
-          _36 = _1;
+          _36 = copy _1;
           StorageLive(_37);
-          _37 = _2;
+          _37 = copy _2;
 -         _35 = BitXor(move _36, move _37);
-+         _35 = BitXor(_1, _2);
++         _35 = BitXor(copy _1, copy _2);
           StorageDead(_37);
           StorageDead(_36);
 -         _34 = opaque::<u64>(move _35) -> [return: bb10, unwind unreachable];
-+         _34 = opaque::<u64>(_35) -> [return: bb10, unwind unreachable];
++         _34 = opaque::<u64>(copy _35) -> [return: bb10, unwind unreachable];
       }
   
       bb10: {
@@ -361,15 +361,15 @@
 -         StorageLive(_39);
 +         nop;
           StorageLive(_40);
-          _40 = _1;
+          _40 = copy _1;
           StorageLive(_41);
-          _41 = _2;
+          _41 = copy _2;
 -         _39 = Shl(move _40, move _41);
-+         _39 = Shl(_1, _2);
++         _39 = Shl(copy _1, copy _2);
           StorageDead(_41);
           StorageDead(_40);
 -         _38 = opaque::<u64>(move _39) -> [return: bb11, unwind unreachable];
-+         _38 = opaque::<u64>(_39) -> [return: bb11, unwind unreachable];
++         _38 = opaque::<u64>(copy _39) -> [return: bb11, unwind unreachable];
       }
   
       bb11: {
@@ -380,15 +380,15 @@
 -         StorageLive(_43);
 +         nop;
           StorageLive(_44);
-          _44 = _1;
+          _44 = copy _1;
           StorageLive(_45);
-          _45 = _2;
+          _45 = copy _2;
 -         _43 = Shr(move _44, move _45);
-+         _43 = Shr(_1, _2);
++         _43 = Shr(copy _1, copy _2);
           StorageDead(_45);
           StorageDead(_44);
 -         _42 = opaque::<u64>(move _43) -> [return: bb12, unwind unreachable];
-+         _42 = opaque::<u64>(_43) -> [return: bb12, unwind unreachable];
++         _42 = opaque::<u64>(copy _43) -> [return: bb12, unwind unreachable];
       }
   
       bb12: {
@@ -399,12 +399,12 @@
 -         StorageLive(_47);
 +         nop;
           StorageLive(_48);
-          _48 = _1;
+          _48 = copy _1;
 -         _47 = move _48 as u32 (IntToInt);
-+         _47 = _1 as u32 (IntToInt);
++         _47 = copy _1 as u32 (IntToInt);
           StorageDead(_48);
 -         _46 = opaque::<u32>(move _47) -> [return: bb13, unwind unreachable];
-+         _46 = opaque::<u32>(_47) -> [return: bb13, unwind unreachable];
++         _46 = opaque::<u32>(copy _47) -> [return: bb13, unwind unreachable];
       }
   
       bb13: {
@@ -415,12 +415,12 @@
 -         StorageLive(_50);
 +         nop;
           StorageLive(_51);
-          _51 = _1;
+          _51 = copy _1;
 -         _50 = move _51 as f32 (IntToFloat);
-+         _50 = _1 as f32 (IntToFloat);
++         _50 = copy _1 as f32 (IntToFloat);
           StorageDead(_51);
 -         _49 = opaque::<f32>(move _50) -> [return: bb14, unwind unreachable];
-+         _49 = opaque::<f32>(_50) -> [return: bb14, unwind unreachable];
++         _49 = opaque::<f32>(copy _50) -> [return: bb14, unwind unreachable];
       }
   
       bb14: {
@@ -431,12 +431,12 @@
 -         StorageLive(_53);
 +         nop;
           StorageLive(_54);
-          _54 = _1;
+          _54 = copy _1;
 -         _53 = S::<u64>(move _54);
-+         _53 = S::<u64>(_1);
++         _53 = S::<u64>(copy _1);
           StorageDead(_54);
 -         _52 = opaque::<S<u64>>(move _53) -> [return: bb15, unwind unreachable];
-+         _52 = opaque::<S<u64>>(_53) -> [return: bb15, unwind unreachable];
++         _52 = opaque::<S<u64>>(copy _53) -> [return: bb15, unwind unreachable];
       }
   
       bb15: {
@@ -447,14 +447,14 @@
           StorageLive(_56);
           StorageLive(_57);
           StorageLive(_58);
-          _58 = _1;
+          _58 = copy _1;
 -         _57 = S::<u64>(move _58);
-+         _57 = _53;
++         _57 = copy _53;
           StorageDead(_58);
--         _56 = (_57.0: u64);
+-         _56 = copy (_57.0: u64);
 -         _55 = opaque::<u64>(move _56) -> [return: bb16, unwind unreachable];
-+         _56 = _1;
-+         _55 = opaque::<u64>(_1) -> [return: bb16, unwind unreachable];
++         _56 = copy _1;
++         _55 = opaque::<u64>(copy _1) -> [return: bb16, unwind unreachable];
       }
   
       bb16: {
@@ -464,15 +464,15 @@
           StorageLive(_59);
           StorageLive(_60);
           StorageLive(_61);
-          _61 = _1;
+          _61 = copy _1;
           StorageLive(_62);
-          _62 = _2;
+          _62 = copy _2;
 -         _60 = Add(move _61, move _62);
-+         _60 = _5;
++         _60 = copy _5;
           StorageDead(_62);
           StorageDead(_61);
 -         _59 = opaque::<u64>(move _60) -> [return: bb17, unwind unreachable];
-+         _59 = opaque::<u64>(_5) -> [return: bb17, unwind unreachable];
++         _59 = opaque::<u64>(copy _5) -> [return: bb17, unwind unreachable];
       }
   
       bb17: {
@@ -481,15 +481,15 @@
           StorageLive(_63);
           StorageLive(_64);
           StorageLive(_65);
-          _65 = _1;
+          _65 = copy _1;
           StorageLive(_66);
-          _66 = _2;
+          _66 = copy _2;
 -         _64 = Mul(move _65, move _66);
-+         _64 = _9;
++         _64 = copy _9;
           StorageDead(_66);
           StorageDead(_65);
 -         _63 = opaque::<u64>(move _64) -> [return: bb18, unwind unreachable];
-+         _63 = opaque::<u64>(_9) -> [return: bb18, unwind unreachable];
++         _63 = opaque::<u64>(copy _9) -> [return: bb18, unwind unreachable];
       }
   
       bb18: {
@@ -498,15 +498,15 @@
           StorageLive(_67);
           StorageLive(_68);
           StorageLive(_69);
-          _69 = _1;
+          _69 = copy _1;
           StorageLive(_70);
-          _70 = _2;
+          _70 = copy _2;
 -         _68 = Sub(move _69, move _70);
-+         _68 = _13;
++         _68 = copy _13;
           StorageDead(_70);
           StorageDead(_69);
 -         _67 = opaque::<u64>(move _68) -> [return: bb19, unwind unreachable];
-+         _67 = opaque::<u64>(_13) -> [return: bb19, unwind unreachable];
++         _67 = opaque::<u64>(copy _13) -> [return: bb19, unwind unreachable];
       }
   
       bb19: {
@@ -515,22 +515,22 @@
           StorageLive(_71);
           StorageLive(_72);
           StorageLive(_73);
-          _73 = _1;
+          _73 = copy _1;
           StorageLive(_74);
-          _74 = _2;
--         _75 = Eq(_74, const 0_u64);
--         assert(!move _75, "attempt to divide `{}` by zero", _73) -> [success: bb20, unwind unreachable];
-+         _75 = _20;
-+         assert(!_20, "attempt to divide `{}` by zero", _1) -> [success: bb20, unwind unreachable];
+          _74 = copy _2;
+-         _75 = Eq(copy _74, const 0_u64);
+-         assert(!move _75, "attempt to divide `{}` by zero", copy _73) -> [success: bb20, unwind unreachable];
++         _75 = copy _20;
++         assert(!copy _20, "attempt to divide `{}` by zero", copy _1) -> [success: bb20, unwind unreachable];
       }
   
       bb20: {
 -         _72 = Div(move _73, move _74);
-+         _72 = _17;
++         _72 = copy _17;
           StorageDead(_74);
           StorageDead(_73);
 -         _71 = opaque::<u64>(move _72) -> [return: bb21, unwind unreachable];
-+         _71 = opaque::<u64>(_17) -> [return: bb21, unwind unreachable];
++         _71 = opaque::<u64>(copy _17) -> [return: bb21, unwind unreachable];
       }
   
       bb21: {
@@ -539,22 +539,22 @@
           StorageLive(_76);
           StorageLive(_77);
           StorageLive(_78);
-          _78 = _1;
+          _78 = copy _1;
           StorageLive(_79);
-          _79 = _2;
--         _80 = Eq(_79, const 0_u64);
--         assert(!move _80, "attempt to calculate the remainder of `{}` with a divisor of zero", _78) -> [success: bb22, unwind unreachable];
-+         _80 = _20;
-+         assert(!_20, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb22, unwind unreachable];
+          _79 = copy _2;
+-         _80 = Eq(copy _79, const 0_u64);
+-         assert(!move _80, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _78) -> [success: bb22, unwind unreachable];
++         _80 = copy _20;
++         assert(!copy _20, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb22, unwind unreachable];
       }
   
       bb22: {
 -         _77 = Rem(move _78, move _79);
-+         _77 = _22;
++         _77 = copy _22;
           StorageDead(_79);
           StorageDead(_78);
 -         _76 = opaque::<u64>(move _77) -> [return: bb23, unwind unreachable];
-+         _76 = opaque::<u64>(_22) -> [return: bb23, unwind unreachable];
++         _76 = opaque::<u64>(copy _22) -> [return: bb23, unwind unreachable];
       }
   
       bb23: {
@@ -563,15 +563,15 @@
           StorageLive(_81);
           StorageLive(_82);
           StorageLive(_83);
-          _83 = _1;
+          _83 = copy _1;
           StorageLive(_84);
-          _84 = _2;
+          _84 = copy _2;
 -         _82 = BitAnd(move _83, move _84);
-+         _82 = _27;
++         _82 = copy _27;
           StorageDead(_84);
           StorageDead(_83);
 -         _81 = opaque::<u64>(move _82) -> [return: bb24, unwind unreachable];
-+         _81 = opaque::<u64>(_27) -> [return: bb24, unwind unreachable];
++         _81 = opaque::<u64>(copy _27) -> [return: bb24, unwind unreachable];
       }
   
       bb24: {
@@ -580,15 +580,15 @@
           StorageLive(_85);
           StorageLive(_86);
           StorageLive(_87);
-          _87 = _1;
+          _87 = copy _1;
           StorageLive(_88);
-          _88 = _2;
+          _88 = copy _2;
 -         _86 = BitOr(move _87, move _88);
-+         _86 = _31;
++         _86 = copy _31;
           StorageDead(_88);
           StorageDead(_87);
 -         _85 = opaque::<u64>(move _86) -> [return: bb25, unwind unreachable];
-+         _85 = opaque::<u64>(_31) -> [return: bb25, unwind unreachable];
++         _85 = opaque::<u64>(copy _31) -> [return: bb25, unwind unreachable];
       }
   
       bb25: {
@@ -597,15 +597,15 @@
           StorageLive(_89);
           StorageLive(_90);
           StorageLive(_91);
-          _91 = _1;
+          _91 = copy _1;
           StorageLive(_92);
-          _92 = _2;
+          _92 = copy _2;
 -         _90 = BitXor(move _91, move _92);
-+         _90 = _35;
++         _90 = copy _35;
           StorageDead(_92);
           StorageDead(_91);
 -         _89 = opaque::<u64>(move _90) -> [return: bb26, unwind unreachable];
-+         _89 = opaque::<u64>(_35) -> [return: bb26, unwind unreachable];
++         _89 = opaque::<u64>(copy _35) -> [return: bb26, unwind unreachable];
       }
   
       bb26: {
@@ -614,15 +614,15 @@
           StorageLive(_93);
           StorageLive(_94);
           StorageLive(_95);
-          _95 = _1;
+          _95 = copy _1;
           StorageLive(_96);
-          _96 = _2;
+          _96 = copy _2;
 -         _94 = Shl(move _95, move _96);
-+         _94 = _39;
++         _94 = copy _39;
           StorageDead(_96);
           StorageDead(_95);
 -         _93 = opaque::<u64>(move _94) -> [return: bb27, unwind unreachable];
-+         _93 = opaque::<u64>(_39) -> [return: bb27, unwind unreachable];
++         _93 = opaque::<u64>(copy _39) -> [return: bb27, unwind unreachable];
       }
   
       bb27: {
@@ -631,15 +631,15 @@
           StorageLive(_97);
           StorageLive(_98);
           StorageLive(_99);
-          _99 = _1;
+          _99 = copy _1;
           StorageLive(_100);
-          _100 = _2;
+          _100 = copy _2;
 -         _98 = Shr(move _99, move _100);
-+         _98 = _43;
++         _98 = copy _43;
           StorageDead(_100);
           StorageDead(_99);
 -         _97 = opaque::<u64>(move _98) -> [return: bb28, unwind unreachable];
-+         _97 = opaque::<u64>(_43) -> [return: bb28, unwind unreachable];
++         _97 = opaque::<u64>(copy _43) -> [return: bb28, unwind unreachable];
       }
   
       bb28: {
@@ -648,12 +648,12 @@
           StorageLive(_101);
           StorageLive(_102);
           StorageLive(_103);
-          _103 = _1;
+          _103 = copy _1;
 -         _102 = move _103 as u32 (IntToInt);
-+         _102 = _47;
++         _102 = copy _47;
           StorageDead(_103);
 -         _101 = opaque::<u32>(move _102) -> [return: bb29, unwind unreachable];
-+         _101 = opaque::<u32>(_47) -> [return: bb29, unwind unreachable];
++         _101 = opaque::<u32>(copy _47) -> [return: bb29, unwind unreachable];
       }
   
       bb29: {
@@ -662,12 +662,12 @@
           StorageLive(_104);
           StorageLive(_105);
           StorageLive(_106);
-          _106 = _1;
+          _106 = copy _1;
 -         _105 = move _106 as f32 (IntToFloat);
-+         _105 = _50;
++         _105 = copy _50;
           StorageDead(_106);
 -         _104 = opaque::<f32>(move _105) -> [return: bb30, unwind unreachable];
-+         _104 = opaque::<f32>(_50) -> [return: bb30, unwind unreachable];
++         _104 = opaque::<f32>(copy _50) -> [return: bb30, unwind unreachable];
       }
   
       bb30: {
@@ -676,12 +676,12 @@
           StorageLive(_107);
           StorageLive(_108);
           StorageLive(_109);
-          _109 = _1;
+          _109 = copy _1;
 -         _108 = S::<u64>(move _109);
-+         _108 = _53;
++         _108 = copy _53;
           StorageDead(_109);
 -         _107 = opaque::<S<u64>>(move _108) -> [return: bb31, unwind unreachable];
-+         _107 = opaque::<S<u64>>(_53) -> [return: bb31, unwind unreachable];
++         _107 = opaque::<S<u64>>(copy _53) -> [return: bb31, unwind unreachable];
       }
   
       bb31: {
@@ -691,14 +691,14 @@
           StorageLive(_111);
           StorageLive(_112);
           StorageLive(_113);
-          _113 = _1;
+          _113 = copy _1;
 -         _112 = S::<u64>(move _113);
-+         _112 = _53;
++         _112 = copy _53;
           StorageDead(_113);
--         _111 = (_112.0: u64);
+-         _111 = copy (_112.0: u64);
 -         _110 = opaque::<u64>(move _111) -> [return: bb32, unwind unreachable];
-+         _111 = _1;
-+         _110 = opaque::<u64>(_1) -> [return: bb32, unwind unreachable];
++         _111 = copy _1;
++         _110 = opaque::<u64>(copy _1) -> [return: bb32, unwind unreachable];
       }
   
       bb32: {
@@ -710,21 +710,21 @@
 +         nop;
           StorageLive(_116);
           StorageLive(_117);
-          _117 = _1;
+          _117 = copy _1;
           StorageLive(_118);
-          _118 = _2;
+          _118 = copy _2;
 -         _116 = Mul(move _117, move _118);
-+         _116 = _9;
++         _116 = copy _9;
           StorageDead(_118);
           StorageDead(_117);
           StorageLive(_119);
-          _119 = _2;
+          _119 = copy _2;
 -         _115 = Sub(move _116, move _119);
-+         _115 = Sub(_9, _2);
++         _115 = Sub(copy _9, copy _2);
           StorageDead(_119);
           StorageDead(_116);
 -         _114 = opaque::<u64>(move _115) -> [return: bb33, unwind unreachable];
-+         _114 = opaque::<u64>(_115) -> [return: bb33, unwind unreachable];
++         _114 = opaque::<u64>(copy _115) -> [return: bb33, unwind unreachable];
       }
   
       bb33: {
@@ -735,21 +735,21 @@
           StorageLive(_121);
           StorageLive(_122);
           StorageLive(_123);
-          _123 = _1;
+          _123 = copy _1;
           StorageLive(_124);
-          _124 = _2;
+          _124 = copy _2;
 -         _122 = Mul(move _123, move _124);
-+         _122 = _9;
++         _122 = copy _9;
           StorageDead(_124);
           StorageDead(_123);
           StorageLive(_125);
-          _125 = _2;
+          _125 = copy _2;
 -         _121 = Sub(move _122, move _125);
-+         _121 = _115;
++         _121 = copy _115;
           StorageDead(_125);
           StorageDead(_122);
 -         _120 = opaque::<u64>(move _121) -> [return: bb34, unwind unreachable];
-+         _120 = opaque::<u64>(_115) -> [return: bb34, unwind unreachable];
++         _120 = opaque::<u64>(copy _115) -> [return: bb34, unwind unreachable];
       }
   
       bb34: {
@@ -762,16 +762,16 @@
 -         StorageLive(_129);
 +         nop;
 +         nop;
-          _129 = (*_126);
+          _129 = copy (*_126);
           StorageLive(_130);
-          _130 = _1;
+          _130 = copy _1;
 -         _128 = Add(move _129, move _130);
-+         _128 = Add(_129, _1);
++         _128 = Add(copy _129, copy _1);
           StorageDead(_130);
 -         StorageDead(_129);
 -         _127 = opaque::<u64>(move _128) -> [return: bb35, unwind unreachable];
 +         nop;
-+         _127 = opaque::<u64>(_128) -> [return: bb35, unwind unreachable];
++         _127 = opaque::<u64>(copy _128) -> [return: bb35, unwind unreachable];
       }
   
       bb35: {
@@ -781,16 +781,16 @@
           StorageLive(_131);
           StorageLive(_132);
           StorageLive(_133);
--         _133 = (*_126);
-+         _133 = _129;
+-         _133 = copy (*_126);
++         _133 = copy _129;
           StorageLive(_134);
-          _134 = _1;
+          _134 = copy _1;
 -         _132 = Add(move _133, move _134);
-+         _132 = _128;
++         _132 = copy _128;
           StorageDead(_134);
           StorageDead(_133);
 -         _131 = opaque::<u64>(move _132) -> [return: bb36, unwind unreachable];
-+         _131 = opaque::<u64>(_128) -> [return: bb36, unwind unreachable];
++         _131 = opaque::<u64>(copy _128) -> [return: bb36, unwind unreachable];
       }
   
       bb36: {
@@ -801,11 +801,11 @@
           StorageLive(_136);
           StorageLive(_137);
           StorageLive(_138);
-          _138 = (*_135);
+          _138 = copy (*_135);
           StorageLive(_139);
-          _139 = _1;
+          _139 = copy _1;
 -         _137 = Add(move _138, move _139);
-+         _137 = Add(move _138, _1);
++         _137 = Add(move _138, copy _1);
           StorageDead(_139);
           StorageDead(_138);
           _136 = opaque::<u64>(move _137) -> [return: bb37, unwind unreachable];
@@ -817,11 +817,11 @@
           StorageLive(_140);
           StorageLive(_141);
           StorageLive(_142);
-          _142 = (*_135);
+          _142 = copy (*_135);
           StorageLive(_143);
-          _143 = _1;
+          _143 = copy _1;
 -         _141 = Add(move _142, move _143);
-+         _141 = Add(move _142, _1);
++         _141 = Add(move _142, copy _1);
           StorageDead(_143);
           StorageDead(_142);
           _140 = opaque::<u64>(move _141) -> [return: bb38, unwind unreachable];
@@ -836,11 +836,11 @@
           StorageLive(_146);
           StorageLive(_147);
           StorageLive(_148);
-          _148 = (*_145);
+          _148 = copy (*_145);
           StorageLive(_149);
-          _149 = _1;
+          _149 = copy _1;
 -         _147 = Add(move _148, move _149);
-+         _147 = Add(move _148, _1);
++         _147 = Add(move _148, copy _1);
           StorageDead(_149);
           StorageDead(_148);
           _146 = opaque::<u64>(move _147) -> [return: bb39, unwind unreachable];
@@ -852,11 +852,11 @@
           StorageLive(_150);
           StorageLive(_151);
           StorageLive(_152);
-          _152 = (*_145);
+          _152 = copy (*_145);
           StorageLive(_153);
-          _153 = _1;
+          _153 = copy _1;
 -         _151 = Add(move _152, move _153);
-+         _151 = Add(move _152, _1);
++         _151 = Add(move _152, copy _1);
           StorageDead(_153);
           StorageDead(_152);
           _150 = opaque::<u64>(move _151) -> [return: bb40, unwind unreachable];
@@ -870,11 +870,11 @@
           StorageLive(_155);
           StorageLive(_156);
           StorageLive(_157);
-          _157 = (*_154);
+          _157 = copy (*_154);
           StorageLive(_158);
-          _158 = _1;
+          _158 = copy _1;
 -         _156 = Add(move _157, move _158);
-+         _156 = Add(move _157, _1);
++         _156 = Add(move _157, copy _1);
           StorageDead(_158);
           StorageDead(_157);
           _155 = opaque::<u64>(move _156) -> [return: bb41, unwind unreachable];
@@ -886,11 +886,11 @@
           StorageLive(_159);
           StorageLive(_160);
           StorageLive(_161);
-          _161 = (*_154);
+          _161 = copy (*_154);
           StorageLive(_162);
-          _162 = _1;
+          _162 = copy _1;
 -         _160 = Add(move _161, move _162);
-+         _160 = Add(move _161, _1);
++         _160 = Add(move _161, copy _1);
           StorageDead(_162);
           StorageDead(_161);
           _159 = opaque::<u64>(move _160) -> [return: bb42, unwind unreachable];
@@ -910,16 +910,16 @@
 -         StorageLive(_166);
 +         nop;
 +         nop;
-          _166 = (*_163);
+          _166 = copy (*_163);
           StorageLive(_167);
-          _167 = _1;
+          _167 = copy _1;
 -         _165 = Add(move _166, move _167);
-+         _165 = Add(_166, _1);
++         _165 = Add(copy _166, copy _1);
           StorageDead(_167);
 -         StorageDead(_166);
 -         _164 = opaque::<u64>(move _165) -> [return: bb43, unwind unreachable];
 +         nop;
-+         _164 = opaque::<u64>(_165) -> [return: bb43, unwind unreachable];
++         _164 = opaque::<u64>(copy _165) -> [return: bb43, unwind unreachable];
       }
   
       bb43: {
@@ -929,16 +929,16 @@
           StorageLive(_168);
           StorageLive(_169);
           StorageLive(_170);
--         _170 = (*_163);
-+         _170 = _166;
+-         _170 = copy (*_163);
++         _170 = copy _166;
           StorageLive(_171);
-          _171 = _1;
+          _171 = copy _1;
 -         _169 = Add(move _170, move _171);
-+         _169 = _165;
++         _169 = copy _165;
           StorageDead(_171);
           StorageDead(_170);
 -         _168 = opaque::<u64>(move _169) -> [return: bb44, unwind unreachable];
-+         _168 = opaque::<u64>(_165) -> [return: bb44, unwind unreachable];
++         _168 = opaque::<u64>(copy _165) -> [return: bb44, unwind unreachable];
       }
   
       bb44: {
diff --git a/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-unwind.diff b/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-unwind.diff
index 41c01536130..3ca5238663c 100644
--- a/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.subexpression_elimination.GVN.panic-unwind.diff
@@ -195,15 +195,15 @@
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
           StorageLive(_7);
-          _7 = _2;
+          _7 = copy _2;
 -         _5 = Add(move _6, move _7);
-+         _5 = Add(_1, _2);
++         _5 = Add(copy _1, copy _2);
           StorageDead(_7);
           StorageDead(_6);
 -         _4 = opaque::<u64>(move _5) -> [return: bb1, unwind continue];
-+         _4 = opaque::<u64>(_5) -> [return: bb1, unwind continue];
++         _4 = opaque::<u64>(copy _5) -> [return: bb1, unwind continue];
       }
   
       bb1: {
@@ -214,15 +214,15 @@
 -         StorageLive(_9);
 +         nop;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
 -         _9 = Mul(move _10, move _11);
-+         _9 = Mul(_1, _2);
++         _9 = Mul(copy _1, copy _2);
           StorageDead(_11);
           StorageDead(_10);
 -         _8 = opaque::<u64>(move _9) -> [return: bb2, unwind continue];
-+         _8 = opaque::<u64>(_9) -> [return: bb2, unwind continue];
++         _8 = opaque::<u64>(copy _9) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -233,15 +233,15 @@
 -         StorageLive(_13);
 +         nop;
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
           StorageLive(_15);
-          _15 = _2;
+          _15 = copy _2;
 -         _13 = Sub(move _14, move _15);
-+         _13 = Sub(_1, _2);
++         _13 = Sub(copy _1, copy _2);
           StorageDead(_15);
           StorageDead(_14);
 -         _12 = opaque::<u64>(move _13) -> [return: bb3, unwind continue];
-+         _12 = opaque::<u64>(_13) -> [return: bb3, unwind continue];
++         _12 = opaque::<u64>(copy _13) -> [return: bb3, unwind continue];
       }
   
       bb3: {
@@ -252,22 +252,22 @@
 -         StorageLive(_17);
 +         nop;
           StorageLive(_18);
-          _18 = _1;
+          _18 = copy _1;
           StorageLive(_19);
-          _19 = _2;
--         _20 = Eq(_19, const 0_u64);
--         assert(!move _20, "attempt to divide `{}` by zero", _18) -> [success: bb4, unwind continue];
-+         _20 = Eq(_2, const 0_u64);
-+         assert(!_20, "attempt to divide `{}` by zero", _1) -> [success: bb4, unwind continue];
+          _19 = copy _2;
+-         _20 = Eq(copy _19, const 0_u64);
+-         assert(!move _20, "attempt to divide `{}` by zero", copy _18) -> [success: bb4, unwind continue];
++         _20 = Eq(copy _2, const 0_u64);
++         assert(!copy _20, "attempt to divide `{}` by zero", copy _1) -> [success: bb4, unwind continue];
       }
   
       bb4: {
 -         _17 = Div(move _18, move _19);
-+         _17 = Div(_1, _2);
++         _17 = Div(copy _1, copy _2);
           StorageDead(_19);
           StorageDead(_18);
 -         _16 = opaque::<u64>(move _17) -> [return: bb5, unwind continue];
-+         _16 = opaque::<u64>(_17) -> [return: bb5, unwind continue];
++         _16 = opaque::<u64>(copy _17) -> [return: bb5, unwind continue];
       }
   
       bb5: {
@@ -278,22 +278,22 @@
 -         StorageLive(_22);
 +         nop;
           StorageLive(_23);
-          _23 = _1;
+          _23 = copy _1;
           StorageLive(_24);
-          _24 = _2;
--         _25 = Eq(_24, const 0_u64);
--         assert(!move _25, "attempt to calculate the remainder of `{}` with a divisor of zero", _23) -> [success: bb6, unwind continue];
-+         _25 = _20;
-+         assert(!_20, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb6, unwind continue];
+          _24 = copy _2;
+-         _25 = Eq(copy _24, const 0_u64);
+-         assert(!move _25, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _23) -> [success: bb6, unwind continue];
++         _25 = copy _20;
++         assert(!copy _20, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb6, unwind continue];
       }
   
       bb6: {
 -         _22 = Rem(move _23, move _24);
-+         _22 = Rem(_1, _2);
++         _22 = Rem(copy _1, copy _2);
           StorageDead(_24);
           StorageDead(_23);
 -         _21 = opaque::<u64>(move _22) -> [return: bb7, unwind continue];
-+         _21 = opaque::<u64>(_22) -> [return: bb7, unwind continue];
++         _21 = opaque::<u64>(copy _22) -> [return: bb7, unwind continue];
       }
   
       bb7: {
@@ -304,15 +304,15 @@
 -         StorageLive(_27);
 +         nop;
           StorageLive(_28);
-          _28 = _1;
+          _28 = copy _1;
           StorageLive(_29);
-          _29 = _2;
+          _29 = copy _2;
 -         _27 = BitAnd(move _28, move _29);
-+         _27 = BitAnd(_1, _2);
++         _27 = BitAnd(copy _1, copy _2);
           StorageDead(_29);
           StorageDead(_28);
 -         _26 = opaque::<u64>(move _27) -> [return: bb8, unwind continue];
-+         _26 = opaque::<u64>(_27) -> [return: bb8, unwind continue];
++         _26 = opaque::<u64>(copy _27) -> [return: bb8, unwind continue];
       }
   
       bb8: {
@@ -323,15 +323,15 @@
 -         StorageLive(_31);
 +         nop;
           StorageLive(_32);
-          _32 = _1;
+          _32 = copy _1;
           StorageLive(_33);
-          _33 = _2;
+          _33 = copy _2;
 -         _31 = BitOr(move _32, move _33);
-+         _31 = BitOr(_1, _2);
++         _31 = BitOr(copy _1, copy _2);
           StorageDead(_33);
           StorageDead(_32);
 -         _30 = opaque::<u64>(move _31) -> [return: bb9, unwind continue];
-+         _30 = opaque::<u64>(_31) -> [return: bb9, unwind continue];
++         _30 = opaque::<u64>(copy _31) -> [return: bb9, unwind continue];
       }
   
       bb9: {
@@ -342,15 +342,15 @@
 -         StorageLive(_35);
 +         nop;
           StorageLive(_36);
-          _36 = _1;
+          _36 = copy _1;
           StorageLive(_37);
-          _37 = _2;
+          _37 = copy _2;
 -         _35 = BitXor(move _36, move _37);
-+         _35 = BitXor(_1, _2);
++         _35 = BitXor(copy _1, copy _2);
           StorageDead(_37);
           StorageDead(_36);
 -         _34 = opaque::<u64>(move _35) -> [return: bb10, unwind continue];
-+         _34 = opaque::<u64>(_35) -> [return: bb10, unwind continue];
++         _34 = opaque::<u64>(copy _35) -> [return: bb10, unwind continue];
       }
   
       bb10: {
@@ -361,15 +361,15 @@
 -         StorageLive(_39);
 +         nop;
           StorageLive(_40);
-          _40 = _1;
+          _40 = copy _1;
           StorageLive(_41);
-          _41 = _2;
+          _41 = copy _2;
 -         _39 = Shl(move _40, move _41);
-+         _39 = Shl(_1, _2);
++         _39 = Shl(copy _1, copy _2);
           StorageDead(_41);
           StorageDead(_40);
 -         _38 = opaque::<u64>(move _39) -> [return: bb11, unwind continue];
-+         _38 = opaque::<u64>(_39) -> [return: bb11, unwind continue];
++         _38 = opaque::<u64>(copy _39) -> [return: bb11, unwind continue];
       }
   
       bb11: {
@@ -380,15 +380,15 @@
 -         StorageLive(_43);
 +         nop;
           StorageLive(_44);
-          _44 = _1;
+          _44 = copy _1;
           StorageLive(_45);
-          _45 = _2;
+          _45 = copy _2;
 -         _43 = Shr(move _44, move _45);
-+         _43 = Shr(_1, _2);
++         _43 = Shr(copy _1, copy _2);
           StorageDead(_45);
           StorageDead(_44);
 -         _42 = opaque::<u64>(move _43) -> [return: bb12, unwind continue];
-+         _42 = opaque::<u64>(_43) -> [return: bb12, unwind continue];
++         _42 = opaque::<u64>(copy _43) -> [return: bb12, unwind continue];
       }
   
       bb12: {
@@ -399,12 +399,12 @@
 -         StorageLive(_47);
 +         nop;
           StorageLive(_48);
-          _48 = _1;
+          _48 = copy _1;
 -         _47 = move _48 as u32 (IntToInt);
-+         _47 = _1 as u32 (IntToInt);
++         _47 = copy _1 as u32 (IntToInt);
           StorageDead(_48);
 -         _46 = opaque::<u32>(move _47) -> [return: bb13, unwind continue];
-+         _46 = opaque::<u32>(_47) -> [return: bb13, unwind continue];
++         _46 = opaque::<u32>(copy _47) -> [return: bb13, unwind continue];
       }
   
       bb13: {
@@ -415,12 +415,12 @@
 -         StorageLive(_50);
 +         nop;
           StorageLive(_51);
-          _51 = _1;
+          _51 = copy _1;
 -         _50 = move _51 as f32 (IntToFloat);
-+         _50 = _1 as f32 (IntToFloat);
++         _50 = copy _1 as f32 (IntToFloat);
           StorageDead(_51);
 -         _49 = opaque::<f32>(move _50) -> [return: bb14, unwind continue];
-+         _49 = opaque::<f32>(_50) -> [return: bb14, unwind continue];
++         _49 = opaque::<f32>(copy _50) -> [return: bb14, unwind continue];
       }
   
       bb14: {
@@ -431,12 +431,12 @@
 -         StorageLive(_53);
 +         nop;
           StorageLive(_54);
-          _54 = _1;
+          _54 = copy _1;
 -         _53 = S::<u64>(move _54);
-+         _53 = S::<u64>(_1);
++         _53 = S::<u64>(copy _1);
           StorageDead(_54);
 -         _52 = opaque::<S<u64>>(move _53) -> [return: bb15, unwind continue];
-+         _52 = opaque::<S<u64>>(_53) -> [return: bb15, unwind continue];
++         _52 = opaque::<S<u64>>(copy _53) -> [return: bb15, unwind continue];
       }
   
       bb15: {
@@ -447,14 +447,14 @@
           StorageLive(_56);
           StorageLive(_57);
           StorageLive(_58);
-          _58 = _1;
+          _58 = copy _1;
 -         _57 = S::<u64>(move _58);
-+         _57 = _53;
++         _57 = copy _53;
           StorageDead(_58);
--         _56 = (_57.0: u64);
+-         _56 = copy (_57.0: u64);
 -         _55 = opaque::<u64>(move _56) -> [return: bb16, unwind continue];
-+         _56 = _1;
-+         _55 = opaque::<u64>(_1) -> [return: bb16, unwind continue];
++         _56 = copy _1;
++         _55 = opaque::<u64>(copy _1) -> [return: bb16, unwind continue];
       }
   
       bb16: {
@@ -464,15 +464,15 @@
           StorageLive(_59);
           StorageLive(_60);
           StorageLive(_61);
-          _61 = _1;
+          _61 = copy _1;
           StorageLive(_62);
-          _62 = _2;
+          _62 = copy _2;
 -         _60 = Add(move _61, move _62);
-+         _60 = _5;
++         _60 = copy _5;
           StorageDead(_62);
           StorageDead(_61);
 -         _59 = opaque::<u64>(move _60) -> [return: bb17, unwind continue];
-+         _59 = opaque::<u64>(_5) -> [return: bb17, unwind continue];
++         _59 = opaque::<u64>(copy _5) -> [return: bb17, unwind continue];
       }
   
       bb17: {
@@ -481,15 +481,15 @@
           StorageLive(_63);
           StorageLive(_64);
           StorageLive(_65);
-          _65 = _1;
+          _65 = copy _1;
           StorageLive(_66);
-          _66 = _2;
+          _66 = copy _2;
 -         _64 = Mul(move _65, move _66);
-+         _64 = _9;
++         _64 = copy _9;
           StorageDead(_66);
           StorageDead(_65);
 -         _63 = opaque::<u64>(move _64) -> [return: bb18, unwind continue];
-+         _63 = opaque::<u64>(_9) -> [return: bb18, unwind continue];
++         _63 = opaque::<u64>(copy _9) -> [return: bb18, unwind continue];
       }
   
       bb18: {
@@ -498,15 +498,15 @@
           StorageLive(_67);
           StorageLive(_68);
           StorageLive(_69);
-          _69 = _1;
+          _69 = copy _1;
           StorageLive(_70);
-          _70 = _2;
+          _70 = copy _2;
 -         _68 = Sub(move _69, move _70);
-+         _68 = _13;
++         _68 = copy _13;
           StorageDead(_70);
           StorageDead(_69);
 -         _67 = opaque::<u64>(move _68) -> [return: bb19, unwind continue];
-+         _67 = opaque::<u64>(_13) -> [return: bb19, unwind continue];
++         _67 = opaque::<u64>(copy _13) -> [return: bb19, unwind continue];
       }
   
       bb19: {
@@ -515,22 +515,22 @@
           StorageLive(_71);
           StorageLive(_72);
           StorageLive(_73);
-          _73 = _1;
+          _73 = copy _1;
           StorageLive(_74);
-          _74 = _2;
--         _75 = Eq(_74, const 0_u64);
--         assert(!move _75, "attempt to divide `{}` by zero", _73) -> [success: bb20, unwind continue];
-+         _75 = _20;
-+         assert(!_20, "attempt to divide `{}` by zero", _1) -> [success: bb20, unwind continue];
+          _74 = copy _2;
+-         _75 = Eq(copy _74, const 0_u64);
+-         assert(!move _75, "attempt to divide `{}` by zero", copy _73) -> [success: bb20, unwind continue];
++         _75 = copy _20;
++         assert(!copy _20, "attempt to divide `{}` by zero", copy _1) -> [success: bb20, unwind continue];
       }
   
       bb20: {
 -         _72 = Div(move _73, move _74);
-+         _72 = _17;
++         _72 = copy _17;
           StorageDead(_74);
           StorageDead(_73);
 -         _71 = opaque::<u64>(move _72) -> [return: bb21, unwind continue];
-+         _71 = opaque::<u64>(_17) -> [return: bb21, unwind continue];
++         _71 = opaque::<u64>(copy _17) -> [return: bb21, unwind continue];
       }
   
       bb21: {
@@ -539,22 +539,22 @@
           StorageLive(_76);
           StorageLive(_77);
           StorageLive(_78);
-          _78 = _1;
+          _78 = copy _1;
           StorageLive(_79);
-          _79 = _2;
--         _80 = Eq(_79, const 0_u64);
--         assert(!move _80, "attempt to calculate the remainder of `{}` with a divisor of zero", _78) -> [success: bb22, unwind continue];
-+         _80 = _20;
-+         assert(!_20, "attempt to calculate the remainder of `{}` with a divisor of zero", _1) -> [success: bb22, unwind continue];
+          _79 = copy _2;
+-         _80 = Eq(copy _79, const 0_u64);
+-         assert(!move _80, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _78) -> [success: bb22, unwind continue];
++         _80 = copy _20;
++         assert(!copy _20, "attempt to calculate the remainder of `{}` with a divisor of zero", copy _1) -> [success: bb22, unwind continue];
       }
   
       bb22: {
 -         _77 = Rem(move _78, move _79);
-+         _77 = _22;
++         _77 = copy _22;
           StorageDead(_79);
           StorageDead(_78);
 -         _76 = opaque::<u64>(move _77) -> [return: bb23, unwind continue];
-+         _76 = opaque::<u64>(_22) -> [return: bb23, unwind continue];
++         _76 = opaque::<u64>(copy _22) -> [return: bb23, unwind continue];
       }
   
       bb23: {
@@ -563,15 +563,15 @@
           StorageLive(_81);
           StorageLive(_82);
           StorageLive(_83);
-          _83 = _1;
+          _83 = copy _1;
           StorageLive(_84);
-          _84 = _2;
+          _84 = copy _2;
 -         _82 = BitAnd(move _83, move _84);
-+         _82 = _27;
++         _82 = copy _27;
           StorageDead(_84);
           StorageDead(_83);
 -         _81 = opaque::<u64>(move _82) -> [return: bb24, unwind continue];
-+         _81 = opaque::<u64>(_27) -> [return: bb24, unwind continue];
++         _81 = opaque::<u64>(copy _27) -> [return: bb24, unwind continue];
       }
   
       bb24: {
@@ -580,15 +580,15 @@
           StorageLive(_85);
           StorageLive(_86);
           StorageLive(_87);
-          _87 = _1;
+          _87 = copy _1;
           StorageLive(_88);
-          _88 = _2;
+          _88 = copy _2;
 -         _86 = BitOr(move _87, move _88);
-+         _86 = _31;
++         _86 = copy _31;
           StorageDead(_88);
           StorageDead(_87);
 -         _85 = opaque::<u64>(move _86) -> [return: bb25, unwind continue];
-+         _85 = opaque::<u64>(_31) -> [return: bb25, unwind continue];
++         _85 = opaque::<u64>(copy _31) -> [return: bb25, unwind continue];
       }
   
       bb25: {
@@ -597,15 +597,15 @@
           StorageLive(_89);
           StorageLive(_90);
           StorageLive(_91);
-          _91 = _1;
+          _91 = copy _1;
           StorageLive(_92);
-          _92 = _2;
+          _92 = copy _2;
 -         _90 = BitXor(move _91, move _92);
-+         _90 = _35;
++         _90 = copy _35;
           StorageDead(_92);
           StorageDead(_91);
 -         _89 = opaque::<u64>(move _90) -> [return: bb26, unwind continue];
-+         _89 = opaque::<u64>(_35) -> [return: bb26, unwind continue];
++         _89 = opaque::<u64>(copy _35) -> [return: bb26, unwind continue];
       }
   
       bb26: {
@@ -614,15 +614,15 @@
           StorageLive(_93);
           StorageLive(_94);
           StorageLive(_95);
-          _95 = _1;
+          _95 = copy _1;
           StorageLive(_96);
-          _96 = _2;
+          _96 = copy _2;
 -         _94 = Shl(move _95, move _96);
-+         _94 = _39;
++         _94 = copy _39;
           StorageDead(_96);
           StorageDead(_95);
 -         _93 = opaque::<u64>(move _94) -> [return: bb27, unwind continue];
-+         _93 = opaque::<u64>(_39) -> [return: bb27, unwind continue];
++         _93 = opaque::<u64>(copy _39) -> [return: bb27, unwind continue];
       }
   
       bb27: {
@@ -631,15 +631,15 @@
           StorageLive(_97);
           StorageLive(_98);
           StorageLive(_99);
-          _99 = _1;
+          _99 = copy _1;
           StorageLive(_100);
-          _100 = _2;
+          _100 = copy _2;
 -         _98 = Shr(move _99, move _100);
-+         _98 = _43;
++         _98 = copy _43;
           StorageDead(_100);
           StorageDead(_99);
 -         _97 = opaque::<u64>(move _98) -> [return: bb28, unwind continue];
-+         _97 = opaque::<u64>(_43) -> [return: bb28, unwind continue];
++         _97 = opaque::<u64>(copy _43) -> [return: bb28, unwind continue];
       }
   
       bb28: {
@@ -648,12 +648,12 @@
           StorageLive(_101);
           StorageLive(_102);
           StorageLive(_103);
-          _103 = _1;
+          _103 = copy _1;
 -         _102 = move _103 as u32 (IntToInt);
-+         _102 = _47;
++         _102 = copy _47;
           StorageDead(_103);
 -         _101 = opaque::<u32>(move _102) -> [return: bb29, unwind continue];
-+         _101 = opaque::<u32>(_47) -> [return: bb29, unwind continue];
++         _101 = opaque::<u32>(copy _47) -> [return: bb29, unwind continue];
       }
   
       bb29: {
@@ -662,12 +662,12 @@
           StorageLive(_104);
           StorageLive(_105);
           StorageLive(_106);
-          _106 = _1;
+          _106 = copy _1;
 -         _105 = move _106 as f32 (IntToFloat);
-+         _105 = _50;
++         _105 = copy _50;
           StorageDead(_106);
 -         _104 = opaque::<f32>(move _105) -> [return: bb30, unwind continue];
-+         _104 = opaque::<f32>(_50) -> [return: bb30, unwind continue];
++         _104 = opaque::<f32>(copy _50) -> [return: bb30, unwind continue];
       }
   
       bb30: {
@@ -676,12 +676,12 @@
           StorageLive(_107);
           StorageLive(_108);
           StorageLive(_109);
-          _109 = _1;
+          _109 = copy _1;
 -         _108 = S::<u64>(move _109);
-+         _108 = _53;
++         _108 = copy _53;
           StorageDead(_109);
 -         _107 = opaque::<S<u64>>(move _108) -> [return: bb31, unwind continue];
-+         _107 = opaque::<S<u64>>(_53) -> [return: bb31, unwind continue];
++         _107 = opaque::<S<u64>>(copy _53) -> [return: bb31, unwind continue];
       }
   
       bb31: {
@@ -691,14 +691,14 @@
           StorageLive(_111);
           StorageLive(_112);
           StorageLive(_113);
-          _113 = _1;
+          _113 = copy _1;
 -         _112 = S::<u64>(move _113);
-+         _112 = _53;
++         _112 = copy _53;
           StorageDead(_113);
--         _111 = (_112.0: u64);
+-         _111 = copy (_112.0: u64);
 -         _110 = opaque::<u64>(move _111) -> [return: bb32, unwind continue];
-+         _111 = _1;
-+         _110 = opaque::<u64>(_1) -> [return: bb32, unwind continue];
++         _111 = copy _1;
++         _110 = opaque::<u64>(copy _1) -> [return: bb32, unwind continue];
       }
   
       bb32: {
@@ -710,21 +710,21 @@
 +         nop;
           StorageLive(_116);
           StorageLive(_117);
-          _117 = _1;
+          _117 = copy _1;
           StorageLive(_118);
-          _118 = _2;
+          _118 = copy _2;
 -         _116 = Mul(move _117, move _118);
-+         _116 = _9;
++         _116 = copy _9;
           StorageDead(_118);
           StorageDead(_117);
           StorageLive(_119);
-          _119 = _2;
+          _119 = copy _2;
 -         _115 = Sub(move _116, move _119);
-+         _115 = Sub(_9, _2);
++         _115 = Sub(copy _9, copy _2);
           StorageDead(_119);
           StorageDead(_116);
 -         _114 = opaque::<u64>(move _115) -> [return: bb33, unwind continue];
-+         _114 = opaque::<u64>(_115) -> [return: bb33, unwind continue];
++         _114 = opaque::<u64>(copy _115) -> [return: bb33, unwind continue];
       }
   
       bb33: {
@@ -735,21 +735,21 @@
           StorageLive(_121);
           StorageLive(_122);
           StorageLive(_123);
-          _123 = _1;
+          _123 = copy _1;
           StorageLive(_124);
-          _124 = _2;
+          _124 = copy _2;
 -         _122 = Mul(move _123, move _124);
-+         _122 = _9;
++         _122 = copy _9;
           StorageDead(_124);
           StorageDead(_123);
           StorageLive(_125);
-          _125 = _2;
+          _125 = copy _2;
 -         _121 = Sub(move _122, move _125);
-+         _121 = _115;
++         _121 = copy _115;
           StorageDead(_125);
           StorageDead(_122);
 -         _120 = opaque::<u64>(move _121) -> [return: bb34, unwind continue];
-+         _120 = opaque::<u64>(_115) -> [return: bb34, unwind continue];
++         _120 = opaque::<u64>(copy _115) -> [return: bb34, unwind continue];
       }
   
       bb34: {
@@ -762,16 +762,16 @@
 -         StorageLive(_129);
 +         nop;
 +         nop;
-          _129 = (*_126);
+          _129 = copy (*_126);
           StorageLive(_130);
-          _130 = _1;
+          _130 = copy _1;
 -         _128 = Add(move _129, move _130);
-+         _128 = Add(_129, _1);
++         _128 = Add(copy _129, copy _1);
           StorageDead(_130);
 -         StorageDead(_129);
 -         _127 = opaque::<u64>(move _128) -> [return: bb35, unwind continue];
 +         nop;
-+         _127 = opaque::<u64>(_128) -> [return: bb35, unwind continue];
++         _127 = opaque::<u64>(copy _128) -> [return: bb35, unwind continue];
       }
   
       bb35: {
@@ -781,16 +781,16 @@
           StorageLive(_131);
           StorageLive(_132);
           StorageLive(_133);
--         _133 = (*_126);
-+         _133 = _129;
+-         _133 = copy (*_126);
++         _133 = copy _129;
           StorageLive(_134);
-          _134 = _1;
+          _134 = copy _1;
 -         _132 = Add(move _133, move _134);
-+         _132 = _128;
++         _132 = copy _128;
           StorageDead(_134);
           StorageDead(_133);
 -         _131 = opaque::<u64>(move _132) -> [return: bb36, unwind continue];
-+         _131 = opaque::<u64>(_128) -> [return: bb36, unwind continue];
++         _131 = opaque::<u64>(copy _128) -> [return: bb36, unwind continue];
       }
   
       bb36: {
@@ -801,11 +801,11 @@
           StorageLive(_136);
           StorageLive(_137);
           StorageLive(_138);
-          _138 = (*_135);
+          _138 = copy (*_135);
           StorageLive(_139);
-          _139 = _1;
+          _139 = copy _1;
 -         _137 = Add(move _138, move _139);
-+         _137 = Add(move _138, _1);
++         _137 = Add(move _138, copy _1);
           StorageDead(_139);
           StorageDead(_138);
           _136 = opaque::<u64>(move _137) -> [return: bb37, unwind continue];
@@ -817,11 +817,11 @@
           StorageLive(_140);
           StorageLive(_141);
           StorageLive(_142);
-          _142 = (*_135);
+          _142 = copy (*_135);
           StorageLive(_143);
-          _143 = _1;
+          _143 = copy _1;
 -         _141 = Add(move _142, move _143);
-+         _141 = Add(move _142, _1);
++         _141 = Add(move _142, copy _1);
           StorageDead(_143);
           StorageDead(_142);
           _140 = opaque::<u64>(move _141) -> [return: bb38, unwind continue];
@@ -836,11 +836,11 @@
           StorageLive(_146);
           StorageLive(_147);
           StorageLive(_148);
-          _148 = (*_145);
+          _148 = copy (*_145);
           StorageLive(_149);
-          _149 = _1;
+          _149 = copy _1;
 -         _147 = Add(move _148, move _149);
-+         _147 = Add(move _148, _1);
++         _147 = Add(move _148, copy _1);
           StorageDead(_149);
           StorageDead(_148);
           _146 = opaque::<u64>(move _147) -> [return: bb39, unwind continue];
@@ -852,11 +852,11 @@
           StorageLive(_150);
           StorageLive(_151);
           StorageLive(_152);
-          _152 = (*_145);
+          _152 = copy (*_145);
           StorageLive(_153);
-          _153 = _1;
+          _153 = copy _1;
 -         _151 = Add(move _152, move _153);
-+         _151 = Add(move _152, _1);
++         _151 = Add(move _152, copy _1);
           StorageDead(_153);
           StorageDead(_152);
           _150 = opaque::<u64>(move _151) -> [return: bb40, unwind continue];
@@ -870,11 +870,11 @@
           StorageLive(_155);
           StorageLive(_156);
           StorageLive(_157);
-          _157 = (*_154);
+          _157 = copy (*_154);
           StorageLive(_158);
-          _158 = _1;
+          _158 = copy _1;
 -         _156 = Add(move _157, move _158);
-+         _156 = Add(move _157, _1);
++         _156 = Add(move _157, copy _1);
           StorageDead(_158);
           StorageDead(_157);
           _155 = opaque::<u64>(move _156) -> [return: bb41, unwind continue];
@@ -886,11 +886,11 @@
           StorageLive(_159);
           StorageLive(_160);
           StorageLive(_161);
-          _161 = (*_154);
+          _161 = copy (*_154);
           StorageLive(_162);
-          _162 = _1;
+          _162 = copy _1;
 -         _160 = Add(move _161, move _162);
-+         _160 = Add(move _161, _1);
++         _160 = Add(move _161, copy _1);
           StorageDead(_162);
           StorageDead(_161);
           _159 = opaque::<u64>(move _160) -> [return: bb42, unwind continue];
@@ -910,16 +910,16 @@
 -         StorageLive(_166);
 +         nop;
 +         nop;
-          _166 = (*_163);
+          _166 = copy (*_163);
           StorageLive(_167);
-          _167 = _1;
+          _167 = copy _1;
 -         _165 = Add(move _166, move _167);
-+         _165 = Add(_166, _1);
++         _165 = Add(copy _166, copy _1);
           StorageDead(_167);
 -         StorageDead(_166);
 -         _164 = opaque::<u64>(move _165) -> [return: bb43, unwind continue];
 +         nop;
-+         _164 = opaque::<u64>(_165) -> [return: bb43, unwind continue];
++         _164 = opaque::<u64>(copy _165) -> [return: bb43, unwind continue];
       }
   
       bb43: {
@@ -929,16 +929,16 @@
           StorageLive(_168);
           StorageLive(_169);
           StorageLive(_170);
--         _170 = (*_163);
-+         _170 = _166;
+-         _170 = copy (*_163);
++         _170 = copy _166;
           StorageLive(_171);
-          _171 = _1;
+          _171 = copy _1;
 -         _169 = Add(move _170, move _171);
-+         _169 = _165;
++         _169 = copy _165;
           StorageDead(_171);
           StorageDead(_170);
 -         _168 = opaque::<u64>(move _169) -> [return: bb44, unwind continue];
-+         _168 = opaque::<u64>(_165) -> [return: bb44, unwind continue];
++         _168 = opaque::<u64>(copy _165) -> [return: bb44, unwind continue];
       }
   
       bb44: {
diff --git a/tests/mir-opt/gvn.unary.GVN.panic-abort.diff b/tests/mir-opt/gvn.unary.GVN.panic-abort.diff
index 9469032f294..d14aec6df5f 100644
--- a/tests/mir-opt/gvn.unary.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.unary.GVN.panic-abort.diff
@@ -37,15 +37,15 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = Neg(move _5);
-+         _4 = Neg(_1);
++         _4 = Neg(copy _1);
           StorageDead(_5);
 -         _3 = Neg(move _4);
-+         _3 = _1;
++         _3 = copy _1;
           StorageDead(_4);
 -         _2 = opaque::<i64>(move _3) -> [return: bb1, unwind unreachable];
-+         _2 = opaque::<i64>(_1) -> [return: bb1, unwind unreachable];
++         _2 = opaque::<i64>(copy _1) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
@@ -54,23 +54,23 @@
 -         StorageLive(_6);
 +         nop;
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
 -         _6 = Lt(move _7, const 13_i64);
-+         _6 = Lt(_1, const 13_i64);
++         _6 = Lt(copy _1, const 13_i64);
           StorageDead(_7);
           StorageLive(_8);
           StorageLive(_9);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _6;
+          _11 = copy _6;
 -         _10 = Not(move _11);
-+         _10 = Not(_6);
++         _10 = Not(copy _6);
           StorageDead(_11);
 -         _9 = Not(move _10);
-+         _9 = _6;
++         _9 = copy _6;
           StorageDead(_10);
 -         _8 = opaque::<bool>(move _9) -> [return: bb2, unwind unreachable];
-+         _8 = opaque::<bool>(_6) -> [return: bb2, unwind unreachable];
++         _8 = opaque::<bool>(copy _6) -> [return: bb2, unwind unreachable];
       }
   
       bb2: {
@@ -80,12 +80,12 @@
 -         StorageLive(_13);
 +         nop;
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
 -         _13 = Ne(move _14, const 15_i64);
-+         _13 = Ne(_1, const 15_i64);
++         _13 = Ne(copy _1, const 15_i64);
           StorageDead(_14);
 -         _12 = opaque::<bool>(move _13) -> [return: bb3, unwind unreachable];
-+         _12 = opaque::<bool>(_13) -> [return: bb3, unwind unreachable];
++         _12 = opaque::<bool>(copy _13) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
@@ -96,15 +96,15 @@
           StorageLive(_16);
           StorageLive(_17);
           StorageLive(_18);
-          _18 = _1;
+          _18 = copy _1;
 -         _17 = Eq(move _18, const 15_i64);
-+         _17 = Eq(_1, const 15_i64);
++         _17 = Eq(copy _1, const 15_i64);
           StorageDead(_18);
 -         _16 = Not(move _17);
-+         _16 = _13;
++         _16 = copy _13;
           StorageDead(_17);
 -         _15 = opaque::<bool>(move _16) -> [return: bb4, unwind unreachable];
-+         _15 = opaque::<bool>(_13) -> [return: bb4, unwind unreachable];
++         _15 = opaque::<bool>(copy _13) -> [return: bb4, unwind unreachable];
       }
   
       bb4: {
@@ -114,12 +114,12 @@
 -         StorageLive(_20);
 +         nop;
           StorageLive(_21);
-          _21 = _1;
+          _21 = copy _1;
 -         _20 = Eq(move _21, const 35_i64);
-+         _20 = Eq(_1, const 35_i64);
++         _20 = Eq(copy _1, const 35_i64);
           StorageDead(_21);
 -         _19 = opaque::<bool>(move _20) -> [return: bb5, unwind unreachable];
-+         _19 = opaque::<bool>(_20) -> [return: bb5, unwind unreachable];
++         _19 = opaque::<bool>(copy _20) -> [return: bb5, unwind unreachable];
       }
   
       bb5: {
@@ -130,15 +130,15 @@
           StorageLive(_23);
           StorageLive(_24);
           StorageLive(_25);
-          _25 = _1;
+          _25 = copy _1;
 -         _24 = Ne(move _25, const 35_i64);
-+         _24 = Ne(_1, const 35_i64);
++         _24 = Ne(copy _1, const 35_i64);
           StorageDead(_25);
 -         _23 = Not(move _24);
-+         _23 = _20;
++         _23 = copy _20;
           StorageDead(_24);
 -         _22 = opaque::<bool>(move _23) -> [return: bb6, unwind unreachable];
-+         _22 = opaque::<bool>(_20) -> [return: bb6, unwind unreachable];
++         _22 = opaque::<bool>(copy _20) -> [return: bb6, unwind unreachable];
       }
   
       bb6: {
diff --git a/tests/mir-opt/gvn.unary.GVN.panic-unwind.diff b/tests/mir-opt/gvn.unary.GVN.panic-unwind.diff
index e672f6fb6ba..5978f1faa1f 100644
--- a/tests/mir-opt/gvn.unary.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.unary.GVN.panic-unwind.diff
@@ -37,15 +37,15 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = Neg(move _5);
-+         _4 = Neg(_1);
++         _4 = Neg(copy _1);
           StorageDead(_5);
 -         _3 = Neg(move _4);
-+         _3 = _1;
++         _3 = copy _1;
           StorageDead(_4);
 -         _2 = opaque::<i64>(move _3) -> [return: bb1, unwind continue];
-+         _2 = opaque::<i64>(_1) -> [return: bb1, unwind continue];
++         _2 = opaque::<i64>(copy _1) -> [return: bb1, unwind continue];
       }
   
       bb1: {
@@ -54,23 +54,23 @@
 -         StorageLive(_6);
 +         nop;
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
 -         _6 = Lt(move _7, const 13_i64);
-+         _6 = Lt(_1, const 13_i64);
++         _6 = Lt(copy _1, const 13_i64);
           StorageDead(_7);
           StorageLive(_8);
           StorageLive(_9);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _6;
+          _11 = copy _6;
 -         _10 = Not(move _11);
-+         _10 = Not(_6);
++         _10 = Not(copy _6);
           StorageDead(_11);
 -         _9 = Not(move _10);
-+         _9 = _6;
++         _9 = copy _6;
           StorageDead(_10);
 -         _8 = opaque::<bool>(move _9) -> [return: bb2, unwind continue];
-+         _8 = opaque::<bool>(_6) -> [return: bb2, unwind continue];
++         _8 = opaque::<bool>(copy _6) -> [return: bb2, unwind continue];
       }
   
       bb2: {
@@ -80,12 +80,12 @@
 -         StorageLive(_13);
 +         nop;
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
 -         _13 = Ne(move _14, const 15_i64);
-+         _13 = Ne(_1, const 15_i64);
++         _13 = Ne(copy _1, const 15_i64);
           StorageDead(_14);
 -         _12 = opaque::<bool>(move _13) -> [return: bb3, unwind continue];
-+         _12 = opaque::<bool>(_13) -> [return: bb3, unwind continue];
++         _12 = opaque::<bool>(copy _13) -> [return: bb3, unwind continue];
       }
   
       bb3: {
@@ -96,15 +96,15 @@
           StorageLive(_16);
           StorageLive(_17);
           StorageLive(_18);
-          _18 = _1;
+          _18 = copy _1;
 -         _17 = Eq(move _18, const 15_i64);
-+         _17 = Eq(_1, const 15_i64);
++         _17 = Eq(copy _1, const 15_i64);
           StorageDead(_18);
 -         _16 = Not(move _17);
-+         _16 = _13;
++         _16 = copy _13;
           StorageDead(_17);
 -         _15 = opaque::<bool>(move _16) -> [return: bb4, unwind continue];
-+         _15 = opaque::<bool>(_13) -> [return: bb4, unwind continue];
++         _15 = opaque::<bool>(copy _13) -> [return: bb4, unwind continue];
       }
   
       bb4: {
@@ -114,12 +114,12 @@
 -         StorageLive(_20);
 +         nop;
           StorageLive(_21);
-          _21 = _1;
+          _21 = copy _1;
 -         _20 = Eq(move _21, const 35_i64);
-+         _20 = Eq(_1, const 35_i64);
++         _20 = Eq(copy _1, const 35_i64);
           StorageDead(_21);
 -         _19 = opaque::<bool>(move _20) -> [return: bb5, unwind continue];
-+         _19 = opaque::<bool>(_20) -> [return: bb5, unwind continue];
++         _19 = opaque::<bool>(copy _20) -> [return: bb5, unwind continue];
       }
   
       bb5: {
@@ -130,15 +130,15 @@
           StorageLive(_23);
           StorageLive(_24);
           StorageLive(_25);
-          _25 = _1;
+          _25 = copy _1;
 -         _24 = Ne(move _25, const 35_i64);
-+         _24 = Ne(_1, const 35_i64);
++         _24 = Ne(copy _1, const 35_i64);
           StorageDead(_25);
 -         _23 = Not(move _24);
-+         _23 = _20;
++         _23 = copy _20;
           StorageDead(_24);
 -         _22 = opaque::<bool>(move _23) -> [return: bb6, unwind continue];
-+         _22 = opaque::<bool>(_20) -> [return: bb6, unwind continue];
++         _22 = opaque::<bool>(copy _20) -> [return: bb6, unwind continue];
       }
   
       bb6: {
diff --git a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff
index 3eed0473f7f..bb938f3ba6a 100644
--- a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-abort.diff
@@ -58,10 +58,10 @@
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
--         _7 = _1;
+-         _7 = copy _1;
 +         _7 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_8);
--         _8 = _3;
+-         _8 = copy _3;
 -         _6 = Eq(move _7, move _8);
 +         _8 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _6 = const false;
@@ -77,10 +77,10 @@
           StorageLive(_9);
           StorageLive(_10);
           StorageLive(_11);
--         _11 = _1;
+-         _11 = copy _1;
 +         _11 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_12);
--         _12 = _3;
+-         _12 = copy _3;
 -         _10 = Ne(move _11, move _12);
 +         _12 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _10 = const true;
@@ -96,10 +96,10 @@
           StorageLive(_13);
           StorageLive(_14);
           StorageLive(_15);
--         _15 = _1;
+-         _15 = copy _1;
 +         _15 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_16);
--         _16 = _3;
+-         _16 = copy _3;
 -         _14 = Lt(move _15, move _16);
 +         _16 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _14 = const true;
@@ -115,10 +115,10 @@
           StorageLive(_17);
           StorageLive(_18);
           StorageLive(_19);
--         _19 = _1;
+-         _19 = copy _1;
 +         _19 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_20);
--         _20 = _3;
+-         _20 = copy _3;
 -         _18 = Le(move _19, move _20);
 +         _20 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _18 = const true;
@@ -134,10 +134,10 @@
           StorageLive(_21);
           StorageLive(_22);
           StorageLive(_23);
--         _23 = _1;
+-         _23 = copy _1;
 +         _23 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_24);
--         _24 = _3;
+-         _24 = copy _3;
 -         _22 = Gt(move _23, move _24);
 +         _24 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _22 = const false;
@@ -153,10 +153,10 @@
           StorageLive(_25);
           StorageLive(_26);
           StorageLive(_27);
--         _27 = _1;
+-         _27 = copy _1;
 +         _27 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_28);
--         _28 = _3;
+-         _28 = copy _3;
 -         _26 = Ge(move _27, move _28);
 +         _28 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _26 = const false;
diff --git a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff
index 9a6e255a872..81432d687eb 100644
--- a/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.wide_ptr_integer.GVN.panic-unwind.diff
@@ -58,10 +58,10 @@
           StorageLive(_5);
           StorageLive(_6);
           StorageLive(_7);
--         _7 = _1;
+-         _7 = copy _1;
 +         _7 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_8);
--         _8 = _3;
+-         _8 = copy _3;
 -         _6 = Eq(move _7, move _8);
 +         _8 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _6 = const false;
@@ -77,10 +77,10 @@
           StorageLive(_9);
           StorageLive(_10);
           StorageLive(_11);
--         _11 = _1;
+-         _11 = copy _1;
 +         _11 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_12);
--         _12 = _3;
+-         _12 = copy _3;
 -         _10 = Ne(move _11, move _12);
 +         _12 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _10 = const true;
@@ -96,10 +96,10 @@
           StorageLive(_13);
           StorageLive(_14);
           StorageLive(_15);
--         _15 = _1;
+-         _15 = copy _1;
 +         _15 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_16);
--         _16 = _3;
+-         _16 = copy _3;
 -         _14 = Lt(move _15, move _16);
 +         _16 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _14 = const true;
@@ -115,10 +115,10 @@
           StorageLive(_17);
           StorageLive(_18);
           StorageLive(_19);
--         _19 = _1;
+-         _19 = copy _1;
 +         _19 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_20);
--         _20 = _3;
+-         _20 = copy _3;
 -         _18 = Le(move _19, move _20);
 +         _20 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _18 = const true;
@@ -134,10 +134,10 @@
           StorageLive(_21);
           StorageLive(_22);
           StorageLive(_23);
--         _23 = _1;
+-         _23 = copy _1;
 +         _23 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_24);
--         _24 = _3;
+-         _24 = copy _3;
 -         _22 = Gt(move _23, move _24);
 +         _24 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _22 = const false;
@@ -153,10 +153,10 @@
           StorageLive(_25);
           StorageLive(_26);
           StorageLive(_27);
--         _27 = _1;
+-         _27 = copy _1;
 +         _27 = const Indirect { alloc_id: ALLOC0, offset: Size(0 bytes) }: *const [u8];
           StorageLive(_28);
--         _28 = _3;
+-         _28 = copy _3;
 -         _26 = Ge(move _27, move _28);
 +         _28 = const Indirect { alloc_id: ALLOC1, offset: Size(0 bytes) }: *const [u8];
 +         _26 = const false;
diff --git a/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-abort.diff b/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-abort.diff
index 629c2225682..c58362e391c 100644
--- a/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-abort.diff
@@ -69,7 +69,7 @@
           _2 = &raw const (*_3);
 -         _1 = move _2 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_2);
-+         _1 = _2;
++         _1 = copy _2;
 +         nop;
           StorageDead(_5);
           StorageDead(_3);
@@ -87,24 +87,24 @@
           _8 = &raw const (*_9);
 -         _7 = move _8 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_8);
-+         _7 = _8;
++         _7 = copy _8;
 +         nop;
           StorageDead(_11);
           StorageDead(_9);
           StorageLive(_13);
           StorageLive(_14);
           StorageLive(_15);
--         _15 = _1;
-+         _15 = _2;
+-         _15 = copy _1;
++         _15 = copy _2;
           StorageLive(_16);
           StorageLive(_17);
--         _17 = _7;
+-         _17 = copy _7;
 -         _16 = move _17 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _17 = _8;
-+         _16 = _8;
++         _17 = copy _8;
++         _16 = copy _8;
           StorageDead(_17);
 -         _14 = Eq(move _15, move _16);
-+         _14 = Eq(_2, _8);
++         _14 = Eq(copy _2, copy _8);
           StorageDead(_16);
           StorageDead(_15);
           _13 = opaque::<bool>(move _14) -> [return: bb1, unwind unreachable];
@@ -116,17 +116,17 @@
           StorageLive(_18);
           StorageLive(_19);
           StorageLive(_20);
--         _20 = _1;
-+         _20 = _2;
+-         _20 = copy _1;
++         _20 = copy _2;
           StorageLive(_21);
           StorageLive(_22);
--         _22 = _7;
+-         _22 = copy _7;
 -         _21 = move _22 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _22 = _8;
-+         _21 = _8;
++         _22 = copy _8;
++         _21 = copy _8;
           StorageDead(_22);
 -         _19 = Ne(move _20, move _21);
-+         _19 = Ne(_2, _8);
++         _19 = Ne(copy _2, copy _8);
           StorageDead(_21);
           StorageDead(_20);
           _18 = opaque::<bool>(move _19) -> [return: bb2, unwind unreachable];
@@ -138,17 +138,17 @@
           StorageLive(_23);
           StorageLive(_24);
           StorageLive(_25);
--         _25 = _1;
-+         _25 = _2;
+-         _25 = copy _1;
++         _25 = copy _2;
           StorageLive(_26);
           StorageLive(_27);
--         _27 = _7;
+-         _27 = copy _7;
 -         _26 = move _27 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _27 = _8;
-+         _26 = _8;
++         _27 = copy _8;
++         _26 = copy _8;
           StorageDead(_27);
 -         _24 = Lt(move _25, move _26);
-+         _24 = Lt(_2, _8);
++         _24 = Lt(copy _2, copy _8);
           StorageDead(_26);
           StorageDead(_25);
           _23 = opaque::<bool>(move _24) -> [return: bb3, unwind unreachable];
@@ -160,17 +160,17 @@
           StorageLive(_28);
           StorageLive(_29);
           StorageLive(_30);
--         _30 = _1;
-+         _30 = _2;
+-         _30 = copy _1;
++         _30 = copy _2;
           StorageLive(_31);
           StorageLive(_32);
--         _32 = _7;
+-         _32 = copy _7;
 -         _31 = move _32 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _32 = _8;
-+         _31 = _8;
++         _32 = copy _8;
++         _31 = copy _8;
           StorageDead(_32);
 -         _29 = Le(move _30, move _31);
-+         _29 = Le(_2, _8);
++         _29 = Le(copy _2, copy _8);
           StorageDead(_31);
           StorageDead(_30);
           _28 = opaque::<bool>(move _29) -> [return: bb4, unwind unreachable];
@@ -182,17 +182,17 @@
           StorageLive(_33);
           StorageLive(_34);
           StorageLive(_35);
--         _35 = _1;
-+         _35 = _2;
+-         _35 = copy _1;
++         _35 = copy _2;
           StorageLive(_36);
           StorageLive(_37);
--         _37 = _7;
+-         _37 = copy _7;
 -         _36 = move _37 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _37 = _8;
-+         _36 = _8;
++         _37 = copy _8;
++         _36 = copy _8;
           StorageDead(_37);
 -         _34 = Gt(move _35, move _36);
-+         _34 = Gt(_2, _8);
++         _34 = Gt(copy _2, copy _8);
           StorageDead(_36);
           StorageDead(_35);
           _33 = opaque::<bool>(move _34) -> [return: bb5, unwind unreachable];
@@ -204,17 +204,17 @@
           StorageLive(_38);
           StorageLive(_39);
           StorageLive(_40);
--         _40 = _1;
-+         _40 = _2;
+-         _40 = copy _1;
++         _40 = copy _2;
           StorageLive(_41);
           StorageLive(_42);
--         _42 = _7;
+-         _42 = copy _7;
 -         _41 = move _42 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _42 = _8;
-+         _41 = _8;
++         _42 = copy _8;
++         _41 = copy _8;
           StorageDead(_42);
 -         _39 = Ge(move _40, move _41);
-+         _39 = Ge(_2, _8);
++         _39 = Ge(copy _2, copy _8);
           StorageDead(_41);
           StorageDead(_40);
           _38 = opaque::<bool>(move _39) -> [return: bb6, unwind unreachable];
diff --git a/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-unwind.diff b/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-unwind.diff
index 3380bc84cb8..b29ee862c81 100644
--- a/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.wide_ptr_provenance.GVN.panic-unwind.diff
@@ -69,7 +69,7 @@
           _2 = &raw const (*_3);
 -         _1 = move _2 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_2);
-+         _1 = _2;
++         _1 = copy _2;
 +         nop;
           StorageDead(_5);
           StorageDead(_3);
@@ -87,24 +87,24 @@
           _8 = &raw const (*_9);
 -         _7 = move _8 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_8);
-+         _7 = _8;
++         _7 = copy _8;
 +         nop;
           StorageDead(_11);
           StorageDead(_9);
           StorageLive(_13);
           StorageLive(_14);
           StorageLive(_15);
--         _15 = _1;
-+         _15 = _2;
+-         _15 = copy _1;
++         _15 = copy _2;
           StorageLive(_16);
           StorageLive(_17);
--         _17 = _7;
+-         _17 = copy _7;
 -         _16 = move _17 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _17 = _8;
-+         _16 = _8;
++         _17 = copy _8;
++         _16 = copy _8;
           StorageDead(_17);
 -         _14 = Eq(move _15, move _16);
-+         _14 = Eq(_2, _8);
++         _14 = Eq(copy _2, copy _8);
           StorageDead(_16);
           StorageDead(_15);
           _13 = opaque::<bool>(move _14) -> [return: bb1, unwind continue];
@@ -116,17 +116,17 @@
           StorageLive(_18);
           StorageLive(_19);
           StorageLive(_20);
--         _20 = _1;
-+         _20 = _2;
+-         _20 = copy _1;
++         _20 = copy _2;
           StorageLive(_21);
           StorageLive(_22);
--         _22 = _7;
+-         _22 = copy _7;
 -         _21 = move _22 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _22 = _8;
-+         _21 = _8;
++         _22 = copy _8;
++         _21 = copy _8;
           StorageDead(_22);
 -         _19 = Ne(move _20, move _21);
-+         _19 = Ne(_2, _8);
++         _19 = Ne(copy _2, copy _8);
           StorageDead(_21);
           StorageDead(_20);
           _18 = opaque::<bool>(move _19) -> [return: bb2, unwind continue];
@@ -138,17 +138,17 @@
           StorageLive(_23);
           StorageLive(_24);
           StorageLive(_25);
--         _25 = _1;
-+         _25 = _2;
+-         _25 = copy _1;
++         _25 = copy _2;
           StorageLive(_26);
           StorageLive(_27);
--         _27 = _7;
+-         _27 = copy _7;
 -         _26 = move _27 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _27 = _8;
-+         _26 = _8;
++         _27 = copy _8;
++         _26 = copy _8;
           StorageDead(_27);
 -         _24 = Lt(move _25, move _26);
-+         _24 = Lt(_2, _8);
++         _24 = Lt(copy _2, copy _8);
           StorageDead(_26);
           StorageDead(_25);
           _23 = opaque::<bool>(move _24) -> [return: bb3, unwind continue];
@@ -160,17 +160,17 @@
           StorageLive(_28);
           StorageLive(_29);
           StorageLive(_30);
--         _30 = _1;
-+         _30 = _2;
+-         _30 = copy _1;
++         _30 = copy _2;
           StorageLive(_31);
           StorageLive(_32);
--         _32 = _7;
+-         _32 = copy _7;
 -         _31 = move _32 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _32 = _8;
-+         _31 = _8;
++         _32 = copy _8;
++         _31 = copy _8;
           StorageDead(_32);
 -         _29 = Le(move _30, move _31);
-+         _29 = Le(_2, _8);
++         _29 = Le(copy _2, copy _8);
           StorageDead(_31);
           StorageDead(_30);
           _28 = opaque::<bool>(move _29) -> [return: bb4, unwind continue];
@@ -182,17 +182,17 @@
           StorageLive(_33);
           StorageLive(_34);
           StorageLive(_35);
--         _35 = _1;
-+         _35 = _2;
+-         _35 = copy _1;
++         _35 = copy _2;
           StorageLive(_36);
           StorageLive(_37);
--         _37 = _7;
+-         _37 = copy _7;
 -         _36 = move _37 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _37 = _8;
-+         _36 = _8;
++         _37 = copy _8;
++         _36 = copy _8;
           StorageDead(_37);
 -         _34 = Gt(move _35, move _36);
-+         _34 = Gt(_2, _8);
++         _34 = Gt(copy _2, copy _8);
           StorageDead(_36);
           StorageDead(_35);
           _33 = opaque::<bool>(move _34) -> [return: bb5, unwind continue];
@@ -204,17 +204,17 @@
           StorageLive(_38);
           StorageLive(_39);
           StorageLive(_40);
--         _40 = _1;
-+         _40 = _2;
+-         _40 = copy _1;
++         _40 = copy _2;
           StorageLive(_41);
           StorageLive(_42);
--         _42 = _7;
+-         _42 = copy _7;
 -         _41 = move _42 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _42 = _8;
-+         _41 = _8;
++         _42 = copy _8;
++         _41 = copy _8;
           StorageDead(_42);
 -         _39 = Ge(move _40, move _41);
-+         _39 = Ge(_2, _8);
++         _39 = Ge(copy _2, copy _8);
           StorageDead(_41);
           StorageDead(_40);
           _38 = opaque::<bool>(move _39) -> [return: bb6, unwind continue];
diff --git a/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-abort.diff b/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-abort.diff
index da1662615d2..f4c38b7ab07 100644
--- a/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-abort.diff
@@ -75,8 +75,8 @@
           StorageLive(_8);
           _8 = const 0_usize;
 -         _9 = Len((*_1));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb1, unwind unreachable];
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb1, unwind unreachable];
 +         _9 = const 2_usize;
 +         _10 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 2_usize, const 0_usize) -> [success: bb1, unwind unreachable];
@@ -91,7 +91,7 @@
           _4 = &raw const (*_5);
 -         _3 = move _4 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_4);
-+         _3 = _4;
++         _3 = copy _4;
 +         nop;
           StorageDead(_7);
           StorageDead(_5);
@@ -104,8 +104,8 @@
           StorageLive(_16);
           _16 = const 1_usize;
 -         _17 = Len((*_1));
--         _18 = Lt(_16, _17);
--         assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb2, unwind unreachable];
+-         _18 = Lt(copy _16, copy _17);
+-         assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, copy _16) -> [success: bb2, unwind unreachable];
 +         _17 = const 2_usize;
 +         _18 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 2_usize, const 1_usize) -> [success: bb2, unwind unreachable];
@@ -120,24 +120,24 @@
           _12 = &raw const (*_13);
 -         _11 = move _12 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_12);
-+         _11 = _12;
++         _11 = copy _12;
 +         nop;
           StorageDead(_15);
           StorageDead(_13);
           StorageLive(_19);
           StorageLive(_20);
           StorageLive(_21);
--         _21 = _3;
-+         _21 = _4;
+-         _21 = copy _3;
++         _21 = copy _4;
           StorageLive(_22);
           StorageLive(_23);
--         _23 = _11;
+-         _23 = copy _11;
 -         _22 = move _23 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _23 = _12;
-+         _22 = _12;
++         _23 = copy _12;
++         _22 = copy _12;
           StorageDead(_23);
 -         _20 = Eq(move _21, move _22);
-+         _20 = Eq(_4, _12);
++         _20 = Eq(copy _4, copy _12);
           StorageDead(_22);
           StorageDead(_21);
           _19 = opaque::<bool>(move _20) -> [return: bb3, unwind unreachable];
@@ -149,17 +149,17 @@
           StorageLive(_24);
           StorageLive(_25);
           StorageLive(_26);
--         _26 = _3;
-+         _26 = _4;
+-         _26 = copy _3;
++         _26 = copy _4;
           StorageLive(_27);
           StorageLive(_28);
--         _28 = _11;
+-         _28 = copy _11;
 -         _27 = move _28 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _28 = _12;
-+         _27 = _12;
++         _28 = copy _12;
++         _27 = copy _12;
           StorageDead(_28);
 -         _25 = Ne(move _26, move _27);
-+         _25 = Ne(_4, _12);
++         _25 = Ne(copy _4, copy _12);
           StorageDead(_27);
           StorageDead(_26);
           _24 = opaque::<bool>(move _25) -> [return: bb4, unwind unreachable];
@@ -171,17 +171,17 @@
           StorageLive(_29);
           StorageLive(_30);
           StorageLive(_31);
--         _31 = _3;
-+         _31 = _4;
+-         _31 = copy _3;
++         _31 = copy _4;
           StorageLive(_32);
           StorageLive(_33);
--         _33 = _11;
+-         _33 = copy _11;
 -         _32 = move _33 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _33 = _12;
-+         _32 = _12;
++         _33 = copy _12;
++         _32 = copy _12;
           StorageDead(_33);
 -         _30 = Lt(move _31, move _32);
-+         _30 = Lt(_4, _12);
++         _30 = Lt(copy _4, copy _12);
           StorageDead(_32);
           StorageDead(_31);
           _29 = opaque::<bool>(move _30) -> [return: bb5, unwind unreachable];
@@ -193,17 +193,17 @@
           StorageLive(_34);
           StorageLive(_35);
           StorageLive(_36);
--         _36 = _3;
-+         _36 = _4;
+-         _36 = copy _3;
++         _36 = copy _4;
           StorageLive(_37);
           StorageLive(_38);
--         _38 = _11;
+-         _38 = copy _11;
 -         _37 = move _38 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _38 = _12;
-+         _37 = _12;
++         _38 = copy _12;
++         _37 = copy _12;
           StorageDead(_38);
 -         _35 = Le(move _36, move _37);
-+         _35 = Le(_4, _12);
++         _35 = Le(copy _4, copy _12);
           StorageDead(_37);
           StorageDead(_36);
           _34 = opaque::<bool>(move _35) -> [return: bb6, unwind unreachable];
@@ -215,17 +215,17 @@
           StorageLive(_39);
           StorageLive(_40);
           StorageLive(_41);
--         _41 = _3;
-+         _41 = _4;
+-         _41 = copy _3;
++         _41 = copy _4;
           StorageLive(_42);
           StorageLive(_43);
--         _43 = _11;
+-         _43 = copy _11;
 -         _42 = move _43 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _43 = _12;
-+         _42 = _12;
++         _43 = copy _12;
++         _42 = copy _12;
           StorageDead(_43);
 -         _40 = Gt(move _41, move _42);
-+         _40 = Gt(_4, _12);
++         _40 = Gt(copy _4, copy _12);
           StorageDead(_42);
           StorageDead(_41);
           _39 = opaque::<bool>(move _40) -> [return: bb7, unwind unreachable];
@@ -237,17 +237,17 @@
           StorageLive(_44);
           StorageLive(_45);
           StorageLive(_46);
--         _46 = _3;
-+         _46 = _4;
+-         _46 = copy _3;
++         _46 = copy _4;
           StorageLive(_47);
           StorageLive(_48);
--         _48 = _11;
+-         _48 = copy _11;
 -         _47 = move _48 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _48 = _12;
-+         _47 = _12;
++         _48 = copy _12;
++         _47 = copy _12;
           StorageDead(_48);
 -         _45 = Ge(move _46, move _47);
-+         _45 = Ge(_4, _12);
++         _45 = Ge(copy _4, copy _12);
           StorageDead(_47);
           StorageDead(_46);
           _44 = opaque::<bool>(move _45) -> [return: bb8, unwind unreachable];
diff --git a/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff b/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff
index 6c4f3a91264..03f2d129a9b 100644
--- a/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.wide_ptr_same_provenance.GVN.panic-unwind.diff
@@ -75,8 +75,8 @@
           StorageLive(_8);
           _8 = const 0_usize;
 -         _9 = Len((*_1));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb1, unwind continue];
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb1, unwind continue];
 +         _9 = const 2_usize;
 +         _10 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 2_usize, const 0_usize) -> [success: bb1, unwind continue];
@@ -91,7 +91,7 @@
           _4 = &raw const (*_5);
 -         _3 = move _4 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_4);
-+         _3 = _4;
++         _3 = copy _4;
 +         nop;
           StorageDead(_7);
           StorageDead(_5);
@@ -104,8 +104,8 @@
           StorageLive(_16);
           _16 = const 1_usize;
 -         _17 = Len((*_1));
--         _18 = Lt(_16, _17);
--         assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, _16) -> [success: bb2, unwind continue];
+-         _18 = Lt(copy _16, copy _17);
+-         assert(move _18, "index out of bounds: the length is {} but the index is {}", move _17, copy _16) -> [success: bb2, unwind continue];
 +         _17 = const 2_usize;
 +         _18 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 2_usize, const 1_usize) -> [success: bb2, unwind continue];
@@ -120,24 +120,24 @@
           _12 = &raw const (*_13);
 -         _11 = move _12 as *const dyn std::marker::Send (PointerCoercion(Unsize));
 -         StorageDead(_12);
-+         _11 = _12;
++         _11 = copy _12;
 +         nop;
           StorageDead(_15);
           StorageDead(_13);
           StorageLive(_19);
           StorageLive(_20);
           StorageLive(_21);
--         _21 = _3;
-+         _21 = _4;
+-         _21 = copy _3;
++         _21 = copy _4;
           StorageLive(_22);
           StorageLive(_23);
--         _23 = _11;
+-         _23 = copy _11;
 -         _22 = move _23 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _23 = _12;
-+         _22 = _12;
++         _23 = copy _12;
++         _22 = copy _12;
           StorageDead(_23);
 -         _20 = Eq(move _21, move _22);
-+         _20 = Eq(_4, _12);
++         _20 = Eq(copy _4, copy _12);
           StorageDead(_22);
           StorageDead(_21);
           _19 = opaque::<bool>(move _20) -> [return: bb3, unwind continue];
@@ -149,17 +149,17 @@
           StorageLive(_24);
           StorageLive(_25);
           StorageLive(_26);
--         _26 = _3;
-+         _26 = _4;
+-         _26 = copy _3;
++         _26 = copy _4;
           StorageLive(_27);
           StorageLive(_28);
--         _28 = _11;
+-         _28 = copy _11;
 -         _27 = move _28 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _28 = _12;
-+         _27 = _12;
++         _28 = copy _12;
++         _27 = copy _12;
           StorageDead(_28);
 -         _25 = Ne(move _26, move _27);
-+         _25 = Ne(_4, _12);
++         _25 = Ne(copy _4, copy _12);
           StorageDead(_27);
           StorageDead(_26);
           _24 = opaque::<bool>(move _25) -> [return: bb4, unwind continue];
@@ -171,17 +171,17 @@
           StorageLive(_29);
           StorageLive(_30);
           StorageLive(_31);
--         _31 = _3;
-+         _31 = _4;
+-         _31 = copy _3;
++         _31 = copy _4;
           StorageLive(_32);
           StorageLive(_33);
--         _33 = _11;
+-         _33 = copy _11;
 -         _32 = move _33 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _33 = _12;
-+         _32 = _12;
++         _33 = copy _12;
++         _32 = copy _12;
           StorageDead(_33);
 -         _30 = Lt(move _31, move _32);
-+         _30 = Lt(_4, _12);
++         _30 = Lt(copy _4, copy _12);
           StorageDead(_32);
           StorageDead(_31);
           _29 = opaque::<bool>(move _30) -> [return: bb5, unwind continue];
@@ -193,17 +193,17 @@
           StorageLive(_34);
           StorageLive(_35);
           StorageLive(_36);
--         _36 = _3;
-+         _36 = _4;
+-         _36 = copy _3;
++         _36 = copy _4;
           StorageLive(_37);
           StorageLive(_38);
--         _38 = _11;
+-         _38 = copy _11;
 -         _37 = move _38 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _38 = _12;
-+         _37 = _12;
++         _38 = copy _12;
++         _37 = copy _12;
           StorageDead(_38);
 -         _35 = Le(move _36, move _37);
-+         _35 = Le(_4, _12);
++         _35 = Le(copy _4, copy _12);
           StorageDead(_37);
           StorageDead(_36);
           _34 = opaque::<bool>(move _35) -> [return: bb6, unwind continue];
@@ -215,17 +215,17 @@
           StorageLive(_39);
           StorageLive(_40);
           StorageLive(_41);
--         _41 = _3;
-+         _41 = _4;
+-         _41 = copy _3;
++         _41 = copy _4;
           StorageLive(_42);
           StorageLive(_43);
--         _43 = _11;
+-         _43 = copy _11;
 -         _42 = move _43 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _43 = _12;
-+         _42 = _12;
++         _43 = copy _12;
++         _42 = copy _12;
           StorageDead(_43);
 -         _40 = Gt(move _41, move _42);
-+         _40 = Gt(_4, _12);
++         _40 = Gt(copy _4, copy _12);
           StorageDead(_42);
           StorageDead(_41);
           _39 = opaque::<bool>(move _40) -> [return: bb7, unwind continue];
@@ -237,17 +237,17 @@
           StorageLive(_44);
           StorageLive(_45);
           StorageLive(_46);
--         _46 = _3;
-+         _46 = _4;
+-         _46 = copy _3;
++         _46 = copy _4;
           StorageLive(_47);
           StorageLive(_48);
--         _48 = _11;
+-         _48 = copy _11;
 -         _47 = move _48 as *const dyn std::marker::Send (PointerCoercion(Unsize));
-+         _48 = _12;
-+         _47 = _12;
++         _48 = copy _12;
++         _47 = copy _12;
           StorageDead(_48);
 -         _45 = Ge(move _46, move _47);
-+         _45 = Ge(_4, _12);
++         _45 = Ge(copy _4, copy _12);
           StorageDead(_47);
           StorageDead(_46);
           _44 = opaque::<bool>(move _45) -> [return: bb8, unwind continue];
diff --git a/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-abort.diff b/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-abort.diff
index a5c29c191ad..0433152bb4f 100644
--- a/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-abort.diff
@@ -16,9 +16,9 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Option::<T>::Some(move _3);
-+         _2 = Option::<T>::Some(_1);
++         _2 = Option::<T>::Some(copy _1);
           StorageDead(_3);
 -         _4 = discriminant(_2);
 -         switchInt(move _4) -> [0: bb2, 1: bb3, otherwise: bb1];
@@ -37,10 +37,10 @@
   
       bb3: {
           StorageLive(_5);
--         _5 = ((_2 as Some).0: T);
--         _0 = _5;
-+         _5 = _1;
-+         _0 = _1;
+-         _5 = copy ((_2 as Some).0: T);
+-         _0 = copy _5;
++         _5 = copy _1;
++         _0 = copy _1;
           StorageDead(_5);
           StorageDead(_2);
           return;
diff --git a/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-unwind.diff b/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-unwind.diff
index 6f2e5248271..5722c865c2f 100644
--- a/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn.wrap_unwrap.GVN.panic-unwind.diff
@@ -16,9 +16,9 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Option::<T>::Some(move _3);
-+         _2 = Option::<T>::Some(_1);
++         _2 = Option::<T>::Some(copy _1);
           StorageDead(_3);
 -         _4 = discriminant(_2);
 -         switchInt(move _4) -> [0: bb2, 1: bb3, otherwise: bb1];
@@ -37,10 +37,10 @@
   
       bb3: {
           StorageLive(_5);
--         _5 = ((_2 as Some).0: T);
--         _0 = _5;
-+         _5 = _1;
-+         _0 = _1;
+-         _5 = copy ((_2 as Some).0: T);
+-         _0 = copy _5;
++         _5 = copy _1;
++         _0 = copy _1;
           StorageDead(_5);
           StorageDead(_2);
           return;
diff --git a/tests/mir-opt/gvn_copy_moves.fn0.GVN.diff b/tests/mir-opt/gvn_copy_moves.fn0.GVN.diff
index b12de636f58..c364da7a3cc 100644
--- a/tests/mir-opt/gvn_copy_moves.fn0.GVN.diff
+++ b/tests/mir-opt/gvn_copy_moves.fn0.GVN.diff
@@ -14,10 +14,10 @@
           _2 = [const 42_u128; 6];
 -         _2[_1] = const 1_u128;
 +         _2[1 of 2] = const 1_u128;
-          _3 = (_2,);
-          _4 = _3;
--         _5 = fn1(move (_3.0: [u128; 6]), _4) -> [return: bb1, unwind unreachable];
-+         _5 = fn1((_3.0: [u128; 6]), _3) -> [return: bb1, unwind unreachable];
+          _3 = (copy _2,);
+          _4 = copy _3;
+-         _5 = fn1(move (_3.0: [u128; 6]), copy _4) -> [return: bb1, unwind unreachable];
++         _5 = fn1(copy (_3.0: [u128; 6]), copy _3) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
diff --git a/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff b/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff
index 3af78d9b6ce..1e378d30a3e 100644
--- a/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff
+++ b/tests/mir-opt/gvn_ptr_eq_with_constant.main.GVN.diff
@@ -25,20 +25,20 @@
           StorageLive(_2);
           StorageLive(_3);
 -         _3 = AlignOf(u8);
--         _2 = _3 as *mut u8 (Transmute);
+-         _2 = copy _3 as *mut u8 (Transmute);
 +         _3 = const 1_usize;
 +         _2 = const {0x1 as *mut u8};
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
--         _5 = _2;
--         _4 = _2 as *const u8 (PtrToPtr);
+-         _5 = copy _2;
+-         _4 = copy _2 as *const u8 (PtrToPtr);
 +         _5 = const {0x1 as *mut u8};
 +         _4 = const {0x1 as *const u8};
           StorageDead(_5);
           StorageLive(_6);
 -         _6 = const Foo::<u8>::SENTINEL as *const u8 (PtrToPtr);
--         _1 = Eq(_4, _6);
+-         _1 = Eq(copy _4, copy _6);
 +         _6 = const {0x1 as *const u8};
 +         _1 = const true;
           StorageDead(_6);
diff --git a/tests/mir-opt/gvn_uninhabited.f.GVN.panic-abort.diff b/tests/mir-opt/gvn_uninhabited.f.GVN.panic-abort.diff
index 626367766d7..37b7b0d2c9d 100644
--- a/tests/mir-opt/gvn_uninhabited.f.GVN.panic-abort.diff
+++ b/tests/mir-opt/gvn_uninhabited.f.GVN.panic-abort.diff
@@ -17,14 +17,14 @@
           StorageLive(_3);
           _5 = const f::promoted[0];
           _3 = &(*_5);
--         _2 = ((*_3).1: E);
-+         _2 = ((*_5).1: E);
+-         _2 = copy ((*_3).1: E);
++         _2 = copy ((*_5).1: E);
           StorageLive(_1);
--         _1 = ((_2 as A).1: u32);
+-         _1 = copy ((_2 as A).1: u32);
 +         _1 = const 0_u32;
           StorageDead(_3);
           StorageDead(_2);
--         _0 = _1;
+-         _0 = copy _1;
 +         _0 = const 0_u32;
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/gvn_uninhabited.f.GVN.panic-unwind.diff b/tests/mir-opt/gvn_uninhabited.f.GVN.panic-unwind.diff
index 626367766d7..37b7b0d2c9d 100644
--- a/tests/mir-opt/gvn_uninhabited.f.GVN.panic-unwind.diff
+++ b/tests/mir-opt/gvn_uninhabited.f.GVN.panic-unwind.diff
@@ -17,14 +17,14 @@
           StorageLive(_3);
           _5 = const f::promoted[0];
           _3 = &(*_5);
--         _2 = ((*_3).1: E);
-+         _2 = ((*_5).1: E);
+-         _2 = copy ((*_3).1: E);
++         _2 = copy ((*_5).1: E);
           StorageLive(_1);
--         _1 = ((_2 as A).1: u32);
+-         _1 = copy ((_2 as A).1: u32);
 +         _1 = const 0_u32;
           StorageDead(_3);
           StorageDead(_2);
--         _0 = _1;
+-         _0 = copy _1;
 +         _0 = const 0_u32;
           StorageDead(_1);
           return;
diff --git a/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff
index 083515aebc6..2350faa05d3 100644
--- a/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.dont_opt_bool.SimplifyComparisonIntegral.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
       }
   
diff --git a/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff
index 15319586062..94570017730 100644
--- a/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.dont_opt_floats.SimplifyComparisonIntegral.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = Eq(move _3, const -42f32);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
       }
diff --git a/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff
index 218d7fd59b7..d19b4148405 100644
--- a/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.dont_remove_comparison.SimplifyComparisonIntegral.diff
@@ -17,11 +17,11 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const 17_i8);
 -         StorageDead(_3);
--         switchInt(_2) -> [0: bb2, otherwise: bb1];
-+         _2 = Eq(_3, const 17_i8);
+-         switchInt(copy _2) -> [0: bb2, otherwise: bb1];
++         _2 = Eq(copy _3, const 17_i8);
 +         nop;
 +         switchInt(move _3) -> [17: bb1, otherwise: bb2];
       }
@@ -30,7 +30,7 @@
 +         StorageDead(_3);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _2;
+          _7 = copy _2;
           _6 = move _7 as i32 (IntToInt);
           StorageDead(_7);
           _0 = Add(const 100_i32, move _6);
@@ -42,7 +42,7 @@
 +         StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
           _4 = move _5 as i32 (IntToInt);
           StorageDead(_5);
           _0 = Add(const 10_i32, move _4);
diff --git a/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff
index fedbd6cdd24..e47b7e52259 100644
--- a/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.opt_char.SimplifyComparisonIntegral.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const 'x');
 -         switchInt(move _2) -> [0: bb2, otherwise: bb1];
 +         nop;
diff --git a/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff
index 9c38d8fe065..b6cdc6af8bf 100644
--- a/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.opt_i8.SimplifyComparisonIntegral.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const 42_i8);
 -         switchInt(move _2) -> [0: bb2, otherwise: bb1];
 +         nop;
diff --git a/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff
index 8c85ce78565..31745ac732a 100644
--- a/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.opt_multiple_ifs.SimplifyComparisonIntegral.diff
@@ -12,7 +12,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const 42_u32);
 -         switchInt(move _2) -> [0: bb2, otherwise: bb1];
 +         nop;
@@ -29,7 +29,7 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = Ne(move _5, const 21_u32);
 -         switchInt(move _4) -> [0: bb4, otherwise: bb3];
 +         nop;
diff --git a/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff
index 876ed61e9fa..d747985f6e1 100644
--- a/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.opt_negative.SimplifyComparisonIntegral.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const -42_i32);
 -         switchInt(move _2) -> [0: bb2, otherwise: bb1];
 +         nop;
diff --git a/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff b/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff
index ed3eb47dd3d..1d6809a9438 100644
--- a/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff
+++ b/tests/mir-opt/if_condition_int.opt_u32.SimplifyComparisonIntegral.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const 42_u32);
 -         switchInt(move _2) -> [0: bb2, otherwise: bb1];
 +         nop;
diff --git a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff
index 4e495c37fbc..2d64d49ce5c 100644
--- a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-abort.diff
@@ -21,17 +21,17 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = <Q as Query>::cache::<T>(move _3) -> [return: bb1, unwind unreachable];
       }
   
       bb1: {
           StorageDead(_3);
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = try_execute_query::<<Q as Query>::C>(move _4) -> [return: bb2, unwind unreachable];
 +         StorageLive(_5);
-+         _5 = _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize));
++         _5 = copy _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize));
 +         _0 = <dyn Cache<V = <Q as Query>::V> as Cache>::store_nocache(move _5) -> [return: bb2, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff
index 7fdb7618212..c5e9654e19c 100644
--- a/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/dyn_trait.get_query.Inline.panic-unwind.diff
@@ -21,17 +21,17 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = <Q as Query>::cache::<T>(move _3) -> [return: bb1, unwind continue];
       }
   
       bb1: {
           StorageDead(_3);
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = try_execute_query::<<Q as Query>::C>(move _4) -> [return: bb2, unwind continue];
 +         StorageLive(_5);
-+         _5 = _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize));
++         _5 = copy _4 as &dyn Cache<V = <Q as Query>::V> (PointerCoercion(Unsize));
 +         _0 = <dyn Cache<V = <Q as Query>::V> as Cache>::store_nocache(move _5) -> [return: bb2, unwind continue];
       }
   
diff --git a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff
index 8df4408690b..13bc54424d1 100644
--- a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-abort.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _0 = <dyn Cache<V = V> as Cache>::store_nocache(move _2) -> [return: bb1, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff
index 43a0621f766..35d4db37802 100644
--- a/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/dyn_trait.mk_cycle.Inline.panic-unwind.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           _0 = <dyn Cache<V = V> as Cache>::store_nocache(move _2) -> [return: bb1, unwind continue];
       }
   
diff --git a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff
index e72c312f549..f02ca623317 100644
--- a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-abort.diff
@@ -13,7 +13,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = move _3 as &dyn Cache<V = <C as Cache>::V> (PointerCoercion(Unsize));
           StorageDead(_3);
 -         _0 = mk_cycle::<<C as Cache>::V>(move _2) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff
index 46728f9e2e6..31080dff4de 100644
--- a/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/dyn_trait.try_execute_query.Inline.panic-unwind.diff
@@ -13,7 +13,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = move _3 as &dyn Cache<V = <C as Cache>::V> (PointerCoercion(Unsize));
           StorageDead(_3);
 -         _0 = mk_cycle::<<C as Cache>::V>(move _2) -> [return: bb1, unwind continue];
diff --git a/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir b/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir
index 2d0b71e0a64..0ee5968419a 100644
--- a/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir
+++ b/tests/mir-opt/inline/inline_any_operand.bar.Inline.after.mir
@@ -18,12 +18,12 @@ fn bar() -> bool {
         StorageLive(_1);
         _1 = foo;
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         StorageLive(_3);
         _3 = const 1_i32;
         StorageLive(_4);
         _4 = const -1_i32;
-        _0 = Eq(_3, _4);
+        _0 = Eq(copy _3, copy _4);
         StorageDead(_4);
         StorageDead(_3);
         StorageDead(_2);
diff --git a/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir
index 8a60f4b1bdc..5bc227c87df 100644
--- a/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir
+++ b/tests/mir-opt/inline/inline_closure.foo.Inline.after.mir
@@ -26,15 +26,15 @@ fn foo(_1: T, _2: i32) -> i32 {
         _4 = &_3;
         StorageLive(_5);
         StorageLive(_6);
-        _6 = _2;
+        _6 = copy _2;
         StorageLive(_7);
-        _7 = _2;
+        _7 = copy _2;
         _5 = (move _6, move _7);
         StorageLive(_8);
         _8 = move (_5.0: i32);
         StorageLive(_9);
         _9 = move (_5.1: i32);
-        _0 = _8;
+        _0 = copy _8;
         StorageDead(_9);
         StorageDead(_8);
         StorageDead(_7);
diff --git a/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir
index f524b054b61..7930111cf22 100644
--- a/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir
+++ b/tests/mir-opt/inline/inline_closure_borrows_arg.foo.Inline.after.mir
@@ -26,15 +26,15 @@ fn foo(_1: T, _2: &i32) -> i32 {
         _4 = &_3;
         StorageLive(_5);
         StorageLive(_6);
-        _6 = _2;
+        _6 = copy _2;
         StorageLive(_7);
-        _7 = _2;
+        _7 = copy _2;
         _5 = (move _6, move _7);
         StorageLive(_8);
         _8 = move (_5.0: &i32);
         StorageLive(_9);
         _9 = move (_5.1: &i32);
-        _0 = (*_8);
+        _0 = copy (*_8);
         StorageDead(_9);
         StorageDead(_8);
         StorageDead(_7);
diff --git a/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir b/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir
index 2f9d28ea093..17e6e39a86b 100644
--- a/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir
+++ b/tests/mir-opt/inline/inline_closure_captures.foo.Inline.after.mir
@@ -34,18 +34,18 @@ fn foo(_1: T, _2: i32) -> (i32, T) {
         _6 = &_3;
         StorageLive(_7);
         StorageLive(_8);
-        _8 = _2;
+        _8 = copy _2;
         _7 = (move _8,);
         StorageLive(_9);
         _9 = move (_7.0: i32);
         StorageLive(_10);
         StorageLive(_12);
         StorageLive(_11);
-        _10 = ((*_6).0: &i32);
-        _11 = (*_10);
+        _10 = copy ((*_6).0: &i32);
+        _11 = copy (*_10);
         StorageLive(_13);
-        _12 = ((*_6).1: &T);
-        _13 = (*_12);
+        _12 = copy ((*_6).1: &T);
+        _13 = copy (*_12);
         _0 = (move _11, move _13);
         StorageDead(_13);
         StorageDead(_11);
diff --git a/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-abort.diff
index 07031a298bc..94017f028cc 100644
--- a/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-abort.diff
@@ -34,13 +34,13 @@
 -         _4 = g() -> [return: bb1, unwind unreachable];
 +         _4 = {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8 (#0)};
 +         _3 = &mut _4;
-+         _2 = Pin::<&mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8}> { __pointer: _3 };
++         _2 = Pin::<&mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8}> { __pointer: copy _3 };
 +         StorageDead(_3);
 +         StorageLive(_5);
 +         _5 = const false;
 +         StorageLive(_6);
 +         StorageLive(_7);
-+         _6 = (_2.0: &mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8});
++         _6 = copy (_2.0: &mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8});
 +         _7 = discriminant((*_6));
 +         switchInt(move _7) -> [0: bb3, 1: bb7, 3: bb8, otherwise: bb9];
       }
@@ -68,7 +68,7 @@
 -         StorageDead(_2);
 -         drop(_4) -> [return: bb4, unwind unreachable];
 +         StorageLive(_8);
-+         switchInt(_5) -> [0: bb4, otherwise: bb5];
++         switchInt(copy _5) -> [0: bb4, otherwise: bb5];
       }
   
       bb4: {
@@ -99,7 +99,7 @@
 +     bb8: {
 +         StorageLive(_8);
 +         StorageDead(_8);
-+         _1 = CoroutineState::<i32, bool>::Complete(_5);
++         _1 = CoroutineState::<i32, bool>::Complete(copy _5);
 +         discriminant((*_6)) = 1;
 +         goto -> bb2;
 +     }
diff --git a/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-unwind.diff
index ab6c62b0baf..858f9ace9b4 100644
--- a/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/inline_coroutine.main.Inline.panic-unwind.diff
@@ -34,13 +34,13 @@
 -         _4 = g() -> [return: bb1, unwind continue];
 +         _4 = {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8 (#0)};
 +         _3 = &mut _4;
-+         _2 = Pin::<&mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8}> { __pointer: _3 };
++         _2 = Pin::<&mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8}> { __pointer: copy _3 };
 +         StorageDead(_3);
 +         StorageLive(_5);
 +         _5 = const false;
 +         StorageLive(_6);
 +         StorageLive(_7);
-+         _6 = (_2.0: &mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8});
++         _6 = copy (_2.0: &mut {coroutine@$DIR/inline_coroutine.rs:20:5: 20:8});
 +         _7 = discriminant((*_6));
 +         switchInt(move _7) -> [0: bb5, 1: bb9, 3: bb10, otherwise: bb11];
       }
@@ -84,7 +84,7 @@
 -         drop(_4) -> [return: bb6, unwind terminate(cleanup)];
 +     bb5: {
 +         StorageLive(_8);
-+         switchInt(_5) -> [0: bb6, otherwise: bb7];
++         switchInt(copy _5) -> [0: bb6, otherwise: bb7];
       }
   
 -     bb6 (cleanup): {
@@ -113,7 +113,7 @@
 +     bb10: {
 +         StorageLive(_8);
 +         StorageDead(_8);
-+         _1 = CoroutineState::<i32, bool>::Complete(_5);
++         _1 = CoroutineState::<i32, bool>::Complete(copy _5);
 +         discriminant((*_6)) = 1;
 +         goto -> bb4;
 +     }
diff --git a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff
index d675695eb10..bda85586515 100644
--- a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-abort.diff
@@ -16,7 +16,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = Gt(move _3, const 0_i32);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
       }
@@ -24,7 +24,7 @@
       bb1: {
           StorageDead(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           _0 = move _4 as u32 (IntToInt);
           StorageDead(_4);
           StorageDead(_2);
diff --git a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff
index 1142616115f..ecd72d2b37f 100644
--- a/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/inline_diverging.g.Inline.panic-unwind.diff
@@ -16,7 +16,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = Gt(move _3, const 0_i32);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
       }
@@ -24,7 +24,7 @@
       bb1: {
           StorageDead(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           _0 = move _4 as u32 (IntToInt);
           StorageDead(_4);
           StorageDead(_2);
diff --git a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff
index 2bbb830fc77..338dca85e5c 100644
--- a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-abort.diff
@@ -40,7 +40,7 @@
 + 
 +     bb2: {
 +         StorageDead(_5);
-+         _1 = (_4, _6);
++         _1 = (copy _4, copy _6);
 +         drop(_2) -> [return: bb3, unwind unreachable];
 +     }
 + 
diff --git a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff
index bc4f2d24df0..a77cb913bfd 100644
--- a/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/inline_diverging.h.Inline.panic-unwind.diff
@@ -43,7 +43,7 @@
 +         StorageDead(_5);
 +         StorageLive(_7);
 +         _7 = move _4;
-+         _1 = (move _7, _6);
++         _1 = (move _7, copy _6);
 +         StorageDead(_7);
 +         StorageDead(_4);
 +         drop(_2) -> [return: bb3, unwind continue];
diff --git a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-abort.mir
index 522f772c6f4..9b28aeb271d 100644
--- a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-abort.mir
+++ b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-abort.mir
@@ -9,7 +9,7 @@ fn marked_inline_direct(_1: i32) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         _2 = call_twice(move _3) -> [return: bb1, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-unwind.mir
index 722b02eeba8..929c89940dc 100644
--- a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_direct.Inline.after.panic-unwind.mir
@@ -9,7 +9,7 @@ fn marked_inline_direct(_1: i32) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         _2 = call_twice(move _3) -> [return: bb1, unwind continue];
     }
 
diff --git a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-abort.mir
index 63b91cbce2d..374ed294d8b 100644
--- a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-abort.mir
+++ b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn marked_inline_indirect(_1: i32) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         StorageLive(_4);
         _4 = call_twice(move _3) -> [return: bb1, unwind unreachable];
     }
diff --git a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-unwind.mir
index 7c84e98dd51..97bed8020ba 100644
--- a/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/inline_more_in_non_inline.marked_inline_indirect.Inline.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn marked_inline_indirect(_1: i32) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         StorageLive(_4);
         _4 = call_twice(move _3) -> [return: bb1, unwind continue];
     }
diff --git a/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-abort.mir
index 989014b8b47..cffe0e96f5c 100644
--- a/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-abort.mir
+++ b/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-abort.mir
@@ -13,10 +13,10 @@ fn monomorphic_not_inline(_1: i32) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         StorageLive(_4);
         StorageLive(_5);
-        _4 = other_thing(_3) -> [return: bb2, unwind unreachable];
+        _4 = other_thing(copy _3) -> [return: bb2, unwind unreachable];
     }
 
     bb1: {
diff --git a/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-unwind.mir
index bd200719bbb..7f3a093012b 100644
--- a/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/inline_more_in_non_inline.monomorphic_not_inline.Inline.after.panic-unwind.mir
@@ -13,10 +13,10 @@ fn monomorphic_not_inline(_1: i32) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         StorageLive(_4);
         StorageLive(_5);
-        _4 = other_thing(_3) -> [return: bb2, unwind continue];
+        _4 = other_thing(copy _3) -> [return: bb2, unwind continue];
     }
 
     bb1: {
diff --git a/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir b/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir
index ec3c79e2a37..9a256ea1949 100644
--- a/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir
+++ b/tests/mir-opt/inline/inline_retag.bar.Inline.after.mir
@@ -26,25 +26,25 @@ fn bar() -> bool {
         StorageLive(_1);
         _1 = foo;
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         StorageLive(_3);
         StorageLive(_4);
         _10 = const bar::promoted[1];
         Retag(_10);
-        _4 = _10;
-        _3 = _4;
+        _4 = copy _10;
+        _3 = copy _4;
         StorageLive(_6);
         StorageLive(_7);
         _9 = const bar::promoted[0];
         Retag(_9);
-        _7 = _9;
-        _6 = _7;
+        _7 = copy _9;
+        _6 = copy _7;
         Retag(_3);
         Retag(_6);
         StorageLive(_11);
-        _11 = (*_3);
+        _11 = copy (*_3);
         StorageLive(_12);
-        _12 = (*_6);
+        _12 = copy (*_6);
         _0 = Eq(move _11, move _12);
         StorageDead(_12);
         StorageDead(_11);
diff --git a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff
index 8117e58fa51..26b4dc357f3 100644
--- a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-abort.diff
@@ -15,7 +15,7 @@
 -     }
 - 
 -     bb1: {
-+         _0 = (*_2);
++         _0 = copy (*_2);
           StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff
index 00e92a0f5e5..faa12d5c736 100644
--- a/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/inline_shims.clone.Inline.panic-unwind.diff
@@ -15,7 +15,7 @@
 -     }
 - 
 -     bb1: {
-+         _0 = (*_2);
++         _0 = copy (*_2);
           StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff
index 2a36ccaab11..581244074b3 100644
--- a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-abort.diff
@@ -20,7 +20,7 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         _3 = std::ptr::drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind unreachable];
 +         StorageLive(_6);
 +         StorageLive(_7);
@@ -34,7 +34,7 @@
           StorageDead(_4);
           StorageDead(_3);
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _0 = std::ptr::drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind unreachable];
 +         StorageLive(_8);
 +         StorageLive(_9);
diff --git a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff
index e11561076e6..d89ca003d77 100644
--- a/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/inline_shims.drop.Inline.panic-unwind.diff
@@ -16,7 +16,7 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           _3 = std::ptr::drop_in_place::<Vec<A>>(move _4) -> [return: bb1, unwind continue];
       }
   
@@ -24,7 +24,7 @@
           StorageDead(_4);
           StorageDead(_3);
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _0 = std::ptr::drop_in_place::<Option<B>>(move _5) -> [return: bb2, unwind continue];
 +         StorageLive(_6);
 +         StorageLive(_7);
diff --git a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir
index d7b4302b06d..8355cd0070d 100644
--- a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir
+++ b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-abort.mir
@@ -7,7 +7,7 @@ fn test(_1: &dyn X) -> u32 {
 
     bb0: {
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         _0 = <dyn X as X>::y(move _2) -> [return: bb1, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir
index 0d6f3e61f71..ebfbfeb0b13 100644
--- a/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/inline_trait_method.test.Inline.after.panic-unwind.mir
@@ -7,7 +7,7 @@ fn test(_1: &dyn X) -> u32 {
 
     bb0: {
         StorageLive(_2);
-        _2 = _1;
+        _2 = copy _1;
         _0 = <dyn X as X>::y(move _2) -> [return: bb1, unwind continue];
     }
 
diff --git a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir
index af79c7ce196..1105dba06ac 100644
--- a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir
+++ b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn test2(_1: &dyn X) -> bool {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         _2 = move _3;
         StorageDead(_3);
         _0 = <dyn X as X>::y(move _2) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir
index bf5a56b8e62..faa6ef47b18 100644
--- a/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/inline_trait_method_2.test2.Inline.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn test2(_1: &dyn X) -> bool {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         _2 = move _3;
         StorageDead(_3);
         _0 = <dyn X as X>::y(move _2) -> [return: bb1, unwind continue];
diff --git a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff
index 2ab79cc2a50..e87a565f0fc 100644
--- a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-abort.diff
@@ -25,12 +25,12 @@
   
       bb1: {
 +         StorageLive(_3);
-+         _2 = Lt(_0, const 1_usize);
-+         assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, _0) -> [success: bb2, unwind unreachable];
++         _2 = Lt(copy _0, const 1_usize);
++         assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, copy _0) -> [success: bb2, unwind unreachable];
 +     }
 + 
 +     bb2: {
-+         _3 = (*_1)[_0];
++         _3 = copy (*_1)[_0];
 +         switchInt(move _3) -> [0: bb3, otherwise: bb4];
 +     }
 + 
diff --git a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff
index 4d96a862885..834851b75ad 100644
--- a/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/issue_106141.outer.Inline.panic-unwind.diff
@@ -25,12 +25,12 @@
   
       bb1: {
 +         StorageLive(_3);
-+         _2 = Lt(_0, const 1_usize);
-+         assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, _0) -> [success: bb2, unwind continue];
++         _2 = Lt(copy _0, const 1_usize);
++         assert(move _2, "index out of bounds: the length is {} but the index is {}", const 1_usize, copy _0) -> [success: bb2, unwind continue];
 +     }
 + 
 +     bb2: {
-+         _3 = (*_1)[_0];
++         _3 = copy (*_1)[_0];
 +         switchInt(move _3) -> [0: bb3, otherwise: bb4];
 +     }
 + 
diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir
index 8c457037ec9..a48a9a0bb0c 100644
--- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir
+++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.a.Inline.after.mir
@@ -14,11 +14,11 @@ fn a(_1: &mut [T]) -> &mut [T] {
         StorageLive(_2);
         StorageLive(_3);
         StorageLive(_4);
-        _4 = _1;
-        _3 = _4;
-        _2 = _3;
+        _4 = copy _1;
+        _3 = copy _4;
+        _2 = copy _3;
         StorageDead(_4);
-        _0 = _2;
+        _0 = copy _2;
         StorageDead(_3);
         StorageDead(_2);
         return;
diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir
index e27d9fe38c7..02aadfc1de0 100644
--- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir
+++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.b.Inline.after.mir
@@ -16,17 +16,17 @@ fn b(_1: &mut Box<T>) -> &mut T {
         StorageLive(_2);
         StorageLive(_3);
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         StorageLive(_5);
         StorageLive(_6);
-        _5 = (*_4);
-        _6 = (((_5.0: std::ptr::Unique<T>).0: std::ptr::NonNull<T>).0: *const T);
+        _5 = copy (*_4);
+        _6 = copy (((_5.0: std::ptr::Unique<T>).0: std::ptr::NonNull<T>).0: *const T);
         _3 = &mut (*_6);
         StorageDead(_6);
         StorageDead(_5);
-        _2 = _3;
+        _2 = copy _3;
         StorageDead(_4);
-        _0 = _2;
+        _0 = copy _2;
         StorageDead(_3);
         StorageDead(_2);
         return;
diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir
index da0464c64d6..2d88f9e5524 100644
--- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir
+++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.c.Inline.after.mir
@@ -12,9 +12,9 @@ fn c(_1: &[T]) -> &[T] {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
-        _2 = _3;
-        _0 = _2;
+        _3 = copy _1;
+        _2 = copy _3;
+        _0 = copy _2;
         StorageDead(_3);
         StorageDead(_2);
         return;
diff --git a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir
index 25eaedfc842..1ea347510fd 100644
--- a/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir
+++ b/tests/mir-opt/inline/issue_58867_inline_as_ref_as_mut.d.Inline.after.mir
@@ -14,15 +14,15 @@ fn d(_1: &Box<T>) -> &T {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = _1;
+        _3 = copy _1;
         StorageLive(_4);
         StorageLive(_5);
-        _4 = (*_3);
-        _5 = (((_4.0: std::ptr::Unique<T>).0: std::ptr::NonNull<T>).0: *const T);
+        _4 = copy (*_3);
+        _5 = copy (((_4.0: std::ptr::Unique<T>).0: std::ptr::NonNull<T>).0: *const T);
         _2 = &(*_5);
         StorageDead(_5);
         StorageDead(_4);
-        _0 = _2;
+        _0 = copy _2;
         StorageDead(_3);
         StorageDead(_2);
         return;
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff
index 0d9d58316ea..f36157a762c 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-abort.diff
@@ -18,9 +18,9 @@
   
       bb0: {
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = core::num::<impl u16>::unchecked_shl(move _3, move _4) -> [return: bb1, unwind unreachable];
 +         StorageLive(_6);
 +         StorageLive(_5);
@@ -29,12 +29,12 @@
       }
   
       bb1: {
-+         _6 = core::num::<impl u16>::unchecked_shl::precondition_check(_4) -> [return: bb2, unwind unreachable];
++         _6 = core::num::<impl u16>::unchecked_shl::precondition_check(copy _4) -> [return: bb2, unwind unreachable];
 +     }
 + 
 +     bb2: {
 +         StorageDead(_5);
-+         _0 = ShlUnchecked(_3, _4);
++         _0 = ShlUnchecked(copy _3, copy _4);
 +         StorageDead(_6);
           StorageDead(_4);
           StorageDead(_3);
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff
index 82f7eceaa18..be1b066c6c1 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.Inline.panic-unwind.diff
@@ -18,9 +18,9 @@
   
       bb0: {
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = core::num::<impl u16>::unchecked_shl(move _3, move _4) -> [return: bb1, unwind continue];
 +         StorageLive(_6);
 +         StorageLive(_5);
@@ -29,12 +29,12 @@
       }
   
       bb1: {
-+         _6 = core::num::<impl u16>::unchecked_shl::precondition_check(_4) -> [return: bb2, unwind unreachable];
++         _6 = core::num::<impl u16>::unchecked_shl::precondition_check(copy _4) -> [return: bb2, unwind unreachable];
 +     }
 + 
 +     bb2: {
 +         StorageDead(_5);
-+         _0 = ShlUnchecked(_3, _4);
++         _0 = ShlUnchecked(copy _3, copy _4);
 +         StorageDead(_6);
           StorageDead(_4);
           StorageDead(_3);
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir
index dc27685ee79..611273ab08d 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 {
     }
 
     bb0: {
-        _0 = ShlUnchecked(_1, _2);
+        _0 = ShlUnchecked(copy _1, copy _2);
         return;
     }
 }
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir
index dc27685ee79..611273ab08d 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shl_unsigned_smaller.PreCodegen.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn unchecked_shl_unsigned_smaller(_1: u16, _2: u32) -> u16 {
     }
 
     bb0: {
-        _0 = ShlUnchecked(_1, _2);
+        _0 = ShlUnchecked(copy _1, copy _2);
         return;
     }
 }
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-abort.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-abort.diff
index 6894b246699..360687f3c4e 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-abort.diff
@@ -18,9 +18,9 @@
   
       bb0: {
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = core::num::<impl i64>::unchecked_shr(move _3, move _4) -> [return: bb1, unwind unreachable];
 +         StorageLive(_6);
 +         StorageLive(_5);
@@ -29,12 +29,12 @@
       }
   
       bb1: {
-+         _6 = core::num::<impl i64>::unchecked_shr::precondition_check(_4) -> [return: bb2, unwind unreachable];
++         _6 = core::num::<impl i64>::unchecked_shr::precondition_check(copy _4) -> [return: bb2, unwind unreachable];
 +     }
 + 
 +     bb2: {
 +         StorageDead(_5);
-+         _0 = ShrUnchecked(_3, _4);
++         _0 = ShrUnchecked(copy _3, copy _4);
 +         StorageDead(_6);
           StorageDead(_4);
           StorageDead(_3);
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-unwind.diff b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-unwind.diff
index 070f4a1c5c8..986df55df03 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.Inline.panic-unwind.diff
@@ -18,9 +18,9 @@
   
       bb0: {
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = core::num::<impl i64>::unchecked_shr(move _3, move _4) -> [return: bb1, unwind continue];
 +         StorageLive(_6);
 +         StorageLive(_5);
@@ -29,12 +29,12 @@
       }
   
       bb1: {
-+         _6 = core::num::<impl i64>::unchecked_shr::precondition_check(_4) -> [return: bb2, unwind unreachable];
++         _6 = core::num::<impl i64>::unchecked_shr::precondition_check(copy _4) -> [return: bb2, unwind unreachable];
 +     }
 + 
 +     bb2: {
 +         StorageDead(_5);
-+         _0 = ShrUnchecked(_3, _4);
++         _0 = ShrUnchecked(copy _3, copy _4);
 +         StorageDead(_6);
           StorageDead(_4);
           StorageDead(_3);
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-abort.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-abort.mir
index 54f093b87d1..f4ddd0bca04 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn unchecked_shr_signed_bigger(_1: i64, _2: u32) -> i64 {
     }
 
     bb0: {
-        _0 = ShrUnchecked(_1, _2);
+        _0 = ShrUnchecked(copy _1, copy _2);
         return;
     }
 }
diff --git a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-unwind.mir
index 54f093b87d1..f4ddd0bca04 100644
--- a/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/unchecked_shifts.unchecked_shr_signed_bigger.PreCodegen.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn unchecked_shr_signed_bigger(_1: i64, _2: u32) -> i64 {
     }
 
     bb0: {
-        _0 = ShrUnchecked(_1, _2);
+        _0 = ShrUnchecked(copy _1, copy _2);
         return;
     }
 }
diff --git a/tests/mir-opt/inline/unsized_argument.caller.Inline.diff b/tests/mir-opt/inline/unsized_argument.caller.Inline.diff
index 37083973fd1..70671e2089a 100644
--- a/tests/mir-opt/inline/unsized_argument.caller.Inline.diff
+++ b/tests/mir-opt/inline/unsized_argument.caller.Inline.diff
@@ -12,7 +12,7 @@
           StorageLive(_2);
           StorageLive(_3);
           _3 = move _1;
-          _4 = (((_3.0: std::ptr::Unique<[i32]>).0: std::ptr::NonNull<[i32]>).0: *const [i32]);
+          _4 = copy (((_3.0: std::ptr::Unique<[i32]>).0: std::ptr::NonNull<[i32]>).0: *const [i32]);
           _2 = callee(move (*_4)) -> [return: bb1, unwind: bb3];
       }
   
diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff
index c1f7879cf0e..28878736ed7 100644
--- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-abort.diff
@@ -36,7 +36,7 @@
 +     bb2: {
 +         StorageLive(_4);
 +         _4 = UbChecks();
-+         assume(_4);
++         assume(copy _4);
 +         _5 = unreachable_unchecked::precondition_check() -> [return: bb1, unwind unreachable];
 +     }
 + 
diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff
index 5271e538daf..27b6bb6a5bb 100644
--- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.Inline.panic-unwind.diff
@@ -40,7 +40,7 @@
 +     bb2: {
 +         StorageLive(_4);
 +         _4 = UbChecks();
-+         assume(_4);
++         assume(copy _4);
 +         _5 = unreachable_unchecked::precondition_check() -> [return: bb1, unwind unreachable];
 +     }
 + 
diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir
index dcab8a679a8..66ab5e1b962 100644
--- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-abort.mir
@@ -22,7 +22,7 @@ fn unwrap_unchecked(_1: Option<T>) -> T {
     }
 
     bb1: {
-        _0 = ((_1 as Some).0: T);
+        _0 = copy ((_1 as Some).0: T);
         StorageDead(_2);
         return;
     }
diff --git a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir
index dcab8a679a8..66ab5e1b962 100644
--- a/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/inline/unwrap_unchecked.unwrap_unchecked.PreCodegen.after.panic-unwind.mir
@@ -22,7 +22,7 @@ fn unwrap_unchecked(_1: Option<T>) -> T {
     }
 
     bb1: {
-        _0 = ((_1 as Some).0: T);
+        _0 = copy ((_1 as Some).0: T);
         StorageDead(_2);
         return;
     }
diff --git a/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff b/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff
index f8715789cec..1e33e222b27 100644
--- a/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff
+++ b/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-abort.diff
@@ -85,7 +85,7 @@
 -     }
 - 
 -     bb2: {
-+         _4 = Pin::<&mut {async fn body of ActionPermit<'_, T>::perform()}> { __pointer: _5 };
++         _4 = Pin::<&mut {async fn body of ActionPermit<'_, T>::perform()}> { __pointer: copy _5 };
           StorageDead(_5);
           StorageLive(_6);
           StorageLive(_7);
@@ -160,7 +160,7 @@
 +         StorageLive(_14);
 +         _14 = ();
 +         StorageLive(_41);
-+         _41 = Option::<()>::Some(_14);
++         _41 = Option::<()>::Some(copy _14);
 +         _13 = std::future::Ready::<()>(move _41);
 +         StorageDead(_41);
 +         StorageDead(_14);
@@ -193,7 +193,7 @@
 +         StorageLive(_22);
 +         StorageLive(_23);
 +         StorageLive(_24);
-+         _24 = _31;
++         _24 = copy _31;
 +         _23 = move _24;
 +         _22 = &mut (*_23);
 +         StorageDead(_24);
@@ -231,8 +231,8 @@
 + 
 +     bb10: {
 +         StorageLive(_26);
-+         _26 = ((_18 as Ready).0: ());
-+         _30 = _26;
++         _26 = copy ((_18 as Ready).0: ());
++         _30 = copy _26;
 +         StorageDead(_26);
 +         StorageDead(_23);
 +         StorageDead(_21);
diff --git a/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff b/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff
index 494f5591e32..b1840beb3ef 100644
--- a/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff
+++ b/tests/mir-opt/inline_coroutine_body.run2-{closure#0}.Inline.panic-unwind.diff
@@ -87,7 +87,7 @@
 -     }
 - 
 -     bb2: {
-+         _4 = Pin::<&mut {async fn body of ActionPermit<'_, T>::perform()}> { __pointer: _5 };
++         _4 = Pin::<&mut {async fn body of ActionPermit<'_, T>::perform()}> { __pointer: copy _5 };
           StorageDead(_5);
           StorageLive(_6);
           StorageLive(_7);
@@ -177,7 +177,7 @@
 +         StorageLive(_14);
 +         _14 = ();
 +         StorageLive(_43);
-+         _43 = Option::<()>::Some(_14);
++         _43 = Option::<()>::Some(copy _14);
 +         _13 = std::future::Ready::<()>(move _43);
 +         StorageDead(_43);
 +         StorageDead(_14);
@@ -212,7 +212,7 @@
 +         StorageLive(_22);
 +         StorageLive(_23);
 +         StorageLive(_24);
-+         _24 = _31;
++         _24 = copy _31;
 +         _23 = move _24;
 +         _22 = &mut (*_23);
 +         StorageDead(_24);
@@ -250,8 +250,8 @@
 + 
 +     bb12: {
 +         StorageLive(_26);
-+         _26 = ((_18 as Ready).0: ());
-+         _30 = _26;
++         _26 = copy ((_18 as Ready).0: ());
++         _30 = copy _26;
 +         StorageDead(_26);
 +         StorageDead(_23);
 +         StorageDead(_21);
diff --git a/tests/mir-opt/instsimplify/bool_compare.eq_false.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.eq_false.InstSimplify-after-simplifycfg.diff
index fea5f4f02ce..4762123184b 100644
--- a/tests/mir-opt/instsimplify/bool_compare.eq_false.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.eq_false.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const false);
 +         _2 = Not(move _3);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.eq_true.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.eq_true.InstSimplify-after-simplifycfg.diff
index 9a509ccfa67..6fae0acf439 100644
--- a/tests/mir-opt/instsimplify/bool_compare.eq_true.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.eq_true.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(move _3, const true);
 +         _2 = move _3;
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.false_eq.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.false_eq.InstSimplify-after-simplifycfg.diff
index e4ec4c80579..7975a808d4f 100644
--- a/tests/mir-opt/instsimplify/bool_compare.false_eq.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.false_eq.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(const false, move _3);
 +         _2 = Not(move _3);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.false_ne.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.false_ne.InstSimplify-after-simplifycfg.diff
index 3aea55f4db4..80d0cd62007 100644
--- a/tests/mir-opt/instsimplify/bool_compare.false_ne.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.false_ne.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Ne(const false, move _3);
 +         _2 = move _3;
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.ne_false.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.ne_false.InstSimplify-after-simplifycfg.diff
index b6e891088a1..c0f8b5261c2 100644
--- a/tests/mir-opt/instsimplify/bool_compare.ne_false.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.ne_false.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Ne(move _3, const false);
 +         _2 = move _3;
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.ne_true.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.ne_true.InstSimplify-after-simplifycfg.diff
index 974738bb3a9..4627b314408 100644
--- a/tests/mir-opt/instsimplify/bool_compare.ne_true.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.ne_true.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Ne(move _3, const true);
 +         _2 = Not(move _3);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.true_eq.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.true_eq.InstSimplify-after-simplifycfg.diff
index 240835bf7f2..91ca1ba553e 100644
--- a/tests/mir-opt/instsimplify/bool_compare.true_eq.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.true_eq.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Eq(const true, move _3);
 +         _2 = move _3;
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/bool_compare.true_ne.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/bool_compare.true_ne.InstSimplify-after-simplifycfg.diff
index 1e2b2c27f57..744c61b987d 100644
--- a/tests/mir-opt/instsimplify/bool_compare.true_ne.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/bool_compare.true_ne.InstSimplify-after-simplifycfg.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = Ne(const true, move _3);
 +         _2 = Not(move _3);
           switchInt(move _2) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/instsimplify/casts.redundant.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/casts.redundant.InstSimplify-after-simplifycfg.diff
index 7001589d9e3..afa25ecdbfb 100644
--- a/tests/mir-opt/instsimplify/casts.redundant.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/casts.redundant.InstSimplify-after-simplifycfg.diff
@@ -15,16 +15,16 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _4;
+          _5 = copy _4;
 -         _3 = move _5 as *const &u8 (PtrToPtr);
 +         _3 = move _5;
           StorageDead(_5);
           StorageDead(_4);
 -         _2 = move _3 as *const &u8 (PtrToPtr);
 +         _2 = move _3;
-          _0 = _2;
+          _0 = copy _2;
           StorageDead(_3);
           StorageDead(_2);
           return;
diff --git a/tests/mir-opt/instsimplify/casts.roundtrip.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/casts.roundtrip.InstSimplify-after-simplifycfg.diff
index e1045db9730..12e2913a8ca 100644
--- a/tests/mir-opt/instsimplify/casts.roundtrip.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/casts.roundtrip.InstSimplify-after-simplifycfg.diff
@@ -12,7 +12,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           _3 = move _4 as *mut u8 (PtrToPtr);
           _2 = move _3 as *const u8 (PtrToPtr);
           StorageDead(_4);
diff --git a/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-abort.diff b/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-abort.diff
index a7de09ca386..f39df7ffca0 100644
--- a/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-abort.diff
+++ b/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-abort.diff
@@ -31,38 +31,38 @@
           _3 = const 0_usize;
 -         _4 = Len(_1);
 +         _4 = const 2_usize;
-          _5 = Lt(_3, _4);
-          assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind unreachable];
+          _5 = Lt(copy _3, copy _4);
+          assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind unreachable];
       }
   
       bb1: {
-          _2 = _1[_3];
+          _2 = copy _1[_3];
           StorageDead(_3);
           StorageLive(_6);
           StorageLive(_7);
           _7 = const 1_usize;
 -         _8 = Len(_1);
 +         _8 = const 2_usize;
-          _9 = Lt(_7, _8);
-          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind unreachable];
+          _9 = Lt(copy _7, copy _8);
+          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
-          _6 = _1[_7];
+          _6 = copy _1[_7];
           StorageDead(_7);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
           _10 = Mul(move _11, move _12);
           StorageDead(_12);
           StorageDead(_11);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _6;
+          _14 = copy _6;
           StorageLive(_15);
-          _15 = _6;
+          _15 = copy _6;
           _13 = Mul(move _14, move _15);
           StorageDead(_15);
           StorageDead(_14);
diff --git a/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-unwind.diff b/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-unwind.diff
index c15f7e47fe3..0e7d5653c68 100644
--- a/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-unwind.diff
+++ b/tests/mir-opt/instsimplify/combine_array_len.norm2.InstSimplify-after-simplifycfg.panic-unwind.diff
@@ -31,38 +31,38 @@
           _3 = const 0_usize;
 -         _4 = Len(_1);
 +         _4 = const 2_usize;
-          _5 = Lt(_3, _4);
-          assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind continue];
+          _5 = Lt(copy _3, copy _4);
+          assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind continue];
       }
   
       bb1: {
-          _2 = _1[_3];
+          _2 = copy _1[_3];
           StorageDead(_3);
           StorageLive(_6);
           StorageLive(_7);
           _7 = const 1_usize;
 -         _8 = Len(_1);
 +         _8 = const 2_usize;
-          _9 = Lt(_7, _8);
-          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb2, unwind continue];
+          _9 = Lt(copy _7, copy _8);
+          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb2, unwind continue];
       }
   
       bb2: {
-          _6 = _1[_7];
+          _6 = copy _1[_7];
           StorageDead(_7);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
           _10 = Mul(move _11, move _12);
           StorageDead(_12);
           StorageDead(_11);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _6;
+          _14 = copy _6;
           StorageLive(_15);
-          _15 = _6;
+          _15 = copy _6;
           _13 = Mul(move _14, move _15);
           StorageDead(_15);
           StorageDead(_14);
diff --git a/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-abort.diff b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-abort.diff
index c6f858d89eb..d0b50c597c4 100644
--- a/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-abort.diff
+++ b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-abort.diff
@@ -20,7 +20,7 @@
           StorageLive(_4);
           _4 = &((*_1).0: T);
 -         _3 = &(*_4);
-+         _3 = _4;
++         _3 = copy _4;
           _2 = <T as Clone>::clone(move _3) -> [return: bb1, unwind unreachable];
       }
   
@@ -32,8 +32,8 @@
           _7 = &((*_1).1: u64);
 -         _6 = &(*_7);
 -         _5 = <u64 as Clone>::clone(move _6) -> [return: bb2, unwind unreachable];
-+         _6 = _7;
-+         _5 = (*_6);
++         _6 = copy _7;
++         _5 = copy (*_6);
 +         goto -> bb2;
       }
   
@@ -45,8 +45,8 @@
           _10 = &((*_1).2: [f32; 3]);
 -         _9 = &(*_10);
 -         _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind unreachable];
-+         _9 = _10;
-+         _8 = (*_9);
++         _9 = copy _10;
++         _8 = copy (*_9);
 +         goto -> bb3;
       }
   
diff --git a/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-unwind.diff b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-unwind.diff
index 691ab1f0e7f..b8f4f348530 100644
--- a/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-unwind.diff
+++ b/tests/mir-opt/instsimplify/combine_clone_of_primitives.{impl#0}-clone.InstSimplify-after-simplifycfg.panic-unwind.diff
@@ -20,7 +20,7 @@
           StorageLive(_4);
           _4 = &((*_1).0: T);
 -         _3 = &(*_4);
-+         _3 = _4;
++         _3 = copy _4;
           _2 = <T as Clone>::clone(move _3) -> [return: bb1, unwind continue];
       }
   
@@ -32,8 +32,8 @@
           _7 = &((*_1).1: u64);
 -         _6 = &(*_7);
 -         _5 = <u64 as Clone>::clone(move _6) -> [return: bb2, unwind: bb4];
-+         _6 = _7;
-+         _5 = (*_6);
++         _6 = copy _7;
++         _5 = copy (*_6);
 +         goto -> bb2;
       }
   
@@ -45,8 +45,8 @@
           _10 = &((*_1).2: [f32; 3]);
 -         _9 = &(*_10);
 -         _8 = <[f32; 3] as Clone>::clone(move _9) -> [return: bb3, unwind: bb4];
-+         _9 = _10;
-+         _8 = (*_9);
++         _9 = copy _10;
++         _8 = copy (*_9);
 +         goto -> bb3;
       }
   
diff --git a/tests/mir-opt/instsimplify/duplicate_switch_targets.assert_zero.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/duplicate_switch_targets.assert_zero.InstSimplify-after-simplifycfg.diff
index 7596aa20308..5d74f0f75db 100644
--- a/tests/mir-opt/instsimplify/duplicate_switch_targets.assert_zero.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/duplicate_switch_targets.assert_zero.InstSimplify-after-simplifycfg.diff
@@ -5,8 +5,8 @@
       let mut _0: u8;
   
       bb0: {
--         switchInt(_1) -> [0: bb2, 1: bb1, otherwise: bb1];
-+         switchInt(_1) -> [0: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [0: bb2, 1: bb1, otherwise: bb1];
++         switchInt(copy _1) -> [0: bb2, otherwise: bb1];
       }
   
       bb1: {
@@ -14,7 +14,7 @@
       }
   
       bb2: {
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/instsimplify/ref_of_deref.pointers.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/ref_of_deref.pointers.InstSimplify-after-simplifycfg.diff
index ca26f0240f9..b2f720be9e1 100644
--- a/tests/mir-opt/instsimplify/ref_of_deref.pointers.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/ref_of_deref.pointers.InstSimplify-after-simplifycfg.diff
@@ -39,12 +39,12 @@
           _5 = &mut (*_2);
           StorageLive(_6);
 -         _6 = &raw const (*_1);
-+         _6 = _1;
++         _6 = copy _1;
           StorageLive(_7);
           _7 = &raw const (*_2);
           StorageLive(_8);
 -         _8 = &raw mut (*_2);
-+         _8 = _2;
++         _8 = copy _2;
           _0 = const ();
           StorageDead(_8);
           StorageDead(_7);
diff --git a/tests/mir-opt/instsimplify/ref_of_deref.references.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/ref_of_deref.references.InstSimplify-after-simplifycfg.diff
index 928ee3acaa0..4ea9da46c55 100644
--- a/tests/mir-opt/instsimplify/ref_of_deref.references.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/ref_of_deref.references.InstSimplify-after-simplifycfg.diff
@@ -33,12 +33,12 @@
       bb0: {
           StorageLive(_3);
 -         _3 = &(*_1);
-+         _3 = _1;
++         _3 = copy _1;
           StorageLive(_4);
           _4 = &(*_2);
           StorageLive(_5);
 -         _5 = &mut (*_2);
-+         _5 = _2;
++         _5 = copy _2;
           StorageLive(_6);
           _6 = &raw const (*_1);
           StorageLive(_7);
diff --git a/tests/mir-opt/instsimplify/ub_check.unwrap_unchecked.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/instsimplify/ub_check.unwrap_unchecked.InstSimplify-after-simplifycfg.diff
index 7ef77e76d12..5fee9a6733d 100644
--- a/tests/mir-opt/instsimplify/ub_check.unwrap_unchecked.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/instsimplify/ub_check.unwrap_unchecked.InstSimplify-after-simplifycfg.diff
@@ -21,7 +21,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           StorageLive(_3);
           StorageLive(_5);
           _3 = discriminant(_2);
@@ -36,7 +36,7 @@
           StorageLive(_4);
 -         _4 = UbChecks();
 +         _4 = const false;
-          assume(_4);
+          assume(copy _4);
           _5 = unreachable_unchecked::precondition_check() -> [return: bb1, unwind unreachable];
       }
   
diff --git a/tests/mir-opt/issue_101973.inner.GVN.panic-abort.diff b/tests/mir-opt/issue_101973.inner.GVN.panic-abort.diff
index 311de9e1c93..ac88fe67bb8 100644
--- a/tests/mir-opt/issue_101973.inner.GVN.panic-abort.diff
+++ b/tests/mir-opt/issue_101973.inner.GVN.panic-abort.diff
@@ -29,22 +29,22 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           nop;
 -         StorageLive(_14);
--         _14 = BitAnd(_5, const 255_u32);
+-         _14 = BitAnd(copy _5, const 255_u32);
 -         _4 = BitOr(const 0_u32, move _14);
 -         StorageDead(_14);
 +         nop;
-+         _14 = BitAnd(_1, const 255_u32);
-+         _4 = _14;
++         _14 = BitAnd(copy _1, const 255_u32);
++         _4 = copy _14;
 +         nop;
           StorageDead(_5);
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
 -         _10 = const 8_i32 as u32 (IntToInt);
 -         _11 = Lt(move _10, const 32_u32);
 -         assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind unreachable];
@@ -55,7 +55,7 @@
   
       bb1: {
 -         _8 = Shr(move _9, const 8_i32);
-+         _8 = Shr(_1, const 8_i32);
++         _8 = Shr(copy _1, const 8_i32);
           StorageDead(_9);
           _7 = BitAnd(move _8, const 15_u32);
           StorageDead(_8);
@@ -71,7 +71,7 @@
           _6 = Shl(move _7, const 1_i32);
           StorageDead(_7);
 -         _3 = rotate_right::<u32>(move _4, move _6) -> [return: bb3, unwind unreachable];
-+         _3 = rotate_right::<u32>(_14, move _6) -> [return: bb3, unwind unreachable];
++         _3 = rotate_right::<u32>(copy _14, move _6) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
diff --git a/tests/mir-opt/issue_101973.inner.GVN.panic-unwind.diff b/tests/mir-opt/issue_101973.inner.GVN.panic-unwind.diff
index c5fd042161d..96c3cae2d33 100644
--- a/tests/mir-opt/issue_101973.inner.GVN.panic-unwind.diff
+++ b/tests/mir-opt/issue_101973.inner.GVN.panic-unwind.diff
@@ -29,22 +29,22 @@
           StorageLive(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           nop;
 -         StorageLive(_14);
--         _14 = BitAnd(_5, const 255_u32);
+-         _14 = BitAnd(copy _5, const 255_u32);
 -         _4 = BitOr(const 0_u32, move _14);
 -         StorageDead(_14);
 +         nop;
-+         _14 = BitAnd(_1, const 255_u32);
-+         _4 = _14;
++         _14 = BitAnd(copy _1, const 255_u32);
++         _4 = copy _14;
 +         nop;
           StorageDead(_5);
           StorageLive(_6);
           StorageLive(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _1;
+          _9 = copy _1;
 -         _10 = const 8_i32 as u32 (IntToInt);
 -         _11 = Lt(move _10, const 32_u32);
 -         assert(move _11, "attempt to shift right by `{}`, which would overflow", const 8_i32) -> [success: bb1, unwind continue];
@@ -55,7 +55,7 @@
   
       bb1: {
 -         _8 = Shr(move _9, const 8_i32);
-+         _8 = Shr(_1, const 8_i32);
++         _8 = Shr(copy _1, const 8_i32);
           StorageDead(_9);
           _7 = BitAnd(move _8, const 15_u32);
           StorageDead(_8);
@@ -71,7 +71,7 @@
           _6 = Shl(move _7, const 1_i32);
           StorageDead(_7);
 -         _3 = rotate_right::<u32>(move _4, move _6) -> [return: bb3, unwind unreachable];
-+         _3 = rotate_right::<u32>(_14, move _6) -> [return: bb3, unwind unreachable];
++         _3 = rotate_right::<u32>(copy _14, move _6) -> [return: bb3, unwind unreachable];
       }
   
       bb3: {
diff --git a/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir b/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir
index 632b5580656..66dbbc0c044 100644
--- a/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/issue_38669.main.SimplifyCfg-initial.after.mir
@@ -25,7 +25,7 @@ fn main() -> () {
     bb2: {
         StorageLive(_3);
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         switchInt(move _4) -> [0: bb4, otherwise: bb3];
     }
 
diff --git a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff
index 4469270a9b2..cf952230128 100644
--- a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff
+++ b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-abort.diff
@@ -63,7 +63,7 @@
 +     }
 + 
 +     bb8 (cleanup): {
-+         switchInt(_5) -> [0: bb6, otherwise: bb7];
++         switchInt(copy _5) -> [0: bb6, otherwise: bb7];
       }
   }
   
diff --git a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff
index 4469270a9b2..cf952230128 100644
--- a/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff
+++ b/tests/mir-opt/issue_41110.main.ElaborateDrops.panic-unwind.diff
@@ -63,7 +63,7 @@
 +     }
 + 
 +     bb8 (cleanup): {
-+         switchInt(_5) -> [0: bb6, otherwise: bb7];
++         switchInt(copy _5) -> [0: bb6, otherwise: bb7];
       }
   }
   
diff --git a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff
index 78184f6aeeb..15fd95a63ff 100644
--- a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff
+++ b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-abort.diff
@@ -93,7 +93,7 @@
 +     }
 + 
 +     bb12 (cleanup): {
-+         switchInt(_6) -> [0: bb10, otherwise: bb11];
++         switchInt(copy _6) -> [0: bb10, otherwise: bb11];
       }
   }
   
diff --git a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff
index 688887c3c1f..4a0067981cb 100644
--- a/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff
+++ b/tests/mir-opt/issue_41110.test.ElaborateDrops.panic-unwind.diff
@@ -93,7 +93,7 @@
 +     }
 + 
 +     bb12 (cleanup): {
-+         switchInt(_6) -> [0: bb10, otherwise: bb11];
++         switchInt(copy _6) -> [0: bb10, otherwise: bb11];
       }
   }
   
diff --git a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff
index 55d2629a551..e2726464ef3 100644
--- a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff
+++ b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-abort.diff
@@ -115,7 +115,7 @@
 +     }
 + 
 +     bb15 (cleanup): {
-+         switchInt(_7) -> [0: bb12, otherwise: bb14];
++         switchInt(copy _7) -> [0: bb12, otherwise: bb14];
 +     }
 + 
 +     bb16: {
@@ -132,7 +132,7 @@
 +     }
 + 
 +     bb19: {
-+         switchInt(_7) -> [0: bb13, otherwise: bb18];
++         switchInt(copy _7) -> [0: bb13, otherwise: bb18];
 +     }
 + 
 +     bb20 (cleanup): {
@@ -141,7 +141,7 @@
 +     }
 + 
 +     bb21 (cleanup): {
-+         switchInt(_7) -> [0: bb12, otherwise: bb20];
++         switchInt(copy _7) -> [0: bb12, otherwise: bb20];
       }
   }
   
diff --git a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff
index c731b5646f6..7efa3330e66 100644
--- a/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff
+++ b/tests/mir-opt/issue_41888.main.ElaborateDrops.panic-unwind.diff
@@ -115,7 +115,7 @@
 +     }
 + 
 +     bb15 (cleanup): {
-+         switchInt(_7) -> [0: bb12, otherwise: bb14];
++         switchInt(copy _7) -> [0: bb12, otherwise: bb14];
 +     }
 + 
 +     bb16: {
@@ -132,7 +132,7 @@
 +     }
 + 
 +     bb19: {
-+         switchInt(_7) -> [0: bb13, otherwise: bb18];
++         switchInt(copy _7) -> [0: bb13, otherwise: bb18];
 +     }
 + 
 +     bb20 (cleanup): {
@@ -141,7 +141,7 @@
 +     }
 + 
 +     bb21 (cleanup): {
-+         switchInt(_7) -> [0: bb12, otherwise: bb20];
++         switchInt(copy _7) -> [0: bb12, otherwise: bb20];
       }
   }
   
diff --git a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir
index 3104baa5fdb..736a8bbca49 100644
--- a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir
+++ b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-abort.mir
@@ -54,8 +54,8 @@ fn test() -> Option<Box<u32>> {
 
     bb4: {
         StorageLive(_12);
-        _12 = ((_6 as Continue).0: u32);
-        (*_5) = _12;
+        _12 = copy ((_6 as Continue).0: u32);
+        (*_5) = copy _12;
         StorageDead(_12);
         _1 = move _5;
         drop(_5) -> [return: bb7, unwind: bb11];
@@ -63,9 +63,9 @@ fn test() -> Option<Box<u32>> {
 
     bb5: {
         StorageLive(_9);
-        _9 = ((_6 as Break).0: std::option::Option<std::convert::Infallible>);
+        _9 = copy ((_6 as Break).0: std::option::Option<std::convert::Infallible>);
         StorageLive(_11);
-        _11 = _9;
+        _11 = copy _9;
         _0 = <Option<Box<u32>> as FromResidual<Option<Infallible>>>::from_residual(move _11) -> [return: bb6, unwind: bb12];
     }
 
diff --git a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir
index da33c830115..1acb1ae20b6 100644
--- a/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir
+++ b/tests/mir-opt/issue_62289.test.ElaborateDrops.before.panic-unwind.mir
@@ -54,8 +54,8 @@ fn test() -> Option<Box<u32>> {
 
     bb4: {
         StorageLive(_12);
-        _12 = ((_6 as Continue).0: u32);
-        (*_5) = _12;
+        _12 = copy ((_6 as Continue).0: u32);
+        (*_5) = copy _12;
         StorageDead(_12);
         _1 = move _5;
         drop(_5) -> [return: bb7, unwind: bb11];
@@ -63,9 +63,9 @@ fn test() -> Option<Box<u32>> {
 
     bb5: {
         StorageLive(_9);
-        _9 = ((_6 as Break).0: std::option::Option<std::convert::Infallible>);
+        _9 = copy ((_6 as Break).0: std::option::Option<std::convert::Infallible>);
         StorageLive(_11);
-        _11 = _9;
+        _11 = copy _9;
         _0 = <Option<Box<u32>> as FromResidual<Option<Infallible>>>::from_residual(move _11) -> [return: bb6, unwind: bb12];
     }
 
diff --git a/tests/mir-opt/issue_72181.bar.built.after.mir b/tests/mir-opt/issue_72181.bar.built.after.mir
index b6cc7d22195..569c4a00628 100644
--- a/tests/mir-opt/issue_72181.bar.built.after.mir
+++ b/tests/mir-opt/issue_72181.bar.built.after.mir
@@ -9,8 +9,8 @@ fn bar(_1: [(Never, u32); 1]) -> u32 {
 
     bb0: {
         StorageLive(_2);
-        _2 = (_1[0 of 1].1: u32);
-        _0 = _2;
+        _2 = copy (_1[0 of 1].1: u32);
+        _0 = copy _2;
         StorageDead(_2);
         return;
     }
diff --git a/tests/mir-opt/issue_72181.foo.built.after.mir b/tests/mir-opt/issue_72181.foo.built.after.mir
index f78942cc56f..314cf8b367f 100644
--- a/tests/mir-opt/issue_72181.foo.built.after.mir
+++ b/tests/mir-opt/issue_72181.foo.built.after.mir
@@ -11,12 +11,12 @@ fn foo(_1: [(Never, u32); 1]) -> u32 {
         StorageLive(_2);
         _2 = const 0_usize;
         _3 = Len(_1);
-        _4 = Lt(_2, _3);
-        assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind: bb2];
+        _4 = Lt(copy _2, copy _3);
+        assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, copy _2) -> [success: bb1, unwind: bb2];
     }
 
     bb1: {
-        _0 = (_1[_2].1: u32);
+        _0 = copy (_1[_2].1: u32);
         StorageDead(_2);
         return;
     }
diff --git a/tests/mir-opt/issue_72181.main.built.after.mir b/tests/mir-opt/issue_72181.main.built.after.mir
index 89d351d5172..aade84a6dd2 100644
--- a/tests/mir-opt/issue_72181.main.built.after.mir
+++ b/tests/mir-opt/issue_72181.main.built.after.mir
@@ -39,8 +39,8 @@ fn main() -> () {
         StorageLive(_6);
         _6 = const 0_usize;
         _7 = Len(_2);
-        _8 = Lt(_6, _7);
-        assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, _6) -> [success: bb3, unwind: bb5];
+        _8 = Lt(copy _6, copy _7);
+        assert(move _8, "index out of bounds: the length is {} but the index is {}", move _7, copy _6) -> [success: bb3, unwind: bb5];
     }
 
     bb2: {
@@ -49,7 +49,7 @@ fn main() -> () {
     }
 
     bb3: {
-        _5 = (_2[_6].0: u64);
+        _5 = copy (_2[_6].0: u64);
         PlaceMention(_5);
         StorageDead(_6);
         StorageDead(_5);
diff --git a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff
index 861ee1d3d3d..f03691ad673 100644
--- a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff
+++ b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-abort.diff
@@ -24,9 +24,9 @@
   
       bb0: {
           StorageLive(_4);
-          _4 = [_1, _1, _1];
+          _4 = [copy _1, copy _1, copy _1];
           _3 = &_4;
-          _2 = _3 as &[T] (PointerCoercion(Unsize));
+          _2 = copy _3 as &[T] (PointerCoercion(Unsize));
           nop;
           nop;
           goto -> bb2;
diff --git a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff
index f27be953384..633e5c740a1 100644
--- a/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff
+++ b/tests/mir-opt/issue_76432.test.SimplifyComparisonIntegral.panic-unwind.diff
@@ -24,9 +24,9 @@
   
       bb0: {
           StorageLive(_4);
-          _4 = [_1, _1, _1];
+          _4 = [copy _1, copy _1, copy _1];
           _3 = &_4;
-          _2 = _3 as &[T] (PointerCoercion(Unsize));
+          _2 = copy _3 as &[T] (PointerCoercion(Unsize));
           nop;
           nop;
           goto -> bb2;
diff --git a/tests/mir-opt/issue_78192.f.InstSimplify-after-simplifycfg.diff b/tests/mir-opt/issue_78192.f.InstSimplify-after-simplifycfg.diff
index 53957bb3cb1..aae0570973d 100644
--- a/tests/mir-opt/issue_78192.f.InstSimplify-after-simplifycfg.diff
+++ b/tests/mir-opt/issue_78192.f.InstSimplify-after-simplifycfg.diff
@@ -17,9 +17,9 @@
           StorageLive(_4);
           _4 = &raw const (*_1);
           _3 = &_4;
-          _2 = _3;
+          _2 = copy _3;
           StorageDead(_3);
-          _0 = (*_2);
+          _0 = copy (*_2);
           StorageDead(_4);
           StorageDead(_2);
           return;
diff --git a/tests/mir-opt/issue_91633.foo.built.after.mir b/tests/mir-opt/issue_91633.foo.built.after.mir
index a66769f0d11..50fdf08375a 100644
--- a/tests/mir-opt/issue_91633.foo.built.after.mir
+++ b/tests/mir-opt/issue_91633.foo.built.after.mir
@@ -18,8 +18,8 @@ fn foo(_1: Box<[T]>) -> T {
         StorageLive(_4);
         _4 = const 0_usize;
         _5 = Len((*_1));
-        _6 = Lt(_4, _5);
-        assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, _4) -> [success: bb1, unwind: bb5];
+        _6 = Lt(copy _4, copy _5);
+        assert(move _6, "index out of bounds: the length is {} but the index is {}", move _5, copy _4) -> [success: bb1, unwind: bb5];
     }
 
     bb1: {
diff --git a/tests/mir-opt/issue_91633.fun.built.after.mir b/tests/mir-opt/issue_91633.fun.built.after.mir
index 7175c9e8006..5b41b376719 100644
--- a/tests/mir-opt/issue_91633.fun.built.after.mir
+++ b/tests/mir-opt/issue_91633.fun.built.after.mir
@@ -16,8 +16,8 @@ fn fun(_1: &[T]) -> &T {
         StorageLive(_3);
         _3 = const 0_usize;
         _4 = Len((*_1));
-        _5 = Lt(_3, _4);
-        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb2];
+        _5 = Lt(copy _3, copy _4);
+        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind: bb2];
     }
 
     bb1: {
diff --git a/tests/mir-opt/issue_99325.main.built.after.32bit.mir b/tests/mir-opt/issue_99325.main.built.after.32bit.mir
index 72e7f4794f9..161c73529f5 100644
--- a/tests/mir-opt/issue_99325.main.built.after.32bit.mir
+++ b/tests/mir-opt/issue_99325.main.built.after.32bit.mir
@@ -83,9 +83,9 @@ fn main() -> () {
         StorageDead(_3);
         PlaceMention(_2);
         StorageLive(_8);
-        _8 = (_2.0: &&[u8]);
+        _8 = copy (_2.0: &&[u8]);
         StorageLive(_9);
-        _9 = (_2.1: &&[u8; 4]);
+        _9 = copy (_2.1: &&[u8; 4]);
         StorageLive(_10);
         StorageLive(_11);
         _11 = &(*_8);
@@ -187,9 +187,9 @@ fn main() -> () {
         StorageDead(_24);
         PlaceMention(_23);
         StorageLive(_28);
-        _28 = (_23.0: &&[u8]);
+        _28 = copy (_23.0: &&[u8]);
         StorageLive(_29);
-        _29 = (_23.1: &&[u8; 4]);
+        _29 = copy (_23.1: &&[u8; 4]);
         StorageLive(_30);
         StorageLive(_31);
         _31 = &(*_28);
diff --git a/tests/mir-opt/issue_99325.main.built.after.64bit.mir b/tests/mir-opt/issue_99325.main.built.after.64bit.mir
index 72e7f4794f9..161c73529f5 100644
--- a/tests/mir-opt/issue_99325.main.built.after.64bit.mir
+++ b/tests/mir-opt/issue_99325.main.built.after.64bit.mir
@@ -83,9 +83,9 @@ fn main() -> () {
         StorageDead(_3);
         PlaceMention(_2);
         StorageLive(_8);
-        _8 = (_2.0: &&[u8]);
+        _8 = copy (_2.0: &&[u8]);
         StorageLive(_9);
-        _9 = (_2.1: &&[u8; 4]);
+        _9 = copy (_2.1: &&[u8; 4]);
         StorageLive(_10);
         StorageLive(_11);
         _11 = &(*_8);
@@ -187,9 +187,9 @@ fn main() -> () {
         StorageDead(_24);
         PlaceMention(_23);
         StorageLive(_28);
-        _28 = (_23.0: &&[u8]);
+        _28 = copy (_23.0: &&[u8]);
         StorageLive(_29);
-        _29 = (_23.1: &&[u8; 4]);
+        _29 = copy (_23.1: &&[u8; 4]);
         StorageLive(_30);
         StorageLive(_31);
         _31 = &(*_28);
diff --git a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir
index 8da56d59aaa..573c0a12bc1 100644
--- a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-abort.mir
@@ -19,7 +19,7 @@ fn num_to_digit(_1: char) -> u32 {
 
     bb0: {
         StorageLive(_2);
-        _2 = char::methods::<impl char>::to_digit(_1, const 8_u32) -> [return: bb1, unwind unreachable];
+        _2 = char::methods::<impl char>::to_digit(copy _1, const 8_u32) -> [return: bb1, unwind unreachable];
     }
 
     bb1: {
diff --git a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir
index 61bc09d901c..049803041d4 100644
--- a/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/issues/issue_59352.num_to_digit.PreCodegen.after.panic-unwind.mir
@@ -19,7 +19,7 @@ fn num_to_digit(_1: char) -> u32 {
 
     bb0: {
         StorageLive(_2);
-        _2 = char::methods::<impl char>::to_digit(_1, const 8_u32) -> [return: bb1, unwind continue];
+        _2 = char::methods::<impl char>::to_digit(copy _1, const 8_u32) -> [return: bb1, unwind continue];
     }
 
     bb1: {
diff --git a/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff b/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff
index 25ed1b4d0c7..1ab9be96652 100644
--- a/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff
+++ b/tests/mir-opt/issues/issue_75439.foo.MatchBranchSimplification.diff
@@ -19,26 +19,26 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = move _3 as [u32; 4] (Transmute);
           StorageDead(_3);
-          switchInt(_2[0 of 4]) -> [0: bb1, otherwise: bb4];
+          switchInt(copy _2[0 of 4]) -> [0: bb1, otherwise: bb4];
       }
   
       bb1: {
-          switchInt(_2[1 of 4]) -> [0: bb2, otherwise: bb4];
+          switchInt(copy _2[1 of 4]) -> [0: bb2, otherwise: bb4];
       }
   
       bb2: {
-          switchInt(_2[2 of 4]) -> [0: bb3, 4294901760: bb3, otherwise: bb4];
+          switchInt(copy _2[2 of 4]) -> [0: bb3, 4294901760: bb3, otherwise: bb4];
       }
   
       bb3: {
           StorageLive(_4);
-          _4 = _2[3 of 4];
+          _4 = copy _2[3 of 4];
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _4;
+          _6 = copy _4;
           _5 = move _6 as [u8; 4] (Transmute);
           StorageDead(_6);
           _0 = Option::<[u8; 4]>::Some(move _5);
diff --git a/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-abort.diff
index e955e669014..a7551c3fb5b 100644
--- a/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-abort.diff
@@ -18,13 +18,13 @@
           StorageLive(_4);
           _4 = const aggregate::FOO;
           StorageLive(_2);
-          _2 = (_4.0: u8);
+          _2 = copy (_4.0: u8);
           StorageLive(_3);
-          _3 = (_4.1: u8);
+          _3 = copy (_4.1: u8);
           StorageDead(_4);
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
           _5 = Eq(move _6, const 7_u8);
 -         switchInt(move _5) -> [0: bb2, otherwise: bb1];
 +         goto -> bb2;
@@ -32,13 +32,13 @@
   
       bb1: {
           StorageDead(_6);
-          _0 = _3;
+          _0 = copy _3;
           goto -> bb3;
       }
   
       bb2: {
           StorageDead(_6);
-          _0 = _2;
+          _0 = copy _2;
           goto -> bb3;
       }
   
diff --git a/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-unwind.diff
index e955e669014..a7551c3fb5b 100644
--- a/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.aggregate.JumpThreading.panic-unwind.diff
@@ -18,13 +18,13 @@
           StorageLive(_4);
           _4 = const aggregate::FOO;
           StorageLive(_2);
-          _2 = (_4.0: u8);
+          _2 = copy (_4.0: u8);
           StorageLive(_3);
-          _3 = (_4.1: u8);
+          _3 = copy (_4.1: u8);
           StorageDead(_4);
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
           _5 = Eq(move _6, const 7_u8);
 -         switchInt(move _5) -> [0: bb2, otherwise: bb1];
 +         goto -> bb2;
@@ -32,13 +32,13 @@
   
       bb1: {
           StorageDead(_6);
-          _0 = _3;
+          _0 = copy _3;
           goto -> bb3;
       }
   
       bb2: {
           StorageDead(_6);
-          _0 = _2;
+          _0 = copy _2;
           goto -> bb3;
       }
   
diff --git a/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-abort.diff
index 0c8e04a1e74..4d639d89f0d 100644
--- a/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-abort.diff
@@ -22,12 +22,12 @@
           StorageLive(_1);
           _1 = const aggregate_copy::Foo;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           StorageLive(_3);
-          _3 = (_2.1: u32);
+          _3 = copy (_2.1: u32);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _3;
+          _5 = copy _3;
           _4 = Eq(move _5, const 2_u32);
 -         switchInt(move _4) -> [0: bb2, otherwise: bb1];
 +         goto -> bb2;
@@ -35,7 +35,7 @@
   
       bb1: {
           StorageDead(_5);
-          _0 = (_2.0: u32);
+          _0 = copy (_2.0: u32);
           goto -> bb3;
       }
   
diff --git a/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-unwind.diff
index 0c8e04a1e74..4d639d89f0d 100644
--- a/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.aggregate_copy.JumpThreading.panic-unwind.diff
@@ -22,12 +22,12 @@
           StorageLive(_1);
           _1 = const aggregate_copy::Foo;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
           StorageLive(_3);
-          _3 = (_2.1: u32);
+          _3 = copy (_2.1: u32);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _3;
+          _5 = copy _3;
           _4 = Eq(move _5, const 2_u32);
 -         switchInt(move _4) -> [0: bb2, otherwise: bb1];
 +         goto -> bb2;
@@ -35,7 +35,7 @@
   
       bb1: {
           StorageDead(_5);
-          _0 = (_2.0: u32);
+          _0 = copy (_2.0: u32);
           goto -> bb3;
       }
   
diff --git a/tests/mir-opt/jump_threading.assume.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.assume.JumpThreading.panic-abort.diff
index f1f0106fdbc..519cb0f0ab1 100644
--- a/tests/mir-opt/jump_threading.assume.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.assume.JumpThreading.panic-abort.diff
@@ -5,11 +5,11 @@
       let mut _0: u8;
   
       bb0: {
-          switchInt(_1) -> [7: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [7: bb1, otherwise: bb2];
       }
   
       bb1: {
-          assume(_2);
+          assume(copy _2);
 -         goto -> bb3;
 +         goto -> bb6;
       }
@@ -19,7 +19,7 @@
       }
   
       bb3: {
-          switchInt(_2) -> [0: bb4, otherwise: bb5];
+          switchInt(copy _2) -> [0: bb4, otherwise: bb5];
       }
   
       bb4: {
diff --git a/tests/mir-opt/jump_threading.assume.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.assume.JumpThreading.panic-unwind.diff
index f1f0106fdbc..519cb0f0ab1 100644
--- a/tests/mir-opt/jump_threading.assume.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.assume.JumpThreading.panic-unwind.diff
@@ -5,11 +5,11 @@
       let mut _0: u8;
   
       bb0: {
-          switchInt(_1) -> [7: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [7: bb1, otherwise: bb2];
       }
   
       bb1: {
-          assume(_2);
+          assume(copy _2);
 -         goto -> bb3;
 +         goto -> bb6;
       }
@@ -19,7 +19,7 @@
       }
   
       bb3: {
-          switchInt(_2) -> [0: bb4, otherwise: bb5];
+          switchInt(copy _2) -> [0: bb4, otherwise: bb5];
       }
   
       bb4: {
diff --git a/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-abort.diff
index 462cc207785..a86371794eb 100644
--- a/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-abort.diff
@@ -11,7 +11,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           switchInt(move _3) -> [0: bb2, otherwise: bb1];
       }
   
diff --git a/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-unwind.diff
index 462cc207785..a86371794eb 100644
--- a/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.custom_discr.JumpThreading.panic-unwind.diff
@@ -11,7 +11,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           switchInt(move _3) -> [0: bb2, otherwise: bb1];
       }
   
diff --git a/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-abort.diff
index f290da84e5d..d17f2752f58 100644
--- a/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-abort.diff
@@ -9,7 +9,7 @@
       bb0: {
           _2 = const true;
           _3 = const true;
-          switchInt(_1) -> [0: bb3, 1: bb3, 2: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [0: bb3, 1: bb3, 2: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -28,11 +28,11 @@
       }
   
       bb4: {
-          switchInt(_3) -> [0: bb5, otherwise: bb7];
+          switchInt(copy _3) -> [0: bb5, otherwise: bb7];
       }
   
       bb5: {
-          switchInt(_2) -> [0: bb6, otherwise: bb8];
+          switchInt(copy _2) -> [0: bb6, otherwise: bb8];
       }
   
       bb6: {
diff --git a/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff
index f290da84e5d..d17f2752f58 100644
--- a/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.disappearing_bb.JumpThreading.panic-unwind.diff
@@ -9,7 +9,7 @@
       bb0: {
           _2 = const true;
           _3 = const true;
-          switchInt(_1) -> [0: bb3, 1: bb3, 2: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [0: bb3, 1: bb3, 2: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -28,11 +28,11 @@
       }
   
       bb4: {
-          switchInt(_3) -> [0: bb5, otherwise: bb7];
+          switchInt(copy _3) -> [0: bb5, otherwise: bb7];
       }
   
       bb5: {
-          switchInt(_2) -> [0: bb6, otherwise: bb8];
+          switchInt(copy _2) -> [0: bb6, otherwise: bb8];
       }
   
       bb6: {
diff --git a/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-abort.diff
index adcedfb3667..083a6e7487a 100644
--- a/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-abort.diff
@@ -8,7 +8,7 @@
       let mut _4: i32;
   
       bb0: {
-          switchInt(_1) -> [1: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -28,7 +28,7 @@
   
       bb4: {
           _4 = const 15_i32;
--         switchInt(_2) -> [5: bb5, otherwise: bb6];
+-         switchInt(copy _2) -> [5: bb5, otherwise: bb6];
 +         goto -> bb5;
       }
   
diff --git a/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff
index adcedfb3667..083a6e7487a 100644
--- a/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.duplicate_chain.JumpThreading.panic-unwind.diff
@@ -8,7 +8,7 @@
       let mut _4: i32;
   
       bb0: {
-          switchInt(_1) -> [1: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -28,7 +28,7 @@
   
       bb4: {
           _4 = const 15_i32;
--         switchInt(_2) -> [5: bb5, otherwise: bb6];
+-         switchInt(copy _2) -> [5: bb5, otherwise: bb6];
 +         goto -> bb5;
       }
   
diff --git a/tests/mir-opt/jump_threading.floats.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.floats.JumpThreading.panic-abort.diff
index 6ca37e96d29..1192f7c23e1 100644
--- a/tests/mir-opt/jump_threading.floats.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.floats.JumpThreading.panic-abort.diff
@@ -33,7 +33,7 @@
           StorageDead(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           _3 = Eq(move _4, const 0f64);
           switchInt(move _3) -> [0: bb5, otherwise: bb4];
       }
diff --git a/tests/mir-opt/jump_threading.floats.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.floats.JumpThreading.panic-unwind.diff
index 6ca37e96d29..1192f7c23e1 100644
--- a/tests/mir-opt/jump_threading.floats.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.floats.JumpThreading.panic-unwind.diff
@@ -33,7 +33,7 @@
           StorageDead(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           _3 = Eq(move _4, const 0f64);
           switchInt(move _3) -> [0: bb5, otherwise: bb4];
       }
diff --git a/tests/mir-opt/jump_threading.identity.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.identity.JumpThreading.panic-abort.diff
index 65379ae8b89..79599f85611 100644
--- a/tests/mir-opt/jump_threading.identity.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.identity.JumpThreading.panic-abort.diff
@@ -45,7 +45,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
@@ -59,8 +59,8 @@
   
       bb2: {
           StorageLive(_9);
-          _9 = ((_3 as Continue).0: i32);
-          _2 = _9;
+          _9 = copy ((_3 as Continue).0: i32);
+          _2 = copy _9;
           StorageDead(_9);
           _0 = Result::<i32, i32>::Ok(move _2);
           StorageDead(_2);
@@ -70,9 +70,9 @@
   
       bb3: {
           StorageLive(_6);
-          _6 = ((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>);
+          _6 = copy ((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>);
           StorageLive(_8);
-          _8 = _6;
+          _8 = copy _6;
           StorageLive(_14);
           _14 = move ((_8 as Err).0: i32);
           StorageLive(_15);
@@ -104,7 +104,7 @@
       bb6: {
           _12 = move ((_4 as Err).0: i32);
           StorageLive(_13);
-          _13 = Result::<Infallible, i32>::Err(_12);
+          _13 = Result::<Infallible, i32>::Err(copy _12);
           _3 = ControlFlow::<Result<Infallible, i32>, i32>::Break(move _13);
           StorageDead(_13);
 -         goto -> bb5;
@@ -113,7 +113,7 @@
   
       bb7: {
           _11 = move ((_4 as Ok).0: i32);
-          _3 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(_11);
+          _3 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(copy _11);
           goto -> bb5;
 +     }
 + 
diff --git a/tests/mir-opt/jump_threading.identity.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.identity.JumpThreading.panic-unwind.diff
index 65379ae8b89..79599f85611 100644
--- a/tests/mir-opt/jump_threading.identity.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.identity.JumpThreading.panic-unwind.diff
@@ -45,7 +45,7 @@
           StorageLive(_2);
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_10);
           StorageLive(_11);
           StorageLive(_12);
@@ -59,8 +59,8 @@
   
       bb2: {
           StorageLive(_9);
-          _9 = ((_3 as Continue).0: i32);
-          _2 = _9;
+          _9 = copy ((_3 as Continue).0: i32);
+          _2 = copy _9;
           StorageDead(_9);
           _0 = Result::<i32, i32>::Ok(move _2);
           StorageDead(_2);
@@ -70,9 +70,9 @@
   
       bb3: {
           StorageLive(_6);
-          _6 = ((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>);
+          _6 = copy ((_3 as Break).0: std::result::Result<std::convert::Infallible, i32>);
           StorageLive(_8);
-          _8 = _6;
+          _8 = copy _6;
           StorageLive(_14);
           _14 = move ((_8 as Err).0: i32);
           StorageLive(_15);
@@ -104,7 +104,7 @@
       bb6: {
           _12 = move ((_4 as Err).0: i32);
           StorageLive(_13);
-          _13 = Result::<Infallible, i32>::Err(_12);
+          _13 = Result::<Infallible, i32>::Err(copy _12);
           _3 = ControlFlow::<Result<Infallible, i32>, i32>::Break(move _13);
           StorageDead(_13);
 -         goto -> bb5;
@@ -113,7 +113,7 @@
   
       bb7: {
           _11 = move ((_4 as Ok).0: i32);
-          _3 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(_11);
+          _3 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(copy _11);
           goto -> bb5;
 +     }
 + 
diff --git a/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-abort.diff
index 2ca03e439a0..09c0ad6d485 100644
--- a/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-abort.diff
@@ -7,18 +7,18 @@
       let mut _3: u8;
   
       bb0: {
-          switchInt(_1) -> [3: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [3: bb1, otherwise: bb2];
       }
   
       bb1: {
-          _2 = _1;
--         switchInt(_2) -> [3: bb3, otherwise: bb4];
+          _2 = copy _1;
+-         switchInt(copy _2) -> [3: bb3, otherwise: bb4];
 +         goto -> bb3;
       }
   
       bb2: {
-          _3 = _1;
--         switchInt(_3) -> [3: bb5, otherwise: bb6];
+          _3 = copy _1;
+-         switchInt(copy _3) -> [3: bb5, otherwise: bb6];
 +         goto -> bb6;
       }
   
@@ -38,7 +38,7 @@
       }
   
       bb6: {
-          switchInt(_3) -> [1: bb7, otherwise: bb8];
+          switchInt(copy _3) -> [1: bb7, otherwise: bb8];
       }
   
       bb7: {
diff --git a/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-unwind.diff
index 2ca03e439a0..09c0ad6d485 100644
--- a/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.multiple_match.JumpThreading.panic-unwind.diff
@@ -7,18 +7,18 @@
       let mut _3: u8;
   
       bb0: {
-          switchInt(_1) -> [3: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [3: bb1, otherwise: bb2];
       }
   
       bb1: {
-          _2 = _1;
--         switchInt(_2) -> [3: bb3, otherwise: bb4];
+          _2 = copy _1;
+-         switchInt(copy _2) -> [3: bb3, otherwise: bb4];
 +         goto -> bb3;
       }
   
       bb2: {
-          _3 = _1;
--         switchInt(_3) -> [3: bb5, otherwise: bb6];
+          _3 = copy _1;
+-         switchInt(copy _3) -> [3: bb5, otherwise: bb6];
 +         goto -> bb6;
       }
   
@@ -38,7 +38,7 @@
       }
   
       bb6: {
-          switchInt(_3) -> [1: bb7, otherwise: bb8];
+          switchInt(copy _3) -> [1: bb7, otherwise: bb8];
       }
   
       bb7: {
diff --git a/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-abort.diff
index e9d4352014f..bb47f57b542 100644
--- a/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-abort.diff
@@ -27,7 +27,7 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           _4 = Eq(move _5, const 7_i32);
           switchInt(move _4) -> [0: bb2, otherwise: bb1];
       }
diff --git a/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-unwind.diff
index e9d4352014f..bb47f57b542 100644
--- a/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.mutable_ref.JumpThreading.panic-unwind.diff
@@ -27,7 +27,7 @@
           StorageDead(_3);
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           _4 = Eq(move _5, const 7_i32);
           switchInt(move _4) -> [0: bb2, otherwise: bb1];
       }
diff --git a/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff
index 8821b47c345..7014146cb86 100644
--- a/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-abort.diff
@@ -10,7 +10,7 @@
           discriminant(_1) = 1;
           (((_1 as variant#1).0: NonZeroUsize).0: usize) = const 0_usize;
           _2 = discriminant(_1);
-          switchInt(_2) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _2) -> [0: bb1, otherwise: bb2];
       }
   
       bb1: {
diff --git a/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff
index 8821b47c345..7014146cb86 100644
--- a/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.mutate_discriminant.JumpThreading.panic-unwind.diff
@@ -10,7 +10,7 @@
           discriminant(_1) = 1;
           (((_1 as variant#1).0: NonZeroUsize).0: usize) = const 0_usize;
           _2 = discriminant(_1);
-          switchInt(_2) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _2) -> [0: bb1, otherwise: bb2];
       }
   
       bb1: {
diff --git a/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-abort.diff
index 2d943a4bee2..9a8bdc8f4d9 100644
--- a/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-abort.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           _3 = const false;
-          switchInt(_1) -> [1: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -18,17 +18,17 @@
       }
   
       bb2: {
-          _2 = _1;
-          _3 = _1;
+          _2 = copy _1;
+          _3 = copy _1;
           goto -> bb3;
       }
   
       bb3: {
-          switchInt(_2) -> [0: bb4, otherwise: bb5];
+          switchInt(copy _2) -> [0: bb4, otherwise: bb5];
       }
   
       bb4: {
-          switchInt(_3) -> [0: bb6, otherwise: bb7];
+          switchInt(copy _3) -> [0: bb6, otherwise: bb7];
       }
   
       bb5: {
diff --git a/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff
index 2d943a4bee2..9a8bdc8f4d9 100644
--- a/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.renumbered_bb.JumpThreading.panic-unwind.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           _3 = const false;
-          switchInt(_1) -> [1: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
       }
   
       bb1: {
@@ -18,17 +18,17 @@
       }
   
       bb2: {
-          _2 = _1;
-          _3 = _1;
+          _2 = copy _1;
+          _3 = copy _1;
           goto -> bb3;
       }
   
       bb3: {
-          switchInt(_2) -> [0: bb4, otherwise: bb5];
+          switchInt(copy _2) -> [0: bb4, otherwise: bb5];
       }
   
       bb4: {
-          switchInt(_3) -> [0: bb6, otherwise: bb7];
+          switchInt(copy _3) -> [0: bb6, otherwise: bb7];
       }
   
       bb5: {
diff --git a/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-abort.diff b/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-abort.diff
index 365d9d6b32b..7de35929892 100644
--- a/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-abort.diff
+++ b/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-abort.diff
@@ -39,9 +39,9 @@
   
       bb2: {
           StorageLive(_6);
-          _6 = ((_1 as Err).0: usize);
+          _6 = copy ((_1 as Err).0: usize);
           StorageLive(_7);
-          _7 = _6;
+          _7 = copy _6;
           _2 = ControlFlow::<usize, i32>::Break(move _7);
           StorageDead(_7);
           StorageDead(_6);
@@ -51,9 +51,9 @@
   
       bb3: {
           StorageLive(_4);
-          _4 = ((_1 as Ok).0: i32);
+          _4 = copy ((_1 as Ok).0: i32);
           StorageLive(_5);
-          _5 = _4;
+          _5 = copy _4;
           _2 = ControlFlow::<usize, i32>::Continue(move _5);
           StorageDead(_5);
           StorageDead(_4);
@@ -68,7 +68,7 @@
   
       bb5: {
           StorageLive(_11);
-          _11 = ((_2 as Break).0: usize);
+          _11 = copy ((_2 as Break).0: usize);
           _0 = Option::<i32>::None;
           StorageDead(_11);
           goto -> bb7;
@@ -76,9 +76,9 @@
   
       bb6: {
           StorageLive(_9);
-          _9 = ((_2 as Continue).0: i32);
+          _9 = copy ((_2 as Continue).0: i32);
           StorageLive(_10);
-          _10 = _9;
+          _10 = copy _9;
           _0 = Option::<i32>::Some(move _10);
           StorageDead(_10);
           StorageDead(_9);
diff --git a/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-unwind.diff b/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-unwind.diff
index 365d9d6b32b..7de35929892 100644
--- a/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-unwind.diff
+++ b/tests/mir-opt/jump_threading.too_complex.JumpThreading.panic-unwind.diff
@@ -39,9 +39,9 @@
   
       bb2: {
           StorageLive(_6);
-          _6 = ((_1 as Err).0: usize);
+          _6 = copy ((_1 as Err).0: usize);
           StorageLive(_7);
-          _7 = _6;
+          _7 = copy _6;
           _2 = ControlFlow::<usize, i32>::Break(move _7);
           StorageDead(_7);
           StorageDead(_6);
@@ -51,9 +51,9 @@
   
       bb3: {
           StorageLive(_4);
-          _4 = ((_1 as Ok).0: i32);
+          _4 = copy ((_1 as Ok).0: i32);
           StorageLive(_5);
-          _5 = _4;
+          _5 = copy _4;
           _2 = ControlFlow::<usize, i32>::Continue(move _5);
           StorageDead(_5);
           StorageDead(_4);
@@ -68,7 +68,7 @@
   
       bb5: {
           StorageLive(_11);
-          _11 = ((_2 as Break).0: usize);
+          _11 = copy ((_2 as Break).0: usize);
           _0 = Option::<i32>::None;
           StorageDead(_11);
           goto -> bb7;
@@ -76,9 +76,9 @@
   
       bb6: {
           StorageLive(_9);
-          _9 = ((_2 as Continue).0: i32);
+          _9 = copy ((_2 as Continue).0: i32);
           StorageLive(_10);
-          _10 = _9;
+          _10 = copy _9;
           _0 = Option::<i32>::Some(move _10);
           StorageDead(_10);
           StorageDead(_9);
diff --git a/tests/mir-opt/lower_array_len.array_bound.GVN.panic-abort.diff b/tests/mir-opt/lower_array_len.array_bound.GVN.panic-abort.diff
index 7aca2cb0007..8223cbbb412 100644
--- a/tests/mir-opt/lower_array_len.array_bound.GVN.panic-abort.diff
+++ b/tests/mir-opt/lower_array_len.array_bound.GVN.panic-abort.diff
@@ -18,7 +18,7 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
@@ -35,8 +35,8 @@
           StorageDead(_6);
 -         _3 = Lt(move _4, move _5);
 -         switchInt(move _3) -> [0: bb4, otherwise: bb2];
-+         _3 = Lt(_1, const N);
-+         switchInt(_3) -> [0: bb4, otherwise: bb2];
++         _3 = Lt(copy _1, const N);
++         switchInt(copy _3) -> [0: bb4, otherwise: bb2];
       }
   
       bb2: {
@@ -44,18 +44,18 @@
 +         nop;
           StorageDead(_4);
           StorageLive(_8);
-          _8 = _1;
+          _8 = copy _1;
 -         _9 = Len((*_2));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable];
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb3, unwind unreachable];
 +         _9 = const N;
-+         _10 = _3;
-+         assert(_3, "index out of bounds: the length is {} but the index is {}", const N, _1) -> [success: bb3, unwind unreachable];
++         _10 = copy _3;
++         assert(copy _3, "index out of bounds: the length is {} but the index is {}", const N, copy _1) -> [success: bb3, unwind unreachable];
       }
   
       bb3: {
--         _0 = (*_2)[_8];
-+         _0 = (*_2)[_1];
+-         _0 = copy (*_2)[_8];
++         _0 = copy (*_2)[_1];
           StorageDead(_8);
           goto -> bb5;
       }
diff --git a/tests/mir-opt/lower_array_len.array_bound.GVN.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_bound.GVN.panic-unwind.diff
index ed39c11319a..d8f33accbc0 100644
--- a/tests/mir-opt/lower_array_len.array_bound.GVN.panic-unwind.diff
+++ b/tests/mir-opt/lower_array_len.array_bound.GVN.panic-unwind.diff
@@ -18,7 +18,7 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
@@ -35,8 +35,8 @@
           StorageDead(_6);
 -         _3 = Lt(move _4, move _5);
 -         switchInt(move _3) -> [0: bb4, otherwise: bb2];
-+         _3 = Lt(_1, const N);
-+         switchInt(_3) -> [0: bb4, otherwise: bb2];
++         _3 = Lt(copy _1, const N);
++         switchInt(copy _3) -> [0: bb4, otherwise: bb2];
       }
   
       bb2: {
@@ -44,18 +44,18 @@
 +         nop;
           StorageDead(_4);
           StorageLive(_8);
-          _8 = _1;
+          _8 = copy _1;
 -         _9 = Len((*_2));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind continue];
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb3, unwind continue];
 +         _9 = const N;
-+         _10 = _3;
-+         assert(_3, "index out of bounds: the length is {} but the index is {}", const N, _1) -> [success: bb3, unwind continue];
++         _10 = copy _3;
++         assert(copy _3, "index out of bounds: the length is {} but the index is {}", const N, copy _1) -> [success: bb3, unwind continue];
       }
   
       bb3: {
--         _0 = (*_2)[_8];
-+         _0 = (*_2)[_1];
+-         _0 = copy (*_2)[_8];
++         _0 = copy (*_2)[_1];
           StorageDead(_8);
           goto -> bb5;
       }
diff --git a/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-abort.diff b/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-abort.diff
index 734d28e9546..1cb9963c00e 100644
--- a/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-abort.diff
+++ b/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-abort.diff
@@ -21,7 +21,7 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
@@ -38,8 +38,8 @@
           StorageDead(_6);
 -         _3 = Lt(move _4, move _5);
 -         switchInt(move _3) -> [0: bb4, otherwise: bb2];
-+         _3 = Lt(_1, const N);
-+         switchInt(_3) -> [0: bb4, otherwise: bb2];
++         _3 = Lt(copy _1, const N);
++         switchInt(copy _3) -> [0: bb4, otherwise: bb2];
       }
   
       bb2: {
@@ -47,18 +47,18 @@
 +         nop;
           StorageDead(_4);
           StorageLive(_8);
-          _8 = _1;
+          _8 = copy _1;
 -         _9 = Len((*_2));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind unreachable];
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb3, unwind unreachable];
 +         _9 = const N;
-+         _10 = _3;
-+         assert(_3, "index out of bounds: the length is {} but the index is {}", const N, _1) -> [success: bb3, unwind unreachable];
++         _10 = copy _3;
++         assert(copy _3, "index out of bounds: the length is {} but the index is {}", const N, copy _1) -> [success: bb3, unwind unreachable];
       }
   
       bb3: {
--         _0 = (*_2)[_8];
-+         _0 = (*_2)[_1];
+-         _0 = copy (*_2)[_8];
++         _0 = copy (*_2)[_1];
           StorageDead(_8);
           goto -> bb6;
       }
@@ -70,8 +70,8 @@
           StorageLive(_11);
           _11 = const 0_usize;
 -         _12 = Len((*_2));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind unreachable];
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb5, unwind unreachable];
 +         _12 = const N;
 +         _13 = Lt(const 0_usize, const N);
 +         assert(move _13, "index out of bounds: the length is {} but the index is {}", const N, const 0_usize) -> [success: bb5, unwind unreachable];
diff --git a/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-unwind.diff b/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-unwind.diff
index ec569ab5042..fa4e11ed201 100644
--- a/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-unwind.diff
+++ b/tests/mir-opt/lower_array_len.array_bound_mut.GVN.panic-unwind.diff
@@ -21,7 +21,7 @@
 -         StorageLive(_3);
 +         nop;
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
 -         StorageLive(_5);
 +         nop;
           StorageLive(_6);
@@ -38,8 +38,8 @@
           StorageDead(_6);
 -         _3 = Lt(move _4, move _5);
 -         switchInt(move _3) -> [0: bb4, otherwise: bb2];
-+         _3 = Lt(_1, const N);
-+         switchInt(_3) -> [0: bb4, otherwise: bb2];
++         _3 = Lt(copy _1, const N);
++         switchInt(copy _3) -> [0: bb4, otherwise: bb2];
       }
   
       bb2: {
@@ -47,18 +47,18 @@
 +         nop;
           StorageDead(_4);
           StorageLive(_8);
-          _8 = _1;
+          _8 = copy _1;
 -         _9 = Len((*_2));
--         _10 = Lt(_8, _9);
--         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, _8) -> [success: bb3, unwind continue];
+-         _10 = Lt(copy _8, copy _9);
+-         assert(move _10, "index out of bounds: the length is {} but the index is {}", move _9, copy _8) -> [success: bb3, unwind continue];
 +         _9 = const N;
-+         _10 = _3;
-+         assert(_3, "index out of bounds: the length is {} but the index is {}", const N, _1) -> [success: bb3, unwind continue];
++         _10 = copy _3;
++         assert(copy _3, "index out of bounds: the length is {} but the index is {}", const N, copy _1) -> [success: bb3, unwind continue];
       }
   
       bb3: {
--         _0 = (*_2)[_8];
-+         _0 = (*_2)[_1];
+-         _0 = copy (*_2)[_8];
++         _0 = copy (*_2)[_1];
           StorageDead(_8);
           goto -> bb6;
       }
@@ -70,8 +70,8 @@
           StorageLive(_11);
           _11 = const 0_usize;
 -         _12 = Len((*_2));
--         _13 = Lt(_11, _12);
--         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, _11) -> [success: bb5, unwind continue];
+-         _13 = Lt(copy _11, copy _12);
+-         assert(move _13, "index out of bounds: the length is {} but the index is {}", move _12, copy _11) -> [success: bb5, unwind continue];
 +         _12 = const N;
 +         _13 = Lt(const 0_usize, const N);
 +         assert(move _13, "index out of bounds: the length is {} but the index is {}", const N, const 0_usize) -> [success: bb5, unwind continue];
diff --git a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff
index 96b66af66a2..7f325245bce 100644
--- a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-abort.diff
@@ -33,7 +33,7 @@
           StorageLive(_7);
           _7 = &_1;
           _6 = &raw const (*_7);
-          _5 = _6;
+          _5 = copy _6;
           _4 = move _5 as *const i32 (PtrToPtr);
           StorageDead(_5);
           StorageLive(_8);
@@ -42,7 +42,7 @@
           StorageLive(_11);
           _11 = &mut _2;
           _10 = &raw mut (*_11);
-          _9 = _10;
+          _9 = copy _10;
           _8 = move _9 as *mut i32 (PtrToPtr);
           StorageDead(_9);
 -         _3 = copy_nonoverlapping::<i32>(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff
index 96b66af66a2..7f325245bce 100644
--- a/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.f_copy_nonoverlapping.LowerIntrinsics.panic-unwind.diff
@@ -33,7 +33,7 @@
           StorageLive(_7);
           _7 = &_1;
           _6 = &raw const (*_7);
-          _5 = _6;
+          _5 = copy _6;
           _4 = move _5 as *const i32 (PtrToPtr);
           StorageDead(_5);
           StorageLive(_8);
@@ -42,7 +42,7 @@
           StorageLive(_11);
           _11 = &mut _2;
           _10 = &raw mut (*_11);
-          _9 = _10;
+          _9 = copy _10;
           _8 = move _9 as *mut i32 (PtrToPtr);
           StorageDead(_9);
 -         _3 = copy_nonoverlapping::<i32>(move _4, move _8, const 0_usize) -> [return: bb1, unwind unreachable];
diff --git a/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-abort.diff
index d256058c05e..f2cfce1b6e3 100644
--- a/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-abort.diff
@@ -25,7 +25,7 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = ptr_metadata::<i32, ()>(move _5) -> [return: bb1, unwind unreachable];
 +         _4 = PtrMetadata(move _5);
 +         goto -> bb1;
@@ -35,7 +35,7 @@
           StorageDead(_5);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _2;
+          _7 = copy _2;
 -         _6 = ptr_metadata::<[u8], usize>(move _7) -> [return: bb2, unwind unreachable];
 +         _6 = PtrMetadata(move _7);
 +         goto -> bb2;
@@ -45,7 +45,7 @@
           StorageDead(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _3;
+          _9 = copy _3;
 -         _8 = ptr_metadata::<dyn Debug, DynMetadata<dyn Debug>>(move _9) -> [return: bb3, unwind unreachable];
 +         _8 = PtrMetadata(move _9);
 +         goto -> bb3;
diff --git a/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-unwind.diff
index d256058c05e..f2cfce1b6e3 100644
--- a/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.get_metadata.LowerIntrinsics.panic-unwind.diff
@@ -25,7 +25,7 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
 -         _4 = ptr_metadata::<i32, ()>(move _5) -> [return: bb1, unwind unreachable];
 +         _4 = PtrMetadata(move _5);
 +         goto -> bb1;
@@ -35,7 +35,7 @@
           StorageDead(_5);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _2;
+          _7 = copy _2;
 -         _6 = ptr_metadata::<[u8], usize>(move _7) -> [return: bb2, unwind unreachable];
 +         _6 = PtrMetadata(move _7);
 +         goto -> bb2;
@@ -45,7 +45,7 @@
           StorageDead(_7);
           StorageLive(_8);
           StorageLive(_9);
-          _9 = _3;
+          _9 = copy _3;
 -         _8 = ptr_metadata::<dyn Debug, DynMetadata<dyn Debug>>(move _9) -> [return: bb3, unwind unreachable];
 +         _8 = PtrMetadata(move _9);
 +         goto -> bb3;
diff --git a/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-abort.diff
index 02934d4c01e..b282509c068 100644
--- a/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-abort.diff
@@ -34,7 +34,7 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
           _6 = ();
 -         _4 = aggregate_raw_ptr::<*const i32, *const u8, ()>(move _5, move _6) -> [return: bb1, unwind unreachable];
@@ -47,7 +47,7 @@
           StorageDead(_5);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
           StorageLive(_9);
           _9 = ();
 -         _7 = aggregate_raw_ptr::<*mut u8, *mut (), ()>(move _8, move _9) -> [return: bb2, unwind unreachable];
@@ -60,9 +60,9 @@
           StorageDead(_8);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _1;
+          _11 = copy _1;
           StorageLive(_12);
-          _12 = _3;
+          _12 = copy _3;
 -         _10 = aggregate_raw_ptr::<*const [u16], *const u8, usize>(move _11, move _12) -> [return: bb3, unwind unreachable];
 +         _10 = *const [u16] from (move _11, move _12);
 +         goto -> bb3;
@@ -73,9 +73,9 @@
           StorageDead(_11);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _2;
+          _14 = copy _2;
           StorageLive(_15);
-          _15 = _3;
+          _15 = copy _3;
 -         _13 = aggregate_raw_ptr::<*mut [u64], *mut (), usize>(move _14, move _15) -> [return: bb4, unwind unreachable];
 +         _13 = *mut [u64] from (move _14, move _15);
 +         goto -> bb4;
diff --git a/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-unwind.diff
index 02934d4c01e..b282509c068 100644
--- a/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.make_pointers.LowerIntrinsics.panic-unwind.diff
@@ -34,7 +34,7 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
           _6 = ();
 -         _4 = aggregate_raw_ptr::<*const i32, *const u8, ()>(move _5, move _6) -> [return: bb1, unwind unreachable];
@@ -47,7 +47,7 @@
           StorageDead(_5);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
           StorageLive(_9);
           _9 = ();
 -         _7 = aggregate_raw_ptr::<*mut u8, *mut (), ()>(move _8, move _9) -> [return: bb2, unwind unreachable];
@@ -60,9 +60,9 @@
           StorageDead(_8);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _1;
+          _11 = copy _1;
           StorageLive(_12);
-          _12 = _3;
+          _12 = copy _3;
 -         _10 = aggregate_raw_ptr::<*const [u16], *const u8, usize>(move _11, move _12) -> [return: bb3, unwind unreachable];
 +         _10 = *const [u16] from (move _11, move _12);
 +         goto -> bb3;
@@ -73,9 +73,9 @@
           StorageDead(_11);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _2;
+          _14 = copy _2;
           StorageLive(_15);
-          _15 = _3;
+          _15 = copy _3;
 -         _13 = aggregate_raw_ptr::<*mut [u64], *mut (), usize>(move _14, move _15) -> [return: bb4, unwind unreachable];
 +         _13 = *mut [u64] from (move _14, move _15);
 +         goto -> bb4;
diff --git a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff
index 069a82b9521..5aa98698476 100644
--- a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-abort.diff
@@ -13,7 +13,7 @@
           StorageLive(_1);
           _1 = std::intrinsics::size_of::<T>;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = move _2() -> [return: bb1, unwind unreachable];
 +         _0 = SizeOf(T);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff
index 069a82b9521..5aa98698476 100644
--- a/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.non_const.LowerIntrinsics.panic-unwind.diff
@@ -13,7 +13,7 @@
           StorageLive(_1);
           _1 = std::intrinsics::size_of::<T>;
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = move _2() -> [return: bb1, unwind unreachable];
 +         _0 = SizeOf(T);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff
index 4f7ad0b6094..62cce84f695 100644
--- a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-abort.diff
@@ -10,9 +10,9 @@
   
       bb0: {
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = offset::<*const i32, isize>(move _3, move _4) -> [return: bb1, unwind unreachable];
 +         _0 = Offset(move _3, move _4);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff
index 4f7ad0b6094..62cce84f695 100644
--- a/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.ptr_offset.LowerIntrinsics.panic-unwind.diff
@@ -10,9 +10,9 @@
   
       bb0: {
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           StorageLive(_4);
-          _4 = _2;
+          _4 = copy _2;
 -         _0 = offset::<*const i32, isize>(move _3, move _4) -> [return: bb1, unwind unreachable];
 +         _0 = Offset(move _3, move _4);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff
index 781104be290..95717d03b61 100644
--- a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-abort.diff
@@ -10,7 +10,7 @@
           StorageLive(_2);
           _2 = &raw const (*_1);
 -         _0 = read_via_copy::<i32>(move _2) -> [return: bb1, unwind unreachable];
-+         _0 = (*_2);
++         _0 = copy (*_2);
 +         goto -> bb1;
       }
   
diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff
index 781104be290..95717d03b61 100644
--- a/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.read_via_copy_primitive.LowerIntrinsics.panic-unwind.diff
@@ -10,7 +10,7 @@
           StorageLive(_2);
           _2 = &raw const (*_1);
 -         _0 = read_via_copy::<i32>(move _2) -> [return: bb1, unwind unreachable];
-+         _0 = (*_2);
++         _0 = copy (*_2);
 +         goto -> bb1;
       }
   
diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff
index 56c357b3776..8828549249e 100644
--- a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-abort.diff
@@ -10,7 +10,7 @@
           StorageLive(_2);
           _2 = &raw const (*_1);
 -         _0 = read_via_copy::<Never>(move _2) -> unwind unreachable;
-+         _0 = (*_2);
++         _0 = copy (*_2);
 +         unreachable;
       }
   }
diff --git a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff
index 56c357b3776..8828549249e 100644
--- a/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.read_via_copy_uninhabited.LowerIntrinsics.panic-unwind.diff
@@ -10,7 +10,7 @@
           StorageLive(_2);
           _2 = &raw const (*_1);
 -         _0 = read_via_copy::<Never>(move _2) -> unwind unreachable;
-+         _0 = (*_2);
++         _0 = copy (*_2);
 +         unreachable;
       }
   }
diff --git a/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff
index 816d6209715..f29bc5dfc6e 100644
--- a/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-abort.diff
@@ -15,9 +15,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = three_way_compare::<char>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = Cmp(move _4, move _5);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff
index 80b4bd7a2be..596ad70b3bf 100644
--- a/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.three_way_compare_char.LowerIntrinsics.panic-unwind.diff
@@ -15,9 +15,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = three_way_compare::<char>(move _4, move _5) -> [return: bb1, unwind continue];
 +         _3 = Cmp(move _4, move _5);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff
index 05c20aaa09a..654cb2503df 100644
--- a/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-abort.diff
@@ -12,9 +12,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = three_way_compare::<i16>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = Cmp(move _4, move _5);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff
index 8a254d02a47..987c2166692 100644
--- a/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.three_way_compare_signed.LowerIntrinsics.panic-unwind.diff
@@ -12,9 +12,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = three_way_compare::<i16>(move _4, move _5) -> [return: bb1, unwind continue];
 +         _3 = Cmp(move _4, move _5);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff
index 437614ec673..82c89b7ce54 100644
--- a/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-abort.diff
@@ -15,9 +15,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = three_way_compare::<u32>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = Cmp(move _4, move _5);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff
index 7d6137979c8..d7ec6dcfa2c 100644
--- a/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.three_way_compare_unsigned.LowerIntrinsics.panic-unwind.diff
@@ -15,9 +15,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = three_way_compare::<u32>(move _4, move _5) -> [return: bb1, unwind continue];
 +         _3 = Cmp(move _4, move _5);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff
index 6e542c4b5a7..71e84fdd881 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-abort.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = transmute::<std::cmp::Ordering, i8>(move _2) -> [return: bb1, unwind unreachable];
 +         _0 = move _2 as i8 (Transmute);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff
index 6e542c4b5a7..71e84fdd881 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_inhabited.LowerIntrinsics.panic-unwind.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = transmute::<std::cmp::Ordering, i8>(move _2) -> [return: bb1, unwind unreachable];
 +         _0 = move _2 as i8 (Transmute);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff
index ab4646370f1..37232b826c1 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-abort.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = transmute::<&T, *const T>(move _2) -> [return: bb1, unwind unreachable];
 +         _0 = move _2 as *const T (Transmute);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff
index ab4646370f1..37232b826c1 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_ref_dst.LowerIntrinsics.panic-unwind.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = transmute::<&T, *const T>(move _2) -> [return: bb1, unwind unreachable];
 +         _0 = move _2 as *const T (Transmute);
 +         goto -> bb1;
diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff
index c4a3358ffa3..8ac70f99ad2 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-abort.diff
@@ -17,7 +17,7 @@
       }
   
       bb1: {
-          _2 = (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
+          _2 = copy (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
           PlaceMention((*_2));
           unreachable;
       }
diff --git a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff
index c4a3358ffa3..8ac70f99ad2 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_to_box_uninhabited.LowerIntrinsics.panic-unwind.diff
@@ -17,7 +17,7 @@
       }
   
       bb1: {
-          _2 = (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
+          _2 = copy (((_1.0: std::ptr::Unique<Never>).0: std::ptr::NonNull<Never>).0: *const Never);
           PlaceMention((*_2));
           unreachable;
       }
diff --git a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff
index 6d3ad348988..eab969e9fe5 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-abort.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = transmute::<(), Never>(move _2) -> unwind unreachable;
 +         _0 = move _2 as Never (Transmute);
 +         unreachable;
diff --git a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff
index 6d3ad348988..eab969e9fe5 100644
--- a/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.transmute_uninhabited.LowerIntrinsics.panic-unwind.diff
@@ -8,7 +8,7 @@
   
       bb0: {
           StorageLive(_2);
-          _2 = _1;
+          _2 = copy _1;
 -         _0 = transmute::<(), Never>(move _2) -> unwind unreachable;
 +         _0 = move _2 as Never (Transmute);
 +         unreachable;
diff --git a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff
index 3c9694d0370..d0d38462f8d 100644
--- a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-abort.diff
@@ -64,9 +64,9 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
 -         _4 = unchecked_add::<i32>(move _5, move _6) -> [return: bb1, unwind unreachable];
 +         _4 = AddUnchecked(move _5, move _6);
 +         goto -> bb1;
@@ -77,9 +77,9 @@
           StorageDead(_5);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _1;
+          _8 = copy _1;
           StorageLive(_9);
-          _9 = _2;
+          _9 = copy _2;
 -         _7 = unchecked_sub::<i32>(move _8, move _9) -> [return: bb2, unwind unreachable];
 +         _7 = SubUnchecked(move _8, move _9);
 +         goto -> bb2;
@@ -90,9 +90,9 @@
           StorageDead(_8);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _1;
+          _11 = copy _1;
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
 -         _10 = unchecked_mul::<i32>(move _11, move _12) -> [return: bb3, unwind unreachable];
 +         _10 = MulUnchecked(move _11, move _12);
 +         goto -> bb3;
@@ -103,9 +103,9 @@
           StorageDead(_11);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
           StorageLive(_15);
-          _15 = _2;
+          _15 = copy _2;
 -         _13 = unchecked_div::<i32>(move _14, move _15) -> [return: bb4, unwind unreachable];
 +         _13 = Div(move _14, move _15);
 +         goto -> bb4;
@@ -116,9 +116,9 @@
           StorageDead(_14);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
+          _17 = copy _1;
           StorageLive(_18);
-          _18 = _2;
+          _18 = copy _2;
 -         _16 = unchecked_rem::<i32>(move _17, move _18) -> [return: bb5, unwind unreachable];
 +         _16 = Rem(move _17, move _18);
 +         goto -> bb5;
@@ -129,9 +129,9 @@
           StorageDead(_17);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _1;
+          _20 = copy _1;
           StorageLive(_21);
-          _21 = _2;
+          _21 = copy _2;
 -         _19 = unchecked_shl::<i32, i32>(move _20, move _21) -> [return: bb6, unwind unreachable];
 +         _19 = ShlUnchecked(move _20, move _21);
 +         goto -> bb6;
@@ -142,9 +142,9 @@
           StorageDead(_20);
           StorageLive(_22);
           StorageLive(_23);
-          _23 = _1;
+          _23 = copy _1;
           StorageLive(_24);
-          _24 = _2;
+          _24 = copy _2;
 -         _22 = unchecked_shr::<i32, i32>(move _23, move _24) -> [return: bb7, unwind unreachable];
 +         _22 = ShrUnchecked(move _23, move _24);
 +         goto -> bb7;
@@ -155,9 +155,9 @@
           StorageDead(_23);
           StorageLive(_25);
           StorageLive(_26);
-          _26 = _1;
+          _26 = copy _1;
           StorageLive(_27);
-          _27 = _3;
+          _27 = copy _3;
 -         _25 = unchecked_shl::<i32, u32>(move _26, move _27) -> [return: bb8, unwind unreachable];
 +         _25 = ShlUnchecked(move _26, move _27);
 +         goto -> bb8;
@@ -168,9 +168,9 @@
           StorageDead(_26);
           StorageLive(_28);
           StorageLive(_29);
-          _29 = _1;
+          _29 = copy _1;
           StorageLive(_30);
-          _30 = _3;
+          _30 = copy _3;
 -         _28 = unchecked_shr::<i32, u32>(move _29, move _30) -> [return: bb9, unwind unreachable];
 +         _28 = ShrUnchecked(move _29, move _30);
 +         goto -> bb9;
diff --git a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff
index 3c9694d0370..d0d38462f8d 100644
--- a/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.unchecked.LowerIntrinsics.panic-unwind.diff
@@ -64,9 +64,9 @@
       bb0: {
           StorageLive(_4);
           StorageLive(_5);
-          _5 = _1;
+          _5 = copy _1;
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
 -         _4 = unchecked_add::<i32>(move _5, move _6) -> [return: bb1, unwind unreachable];
 +         _4 = AddUnchecked(move _5, move _6);
 +         goto -> bb1;
@@ -77,9 +77,9 @@
           StorageDead(_5);
           StorageLive(_7);
           StorageLive(_8);
-          _8 = _1;
+          _8 = copy _1;
           StorageLive(_9);
-          _9 = _2;
+          _9 = copy _2;
 -         _7 = unchecked_sub::<i32>(move _8, move _9) -> [return: bb2, unwind unreachable];
 +         _7 = SubUnchecked(move _8, move _9);
 +         goto -> bb2;
@@ -90,9 +90,9 @@
           StorageDead(_8);
           StorageLive(_10);
           StorageLive(_11);
-          _11 = _1;
+          _11 = copy _1;
           StorageLive(_12);
-          _12 = _2;
+          _12 = copy _2;
 -         _10 = unchecked_mul::<i32>(move _11, move _12) -> [return: bb3, unwind unreachable];
 +         _10 = MulUnchecked(move _11, move _12);
 +         goto -> bb3;
@@ -103,9 +103,9 @@
           StorageDead(_11);
           StorageLive(_13);
           StorageLive(_14);
-          _14 = _1;
+          _14 = copy _1;
           StorageLive(_15);
-          _15 = _2;
+          _15 = copy _2;
 -         _13 = unchecked_div::<i32>(move _14, move _15) -> [return: bb4, unwind unreachable];
 +         _13 = Div(move _14, move _15);
 +         goto -> bb4;
@@ -116,9 +116,9 @@
           StorageDead(_14);
           StorageLive(_16);
           StorageLive(_17);
-          _17 = _1;
+          _17 = copy _1;
           StorageLive(_18);
-          _18 = _2;
+          _18 = copy _2;
 -         _16 = unchecked_rem::<i32>(move _17, move _18) -> [return: bb5, unwind unreachable];
 +         _16 = Rem(move _17, move _18);
 +         goto -> bb5;
@@ -129,9 +129,9 @@
           StorageDead(_17);
           StorageLive(_19);
           StorageLive(_20);
-          _20 = _1;
+          _20 = copy _1;
           StorageLive(_21);
-          _21 = _2;
+          _21 = copy _2;
 -         _19 = unchecked_shl::<i32, i32>(move _20, move _21) -> [return: bb6, unwind unreachable];
 +         _19 = ShlUnchecked(move _20, move _21);
 +         goto -> bb6;
@@ -142,9 +142,9 @@
           StorageDead(_20);
           StorageLive(_22);
           StorageLive(_23);
-          _23 = _1;
+          _23 = copy _1;
           StorageLive(_24);
-          _24 = _2;
+          _24 = copy _2;
 -         _22 = unchecked_shr::<i32, i32>(move _23, move _24) -> [return: bb7, unwind unreachable];
 +         _22 = ShrUnchecked(move _23, move _24);
 +         goto -> bb7;
@@ -155,9 +155,9 @@
           StorageDead(_23);
           StorageLive(_25);
           StorageLive(_26);
-          _26 = _1;
+          _26 = copy _1;
           StorageLive(_27);
-          _27 = _3;
+          _27 = copy _3;
 -         _25 = unchecked_shl::<i32, u32>(move _26, move _27) -> [return: bb8, unwind unreachable];
 +         _25 = ShlUnchecked(move _26, move _27);
 +         goto -> bb8;
@@ -168,9 +168,9 @@
           StorageDead(_26);
           StorageLive(_28);
           StorageLive(_29);
-          _29 = _1;
+          _29 = copy _1;
           StorageLive(_30);
-          _30 = _3;
+          _30 = copy _3;
 -         _28 = unchecked_shr::<i32, u32>(move _29, move _30) -> [return: bb9, unwind unreachable];
 +         _28 = ShrUnchecked(move _29, move _30);
 +         goto -> bb9;
diff --git a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff
index efbbeeeac73..a9bb5e7e3a4 100644
--- a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-abort.diff
@@ -27,9 +27,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = add_with_overflow::<i32>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = AddWithOverflow(move _4, move _5);
 +         goto -> bb1;
@@ -40,9 +40,9 @@
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
 -         _6 = sub_with_overflow::<i32>(move _7, move _8) -> [return: bb2, unwind unreachable];
 +         _6 = SubWithOverflow(move _7, move _8);
 +         goto -> bb2;
@@ -53,9 +53,9 @@
           StorageDead(_7);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
 -         _9 = mul_with_overflow::<i32>(move _10, move _11) -> [return: bb3, unwind unreachable];
 +         _9 = MulWithOverflow(move _10, move _11);
 +         goto -> bb3;
diff --git a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff
index efbbeeeac73..a9bb5e7e3a4 100644
--- a/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.with_overflow.LowerIntrinsics.panic-unwind.diff
@@ -27,9 +27,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = add_with_overflow::<i32>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = AddWithOverflow(move _4, move _5);
 +         goto -> bb1;
@@ -40,9 +40,9 @@
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
 -         _6 = sub_with_overflow::<i32>(move _7, move _8) -> [return: bb2, unwind unreachable];
 +         _6 = SubWithOverflow(move _7, move _8);
 +         goto -> bb2;
@@ -53,9 +53,9 @@
           StorageDead(_7);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
 -         _9 = mul_with_overflow::<i32>(move _10, move _11) -> [return: bb3, unwind unreachable];
 +         _9 = MulWithOverflow(move _10, move _11);
 +         goto -> bb3;
diff --git a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff
index 2acb193e054..552b1a9a32b 100644
--- a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff
+++ b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-abort.diff
@@ -27,9 +27,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = std::intrinsics::wrapping_add::<i32>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = Add(move _4, move _5);
 +         goto -> bb1;
@@ -40,9 +40,9 @@
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
 -         _6 = std::intrinsics::wrapping_sub::<i32>(move _7, move _8) -> [return: bb2, unwind unreachable];
 +         _6 = Sub(move _7, move _8);
 +         goto -> bb2;
@@ -53,9 +53,9 @@
           StorageDead(_7);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
 -         _9 = wrapping_mul::<i32>(move _10, move _11) -> [return: bb3, unwind unreachable];
 +         _9 = Mul(move _10, move _11);
 +         goto -> bb3;
diff --git a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff
index 2acb193e054..552b1a9a32b 100644
--- a/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff
+++ b/tests/mir-opt/lower_intrinsics.wrapping.LowerIntrinsics.panic-unwind.diff
@@ -27,9 +27,9 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
-          _5 = _2;
+          _5 = copy _2;
 -         _3 = std::intrinsics::wrapping_add::<i32>(move _4, move _5) -> [return: bb1, unwind unreachable];
 +         _3 = Add(move _4, move _5);
 +         goto -> bb1;
@@ -40,9 +40,9 @@
           StorageDead(_4);
           StorageLive(_6);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
 -         _6 = std::intrinsics::wrapping_sub::<i32>(move _7, move _8) -> [return: bb2, unwind unreachable];
 +         _6 = Sub(move _7, move _8);
 +         goto -> bb2;
@@ -53,9 +53,9 @@
           StorageDead(_7);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           StorageLive(_11);
-          _11 = _2;
+          _11 = copy _2;
 -         _9 = wrapping_mul::<i32>(move _10, move _11) -> [return: bb3, unwind unreachable];
 +         _9 = Mul(move _10, move _11);
 +         goto -> bb3;
diff --git a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff
index a212ee67881..20001f1248e 100644
--- a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff
+++ b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-abort.diff
@@ -16,7 +16,7 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
           StorageLive(_6);
           _6 = &(*_2);
@@ -35,14 +35,14 @@
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
           _8 = Len((*_2));
-          _9 = Lt(_7, _8);
-          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb3, unwind unreachable];
+          _9 = Lt(copy _7, copy _8);
+          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb3, unwind unreachable];
       }
   
       bb3: {
-          _0 = (*_2)[_7];
+          _0 = copy (*_2)[_7];
           StorageDead(_7);
           goto -> bb5;
       }
diff --git a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff
index 38ec8a5b0c7..ca8f92df5de 100644
--- a/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff
+++ b/tests/mir-opt/lower_slice_len.bound.LowerSliceLenCalls.panic-unwind.diff
@@ -16,7 +16,7 @@
       bb0: {
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
           StorageLive(_6);
           _6 = &(*_2);
@@ -35,14 +35,14 @@
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_7);
-          _7 = _1;
+          _7 = copy _1;
           _8 = Len((*_2));
-          _9 = Lt(_7, _8);
-          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, _7) -> [success: bb3, unwind continue];
+          _9 = Lt(copy _7, copy _8);
+          assert(move _9, "index out of bounds: the length is {} but the index is {}", move _8, copy _7) -> [success: bb3, unwind continue];
       }
   
       bb3: {
-          _0 = (*_2)[_7];
+          _0 = copy (*_2)[_7];
           StorageDead(_7);
           goto -> bb5;
       }
diff --git a/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff b/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff
index 3c4a84bc243..b3eb3e1f8b9 100644
--- a/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff
+++ b/tests/mir-opt/match_arm_scopes.complicated_match.panic-abort.SimplifyCfg-initial.after-ElaborateDrops.after.diff
@@ -32,22 +32,22 @@
   
       bb0: {
           PlaceMention(_2);
--         switchInt((_2.0: bool)) -> [0: bb2, otherwise: bb1];
-+         switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb1];
+-         switchInt(copy (_2.0: bool)) -> [0: bb2, otherwise: bb1];
++         switchInt(copy (_2.0: bool)) -> [0: bb6, otherwise: bb1];
       }
   
       bb1: {
--         switchInt((_2.1: bool)) -> [0: bb4, otherwise: bb3];
-+         switchInt((_2.1: bool)) -> [0: bb5, otherwise: bb2];
+-         switchInt(copy (_2.1: bool)) -> [0: bb4, otherwise: bb3];
++         switchInt(copy (_2.1: bool)) -> [0: bb5, otherwise: bb2];
       }
   
       bb2: {
 -         falseEdge -> [real: bb9, imaginary: bb1];
-+         switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb4];
++         switchInt(copy (_2.0: bool)) -> [0: bb3, otherwise: bb4];
       }
   
       bb3: {
--         switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5];
+-         switchInt(copy (_2.0: bool)) -> [0: bb6, otherwise: bb5];
 -     }
 - 
 -     bb4: {
@@ -60,7 +60,7 @@
 - 
 -     bb6: {
           StorageLive(_15);
-          _15 = (_2.1: bool);
+          _15 = copy (_2.1: bool);
           StorageLive(_16);
           _16 = move (_2.2: std::string::String);
 -         goto -> bb20;
@@ -70,7 +70,7 @@
 -     bb7: {
 +     bb4: {
           StorageLive(_15);
-          _15 = (_2.1: bool);
+          _15 = copy (_2.1: bool);
           StorageLive(_16);
           _16 = move (_2.2: std::string::String);
 -         goto -> bb20;
@@ -87,7 +87,7 @@
 -         _4 = &fake shallow (_2.1: bool);
           StorageLive(_12);
           StorageLive(_13);
-          _13 = _1;
+          _13 = copy _1;
 -         switchInt(move _13) -> [0: bb16, otherwise: bb15];
 +         switchInt(move _13) -> [0: bb13, otherwise: bb12];
       }
@@ -102,7 +102,7 @@
 -         _4 = &fake shallow (_2.1: bool);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
 -         switchInt(move _10) -> [0: bb12, otherwise: bb11];
 +         switchInt(move _10) -> [0: bb9, otherwise: bb8];
       }
@@ -125,7 +125,7 @@
   
 -     bb12: {
 +     bb9: {
-          _9 = (*_6);
+          _9 = copy (*_6);
 -         switchInt(move _9) -> [0: bb14, otherwise: bb13];
 +         switchInt(move _9) -> [0: bb11, otherwise: bb10];
       }
@@ -139,7 +139,7 @@
 -         FakeRead(ForGuardBinding, _6);
 -         FakeRead(ForGuardBinding, _8);
           StorageLive(_5);
-          _5 = (_2.1: bool);
+          _5 = copy (_2.1: bool);
           StorageLive(_7);
           _7 = move (_2.2: std::string::String);
 -         goto -> bb10;
@@ -167,7 +167,7 @@
   
 -     bb16: {
 +     bb13: {
-          _12 = (*_6);
+          _12 = copy (*_6);
 -         switchInt(move _12) -> [0: bb18, otherwise: bb17];
 +         switchInt(move _12) -> [0: bb15, otherwise: bb14];
       }
@@ -181,7 +181,7 @@
 -         FakeRead(ForGuardBinding, _6);
 -         FakeRead(ForGuardBinding, _8);
           StorageLive(_5);
-          _5 = (_2.0: bool);
+          _5 = copy (_2.0: bool);
           StorageLive(_7);
           _7 = move (_2.2: std::string::String);
 -         goto -> bb10;
diff --git a/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff b/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff
index 3c4a84bc243..b3eb3e1f8b9 100644
--- a/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff
+++ b/tests/mir-opt/match_arm_scopes.complicated_match.panic-unwind.SimplifyCfg-initial.after-ElaborateDrops.after.diff
@@ -32,22 +32,22 @@
   
       bb0: {
           PlaceMention(_2);
--         switchInt((_2.0: bool)) -> [0: bb2, otherwise: bb1];
-+         switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb1];
+-         switchInt(copy (_2.0: bool)) -> [0: bb2, otherwise: bb1];
++         switchInt(copy (_2.0: bool)) -> [0: bb6, otherwise: bb1];
       }
   
       bb1: {
--         switchInt((_2.1: bool)) -> [0: bb4, otherwise: bb3];
-+         switchInt((_2.1: bool)) -> [0: bb5, otherwise: bb2];
+-         switchInt(copy (_2.1: bool)) -> [0: bb4, otherwise: bb3];
++         switchInt(copy (_2.1: bool)) -> [0: bb5, otherwise: bb2];
       }
   
       bb2: {
 -         falseEdge -> [real: bb9, imaginary: bb1];
-+         switchInt((_2.0: bool)) -> [0: bb3, otherwise: bb4];
++         switchInt(copy (_2.0: bool)) -> [0: bb3, otherwise: bb4];
       }
   
       bb3: {
--         switchInt((_2.0: bool)) -> [0: bb6, otherwise: bb5];
+-         switchInt(copy (_2.0: bool)) -> [0: bb6, otherwise: bb5];
 -     }
 - 
 -     bb4: {
@@ -60,7 +60,7 @@
 - 
 -     bb6: {
           StorageLive(_15);
-          _15 = (_2.1: bool);
+          _15 = copy (_2.1: bool);
           StorageLive(_16);
           _16 = move (_2.2: std::string::String);
 -         goto -> bb20;
@@ -70,7 +70,7 @@
 -     bb7: {
 +     bb4: {
           StorageLive(_15);
-          _15 = (_2.1: bool);
+          _15 = copy (_2.1: bool);
           StorageLive(_16);
           _16 = move (_2.2: std::string::String);
 -         goto -> bb20;
@@ -87,7 +87,7 @@
 -         _4 = &fake shallow (_2.1: bool);
           StorageLive(_12);
           StorageLive(_13);
-          _13 = _1;
+          _13 = copy _1;
 -         switchInt(move _13) -> [0: bb16, otherwise: bb15];
 +         switchInt(move _13) -> [0: bb13, otherwise: bb12];
       }
@@ -102,7 +102,7 @@
 -         _4 = &fake shallow (_2.1: bool);
           StorageLive(_9);
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
 -         switchInt(move _10) -> [0: bb12, otherwise: bb11];
 +         switchInt(move _10) -> [0: bb9, otherwise: bb8];
       }
@@ -125,7 +125,7 @@
   
 -     bb12: {
 +     bb9: {
-          _9 = (*_6);
+          _9 = copy (*_6);
 -         switchInt(move _9) -> [0: bb14, otherwise: bb13];
 +         switchInt(move _9) -> [0: bb11, otherwise: bb10];
       }
@@ -139,7 +139,7 @@
 -         FakeRead(ForGuardBinding, _6);
 -         FakeRead(ForGuardBinding, _8);
           StorageLive(_5);
-          _5 = (_2.1: bool);
+          _5 = copy (_2.1: bool);
           StorageLive(_7);
           _7 = move (_2.2: std::string::String);
 -         goto -> bb10;
@@ -167,7 +167,7 @@
   
 -     bb16: {
 +     bb13: {
-          _12 = (*_6);
+          _12 = copy (*_6);
 -         switchInt(move _12) -> [0: bb18, otherwise: bb17];
 +         switchInt(move _12) -> [0: bb15, otherwise: bb14];
       }
@@ -181,7 +181,7 @@
 -         FakeRead(ForGuardBinding, _6);
 -         FakeRead(ForGuardBinding, _8);
           StorageLive(_5);
-          _5 = (_2.0: bool);
+          _5 = copy (_2.0: bool);
           StorageLive(_7);
           _7 = move (_2.2: std::string::String);
 -         goto -> bb10;
diff --git a/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff
index 65da13eec50..597d93926f1 100644
--- a/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.bar.MatchBranchSimplification.diff
@@ -33,16 +33,16 @@
           StorageLive(_4);
           StorageLive(_5);
           StorageLive(_6);
--         switchInt(_1) -> [7: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [7: bb2, otherwise: bb1];
 -     }
 - 
 -     bb1: {
 -         _2 = const true;
 -         _3 = const false;
 +         StorageLive(_11);
-+         _11 = _1;
-+         _2 = Ne(_11, const 7_i32);
-+         _3 = Eq(_11, const 7_i32);
++         _11 = copy _1;
++         _2 = Ne(copy _11, const 7_i32);
++         _3 = Eq(copy _11, const 7_i32);
           _4 = const false;
           _5 = const true;
           _6 = ();
@@ -62,13 +62,13 @@
 +         StorageDead(_11);
           StorageDead(_6);
           StorageLive(_7);
-          _7 = _2;
+          _7 = copy _2;
           StorageLive(_8);
-          _8 = _3;
+          _8 = copy _3;
           StorageLive(_9);
-          _9 = _4;
+          _9 = copy _4;
           StorageLive(_10);
-          _10 = _5;
+          _10 = copy _5;
           _0 = (move _7, move _8, move _9, move _10);
           StorageDead(_10);
           StorageDead(_9);
diff --git a/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff
index 052e2e12664..281f43b355d 100644
--- a/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.foo.MatchBranchSimplification.diff
@@ -14,7 +14,7 @@
 -         switchInt(move _3) -> [0: bb2, otherwise: bb1];
 +         StorageLive(_4);
 +         _4 = move _3;
-+         _2 = Eq(_4, const 0_isize);
++         _2 = Eq(copy _4, const 0_isize);
 +         StorageDead(_4);
 +         switchInt(move _2) -> [0: bb2, otherwise: bb1];
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff
index fc34ce7125e..cc7e863d135 100644
--- a/tests/mir-opt/matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_i128_u128.MatchBranchSimplification.diff
@@ -39,7 +39,7 @@
 -     bb6: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as u128 (IntToInt);
++         _0 = copy _3 as u128 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff
index 5a71bef9341..e9143ef1636 100644
--- a/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_nested_if.MatchBranchSimplification.diff
@@ -46,7 +46,7 @@
 -     bb4: {
 +         StorageLive(_7);
 +         _7 = move _6;
-+         _5 = Ne(_7, const false);
++         _5 = Ne(copy _7, const false);
 +         StorageDead(_7);
 +         StorageLive(_8);
 +         _8 = move _5;
@@ -66,7 +66,7 @@
 -     }
 - 
 -     bb7: {
-+         _4 = Ne(_8, const false);
++         _4 = Ne(copy _8, const false);
 +         StorageDead(_8);
 +         StorageLive(_9);
 +         _9 = move _4;
@@ -86,7 +86,7 @@
 -     }
 - 
 -     bb10: {
-+         _3 = Ne(_9, const false);
++         _3 = Ne(copy _9, const false);
 +         StorageDead(_9);
 +         StorageLive(_10);
 +         _10 = move _3;
@@ -104,10 +104,10 @@
 -     }
 - 
 -     bb12: {
-+         _1 = Ne(_10, const false);
++         _1 = Ne(copy _10, const false);
 +         StorageDead(_10);
           StorageDead(_2);
-          _0 = _1;
+          _0 = copy _1;
           StorageDead(_1);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_sext_i8_i16.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_sext_i8_i16.MatchBranchSimplification.diff
index 7f8c2ab8d37..dbd26adc20f 100644
--- a/tests/mir-opt/matches_reduce_branches.match_sext_i8_i16.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_sext_i8_i16.MatchBranchSimplification.diff
@@ -44,7 +44,7 @@
 -     bb7: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as i16 (IntToInt);
++         _0 = copy _3 as i16 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_sext_i8_u16.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_sext_i8_u16.MatchBranchSimplification.diff
index 86d0d0ba6cf..f273d538835 100644
--- a/tests/mir-opt/matches_reduce_branches.match_sext_i8_u16.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_sext_i8_u16.MatchBranchSimplification.diff
@@ -44,7 +44,7 @@
 -     bb7: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as u16 (IntToInt);
++         _0 = copy _3 as u16 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_trunc_i16_i8.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_trunc_i16_i8.MatchBranchSimplification.diff
index d3d27be2070..6170cf13c00 100644
--- a/tests/mir-opt/matches_reduce_branches.match_trunc_i16_i8.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_trunc_i16_i8.MatchBranchSimplification.diff
@@ -69,7 +69,7 @@
 -     bb12: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as i8 (IntToInt);
++         _0 = copy _3 as i8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_trunc_i16_u8.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_trunc_i16_u8.MatchBranchSimplification.diff
index 5fe899148eb..c18719ebb55 100644
--- a/tests/mir-opt/matches_reduce_branches.match_trunc_i16_u8.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_trunc_i16_u8.MatchBranchSimplification.diff
@@ -69,7 +69,7 @@
 -     bb12: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as u8 (IntToInt);
++         _0 = copy _3 as u8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_trunc_u16_i8.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_trunc_u16_i8.MatchBranchSimplification.diff
index 85f97a13cac..401049026f2 100644
--- a/tests/mir-opt/matches_reduce_branches.match_trunc_u16_i8.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_trunc_u16_i8.MatchBranchSimplification.diff
@@ -59,7 +59,7 @@
 -     bb10: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as i8 (IntToInt);
++         _0 = copy _3 as i8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_trunc_u16_u8.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_trunc_u16_u8.MatchBranchSimplification.diff
index 768d838eaa6..d4dafbd886f 100644
--- a/tests/mir-opt/matches_reduce_branches.match_trunc_u16_u8.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_trunc_u16_u8.MatchBranchSimplification.diff
@@ -59,7 +59,7 @@
 -     bb10: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as u8 (IntToInt);
++         _0 = copy _3 as u8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_u8_i8.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_u8_i8.MatchBranchSimplification.diff
index d63eed7c019..5ab6f5eac84 100644
--- a/tests/mir-opt/matches_reduce_branches.match_u8_i8.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_u8_i8.MatchBranchSimplification.diff
@@ -39,7 +39,7 @@
 -     bb6: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as i8 (IntToInt);
++         _0 = copy _3 as i8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_u8_i8_2.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_u8_i8_2.MatchBranchSimplification.diff
index 98dee1835a8..f14b3af9660 100644
--- a/tests/mir-opt/matches_reduce_branches.match_u8_i8_2.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_u8_i8_2.MatchBranchSimplification.diff
@@ -35,8 +35,8 @@
 -         _3 = const -1_i8;
 +         StorageLive(_8);
 +         _8 = move _5;
-+         _2 = _8 as i8 (IntToInt);
-+         _3 = _8 as i8 (IntToInt);
++         _2 = copy _8 as i8 (IntToInt);
++         _3 = copy _8 as i8 (IntToInt);
           _4 = ();
 -         goto -> bb6;
 -     }
@@ -66,9 +66,9 @@
 +         StorageDead(_8);
           StorageDead(_4);
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
           StorageLive(_7);
-          _7 = _3;
+          _7 = copy _3;
           _0 = (move _6, move _7);
           StorageDead(_7);
           StorageDead(_6);
diff --git a/tests/mir-opt/matches_reduce_branches.match_u8_i8_2_failed.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_u8_i8_2_failed.MatchBranchSimplification.diff
index 901dda58617..92e1a7dbc7d 100644
--- a/tests/mir-opt/matches_reduce_branches.match_u8_i8_2_failed.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_u8_i8_2_failed.MatchBranchSimplification.diff
@@ -60,9 +60,9 @@
       bb6: {
           StorageDead(_4);
           StorageLive(_6);
-          _6 = _2;
+          _6 = copy _2;
           StorageLive(_7);
-          _7 = _3;
+          _7 = copy _3;
           _0 = (move _6, move _7);
           StorageDead(_7);
           StorageDead(_6);
diff --git a/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_1.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_1.MatchBranchSimplification.diff
index 9ebf2cf27cb..a1d58424ecd 100644
--- a/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_1.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_1.MatchBranchSimplification.diff
@@ -7,7 +7,7 @@
   
       bb0: {
           _2 = discriminant(_1);
-          switchInt(_2) -> [0: bb1, 127: bb2, 128: bb3, 255: bb4, otherwise: bb5];
+          switchInt(copy _2) -> [0: bb1, 127: bb2, 128: bb3, 255: bb4, otherwise: bb5];
       }
   
       bb1: {
diff --git a/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_2.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_2.MatchBranchSimplification.diff
index 554856777eb..6c4ade1b6ca 100644
--- a/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_2.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_u8_i8_failed_len_2.MatchBranchSimplification.diff
@@ -7,7 +7,7 @@
   
       bb0: {
           _2 = discriminant(_1);
-          switchInt(_2) -> [0: bb1, 127: bb2, 128: bb3, 255: bb4, otherwise: bb5];
+          switchInt(copy _2) -> [0: bb1, 127: bb2, 128: bb3, 255: bb4, otherwise: bb5];
       }
   
       bb1: {
diff --git a/tests/mir-opt/matches_reduce_branches.match_zext_u8_i16.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_zext_u8_i16.MatchBranchSimplification.diff
index e00a604fe25..fdf83d91bbd 100644
--- a/tests/mir-opt/matches_reduce_branches.match_zext_u8_i16.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_zext_u8_i16.MatchBranchSimplification.diff
@@ -39,7 +39,7 @@
 -     bb6: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as i16 (IntToInt);
++         _0 = copy _3 as i16 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_reduce_branches.match_zext_u8_u16.MatchBranchSimplification.diff b/tests/mir-opt/matches_reduce_branches.match_zext_u8_u16.MatchBranchSimplification.diff
index befb9118907..a888d247275 100644
--- a/tests/mir-opt/matches_reduce_branches.match_zext_u8_u16.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_reduce_branches.match_zext_u8_u16.MatchBranchSimplification.diff
@@ -39,7 +39,7 @@
 -     bb6: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as u16 (IntToInt);
++         _0 = copy _3 as u16 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff b/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff
index 11a18f58e3a..99985b28382 100644
--- a/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_u8.exhaustive_match.MatchBranchSimplification.diff
@@ -29,7 +29,7 @@
 -     bb4: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as u8 (IntToInt);
++         _0 = copy _3 as u8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff b/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff
index 809badc41ba..0fc5032691f 100644
--- a/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff
+++ b/tests/mir-opt/matches_u8.exhaustive_match_i8.MatchBranchSimplification.diff
@@ -29,7 +29,7 @@
 -     bb4: {
 +         StorageLive(_3);
 +         _3 = move _2;
-+         _0 = _3 as i8 (IntToInt);
++         _0 = copy _3 as i8 (IntToInt);
 +         StorageDead(_3);
           return;
       }
diff --git a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir
index ad456600b0a..d09a422d408 100644
--- a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir
+++ b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.32bit.mir
@@ -50,15 +50,15 @@ fn main() -> () {
         StorageLive(_3);
         _3 = const ConstValue(Scalar(0x00000000): usize);
         _4 = Len(_1);
-        _5 = Lt(_3, _4);
-        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb7];
+        _5 = Lt(copy _3, copy _4);
+        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind: bb7];
     }
 
     bb1: {
         _2 = &'?2 _1[_3];
         FakeRead(ForLet(None), _2);
         StorageLive(_6);
-        _6 = _2;
+        _6 = copy _2;
         FakeRead(ForLet(None), _6);
         StorageLive(_7);
         _7 = const ConstValue(Scalar(0x01): bool);
@@ -68,7 +68,7 @@ fn main() -> () {
     bb2: {
         StorageLive(_8);
         StorageLive(_9);
-        _9 = (*_6);
+        _9 = copy (*_6);
         _8 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(move _9) -> [return: bb3, unwind: bb7];
     }
 
diff --git a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir
index a15d47cd66f..4abb5b0b93b 100644
--- a/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir
+++ b/tests/mir-opt/nll/region_subtyping_basic.main.nll.0.64bit.mir
@@ -50,15 +50,15 @@ fn main() -> () {
         StorageLive(_3);
         _3 = const ConstValue(Scalar(0x0000000000000000): usize);
         _4 = Len(_1);
-        _5 = Lt(_3, _4);
-        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, _3) -> [success: bb1, unwind: bb7];
+        _5 = Lt(copy _3, copy _4);
+        assert(move _5, "index out of bounds: the length is {} but the index is {}", move _4, copy _3) -> [success: bb1, unwind: bb7];
     }
 
     bb1: {
         _2 = &'?2 _1[_3];
         FakeRead(ForLet(None), _2);
         StorageLive(_6);
-        _6 = _2;
+        _6 = copy _2;
         FakeRead(ForLet(None), _6);
         StorageLive(_7);
         _7 = const ConstValue(Scalar(0x01): bool);
@@ -68,7 +68,7 @@ fn main() -> () {
     bb2: {
         StorageLive(_8);
         StorageLive(_9);
-        _9 = (*_6);
+        _9 = copy (*_6);
         _8 = ConstValue(ZeroSized: fn(usize) -> bool {use_x})(move _9) -> [return: bb3, unwind: bb7];
     }
 
diff --git a/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff b/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff
index 260b472daa9..d248c76f261 100644
--- a/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff
+++ b/tests/mir-opt/nrvo_miscompile_111005.wrong.RenameReturnPlace.diff
@@ -6,10 +6,10 @@
       let mut _2: char;
   
       bb0: {
--         _2 = _1;
--         _0 = _2;
+-         _2 = copy _1;
+-         _0 = copy _2;
 -         _2 = const 'b';
-+         _0 = _1;
++         _0 = copy _1;
 +         _0 = const 'b';
           return;
       }
diff --git a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff
index f7bc5559ab7..6dce3ec5303 100644
--- a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff
+++ b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-abort.diff
@@ -20,7 +20,7 @@
 +         _0 = [const 0_u8; 1024];
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
           StorageLive(_6);
 -         _6 = &mut _2;
@@ -34,7 +34,7 @@
           StorageDead(_4);
           StorageDead(_6);
           StorageDead(_3);
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff
index 3df8e567f1f..54cbe2871f1 100644
--- a/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff
+++ b/tests/mir-opt/nrvo_simple.nrvo.RenameReturnPlace.panic-unwind.diff
@@ -20,7 +20,7 @@
 +         _0 = [const 0_u8; 1024];
           StorageLive(_3);
           StorageLive(_4);
-          _4 = _1;
+          _4 = copy _1;
           StorageLive(_5);
           StorageLive(_6);
 -         _6 = &mut _2;
@@ -34,7 +34,7 @@
           StorageDead(_4);
           StorageDead(_6);
           StorageDead(_3);
--         _0 = _2;
+-         _0 = copy _2;
 -         StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/or_pattern.shortcut_second_or.SimplifyCfg-initial.after.mir b/tests/mir-opt/or_pattern.shortcut_second_or.SimplifyCfg-initial.after.mir
index 6c76a72b775..c5d7a6a1d99 100644
--- a/tests/mir-opt/or_pattern.shortcut_second_or.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/or_pattern.shortcut_second_or.SimplifyCfg-initial.after.mir
@@ -18,15 +18,15 @@ fn shortcut_second_or() -> () {
         _1 = (move _2, const 0_i32);
         StorageDead(_2);
         PlaceMention(_1);
-        switchInt(((_1.0: (i32, i32)).0: i32)) -> [0: bb2, otherwise: bb1];
+        switchInt(copy ((_1.0: (i32, i32)).0: i32)) -> [0: bb2, otherwise: bb1];
     }
 
     bb1: {
-        switchInt(((_1.0: (i32, i32)).1: i32)) -> [1: bb4, otherwise: bb3];
+        switchInt(copy ((_1.0: (i32, i32)).1: i32)) -> [1: bb4, otherwise: bb3];
     }
 
     bb2: {
-        switchInt((_1.1: i32)) -> [2: bb5, 3: bb6, otherwise: bb3];
+        switchInt(copy (_1.1: i32)) -> [2: bb5, 3: bb6, otherwise: bb3];
     }
 
     bb3: {
@@ -35,7 +35,7 @@ fn shortcut_second_or() -> () {
     }
 
     bb4: {
-        switchInt((_1.1: i32)) -> [2: bb7, 3: bb8, otherwise: bb3];
+        switchInt(copy (_1.1: i32)) -> [2: bb7, 3: bb8, otherwise: bb3];
     }
 
     bb5: {
@@ -56,33 +56,33 @@ fn shortcut_second_or() -> () {
 
     bb9: {
         StorageLive(_3);
-        _3 = (_1.0: (i32, i32));
+        _3 = copy (_1.0: (i32, i32));
         StorageLive(_4);
-        _4 = (_1.1: i32);
+        _4 = copy (_1.1: i32);
         goto -> bb13;
     }
 
     bb10: {
         StorageLive(_3);
-        _3 = (_1.0: (i32, i32));
+        _3 = copy (_1.0: (i32, i32));
         StorageLive(_4);
-        _4 = (_1.1: i32);
+        _4 = copy (_1.1: i32);
         goto -> bb13;
     }
 
     bb11: {
         StorageLive(_3);
-        _3 = (_1.0: (i32, i32));
+        _3 = copy (_1.0: (i32, i32));
         StorageLive(_4);
-        _4 = (_1.1: i32);
+        _4 = copy (_1.1: i32);
         goto -> bb13;
     }
 
     bb12: {
         StorageLive(_3);
-        _3 = (_1.0: (i32, i32));
+        _3 = copy (_1.0: (i32, i32));
         StorageLive(_4);
-        _4 = (_1.1: i32);
+        _4 = copy (_1.1: i32);
         goto -> bb13;
     }
 
diff --git a/tests/mir-opt/or_pattern.single_switchint.SimplifyCfg-initial.after.mir b/tests/mir-opt/or_pattern.single_switchint.SimplifyCfg-initial.after.mir
index 8b0ef7b29d7..889ff6f9f5e 100644
--- a/tests/mir-opt/or_pattern.single_switchint.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/or_pattern.single_switchint.SimplifyCfg-initial.after.mir
@@ -10,15 +10,15 @@ fn single_switchint() -> () {
         StorageLive(_2);
         _2 = (const 1_i32, const true);
         PlaceMention(_2);
-        switchInt((_2.0: i32)) -> [1: bb2, 2: bb4, otherwise: bb1];
+        switchInt(copy (_2.0: i32)) -> [1: bb2, 2: bb4, otherwise: bb1];
     }
 
     bb1: {
-        switchInt((_2.0: i32)) -> [3: bb8, 4: bb8, otherwise: bb7];
+        switchInt(copy (_2.0: i32)) -> [3: bb8, 4: bb8, otherwise: bb7];
     }
 
     bb2: {
-        switchInt((_2.1: bool)) -> [0: bb6, otherwise: bb3];
+        switchInt(copy (_2.1: bool)) -> [0: bb6, otherwise: bb3];
     }
 
     bb3: {
@@ -26,7 +26,7 @@ fn single_switchint() -> () {
     }
 
     bb4: {
-        switchInt((_2.1: bool)) -> [0: bb5, otherwise: bb6];
+        switchInt(copy (_2.1: bool)) -> [0: bb5, otherwise: bb6];
     }
 
     bb5: {
diff --git a/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir
index 99ca659c637..9b77bdb7cf6 100644
--- a/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/chained_comparison.bitand.PreCodegen.after.mir
@@ -29,17 +29,17 @@ fn bitand(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageLive(_9);
         StorageLive(_5);
         StorageLive(_3);
-        _3 = ((*_1).0: u32);
+        _3 = copy ((*_1).0: u32);
         StorageLive(_4);
-        _4 = ((*_2).0: u32);
+        _4 = copy ((*_2).0: u32);
         _5 = Eq(move _3, move _4);
         StorageDead(_4);
         StorageDead(_3);
         StorageLive(_8);
         StorageLive(_6);
-        _6 = ((*_1).1: u32);
+        _6 = copy ((*_1).1: u32);
         StorageLive(_7);
-        _7 = ((*_2).1: u32);
+        _7 = copy ((*_2).1: u32);
         _8 = Eq(move _6, move _7);
         StorageDead(_7);
         StorageDead(_6);
@@ -48,9 +48,9 @@ fn bitand(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_5);
         StorageLive(_12);
         StorageLive(_10);
-        _10 = ((*_1).2: u32);
+        _10 = copy ((*_1).2: u32);
         StorageLive(_11);
-        _11 = ((*_2).2: u32);
+        _11 = copy ((*_2).2: u32);
         _12 = Eq(move _10, move _11);
         StorageDead(_11);
         StorageDead(_10);
@@ -59,9 +59,9 @@ fn bitand(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_9);
         StorageLive(_16);
         StorageLive(_14);
-        _14 = ((*_1).3: u32);
+        _14 = copy ((*_1).3: u32);
         StorageLive(_15);
-        _15 = ((*_2).3: u32);
+        _15 = copy ((*_2).3: u32);
         _16 = Eq(move _14, move _15);
         StorageDead(_15);
         StorageDead(_14);
@@ -70,9 +70,9 @@ fn bitand(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_13);
         StorageLive(_20);
         StorageLive(_18);
-        _18 = ((*_1).4: u32);
+        _18 = copy ((*_1).4: u32);
         StorageLive(_19);
-        _19 = ((*_2).4: u32);
+        _19 = copy ((*_2).4: u32);
         _20 = Eq(move _18, move _19);
         StorageDead(_19);
         StorageDead(_18);
diff --git a/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir
index 838e30fa35e..9b3e28ab5b8 100644
--- a/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/chained_comparison.naive.PreCodegen.after.mir
@@ -22,9 +22,9 @@ fn naive(_1: &Blueprint, _2: &Blueprint) -> bool {
     bb0: {
         StorageLive(_5);
         StorageLive(_3);
-        _3 = ((*_1).0: u32);
+        _3 = copy ((*_1).0: u32);
         StorageLive(_4);
-        _4 = ((*_2).0: u32);
+        _4 = copy ((*_2).0: u32);
         _5 = Eq(move _3, move _4);
         switchInt(move _5) -> [0: bb1, otherwise: bb2];
     }
@@ -40,9 +40,9 @@ fn naive(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_3);
         StorageLive(_8);
         StorageLive(_6);
-        _6 = ((*_1).1: u32);
+        _6 = copy ((*_1).1: u32);
         StorageLive(_7);
-        _7 = ((*_2).1: u32);
+        _7 = copy ((*_2).1: u32);
         _8 = Eq(move _6, move _7);
         switchInt(move _8) -> [0: bb3, otherwise: bb4];
     }
@@ -58,9 +58,9 @@ fn naive(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_6);
         StorageLive(_11);
         StorageLive(_9);
-        _9 = ((*_1).2: u32);
+        _9 = copy ((*_1).2: u32);
         StorageLive(_10);
-        _10 = ((*_2).2: u32);
+        _10 = copy ((*_2).2: u32);
         _11 = Eq(move _9, move _10);
         switchInt(move _11) -> [0: bb5, otherwise: bb6];
     }
@@ -76,9 +76,9 @@ fn naive(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_9);
         StorageLive(_14);
         StorageLive(_12);
-        _12 = ((*_1).3: u32);
+        _12 = copy ((*_1).3: u32);
         StorageLive(_13);
-        _13 = ((*_2).3: u32);
+        _13 = copy ((*_2).3: u32);
         _14 = Eq(move _12, move _13);
         switchInt(move _14) -> [0: bb7, otherwise: bb9];
     }
@@ -98,9 +98,9 @@ fn naive(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_13);
         StorageDead(_12);
         StorageLive(_15);
-        _15 = ((*_1).4: u32);
+        _15 = copy ((*_1).4: u32);
         StorageLive(_16);
-        _16 = ((*_2).4: u32);
+        _16 = copy ((*_2).4: u32);
         _0 = Eq(move _15, move _16);
         StorageDead(_16);
         StorageDead(_15);
diff --git a/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir
index 8452fa12f31..72d52701d11 100644
--- a/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/chained_comparison.returning.PreCodegen.after.mir
@@ -23,9 +23,9 @@ fn returning(_1: &Blueprint, _2: &Blueprint) -> bool {
     bb0: {
         StorageLive(_5);
         StorageLive(_3);
-        _3 = ((*_1).0: u32);
+        _3 = copy ((*_1).0: u32);
         StorageLive(_4);
-        _4 = ((*_2).0: u32);
+        _4 = copy ((*_2).0: u32);
         _5 = Ne(move _3, move _4);
         switchInt(move _5) -> [0: bb1, otherwise: bb10];
     }
@@ -36,9 +36,9 @@ fn returning(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_5);
         StorageLive(_8);
         StorageLive(_6);
-        _6 = ((*_1).1: u32);
+        _6 = copy ((*_1).1: u32);
         StorageLive(_7);
-        _7 = ((*_2).1: u32);
+        _7 = copy ((*_2).1: u32);
         _8 = Ne(move _6, move _7);
         switchInt(move _8) -> [0: bb2, otherwise: bb9];
     }
@@ -49,9 +49,9 @@ fn returning(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_8);
         StorageLive(_11);
         StorageLive(_9);
-        _9 = ((*_1).2: u32);
+        _9 = copy ((*_1).2: u32);
         StorageLive(_10);
-        _10 = ((*_2).2: u32);
+        _10 = copy ((*_2).2: u32);
         _11 = Ne(move _9, move _10);
         switchInt(move _11) -> [0: bb3, otherwise: bb8];
     }
@@ -62,9 +62,9 @@ fn returning(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_11);
         StorageLive(_14);
         StorageLive(_12);
-        _12 = ((*_1).3: u32);
+        _12 = copy ((*_1).3: u32);
         StorageLive(_13);
-        _13 = ((*_2).3: u32);
+        _13 = copy ((*_2).3: u32);
         _14 = Ne(move _12, move _13);
         switchInt(move _14) -> [0: bb4, otherwise: bb7];
     }
@@ -75,9 +75,9 @@ fn returning(_1: &Blueprint, _2: &Blueprint) -> bool {
         StorageDead(_14);
         StorageLive(_17);
         StorageLive(_15);
-        _15 = ((*_1).4: u32);
+        _15 = copy ((*_1).4: u32);
         StorageLive(_16);
-        _16 = ((*_2).4: u32);
+        _16 = copy ((*_2).4: u32);
         _17 = Ne(move _15, move _16);
         switchInt(move _17) -> [0: bb5, otherwise: bb6];
     }
diff --git a/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-abort.mir
index 4edf0d2c47c..a9dd8886577 100644
--- a/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-abort.mir
@@ -17,7 +17,7 @@ fn checked_shl(_1: u32, _2: u32) -> Option<u32> {
 
     bb0: {
         StorageLive(_3);
-        _3 = Lt(_2, const core::num::<impl u32>::BITS);
+        _3 = Lt(copy _2, const core::num::<impl u32>::BITS);
         switchInt(move _3) -> [0: bb1, otherwise: bb2];
     }
 
@@ -28,7 +28,7 @@ fn checked_shl(_1: u32, _2: u32) -> Option<u32> {
 
     bb2: {
         StorageLive(_4);
-        _4 = ShlUnchecked(_1, _2);
+        _4 = ShlUnchecked(copy _1, copy _2);
         _0 = Option::<u32>::Some(move _4);
         StorageDead(_4);
         goto -> bb3;
diff --git a/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-unwind.mir
index 4edf0d2c47c..a9dd8886577 100644
--- a/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/checked_ops.checked_shl.PreCodegen.after.panic-unwind.mir
@@ -17,7 +17,7 @@ fn checked_shl(_1: u32, _2: u32) -> Option<u32> {
 
     bb0: {
         StorageLive(_3);
-        _3 = Lt(_2, const core::num::<impl u32>::BITS);
+        _3 = Lt(copy _2, const core::num::<impl u32>::BITS);
         switchInt(move _3) -> [0: bb1, otherwise: bb2];
     }
 
@@ -28,7 +28,7 @@ fn checked_shl(_1: u32, _2: u32) -> Option<u32> {
 
     bb2: {
         StorageLive(_4);
-        _4 = ShlUnchecked(_1, _2);
+        _4 = ShlUnchecked(copy _1, copy _2);
         _0 = Option::<u32>::Some(move _4);
         StorageDead(_4);
         goto -> bb3;
diff --git a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-abort.mir
index 69c11ebcacc..935e67fc3c0 100644
--- a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-abort.mir
@@ -32,18 +32,18 @@ fn step_forward(_1: u16, _2: usize) -> u16 {
     bb0: {
         StorageLive(_4);
         StorageLive(_3);
-        _3 = Gt(_2, const 65535_usize);
+        _3 = Gt(copy _2, const 65535_usize);
         switchInt(move _3) -> [0: bb1, otherwise: bb5];
     }
 
     bb1: {
-        _4 = _2 as u16 (IntToInt);
+        _4 = copy _2 as u16 (IntToInt);
         StorageDead(_3);
         StorageLive(_7);
         StorageLive(_6);
         StorageLive(_5);
-        _5 = AddWithOverflow(_1, _4);
-        _6 = (_5.1: bool);
+        _5 = AddWithOverflow(copy _1, copy _4);
+        _6 = copy (_5.1: bool);
         _7 = unlikely(move _6) -> [return: bb2, unwind unreachable];
     }
 
@@ -76,8 +76,8 @@ fn step_forward(_1: u16, _2: usize) -> u16 {
 
     bb7: {
         StorageLive(_8);
-        _8 = _2 as u16 (IntToInt);
-        _0 = Add(_1, _8);
+        _8 = copy _2 as u16 (IntToInt);
+        _0 = Add(copy _1, copy _8);
         StorageDead(_8);
         StorageDead(_4);
         return;
diff --git a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-unwind.mir
index e6ea6c51001..bf1ffd1ef32 100644
--- a/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/checked_ops.step_forward.PreCodegen.after.panic-unwind.mir
@@ -32,18 +32,18 @@ fn step_forward(_1: u16, _2: usize) -> u16 {
     bb0: {
         StorageLive(_4);
         StorageLive(_3);
-        _3 = Gt(_2, const 65535_usize);
+        _3 = Gt(copy _2, const 65535_usize);
         switchInt(move _3) -> [0: bb1, otherwise: bb5];
     }
 
     bb1: {
-        _4 = _2 as u16 (IntToInt);
+        _4 = copy _2 as u16 (IntToInt);
         StorageDead(_3);
         StorageLive(_7);
         StorageLive(_6);
         StorageLive(_5);
-        _5 = AddWithOverflow(_1, _4);
-        _6 = (_5.1: bool);
+        _5 = AddWithOverflow(copy _1, copy _4);
+        _6 = copy (_5.1: bool);
         _7 = unlikely(move _6) -> [return: bb2, unwind unreachable];
     }
 
@@ -76,8 +76,8 @@ fn step_forward(_1: u16, _2: usize) -> u16 {
 
     bb7: {
         StorageLive(_8);
-        _8 = _2 as u16 (IntToInt);
-        _0 = Add(_1, _8);
+        _8 = copy _2 as u16 (IntToInt);
+        _0 = Add(copy _1, copy _8);
         StorageDead(_8);
         StorageDead(_4);
         return;
diff --git a/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir
index 47f10451b05..5f4ec1de270 100644
--- a/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/derived_ord.{impl#0}-partial_cmp.PreCodegen.after.mir
@@ -22,13 +22,13 @@ fn <impl at $DIR/derived_ord.rs:6:10: 6:20>::partial_cmp(_1: &MultiField, _2: &M
 
     bb0: {
         StorageLive(_3);
-        _3 = ((*_1).0: char);
+        _3 = copy ((*_1).0: char);
         StorageLive(_4);
-        _4 = ((*_2).0: char);
+        _4 = copy ((*_2).0: char);
         _5 = Cmp(move _3, move _4);
         StorageDead(_4);
         StorageDead(_3);
-        _6 = Option::<std::cmp::Ordering>::Some(_5);
+        _6 = Option::<std::cmp::Ordering>::Some(copy _5);
         _7 = discriminant(_5);
         switchInt(move _7) -> [0: bb1, otherwise: bb2];
     }
@@ -36,9 +36,9 @@ fn <impl at $DIR/derived_ord.rs:6:10: 6:20>::partial_cmp(_1: &MultiField, _2: &M
     bb1: {
         StorageLive(_10);
         StorageLive(_8);
-        _8 = ((*_1).1: i16);
+        _8 = copy ((*_1).1: i16);
         StorageLive(_9);
-        _9 = ((*_2).1: i16);
+        _9 = copy ((*_2).1: i16);
         _10 = Cmp(move _8, move _9);
         StorageDead(_9);
         StorageDead(_8);
@@ -48,7 +48,7 @@ fn <impl at $DIR/derived_ord.rs:6:10: 6:20>::partial_cmp(_1: &MultiField, _2: &M
     }
 
     bb2: {
-        _0 = _6;
+        _0 = copy _6;
         goto -> bb3;
     }
 
diff --git a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-abort.diff
index 30c122ddea0..6cac8b109ee 100644
--- a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-abort.diff
@@ -73,12 +73,12 @@
           StorageLive(_6);
           StorageLive(_7);
           _9 = const main::promoted[0];
-          _7 = _9;
+          _7 = copy _9;
           StorageLive(_8);
--         _8 = _1;
+-         _8 = copy _1;
 -         _6 = std::alloc::Global::alloc_impl(move _7, move _8, const false) -> [return: bb4, unwind unreachable];
 +         _8 = const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x00000000): std::ptr::alignment::AlignmentEnum) }};
-+         _6 = std::alloc::Global::alloc_impl(_9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x00000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb4, unwind unreachable];
++         _6 = std::alloc::Global::alloc_impl(copy _9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x00000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb4, unwind unreachable];
       }
   
       bb4: {
@@ -93,7 +93,7 @@
       bb5: {
           StorageLive(_15);
           _16 = &_13;
-          _15 = _16 as &dyn std::fmt::Debug (PointerCoercion(Unsize));
+          _15 = copy _16 as &dyn std::fmt::Debug (PointerCoercion(Unsize));
           _14 = result::unwrap_failed(const "called `Result::unwrap()` on an `Err` value", move _15) -> unwind unreachable;
       }
   
@@ -104,14 +104,14 @@
           StorageDead(_6);
 -         StorageLive(_17);
 +         nop;
-          _17 = (_5.0: *const [u8]);
+          _17 = copy (_5.0: *const [u8]);
 -         _4 = move _17 as *mut [u8] (PtrToPtr);
 -         StorageDead(_17);
-+         _4 = _17 as *mut [u8] (PtrToPtr);
++         _4 = copy _17 as *mut [u8] (PtrToPtr);
 +         nop;
           StorageDead(_5);
 -         _3 = move _4 as *mut u8 (PtrToPtr);
-+         _3 = _17 as *mut u8 (PtrToPtr);
++         _3 = copy _17 as *mut u8 (PtrToPtr);
           StorageDead(_4);
           StorageDead(_3);
 -         StorageDead(_1);
diff --git a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-unwind.diff
index 93449462c3d..5fcece2280d 100644
--- a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.32bit.panic-unwind.diff
@@ -47,14 +47,14 @@
           StorageDead(_6);
 -         StorageLive(_12);
 +         nop;
-          _12 = (_5.0: *const [u8]);
+          _12 = copy (_5.0: *const [u8]);
 -         _4 = move _12 as *mut [u8] (PtrToPtr);
 -         StorageDead(_12);
-+         _4 = _12 as *mut [u8] (PtrToPtr);
++         _4 = copy _12 as *mut [u8] (PtrToPtr);
 +         nop;
           StorageDead(_5);
 -         _3 = move _4 as *mut u8 (PtrToPtr);
-+         _3 = _12 as *mut u8 (PtrToPtr);
++         _3 = copy _12 as *mut u8 (PtrToPtr);
           StorageDead(_4);
           StorageDead(_3);
 -         StorageDead(_1);
@@ -81,12 +81,12 @@
           StorageLive(_6);
           StorageLive(_7);
           _9 = const main::promoted[0];
-          _7 = _9;
+          _7 = copy _9;
           StorageLive(_8);
--         _8 = _1;
+-         _8 = copy _1;
 -         _6 = std::alloc::Global::alloc_impl(move _7, move _8, const false) -> [return: bb5, unwind continue];
 +         _8 = const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x00000000): std::ptr::alignment::AlignmentEnum) }};
-+         _6 = std::alloc::Global::alloc_impl(_9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x00000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb5, unwind continue];
++         _6 = std::alloc::Global::alloc_impl(copy _9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(4 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x00000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb5, unwind continue];
       }
   
       bb5: {
diff --git a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-abort.diff
index 44435956ec4..10fde25e317 100644
--- a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-abort.diff
@@ -73,12 +73,12 @@
           StorageLive(_6);
           StorageLive(_7);
           _9 = const main::promoted[0];
-          _7 = _9;
+          _7 = copy _9;
           StorageLive(_8);
--         _8 = _1;
+-         _8 = copy _1;
 -         _6 = std::alloc::Global::alloc_impl(move _7, move _8, const false) -> [return: bb4, unwind unreachable];
 +         _8 = const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(8 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x0000000000000000): std::ptr::alignment::AlignmentEnum) }};
-+         _6 = std::alloc::Global::alloc_impl(_9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(8 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x0000000000000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb4, unwind unreachable];
++         _6 = std::alloc::Global::alloc_impl(copy _9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(8 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x0000000000000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb4, unwind unreachable];
       }
   
       bb4: {
@@ -93,7 +93,7 @@
       bb5: {
           StorageLive(_15);
           _16 = &_13;
-          _15 = _16 as &dyn std::fmt::Debug (PointerCoercion(Unsize));
+          _15 = copy _16 as &dyn std::fmt::Debug (PointerCoercion(Unsize));
           _14 = result::unwrap_failed(const "called `Result::unwrap()` on an `Err` value", move _15) -> unwind unreachable;
       }
   
@@ -104,14 +104,14 @@
           StorageDead(_6);
 -         StorageLive(_17);
 +         nop;
-          _17 = (_5.0: *const [u8]);
+          _17 = copy (_5.0: *const [u8]);
 -         _4 = move _17 as *mut [u8] (PtrToPtr);
 -         StorageDead(_17);
-+         _4 = _17 as *mut [u8] (PtrToPtr);
++         _4 = copy _17 as *mut [u8] (PtrToPtr);
 +         nop;
           StorageDead(_5);
 -         _3 = move _4 as *mut u8 (PtrToPtr);
-+         _3 = _17 as *mut u8 (PtrToPtr);
++         _3 = copy _17 as *mut u8 (PtrToPtr);
           StorageDead(_4);
           StorageDead(_3);
 -         StorageDead(_1);
diff --git a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-unwind.diff
index c958480a9c7..0821ea272bf 100644
--- a/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/pre-codegen/issue_117368_print_invalid_constant.main.GVN.64bit.panic-unwind.diff
@@ -47,14 +47,14 @@
           StorageDead(_6);
 -         StorageLive(_12);
 +         nop;
-          _12 = (_5.0: *const [u8]);
+          _12 = copy (_5.0: *const [u8]);
 -         _4 = move _12 as *mut [u8] (PtrToPtr);
 -         StorageDead(_12);
-+         _4 = _12 as *mut [u8] (PtrToPtr);
++         _4 = copy _12 as *mut [u8] (PtrToPtr);
 +         nop;
           StorageDead(_5);
 -         _3 = move _4 as *mut u8 (PtrToPtr);
-+         _3 = _12 as *mut u8 (PtrToPtr);
++         _3 = copy _12 as *mut u8 (PtrToPtr);
           StorageDead(_4);
           StorageDead(_3);
 -         StorageDead(_1);
@@ -81,12 +81,12 @@
           StorageLive(_6);
           StorageLive(_7);
           _9 = const main::promoted[0];
-          _7 = _9;
+          _7 = copy _9;
           StorageLive(_8);
--         _8 = _1;
+-         _8 = copy _1;
 -         _6 = std::alloc::Global::alloc_impl(move _7, move _8, const false) -> [return: bb5, unwind continue];
 +         _8 = const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(8 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x0000000000000000): std::ptr::alignment::AlignmentEnum) }};
-+         _6 = std::alloc::Global::alloc_impl(_9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(8 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x0000000000000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb5, unwind continue];
++         _6 = std::alloc::Global::alloc_impl(copy _9, const Layout {{ size: Indirect { alloc_id: ALLOC0, offset: Size(8 bytes) }: usize, align: std::ptr::Alignment(Scalar(0x0000000000000000): std::ptr::alignment::AlignmentEnum) }}, const false) -> [return: bb5, unwind continue];
       }
   
       bb5: {
diff --git a/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir
index 8d182069adc..75e8cb1d861 100644
--- a/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/loops.filter_mapped.PreCodegen.after.mir
@@ -32,7 +32,7 @@ fn filter_mapped(_1: impl Iterator<Item = T>, _2: impl Fn(T) -> Option<U>) -> ()
 
     bb1: {
         StorageLive(_4);
-        _4 = _3;
+        _4 = copy _3;
         goto -> bb2;
     }
 
diff --git a/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir
index cdb7eea74fb..be69bbf10e7 100644
--- a/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/loops.int_range.PreCodegen.after.mir
@@ -41,9 +41,9 @@ fn int_range(_1: usize, _2: usize) -> () {
     }
 
     bb0: {
-        _3 = std::ops::Range::<usize> { start: _1, end: _2 };
+        _3 = std::ops::Range::<usize> { start: copy _1, end: copy _2 };
         StorageLive(_4);
-        _4 = _3;
+        _4 = copy _3;
         goto -> bb1;
     }
 
@@ -57,9 +57,9 @@ fn int_range(_1: usize, _2: usize) -> () {
         StorageLive(_7);
         _7 = &(_4.1: usize);
         StorageLive(_8);
-        _8 = (_4.0: usize);
+        _8 = copy (_4.0: usize);
         StorageLive(_9);
-        _9 = (_4.1: usize);
+        _9 = copy (_4.1: usize);
         _10 = Lt(move _8, move _9);
         StorageDead(_9);
         StorageDead(_8);
@@ -79,18 +79,18 @@ fn int_range(_1: usize, _2: usize) -> () {
     bb3: {
         StorageDead(_7);
         StorageDead(_6);
-        _11 = (_4.0: usize);
+        _11 = copy (_4.0: usize);
         StorageLive(_12);
-        _12 = <usize as Step>::forward_unchecked(_11, const 1_usize) -> [return: bb4, unwind continue];
+        _12 = <usize as Step>::forward_unchecked(copy _11, const 1_usize) -> [return: bb4, unwind continue];
     }
 
     bb4: {
         (_4.0: usize) = move _12;
         StorageDead(_12);
-        _13 = Option::<usize>::Some(_11);
+        _13 = Option::<usize>::Some(copy _11);
         StorageDead(_10);
         StorageDead(_11);
-        _14 = ((_13 as Some).0: usize);
+        _14 = copy ((_13 as Some).0: usize);
         _15 = opaque::<usize>(move _14) -> [return: bb5, unwind continue];
     }
 
diff --git a/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir
index 51d41e9ff05..4977f39ccef 100644
--- a/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/loops.mapped.PreCodegen.after.mir
@@ -43,7 +43,7 @@ fn mapped(_1: impl Iterator<Item = T>, _2: impl Fn(T) -> U) -> () {
 
     bb1: {
         StorageLive(_4);
-        _4 = _3;
+        _4 = copy _3;
         goto -> bb2;
     }
 
@@ -84,7 +84,7 @@ fn mapped(_1: impl Iterator<Item = T>, _2: impl Fn(T) -> U) -> () {
         _10 = move ((_7 as Some).0: T);
         StorageLive(_12);
         StorageLive(_11);
-        _11 = (_10,);
+        _11 = (copy _10,);
         _12 = <&mut impl Fn(T) -> U as FnOnce<(T,)>>::call_once(move _8, move _11) -> [return: bb7, unwind: bb10];
     }
 
diff --git a/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-abort.mir
index 3ca24e152a4..c10f3c42962 100644
--- a/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-abort.mir
@@ -9,8 +9,8 @@ fn manual_replace(_1: &mut u32, _2: u32) -> u32 {
     }
 
     bb0: {
-        _0 = (*_1);
-        (*_1) = _2;
+        _0 = copy (*_1);
+        (*_1) = copy _2;
         return;
     }
 }
diff --git a/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-unwind.mir
index 3ca24e152a4..c10f3c42962 100644
--- a/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/mem_replace.manual_replace.PreCodegen.after.panic-unwind.mir
@@ -9,8 +9,8 @@ fn manual_replace(_1: &mut u32, _2: u32) -> u32 {
     }
 
     bb0: {
-        _0 = (*_1);
-        (*_1) = _2;
+        _0 = copy (*_1);
+        (*_1) = copy _2;
         return;
     }
 }
diff --git a/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-abort.mir
index a3dc54f73c8..ed494f6e74c 100644
--- a/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-abort.mir
@@ -14,8 +14,8 @@ fn mem_replace(_1: &mut u32, _2: u32) -> u32 {
     }
 
     bb0: {
-        _0 = (*_1);
-        (*_1) = _2;
+        _0 = copy (*_1);
+        (*_1) = copy _2;
         return;
     }
 }
diff --git a/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-unwind.mir
index a3dc54f73c8..ed494f6e74c 100644
--- a/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/mem_replace.mem_replace.PreCodegen.after.panic-unwind.mir
@@ -14,8 +14,8 @@ fn mem_replace(_1: &mut u32, _2: u32) -> u32 {
     }
 
     bb0: {
-        _0 = (*_1);
-        (*_1) = _2;
+        _0 = copy (*_1);
+        (*_1) = copy _2;
         return;
     }
 }
diff --git a/tests/mir-opt/pre-codegen/no_inlined_clone.{impl#0}-clone.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/no_inlined_clone.{impl#0}-clone.PreCodegen.after.mir
index 71898daa1bf..62a9cd9131f 100644
--- a/tests/mir-opt/pre-codegen/no_inlined_clone.{impl#0}-clone.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/no_inlined_clone.{impl#0}-clone.PreCodegen.after.mir
@@ -7,7 +7,7 @@ fn <impl at $DIR/no_inlined_clone.rs:9:10: 9:15>::clone(_1: &Foo) -> Foo {
 
     bb0: {
         StorageLive(_2);
-        _2 = ((*_1).0: i32);
+        _2 = copy ((*_1).0: i32);
         _0 = Foo { a: move _2 };
         StorageDead(_2);
         return;
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff
index 45b8d89c0f4..6575610727b 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-abort.diff
@@ -39,21 +39,21 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
--         _7 = Lt(_5, _6);
--         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable];
+-         _7 = Lt(copy _5, copy _6);
+-         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind unreachable];
 +         _7 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
--         _3 = _4[_5];
+-         _3 = copy _4[_5];
 +         _3 = const 3_i32;
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
           StorageLive(_9);
           _9 = const 42_u32;
--         _8 = _9;
+-         _8 = copy _9;
 +         _8 = const 42_u32;
           StorageDead(_9);
           StorageDead(_8);
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff
index e6ee1e6f9a3..1a4ed5767fe 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.32bit.panic-unwind.diff
@@ -39,21 +39,21 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
--         _7 = Lt(_5, _6);
--         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind continue];
+-         _7 = Lt(copy _5, copy _6);
+-         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind continue];
 +         _7 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind continue];
       }
   
       bb2: {
--         _3 = _4[_5];
+-         _3 = copy _4[_5];
 +         _3 = const 3_i32;
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
           StorageLive(_9);
           _9 = const 42_u32;
--         _8 = _9;
+-         _8 = copy _9;
 +         _8 = const 42_u32;
           StorageDead(_9);
           StorageDead(_8);
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff
index 45b8d89c0f4..6575610727b 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-abort.diff
@@ -39,21 +39,21 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
--         _7 = Lt(_5, _6);
--         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable];
+-         _7 = Lt(copy _5, copy _6);
+-         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind unreachable];
 +         _7 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
--         _3 = _4[_5];
+-         _3 = copy _4[_5];
 +         _3 = const 3_i32;
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
           StorageLive(_9);
           _9 = const 42_u32;
--         _8 = _9;
+-         _8 = copy _9;
 +         _8 = const 42_u32;
           StorageDead(_9);
           StorageDead(_8);
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff
index e6ee1e6f9a3..1a4ed5767fe 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.GVN.64bit.panic-unwind.diff
@@ -39,21 +39,21 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
--         _7 = Lt(_5, _6);
--         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind continue];
+-         _7 = Lt(copy _5, copy _6);
+-         assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind continue];
 +         _7 = const true;
 +         assert(const true, "index out of bounds: the length is {} but the index is {}", const 6_usize, const 3_usize) -> [success: bb2, unwind continue];
       }
   
       bb2: {
--         _3 = _4[_5];
+-         _3 = copy _4[_5];
 +         _3 = const 3_i32;
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
           StorageLive(_9);
           _9 = const 42_u32;
--         _8 = _9;
+-         _8 = copy _9;
 +         _8 = const 42_u32;
           StorageDead(_9);
           StorageDead(_8);
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff
index c01a12eaa4f..e2420a341e0 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-abort.diff
@@ -38,18 +38,18 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
-          _7 = Lt(_5, _6);
-          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable];
+          _7 = Lt(copy _5, copy _6);
+          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
-          _3 = _4[_5];
+          _3 = copy _4[_5];
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
 -         StorageLive(_9);
 -         _9 = Point { x: const 12_u32, y: const 42_u32 };
--         _8 = (_9.1: u32);
+-         _8 = copy (_9.1: u32);
 -         StorageDead(_9);
 +         StorageLive(_10);
 +         StorageLive(_11);
@@ -57,7 +57,7 @@
 +         _10 = const 12_u32;
 +         _11 = const 42_u32;
 +         nop;
-+         _8 = _11;
++         _8 = copy _11;
 +         StorageDead(_10);
 +         StorageDead(_11);
 +         nop;
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff
index 64028e4437b..a2fb3b979e6 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.32bit.panic-unwind.diff
@@ -38,18 +38,18 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
-          _7 = Lt(_5, _6);
-          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind continue];
+          _7 = Lt(copy _5, copy _6);
+          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind continue];
       }
   
       bb2: {
-          _3 = _4[_5];
+          _3 = copy _4[_5];
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
 -         StorageLive(_9);
 -         _9 = Point { x: const 12_u32, y: const 42_u32 };
--         _8 = (_9.1: u32);
+-         _8 = copy (_9.1: u32);
 -         StorageDead(_9);
 +         StorageLive(_10);
 +         StorageLive(_11);
@@ -57,7 +57,7 @@
 +         _10 = const 12_u32;
 +         _11 = const 42_u32;
 +         nop;
-+         _8 = _11;
++         _8 = copy _11;
 +         StorageDead(_10);
 +         StorageDead(_11);
 +         nop;
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff
index c01a12eaa4f..e2420a341e0 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-abort.diff
@@ -38,18 +38,18 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
-          _7 = Lt(_5, _6);
-          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind unreachable];
+          _7 = Lt(copy _5, copy _6);
+          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind unreachable];
       }
   
       bb2: {
-          _3 = _4[_5];
+          _3 = copy _4[_5];
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
 -         StorageLive(_9);
 -         _9 = Point { x: const 12_u32, y: const 42_u32 };
--         _8 = (_9.1: u32);
+-         _8 = copy (_9.1: u32);
 -         StorageDead(_9);
 +         StorageLive(_10);
 +         StorageLive(_11);
@@ -57,7 +57,7 @@
 +         _10 = const 12_u32;
 +         _11 = const 42_u32;
 +         nop;
-+         _8 = _11;
++         _8 = copy _11;
 +         StorageDead(_10);
 +         StorageDead(_11);
 +         nop;
diff --git a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff
index 64028e4437b..a2fb3b979e6 100644
--- a/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff
+++ b/tests/mir-opt/pre-codegen/optimizes_into_variable.main.ScalarReplacementOfAggregates.64bit.panic-unwind.diff
@@ -38,18 +38,18 @@
           StorageLive(_5);
           _5 = const 3_usize;
           _6 = const 6_usize;
-          _7 = Lt(_5, _6);
-          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, _5) -> [success: bb2, unwind continue];
+          _7 = Lt(copy _5, copy _6);
+          assert(move _7, "index out of bounds: the length is {} but the index is {}", move _6, copy _5) -> [success: bb2, unwind continue];
       }
   
       bb2: {
-          _3 = _4[_5];
+          _3 = copy _4[_5];
           StorageDead(_5);
           StorageDead(_4);
           StorageLive(_8);
 -         StorageLive(_9);
 -         _9 = Point { x: const 12_u32, y: const 42_u32 };
--         _8 = (_9.1: u32);
+-         _8 = copy (_9.1: u32);
 -         StorageDead(_9);
 +         StorageLive(_10);
 +         StorageLive(_11);
@@ -57,7 +57,7 @@
 +         _10 = const 12_u32;
 +         _11 = const 42_u32;
 +         nop;
-+         _8 = _11;
++         _8 = copy _11;
 +         StorageDead(_10);
 +         StorageDead(_11);
 +         nop;
diff --git a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-abort.mir
index 2f6139712ff..5faa1e210cf 100644
--- a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-abort.mir
@@ -23,12 +23,12 @@ fn demo_byte_add_fat(_1: *const [u32], _2: usize) -> *const [u32] {
     bb0: {
         StorageLive(_4);
         StorageLive(_3);
-        _3 = _1 as *const u8 (PtrToPtr);
-        _4 = Offset(_3, _2);
+        _3 = copy _1 as *const u8 (PtrToPtr);
+        _4 = Offset(copy _3, copy _2);
         StorageDead(_3);
         StorageLive(_5);
-        _5 = PtrMetadata(_1);
-        _0 = *const [u32] from (_4, _5);
+        _5 = PtrMetadata(copy _1);
+        _0 = *const [u32] from (copy _4, copy _5);
         StorageDead(_5);
         StorageDead(_4);
         return;
diff --git a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-unwind.mir
index 2f6139712ff..5faa1e210cf 100644
--- a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_fat.PreCodegen.after.panic-unwind.mir
@@ -23,12 +23,12 @@ fn demo_byte_add_fat(_1: *const [u32], _2: usize) -> *const [u32] {
     bb0: {
         StorageLive(_4);
         StorageLive(_3);
-        _3 = _1 as *const u8 (PtrToPtr);
-        _4 = Offset(_3, _2);
+        _3 = copy _1 as *const u8 (PtrToPtr);
+        _4 = Offset(copy _3, copy _2);
         StorageDead(_3);
         StorageLive(_5);
-        _5 = PtrMetadata(_1);
-        _0 = *const [u32] from (_4, _5);
+        _5 = PtrMetadata(copy _1);
+        _0 = *const [u32] from (copy _4, copy _5);
         StorageDead(_5);
         StorageDead(_4);
         return;
diff --git a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-abort.mir
index 8d47e63eff2..9429785045a 100644
--- a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-abort.mir
@@ -22,10 +22,10 @@ fn demo_byte_add_thin(_1: *const u32, _2: usize) -> *const u32 {
     bb0: {
         StorageLive(_4);
         StorageLive(_3);
-        _3 = _1 as *const u8 (PtrToPtr);
-        _4 = Offset(_3, _2);
+        _3 = copy _1 as *const u8 (PtrToPtr);
+        _4 = Offset(copy _3, copy _2);
         StorageDead(_3);
-        _0 = _4 as *const u32 (PtrToPtr);
+        _0 = copy _4 as *const u32 (PtrToPtr);
         StorageDead(_4);
         return;
     }
diff --git a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-unwind.mir
index 8d47e63eff2..9429785045a 100644
--- a/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/ptr_offset.demo_byte_add_thin.PreCodegen.after.panic-unwind.mir
@@ -22,10 +22,10 @@ fn demo_byte_add_thin(_1: *const u32, _2: usize) -> *const u32 {
     bb0: {
         StorageLive(_4);
         StorageLive(_3);
-        _3 = _1 as *const u8 (PtrToPtr);
-        _4 = Offset(_3, _2);
+        _3 = copy _1 as *const u8 (PtrToPtr);
+        _4 = Offset(copy _3, copy _2);
         StorageDead(_3);
-        _0 = _4 as *const u32 (PtrToPtr);
+        _0 = copy _4 as *const u32 (PtrToPtr);
         StorageDead(_4);
         return;
     }
diff --git a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir
index 96b4962854d..5d33c33d73f 100644
--- a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-abort.mir
@@ -35,7 +35,7 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
 
     bb0: {
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         goto -> bb1;
     }
 
@@ -44,8 +44,8 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
         StorageLive(_7);
         StorageLive(_6);
         StorageLive(_5);
-        _5 = _4;
-        _6 = Lt(move _5, _2);
+        _5 = copy _4;
+        _6 = Lt(move _5, copy _2);
         StorageDead(_5);
         switchInt(move _6) -> [0: bb2, otherwise: bb4];
     }
@@ -63,22 +63,22 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
     }
 
     bb4: {
-        _7 = _4;
+        _7 = copy _4;
         StorageLive(_8);
-        _8 = <u32 as Step>::forward_unchecked(_7, const 1_usize) -> [return: bb5, unwind unreachable];
+        _8 = <u32 as Step>::forward_unchecked(copy _7, const 1_usize) -> [return: bb5, unwind unreachable];
     }
 
     bb5: {
         _4 = move _8;
         StorageDead(_8);
-        _9 = Option::<u32>::Some(_7);
+        _9 = Option::<u32>::Some(copy _7);
         StorageDead(_6);
         StorageDead(_7);
-        _10 = ((_9 as Some).0: u32);
+        _10 = copy ((_9 as Some).0: u32);
         StorageLive(_11);
         _11 = &_3;
         StorageLive(_12);
-        _12 = (_10,);
+        _12 = (copy _10,);
         _13 = <impl Fn(u32) as Fn<(u32,)>>::call(move _11, move _12) -> [return: bb6, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir
index ce8e2bd083e..ded30a15520 100644
--- a/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/range_iter.forward_loop.PreCodegen.after.panic-unwind.mir
@@ -35,7 +35,7 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
 
     bb0: {
         StorageLive(_4);
-        _4 = _1;
+        _4 = copy _1;
         goto -> bb1;
     }
 
@@ -44,8 +44,8 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
         StorageLive(_7);
         StorageLive(_6);
         StorageLive(_5);
-        _5 = _4;
-        _6 = Lt(move _5, _2);
+        _5 = copy _4;
+        _6 = Lt(move _5, copy _2);
         StorageDead(_5);
         switchInt(move _6) -> [0: bb2, otherwise: bb4];
     }
@@ -63,22 +63,22 @@ fn forward_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
     }
 
     bb4: {
-        _7 = _4;
+        _7 = copy _4;
         StorageLive(_8);
-        _8 = <u32 as Step>::forward_unchecked(_7, const 1_usize) -> [return: bb5, unwind: bb7];
+        _8 = <u32 as Step>::forward_unchecked(copy _7, const 1_usize) -> [return: bb5, unwind: bb7];
     }
 
     bb5: {
         _4 = move _8;
         StorageDead(_8);
-        _9 = Option::<u32>::Some(_7);
+        _9 = Option::<u32>::Some(copy _7);
         StorageDead(_6);
         StorageDead(_7);
-        _10 = ((_9 as Some).0: u32);
+        _10 = copy ((_9 as Some).0: u32);
         StorageLive(_11);
         _11 = &_3;
         StorageLive(_12);
-        _12 = (_10,);
+        _12 = (copy _10,);
         _13 = <impl Fn(u32) as Fn<(u32,)>>::call(move _11, move _12) -> [return: bb6, unwind: bb7];
     }
 
diff --git a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir
index a7fe52d8390..60c0b8afa53 100644
--- a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-abort.mir
@@ -28,9 +28,9 @@ fn inclusive_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
     }
 
     bb0: {
-        _4 = RangeInclusive::<u32> { start: _1, end: _2, exhausted: const false };
+        _4 = RangeInclusive::<u32> { start: copy _1, end: copy _2, exhausted: const false };
         StorageLive(_5);
-        _5 = _4;
+        _5 = copy _4;
         goto -> bb1;
     }
 
@@ -56,11 +56,11 @@ fn inclusive_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
     }
 
     bb5: {
-        _9 = ((_7 as Some).0: u32);
+        _9 = copy ((_7 as Some).0: u32);
         StorageLive(_10);
         _10 = &_3;
         StorageLive(_11);
-        _11 = (_9,);
+        _11 = (copy _9,);
         _12 = <impl Fn(u32) as Fn<(u32,)>>::call(move _10, move _11) -> [return: bb6, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir
index 3e2bbcd3c91..7145da58ce1 100644
--- a/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/range_iter.inclusive_loop.PreCodegen.after.panic-unwind.mir
@@ -28,9 +28,9 @@ fn inclusive_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
     }
 
     bb0: {
-        _4 = RangeInclusive::<u32> { start: _1, end: _2, exhausted: const false };
+        _4 = RangeInclusive::<u32> { start: copy _1, end: copy _2, exhausted: const false };
         StorageLive(_5);
-        _5 = _4;
+        _5 = copy _4;
         goto -> bb1;
     }
 
@@ -56,11 +56,11 @@ fn inclusive_loop(_1: u32, _2: u32, _3: impl Fn(u32)) -> () {
     }
 
     bb5: {
-        _9 = ((_7 as Some).0: u32);
+        _9 = copy ((_7 as Some).0: u32);
         StorageLive(_10);
         _10 = &_3;
         StorageLive(_11);
-        _11 = (_9,);
+        _11 = (copy _9,);
         _12 = <impl Fn(u32) as Fn<(u32,)>>::call(move _10, move _11) -> [return: bb6, unwind: bb8];
     }
 
diff --git a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir
index 2ac7e880ccb..2621ec67531 100644
--- a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-abort.mir
@@ -21,9 +21,9 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
         StorageLive(_5);
         StorageLive(_4);
         StorageLive(_2);
-        _2 = ((*_1).0: u32);
+        _2 = copy ((*_1).0: u32);
         StorageLive(_3);
-        _3 = ((*_1).1: u32);
+        _3 = copy ((*_1).1: u32);
         _4 = Lt(move _2, move _3);
         StorageDead(_3);
         StorageDead(_2);
@@ -36,15 +36,15 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
     }
 
     bb2: {
-        _5 = ((*_1).0: u32);
+        _5 = copy ((*_1).0: u32);
         StorageLive(_6);
-        _6 = <u32 as Step>::forward_unchecked(_5, const 1_usize) -> [return: bb3, unwind unreachable];
+        _6 = <u32 as Step>::forward_unchecked(copy _5, const 1_usize) -> [return: bb3, unwind unreachable];
     }
 
     bb3: {
         ((*_1).0: u32) = move _6;
         StorageDead(_6);
-        _0 = Option::<u32>::Some(_5);
+        _0 = Option::<u32>::Some(copy _5);
         goto -> bb4;
     }
 
diff --git a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir
index 60bf644fce6..338fb4b9523 100644
--- a/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/range_iter.range_iter_next.PreCodegen.after.panic-unwind.mir
@@ -21,9 +21,9 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
         StorageLive(_5);
         StorageLive(_4);
         StorageLive(_2);
-        _2 = ((*_1).0: u32);
+        _2 = copy ((*_1).0: u32);
         StorageLive(_3);
-        _3 = ((*_1).1: u32);
+        _3 = copy ((*_1).1: u32);
         _4 = Lt(move _2, move _3);
         StorageDead(_3);
         StorageDead(_2);
@@ -36,15 +36,15 @@ fn range_iter_next(_1: &mut std::ops::Range<u32>) -> Option<u32> {
     }
 
     bb2: {
-        _5 = ((*_1).0: u32);
+        _5 = copy ((*_1).0: u32);
         StorageLive(_6);
-        _6 = <u32 as Step>::forward_unchecked(_5, const 1_usize) -> [return: bb3, unwind continue];
+        _6 = <u32 as Step>::forward_unchecked(copy _5, const 1_usize) -> [return: bb3, unwind continue];
     }
 
     bb3: {
         ((*_1).0: u32) = move _6;
         StorageDead(_6);
-        _0 = Option::<u32>::Some(_5);
+        _0 = Option::<u32>::Some(copy _5);
         goto -> bb4;
     }
 
diff --git a/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir
index 030f9c3b93e..cbfc58194cc 100644
--- a/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/simple_option_map.ezmap.PreCodegen.after.mir
@@ -25,9 +25,9 @@ fn ezmap(_1: Option<i32>) -> Option<i32> {
     }
 
     bb2: {
-        _3 = ((_1 as Some).0: i32);
+        _3 = copy ((_1 as Some).0: i32);
         StorageLive(_4);
-        _4 = Add(_3, const 1_i32);
+        _4 = Add(copy _3, const 1_i32);
         _0 = Option::<i32>::Some(move _4);
         StorageDead(_4);
         goto -> bb3;
diff --git a/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir
index e382f744723..cbdd194afd3 100644
--- a/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/slice_filter.variant_a-{closure#0}.PreCodegen.after.mir
@@ -68,7 +68,7 @@ fn variant_a::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:7:25: 7:39}, _2
     }
 
     bb0: {
-        _3 = (*_2);
+        _3 = copy (*_2);
         _4 = &((*_3).0: usize);
         _5 = &((*_3).1: usize);
         _6 = &((*_3).2: usize);
@@ -78,11 +78,11 @@ fn variant_a::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:7:25: 7:39}, _2
         _8 = &_4;
         StorageLive(_10);
         StorageLive(_9);
-        _9 = _6;
+        _9 = copy _6;
         _10 = &_9;
-        _11 = ((*_3).0: usize);
-        _12 = ((*_3).2: usize);
-        _13 = Le(_11, _12);
+        _11 = copy ((*_3).0: usize);
+        _12 = copy ((*_3).2: usize);
+        _13 = Le(copy _11, copy _12);
         switchInt(move _13) -> [0: bb1, otherwise: bb2];
     }
 
@@ -102,12 +102,12 @@ fn variant_a::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:7:25: 7:39}, _2
         _14 = &_7;
         StorageLive(_16);
         StorageLive(_15);
-        _15 = _5;
+        _15 = copy _5;
         _16 = &_15;
         StorageLive(_17);
-        _17 = ((*_3).3: usize);
+        _17 = copy ((*_3).3: usize);
         StorageLive(_18);
-        _18 = ((*_3).1: usize);
+        _18 = copy ((*_3).1: usize);
         _19 = Le(move _17, move _18);
         StorageDead(_18);
         StorageDead(_17);
@@ -127,9 +127,9 @@ fn variant_a::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:7:25: 7:39}, _2
         _20 = &_6;
         StorageLive(_22);
         StorageLive(_21);
-        _21 = _4;
+        _21 = copy _4;
         _22 = &_21;
-        _23 = Le(_12, _11);
+        _23 = Le(copy _12, copy _11);
         switchInt(move _23) -> [0: bb5, otherwise: bb6];
     }
 
@@ -149,12 +149,12 @@ fn variant_a::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:7:25: 7:39}, _2
         _24 = &_5;
         StorageLive(_26);
         StorageLive(_25);
-        _25 = _7;
+        _25 = copy _7;
         _26 = &_25;
         StorageLive(_27);
-        _27 = ((*_3).1: usize);
+        _27 = copy ((*_3).1: usize);
         StorageLive(_28);
-        _28 = ((*_3).3: usize);
+        _28 = copy ((*_3).3: usize);
         _0 = Le(move _27, move _28);
         StorageDead(_28);
         StorageDead(_27);
diff --git a/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir
index d9e118d879a..bc7a31d5219 100644
--- a/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/slice_filter.variant_b-{closure#0}.PreCodegen.after.mir
@@ -18,25 +18,25 @@ fn variant_b::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:11:25: 11:41},
     }
 
     bb0: {
-        _3 = (*_2);
-        _4 = ((*_3).0: usize);
-        _5 = ((*_3).1: usize);
-        _6 = ((*_3).2: usize);
-        _7 = ((*_3).3: usize);
+        _3 = copy (*_2);
+        _4 = copy ((*_3).0: usize);
+        _5 = copy ((*_3).1: usize);
+        _6 = copy ((*_3).2: usize);
+        _7 = copy ((*_3).3: usize);
         StorageLive(_8);
-        _8 = Le(_4, _6);
+        _8 = Le(copy _4, copy _6);
         switchInt(move _8) -> [0: bb2, otherwise: bb1];
     }
 
     bb1: {
         StorageLive(_9);
-        _9 = Le(_7, _5);
+        _9 = Le(copy _7, copy _5);
         switchInt(move _9) -> [0: bb2, otherwise: bb6];
     }
 
     bb2: {
         StorageLive(_10);
-        _10 = Le(_6, _4);
+        _10 = Le(copy _6, copy _4);
         switchInt(move _10) -> [0: bb3, otherwise: bb4];
     }
 
@@ -46,7 +46,7 @@ fn variant_b::{closure#0}(_1: &mut {closure@$DIR/slice_filter.rs:11:25: 11:41},
     }
 
     bb4: {
-        _0 = Le(_5, _7);
+        _0 = Le(copy _5, copy _7);
         goto -> bb5;
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir
index 58e9b45a4a0..ec67193bc79 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-abort.mir
@@ -23,8 +23,8 @@ fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> {
         StorageLive(_8);
         StorageLive(_4);
         StorageLive(_3);
-        _3 = PtrMetadata(_1);
-        _4 = Lt(_2, move _3);
+        _3 = PtrMetadata(copy _1);
+        _4 = Lt(copy _2, move _3);
         switchInt(move _4) -> [0: bb1, otherwise: bb2];
     }
 
@@ -40,12 +40,12 @@ fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> {
         StorageLive(_5);
         _5 = &raw mut (*_1);
         StorageLive(_6);
-        _6 = _5 as *mut u32 (PtrToPtr);
-        _7 = Offset(_6, _2);
+        _6 = copy _5 as *mut u32 (PtrToPtr);
+        _7 = Offset(copy _6, copy _2);
         StorageDead(_6);
         StorageDead(_5);
         _8 = &mut (*_7);
-        _0 = Option::<&mut u32>::Some(_8);
+        _0 = Option::<&mut u32>::Some(copy _8);
         StorageDead(_7);
         goto -> bb3;
     }
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir
index 58e9b45a4a0..ec67193bc79 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_mut_usize.PreCodegen.after.panic-unwind.mir
@@ -23,8 +23,8 @@ fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> {
         StorageLive(_8);
         StorageLive(_4);
         StorageLive(_3);
-        _3 = PtrMetadata(_1);
-        _4 = Lt(_2, move _3);
+        _3 = PtrMetadata(copy _1);
+        _4 = Lt(copy _2, move _3);
         switchInt(move _4) -> [0: bb1, otherwise: bb2];
     }
 
@@ -40,12 +40,12 @@ fn slice_get_mut_usize(_1: &mut [u32], _2: usize) -> Option<&mut u32> {
         StorageLive(_5);
         _5 = &raw mut (*_1);
         StorageLive(_6);
-        _6 = _5 as *mut u32 (PtrToPtr);
-        _7 = Offset(_6, _2);
+        _6 = copy _5 as *mut u32 (PtrToPtr);
+        _7 = Offset(copy _6, copy _2);
         StorageDead(_6);
         StorageDead(_5);
         _8 = &mut (*_7);
-        _0 = Option::<&mut u32>::Some(_8);
+        _0 = Option::<&mut u32>::Some(copy _8);
         StorageDead(_7);
         goto -> bb3;
     }
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir
index ee80726a675..220e881f866 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-abort.mir
@@ -40,19 +40,19 @@ fn slice_get_unchecked_mut_range(_1: &mut [u32], _2: std::ops::Range<usize>) ->
         _5 = &raw mut (*_1);
         StorageLive(_8);
         StorageLive(_6);
-        _6 = PtrMetadata(_1);
-        _7 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked_mut::precondition_check(_3, _4, move _6) -> [return: bb1, unwind unreachable];
+        _6 = PtrMetadata(copy _1);
+        _7 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked_mut::precondition_check(copy _3, copy _4, move _6) -> [return: bb1, unwind unreachable];
     }
 
     bb1: {
         StorageDead(_6);
-        _8 = SubUnchecked(_4, _3);
+        _8 = SubUnchecked(copy _4, copy _3);
         StorageLive(_10);
         StorageLive(_9);
-        _9 = _5 as *mut u32 (PtrToPtr);
-        _10 = Offset(_9, _3);
+        _9 = copy _5 as *mut u32 (PtrToPtr);
+        _10 = Offset(copy _9, copy _3);
         StorageDead(_9);
-        _11 = *mut [u32] from (_10, _8);
+        _11 = *mut [u32] from (copy _10, copy _8);
         StorageDead(_10);
         StorageDead(_8);
         StorageDead(_5);
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir
index ee80726a675..220e881f866 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_get_unchecked_mut_range.PreCodegen.after.panic-unwind.mir
@@ -40,19 +40,19 @@ fn slice_get_unchecked_mut_range(_1: &mut [u32], _2: std::ops::Range<usize>) ->
         _5 = &raw mut (*_1);
         StorageLive(_8);
         StorageLive(_6);
-        _6 = PtrMetadata(_1);
-        _7 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked_mut::precondition_check(_3, _4, move _6) -> [return: bb1, unwind unreachable];
+        _6 = PtrMetadata(copy _1);
+        _7 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked_mut::precondition_check(copy _3, copy _4, move _6) -> [return: bb1, unwind unreachable];
     }
 
     bb1: {
         StorageDead(_6);
-        _8 = SubUnchecked(_4, _3);
+        _8 = SubUnchecked(copy _4, copy _3);
         StorageLive(_10);
         StorageLive(_9);
-        _9 = _5 as *mut u32 (PtrToPtr);
-        _10 = Offset(_9, _3);
+        _9 = copy _5 as *mut u32 (PtrToPtr);
+        _10 = Offset(copy _9, copy _3);
         StorageDead(_9);
-        _11 = *mut [u32] from (_10, _8);
+        _11 = *mut [u32] from (copy _10, copy _8);
         StorageDead(_10);
         StorageDead(_8);
         StorageDead(_5);
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir
index 210f9d6a124..cc1034229fc 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-abort.mir
@@ -9,12 +9,12 @@ fn slice_index_usize(_1: &[u32], _2: usize) -> u32 {
 
     bb0: {
         _3 = Len((*_1));
-        _4 = Lt(_2, _3);
-        assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind unreachable];
+        _4 = Lt(copy _2, copy _3);
+        assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, copy _2) -> [success: bb1, unwind unreachable];
     }
 
     bb1: {
-        _0 = (*_1)[_2];
+        _0 = copy (*_1)[_2];
         return;
     }
 }
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir
index d576520a8d5..358226fb529 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_index_usize.PreCodegen.after.panic-unwind.mir
@@ -9,12 +9,12 @@ fn slice_index_usize(_1: &[u32], _2: usize) -> u32 {
 
     bb0: {
         _3 = Len((*_1));
-        _4 = Lt(_2, _3);
-        assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, _2) -> [success: bb1, unwind continue];
+        _4 = Lt(copy _2, copy _3);
+        assert(move _4, "index out of bounds: the length is {} but the index is {}", move _3, copy _2) -> [success: bb1, unwind continue];
     }
 
     bb1: {
-        _0 = (*_1)[_2];
+        _0 = copy (*_1)[_2];
         return;
     }
 }
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir
index c61bebe6cc3..1e0df94b67f 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-abort.mir
@@ -35,19 +35,19 @@ fn slice_ptr_get_unchecked_range(_1: *const [u32], _2: std::ops::Range<usize>) -
         _4 = move (_2.1: usize);
         StorageLive(_7);
         StorageLive(_5);
-        _5 = PtrMetadata(_1);
-        _6 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked::precondition_check(_3, _4, move _5) -> [return: bb1, unwind unreachable];
+        _5 = PtrMetadata(copy _1);
+        _6 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked::precondition_check(copy _3, copy _4, move _5) -> [return: bb1, unwind unreachable];
     }
 
     bb1: {
         StorageDead(_5);
-        _7 = SubUnchecked(_4, _3);
+        _7 = SubUnchecked(copy _4, copy _3);
         StorageLive(_9);
         StorageLive(_8);
-        _8 = _1 as *const u32 (PtrToPtr);
-        _9 = Offset(_8, _3);
+        _8 = copy _1 as *const u32 (PtrToPtr);
+        _9 = Offset(copy _8, copy _3);
         StorageDead(_8);
-        _0 = *const [u32] from (_9, _7);
+        _0 = *const [u32] from (copy _9, copy _7);
         StorageDead(_9);
         StorageDead(_7);
         return;
diff --git a/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir
index c61bebe6cc3..1e0df94b67f 100644
--- a/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_index.slice_ptr_get_unchecked_range.PreCodegen.after.panic-unwind.mir
@@ -35,19 +35,19 @@ fn slice_ptr_get_unchecked_range(_1: *const [u32], _2: std::ops::Range<usize>) -
         _4 = move (_2.1: usize);
         StorageLive(_7);
         StorageLive(_5);
-        _5 = PtrMetadata(_1);
-        _6 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked::precondition_check(_3, _4, move _5) -> [return: bb1, unwind unreachable];
+        _5 = PtrMetadata(copy _1);
+        _6 = <std::ops::Range<usize> as SliceIndex<[T]>>::get_unchecked::precondition_check(copy _3, copy _4, move _5) -> [return: bb1, unwind unreachable];
     }
 
     bb1: {
         StorageDead(_5);
-        _7 = SubUnchecked(_4, _3);
+        _7 = SubUnchecked(copy _4, copy _3);
         StorageLive(_9);
         StorageLive(_8);
-        _8 = _1 as *const u32 (PtrToPtr);
-        _9 = Offset(_8, _3);
+        _8 = copy _1 as *const u32 (PtrToPtr);
+        _9 = Offset(copy _8, copy _3);
         StorageDead(_8);
-        _0 = *const [u32] from (_9, _7);
+        _0 = *const [u32] from (copy _9, copy _7);
         StorageDead(_9);
         StorageDead(_7);
         return;
diff --git a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir
index 953e7550479..3aa483ed1ae 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-abort.mir
@@ -31,7 +31,7 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
             }
             scope 19 {
                 scope 20 {
-                    scope 26 (inlined <Option<(usize, &T)> as FromResidual>::from_residual) {
+                    scope 26 (inlined <Option<(usize, &T)> as FromResidual<Option<Infallible>>>::from_residual) {
                     }
                 }
             }
@@ -90,10 +90,10 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         StorageLive(_6);
         StorageLive(_4);
         StorageLive(_5);
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         _4 = &raw const (*_1);
-        _5 = _4 as *const T (PtrToPtr);
-        _6 = NonNull::<T> { pointer: _5 };
+        _5 = copy _4 as *const T (PtrToPtr);
+        _6 = NonNull::<T> { pointer: copy _5 };
         StorageLive(_9);
         switchInt(const <T as std::mem::SizedTypeProperties>::IS_ZST) -> [0: bb1, otherwise: bb2];
     }
@@ -101,8 +101,8 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     bb1: {
         StorageLive(_8);
         StorageLive(_7);
-        _7 = _4 as *mut T (PtrToPtr);
-        _8 = Offset(_7, _3);
+        _7 = copy _4 as *mut T (PtrToPtr);
+        _8 = Offset(copy _7, copy _3);
         StorageDead(_7);
         _9 = move _8 as *const T (PtrToPtr);
         StorageDead(_8);
@@ -110,24 +110,24 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb2: {
-        _9 = _3 as *const T (Transmute);
+        _9 = copy _3 as *const T (Transmute);
         goto -> bb3;
     }
 
     bb3: {
         StorageLive(_10);
-        _10 = _9;
-        _11 = std::slice::Iter::<'_, T> { ptr: _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
+        _10 = copy _9;
+        _11 = std::slice::Iter::<'_, T> { ptr: copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
         StorageDead(_10);
         StorageDead(_9);
         StorageDead(_5);
         StorageDead(_4);
         StorageDead(_6);
         StorageDead(_3);
-        _12 = Enumerate::<std::slice::Iter<'_, T>> { iter: _11, count: const 0_usize };
+        _12 = Enumerate::<std::slice::Iter<'_, T>> { iter: copy _11, count: const 0_usize };
         StorageDead(_11);
         StorageLive(_13);
-        _13 = _12;
+        _13 = copy _12;
         goto -> bb4;
     }
 
@@ -166,25 +166,25 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         _17 = move ((_15 as Some).0: &T);
         StorageDead(_16);
         StorageDead(_15);
-        _18 = (_13.1: usize);
-        _19 = AddWithOverflow((_13.1: usize), const 1_usize);
-        assert(!move (_19.1: bool), "attempt to compute `{} + {}`, which would overflow", (_13.1: usize), const 1_usize) -> [success: bb9, unwind unreachable];
+        _18 = copy (_13.1: usize);
+        _19 = AddWithOverflow(copy (_13.1: usize), const 1_usize);
+        assert(!move (_19.1: bool), "attempt to compute `{} + {}`, which would overflow", copy (_13.1: usize), const 1_usize) -> [success: bb9, unwind unreachable];
     }
 
     bb9: {
         (_13.1: usize) = move (_19.0: usize);
         StorageLive(_20);
-        _20 = (_18, _17);
+        _20 = (copy _18, copy _17);
         _21 = Option::<(usize, &T)>::Some(move _20);
         StorageDead(_20);
         StorageDead(_19);
         StorageDead(_18);
-        _22 = (((_21 as Some).0: (usize, &T)).0: usize);
-        _23 = (((_21 as Some).0: (usize, &T)).1: &T);
+        _22 = copy (((_21 as Some).0: (usize, &T)).0: usize);
+        _23 = copy (((_21 as Some).0: (usize, &T)).1: &T);
         StorageLive(_24);
         _24 = &_2;
         StorageLive(_25);
-        _25 = (_22, _23);
+        _25 = (copy _22, copy _23);
         _26 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _24, move _25) -> [return: bb10, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir
index 4c766c6497a..4cc0aa0ed78 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.enumerated_loop.PreCodegen.after.panic-unwind.mir
@@ -65,10 +65,10 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         StorageLive(_6);
         StorageLive(_4);
         StorageLive(_5);
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         _4 = &raw const (*_1);
-        _5 = _4 as *const T (PtrToPtr);
-        _6 = NonNull::<T> { pointer: _5 };
+        _5 = copy _4 as *const T (PtrToPtr);
+        _6 = NonNull::<T> { pointer: copy _5 };
         StorageLive(_9);
         switchInt(const <T as std::mem::SizedTypeProperties>::IS_ZST) -> [0: bb1, otherwise: bb2];
     }
@@ -76,8 +76,8 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     bb1: {
         StorageLive(_8);
         StorageLive(_7);
-        _7 = _4 as *mut T (PtrToPtr);
-        _8 = Offset(_7, _3);
+        _7 = copy _4 as *mut T (PtrToPtr);
+        _8 = Offset(copy _7, copy _3);
         StorageDead(_7);
         _9 = move _8 as *const T (PtrToPtr);
         StorageDead(_8);
@@ -85,24 +85,24 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb2: {
-        _9 = _3 as *const T (Transmute);
+        _9 = copy _3 as *const T (Transmute);
         goto -> bb3;
     }
 
     bb3: {
         StorageLive(_10);
-        _10 = _9;
-        _11 = std::slice::Iter::<'_, T> { ptr: _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
+        _10 = copy _9;
+        _11 = std::slice::Iter::<'_, T> { ptr: copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
         StorageDead(_10);
         StorageDead(_9);
         StorageDead(_5);
         StorageDead(_4);
         StorageDead(_6);
         StorageDead(_3);
-        _12 = Enumerate::<std::slice::Iter<'_, T>> { iter: _11, count: const 0_usize };
+        _12 = Enumerate::<std::slice::Iter<'_, T>> { iter: copy _11, count: const 0_usize };
         StorageDead(_11);
         StorageLive(_13);
-        _13 = _12;
+        _13 = copy _12;
         goto -> bb4;
     }
 
@@ -128,12 +128,12 @@ fn enumerated_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb8: {
-        _17 = (((_15 as Some).0: (usize, &T)).0: usize);
-        _18 = (((_15 as Some).0: (usize, &T)).1: &T);
+        _17 = copy (((_15 as Some).0: (usize, &T)).0: usize);
+        _18 = copy (((_15 as Some).0: (usize, &T)).1: &T);
         StorageLive(_19);
         _19 = &_2;
         StorageLive(_20);
-        _20 = (_17, _18);
+        _20 = (copy _17, copy _18);
         _21 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _19, move _20) -> [return: bb9, unwind: bb11];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir
index 03de9fd938e..507afa63c68 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-abort.mir
@@ -57,10 +57,10 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
         StorageLive(_6);
         StorageLive(_4);
         StorageLive(_5);
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         _4 = &raw const (*_1);
-        _5 = _4 as *const T (PtrToPtr);
-        _6 = NonNull::<T> { pointer: _5 };
+        _5 = copy _4 as *const T (PtrToPtr);
+        _6 = NonNull::<T> { pointer: copy _5 };
         StorageLive(_9);
         switchInt(const <T as std::mem::SizedTypeProperties>::IS_ZST) -> [0: bb1, otherwise: bb2];
     }
@@ -68,8 +68,8 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     bb1: {
         StorageLive(_8);
         StorageLive(_7);
-        _7 = _4 as *mut T (PtrToPtr);
-        _8 = Offset(_7, _3);
+        _7 = copy _4 as *mut T (PtrToPtr);
+        _8 = Offset(copy _7, copy _3);
         StorageDead(_7);
         _9 = move _8 as *const T (PtrToPtr);
         StorageDead(_8);
@@ -77,14 +77,14 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb2: {
-        _9 = _3 as *const T (Transmute);
+        _9 = copy _3 as *const T (Transmute);
         goto -> bb3;
     }
 
     bb3: {
         StorageLive(_10);
-        _10 = _9;
-        _11 = std::slice::Iter::<'_, T> { ptr: _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
+        _10 = copy _9;
+        _11 = std::slice::Iter::<'_, T> { ptr: copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
         StorageDead(_10);
         StorageDead(_9);
         StorageDead(_5);
@@ -92,7 +92,7 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
         StorageDead(_6);
         StorageDead(_3);
         StorageLive(_12);
-        _12 = _11;
+        _12 = copy _11;
         goto -> bb4;
     }
 
@@ -118,11 +118,11 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb8: {
-        _16 = ((_14 as Some).0: &T);
+        _16 = copy ((_14 as Some).0: &T);
         StorageLive(_17);
         _17 = &_2;
         StorageLive(_18);
-        _18 = (_16,);
+        _18 = (copy _16,);
         _19 = <impl Fn(&T) as Fn<(&T,)>>::call(move _17, move _18) -> [return: bb9, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir
index c7c722274f2..a25f12edc28 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.forward_loop.PreCodegen.after.panic-unwind.mir
@@ -57,10 +57,10 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
         StorageLive(_6);
         StorageLive(_4);
         StorageLive(_5);
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         _4 = &raw const (*_1);
-        _5 = _4 as *const T (PtrToPtr);
-        _6 = NonNull::<T> { pointer: _5 };
+        _5 = copy _4 as *const T (PtrToPtr);
+        _6 = NonNull::<T> { pointer: copy _5 };
         StorageLive(_9);
         switchInt(const <T as std::mem::SizedTypeProperties>::IS_ZST) -> [0: bb1, otherwise: bb2];
     }
@@ -68,8 +68,8 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     bb1: {
         StorageLive(_8);
         StorageLive(_7);
-        _7 = _4 as *mut T (PtrToPtr);
-        _8 = Offset(_7, _3);
+        _7 = copy _4 as *mut T (PtrToPtr);
+        _8 = Offset(copy _7, copy _3);
         StorageDead(_7);
         _9 = move _8 as *const T (PtrToPtr);
         StorageDead(_8);
@@ -77,14 +77,14 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb2: {
-        _9 = _3 as *const T (Transmute);
+        _9 = copy _3 as *const T (Transmute);
         goto -> bb3;
     }
 
     bb3: {
         StorageLive(_10);
-        _10 = _9;
-        _11 = std::slice::Iter::<'_, T> { ptr: _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
+        _10 = copy _9;
+        _11 = std::slice::Iter::<'_, T> { ptr: copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
         StorageDead(_10);
         StorageDead(_9);
         StorageDead(_5);
@@ -92,7 +92,7 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
         StorageDead(_6);
         StorageDead(_3);
         StorageLive(_12);
-        _12 = _11;
+        _12 = copy _11;
         goto -> bb4;
     }
 
@@ -118,11 +118,11 @@ fn forward_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb8: {
-        _16 = ((_14 as Some).0: &T);
+        _16 = copy ((_14 as Some).0: &T);
         StorageLive(_17);
         _17 = &_2;
         StorageLive(_18);
-        _18 = (_16,);
+        _18 = (copy _16,);
         _19 = <impl Fn(&T) as Fn<(&T,)>>::call(move _17, move _18) -> [return: bb9, unwind: bb11];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir
index cea2fcbcdc0..ecac03ad0f9 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-abort.mir
@@ -40,7 +40,7 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb0: {
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         StorageLive(_4);
         _4 = const 0_usize;
         goto -> bb1;
@@ -51,8 +51,8 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         StorageLive(_7);
         StorageLive(_6);
         StorageLive(_5);
-        _5 = _4;
-        _6 = Lt(move _5, _3);
+        _5 = copy _4;
+        _6 = Lt(move _5, copy _3);
         StorageDead(_5);
         switchInt(move _6) -> [0: bb2, otherwise: bb4];
     }
@@ -70,21 +70,21 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb4: {
-        _7 = _4;
+        _7 = copy _4;
         StorageLive(_8);
-        _8 = <usize as Step>::forward_unchecked(_7, const 1_usize) -> [return: bb5, unwind unreachable];
+        _8 = <usize as Step>::forward_unchecked(copy _7, const 1_usize) -> [return: bb5, unwind unreachable];
     }
 
     bb5: {
         _4 = move _8;
         StorageDead(_8);
-        _9 = Option::<usize>::Some(_7);
+        _9 = Option::<usize>::Some(copy _7);
         StorageDead(_6);
         StorageDead(_7);
-        _10 = ((_9 as Some).0: usize);
+        _10 = copy ((_9 as Some).0: usize);
         _11 = Len((*_1));
-        _12 = Lt(_10, _11);
-        assert(move _12, "index out of bounds: the length is {} but the index is {}", move _11, _10) -> [success: bb6, unwind unreachable];
+        _12 = Lt(copy _10, copy _11);
+        assert(move _12, "index out of bounds: the length is {} but the index is {}", move _11, copy _10) -> [success: bb6, unwind unreachable];
     }
 
     bb6: {
@@ -92,7 +92,7 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         StorageLive(_14);
         _14 = &_2;
         StorageLive(_15);
-        _15 = (_10, _13);
+        _15 = (copy _10, copy _13);
         _16 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _14, move _15) -> [return: bb7, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir
index bd658a770ea..1032473b9b2 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.range_loop.PreCodegen.after.panic-unwind.mir
@@ -40,7 +40,7 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb0: {
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         StorageLive(_4);
         _4 = const 0_usize;
         goto -> bb1;
@@ -51,8 +51,8 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         StorageLive(_7);
         StorageLive(_6);
         StorageLive(_5);
-        _5 = _4;
-        _6 = Lt(move _5, _3);
+        _5 = copy _4;
+        _6 = Lt(move _5, copy _3);
         StorageDead(_5);
         switchInt(move _6) -> [0: bb2, otherwise: bb4];
     }
@@ -70,21 +70,21 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
     }
 
     bb4: {
-        _7 = _4;
+        _7 = copy _4;
         StorageLive(_8);
-        _8 = <usize as Step>::forward_unchecked(_7, const 1_usize) -> [return: bb5, unwind: bb8];
+        _8 = <usize as Step>::forward_unchecked(copy _7, const 1_usize) -> [return: bb5, unwind: bb8];
     }
 
     bb5: {
         _4 = move _8;
         StorageDead(_8);
-        _9 = Option::<usize>::Some(_7);
+        _9 = Option::<usize>::Some(copy _7);
         StorageDead(_6);
         StorageDead(_7);
-        _10 = ((_9 as Some).0: usize);
+        _10 = copy ((_9 as Some).0: usize);
         _11 = Len((*_1));
-        _12 = Lt(_10, _11);
-        assert(move _12, "index out of bounds: the length is {} but the index is {}", move _11, _10) -> [success: bb6, unwind: bb8];
+        _12 = Lt(copy _10, copy _11);
+        assert(move _12, "index out of bounds: the length is {} but the index is {}", move _11, copy _10) -> [success: bb6, unwind: bb8];
     }
 
     bb6: {
@@ -92,7 +92,7 @@ fn range_loop(_1: &[T], _2: impl Fn(usize, &T)) -> () {
         StorageLive(_14);
         _14 = &_2;
         StorageLive(_15);
-        _15 = (_10, _13);
+        _15 = (copy _10, copy _13);
         _16 = <impl Fn(usize, &T) as Fn<(usize, &T)>>::call(move _14, move _15) -> [return: bb7, unwind: bb8];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir
index fbb887fe76a..1b397a4e4cd 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-abort.mir
@@ -65,10 +65,10 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
         StorageLive(_6);
         StorageLive(_4);
         StorageLive(_5);
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         _4 = &raw const (*_1);
-        _5 = _4 as *const T (PtrToPtr);
-        _6 = NonNull::<T> { pointer: _5 };
+        _5 = copy _4 as *const T (PtrToPtr);
+        _6 = NonNull::<T> { pointer: copy _5 };
         StorageLive(_9);
         switchInt(const <T as std::mem::SizedTypeProperties>::IS_ZST) -> [0: bb1, otherwise: bb2];
     }
@@ -76,8 +76,8 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     bb1: {
         StorageLive(_8);
         StorageLive(_7);
-        _7 = _4 as *mut T (PtrToPtr);
-        _8 = Offset(_7, _3);
+        _7 = copy _4 as *mut T (PtrToPtr);
+        _8 = Offset(copy _7, copy _3);
         StorageDead(_7);
         _9 = move _8 as *const T (PtrToPtr);
         StorageDead(_8);
@@ -85,24 +85,24 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb2: {
-        _9 = _3 as *const T (Transmute);
+        _9 = copy _3 as *const T (Transmute);
         goto -> bb3;
     }
 
     bb3: {
         StorageLive(_10);
-        _10 = _9;
-        _11 = std::slice::Iter::<'_, T> { ptr: _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
+        _10 = copy _9;
+        _11 = std::slice::Iter::<'_, T> { ptr: copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
         StorageDead(_10);
         StorageDead(_9);
         StorageDead(_5);
         StorageDead(_4);
         StorageDead(_6);
         StorageDead(_3);
-        _12 = Rev::<std::slice::Iter<'_, T>> { iter: _11 };
+        _12 = Rev::<std::slice::Iter<'_, T>> { iter: copy _11 };
         StorageDead(_11);
         StorageLive(_13);
-        _13 = _12;
+        _13 = copy _12;
         goto -> bb4;
     }
 
@@ -130,11 +130,11 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb8: {
-        _17 = ((_15 as Some).0: &T);
+        _17 = copy ((_15 as Some).0: &T);
         StorageLive(_18);
         _18 = &_2;
         StorageLive(_19);
-        _19 = (_17,);
+        _19 = (copy _17,);
         _20 = <impl Fn(&T) as Fn<(&T,)>>::call(move _18, move _19) -> [return: bb9, unwind unreachable];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir
index db9409f72ab..77689dd9b51 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.reverse_loop.PreCodegen.after.panic-unwind.mir
@@ -65,10 +65,10 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
         StorageLive(_6);
         StorageLive(_4);
         StorageLive(_5);
-        _3 = PtrMetadata(_1);
+        _3 = PtrMetadata(copy _1);
         _4 = &raw const (*_1);
-        _5 = _4 as *const T (PtrToPtr);
-        _6 = NonNull::<T> { pointer: _5 };
+        _5 = copy _4 as *const T (PtrToPtr);
+        _6 = NonNull::<T> { pointer: copy _5 };
         StorageLive(_9);
         switchInt(const <T as std::mem::SizedTypeProperties>::IS_ZST) -> [0: bb1, otherwise: bb2];
     }
@@ -76,8 +76,8 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     bb1: {
         StorageLive(_8);
         StorageLive(_7);
-        _7 = _4 as *mut T (PtrToPtr);
-        _8 = Offset(_7, _3);
+        _7 = copy _4 as *mut T (PtrToPtr);
+        _8 = Offset(copy _7, copy _3);
         StorageDead(_7);
         _9 = move _8 as *const T (PtrToPtr);
         StorageDead(_8);
@@ -85,24 +85,24 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb2: {
-        _9 = _3 as *const T (Transmute);
+        _9 = copy _3 as *const T (Transmute);
         goto -> bb3;
     }
 
     bb3: {
         StorageLive(_10);
-        _10 = _9;
-        _11 = std::slice::Iter::<'_, T> { ptr: _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
+        _10 = copy _9;
+        _11 = std::slice::Iter::<'_, T> { ptr: copy _6, end_or_len: move _10, _marker: const ZeroSized: PhantomData<&T> };
         StorageDead(_10);
         StorageDead(_9);
         StorageDead(_5);
         StorageDead(_4);
         StorageDead(_6);
         StorageDead(_3);
-        _12 = Rev::<std::slice::Iter<'_, T>> { iter: _11 };
+        _12 = Rev::<std::slice::Iter<'_, T>> { iter: copy _11 };
         StorageDead(_11);
         StorageLive(_13);
-        _13 = _12;
+        _13 = copy _12;
         goto -> bb4;
     }
 
@@ -130,11 +130,11 @@ fn reverse_loop(_1: &[T], _2: impl Fn(&T)) -> () {
     }
 
     bb8: {
-        _17 = ((_15 as Some).0: &T);
+        _17 = copy ((_15 as Some).0: &T);
         StorageLive(_18);
         _18 = &_2;
         StorageLive(_19);
-        _19 = (_17,);
+        _19 = (copy _17,);
         _20 = <impl Fn(&T) as Fn<(&T,)>>::call(move _18, move _19) -> [return: bb9, unwind: bb11];
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-abort.mir
index 96e71c298e0..f8b0e749bfc 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-abort.mir
@@ -43,27 +43,27 @@ fn slice_iter_generic_is_empty(_1: &std::slice::Iter<'_, T>) -> bool {
         StorageLive(_3);
         StorageLive(_2);
         _2 = &raw const ((*_1).1: *const T);
-        _3 = _2 as *const std::ptr::NonNull<T> (PtrToPtr);
+        _3 = copy _2 as *const std::ptr::NonNull<T> (PtrToPtr);
         StorageDead(_2);
-        _4 = (*_3);
+        _4 = copy (*_3);
         StorageDead(_3);
         StorageLive(_6);
         StorageLive(_7);
         StorageLive(_5);
-        _5 = ((*_1).0: std::ptr::NonNull<T>);
-        _6 = (_5.0: *const T);
+        _5 = copy ((*_1).0: std::ptr::NonNull<T>);
+        _6 = copy (_5.0: *const T);
         StorageDead(_5);
-        _7 = (_4.0: *const T);
-        _0 = Eq(_6, _7);
+        _7 = copy (_4.0: *const T);
+        _0 = Eq(copy _6, copy _7);
         StorageDead(_7);
         StorageDead(_6);
         goto -> bb3;
     }
 
     bb2: {
-        _8 = ((*_1).1: *const T);
-        _9 = _8 as usize (Transmute);
-        _0 = Eq(_9, const 0_usize);
+        _8 = copy ((*_1).1: *const T);
+        _9 = copy _8 as usize (Transmute);
+        _0 = Eq(copy _9, const 0_usize);
         goto -> bb3;
     }
 
diff --git a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-unwind.mir
index 96e71c298e0..f8b0e749bfc 100644
--- a/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/slice_iter.slice_iter_generic_is_empty.PreCodegen.after.panic-unwind.mir
@@ -43,27 +43,27 @@ fn slice_iter_generic_is_empty(_1: &std::slice::Iter<'_, T>) -> bool {
         StorageLive(_3);
         StorageLive(_2);
         _2 = &raw const ((*_1).1: *const T);
-        _3 = _2 as *const std::ptr::NonNull<T> (PtrToPtr);
+        _3 = copy _2 as *const std::ptr::NonNull<T> (PtrToPtr);
         StorageDead(_2);
-        _4 = (*_3);
+        _4 = copy (*_3);
         StorageDead(_3);
         StorageLive(_6);
         StorageLive(_7);
         StorageLive(_5);
-        _5 = ((*_1).0: std::ptr::NonNull<T>);
-        _6 = (_5.0: *const T);
+        _5 = copy ((*_1).0: std::ptr::NonNull<T>);
+        _6 = copy (_5.0: *const T);
         StorageDead(_5);
-        _7 = (_4.0: *const T);
-        _0 = Eq(_6, _7);
+        _7 = copy (_4.0: *const T);
+        _0 = Eq(copy _6, copy _7);
         StorageDead(_7);
         StorageDead(_6);
         goto -> bb3;
     }
 
     bb2: {
-        _8 = ((*_1).1: *const T);
-        _9 = _8 as usize (Transmute);
-        _0 = Eq(_9, const 0_usize);
+        _8 = copy ((*_1).1: *const T);
+        _9 = copy _8 as usize (Transmute);
+        _0 = Eq(copy _9, const 0_usize);
         goto -> bb3;
     }
 
diff --git a/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir
index c76e5315db9..fe4e2deab87 100644
--- a/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-abort.mir
@@ -10,7 +10,7 @@ fn outer(_1: u8) -> u8 {
 
     bb0: {
         _2 = &_1;                        // scope 0 at $DIR/spans.rs:11:11: 11:13
-        _0 = _1;                         // scope 1 at $DIR/spans.rs:15:5: 15:7
+        _0 = copy _1;                    // scope 1 at $DIR/spans.rs:15:5: 15:7
         return;                          // scope 0 at $DIR/spans.rs:12:2: 12:2
     }
 }
diff --git a/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir
index c76e5315db9..fe4e2deab87 100644
--- a/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/spans.outer.PreCodegen.after.panic-unwind.mir
@@ -10,7 +10,7 @@ fn outer(_1: u8) -> u8 {
 
     bb0: {
         _2 = &_1;                        // scope 0 at $DIR/spans.rs:11:11: 11:13
-        _0 = _1;                         // scope 1 at $DIR/spans.rs:15:5: 15:7
+        _0 = copy _1;                    // scope 1 at $DIR/spans.rs:15:5: 15:7
         return;                          // scope 0 at $DIR/spans.rs:12:2: 12:2
     }
 }
diff --git a/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir
index 16d6d9719b6..baa01e28a94 100644
--- a/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/try_identity.new.PreCodegen.after.mir
@@ -30,18 +30,18 @@ fn new(_1: Result<T, E>) -> Result<T, E> {
 
     bb1: {
         _3 = move ((_1 as Ok).0: T);
-        _4 = ControlFlow::<E, T>::Continue(_3);
+        _4 = ControlFlow::<E, T>::Continue(copy _3);
         _5 = move ((_4 as Continue).0: T);
-        _0 = Result::<T, E>::Ok(_5);
+        _0 = Result::<T, E>::Ok(copy _5);
         StorageDead(_4);
         goto -> bb3;
     }
 
     bb2: {
         _6 = move ((_1 as Err).0: E);
-        _4 = ControlFlow::<E, T>::Break(_6);
+        _4 = ControlFlow::<E, T>::Break(copy _6);
         _7 = move ((_4 as Break).0: E);
-        _0 = Result::<T, E>::Err(_7);
+        _0 = Result::<T, E>::Err(copy _7);
         StorageDead(_4);
         goto -> bb3;
     }
diff --git a/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir b/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir
index d6883ac9fda..ac485f485b1 100644
--- a/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir
+++ b/tests/mir-opt/pre-codegen/try_identity.old.PreCodegen.after.mir
@@ -20,13 +20,13 @@ fn old(_1: Result<T, E>) -> Result<T, E> {
 
     bb1: {
         _3 = move ((_1 as Ok).0: T);
-        _0 = Result::<T, E>::Ok(_3);
+        _0 = Result::<T, E>::Ok(copy _3);
         goto -> bb3;
     }
 
     bb2: {
         _4 = move ((_1 as Err).0: E);
-        _0 = Result::<T, E>::Err(_4);
+        _0 = Result::<T, E>::Err(copy _4);
         goto -> bb3;
     }
 
diff --git a/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-abort.mir b/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-abort.mir
index 0fe4fd37072..ce1e4a0abd6 100644
--- a/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-abort.mir
+++ b/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-abort.mir
@@ -78,17 +78,17 @@ fn vec_deref_to_slice(_1: &Vec<u8>) -> &[u8] {
         _3 = &(((*_1).0: alloc::raw_vec::RawVec<u8>).0: alloc::raw_vec::RawVecInner);
         StorageLive(_6);
         StorageLive(_4);
-        _4 = (((((*_1).0: alloc::raw_vec::RawVec<u8>).0: alloc::raw_vec::RawVecInner).0: std::ptr::Unique<u8>).0: std::ptr::NonNull<u8>);
-        _5 = (_4.0: *const u8);
-        _6 = NonNull::<u8> { pointer: _5 };
+        _4 = copy (((((*_1).0: alloc::raw_vec::RawVec<u8>).0: alloc::raw_vec::RawVecInner).0: std::ptr::Unique<u8>).0: std::ptr::NonNull<u8>);
+        _5 = copy (_4.0: *const u8);
+        _6 = NonNull::<u8> { pointer: copy _5 };
         StorageDead(_4);
         StorageDead(_6);
         StorageDead(_3);
         StorageDead(_2);
         StorageLive(_7);
-        _7 = ((*_1).1: usize);
+        _7 = copy ((*_1).1: usize);
         StorageLive(_8);
-        _8 = *const [u8] from (_5, _7);
+        _8 = *const [u8] from (copy _5, copy _7);
         _0 = &(*_8);
         StorageDead(_8);
         StorageDead(_7);
diff --git a/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-unwind.mir b/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-unwind.mir
index 0fe4fd37072..ce1e4a0abd6 100644
--- a/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-unwind.mir
+++ b/tests/mir-opt/pre-codegen/vec_deref.vec_deref_to_slice.PreCodegen.after.panic-unwind.mir
@@ -78,17 +78,17 @@ fn vec_deref_to_slice(_1: &Vec<u8>) -> &[u8] {
         _3 = &(((*_1).0: alloc::raw_vec::RawVec<u8>).0: alloc::raw_vec::RawVecInner);
         StorageLive(_6);
         StorageLive(_4);
-        _4 = (((((*_1).0: alloc::raw_vec::RawVec<u8>).0: alloc::raw_vec::RawVecInner).0: std::ptr::Unique<u8>).0: std::ptr::NonNull<u8>);
-        _5 = (_4.0: *const u8);
-        _6 = NonNull::<u8> { pointer: _5 };
+        _4 = copy (((((*_1).0: alloc::raw_vec::RawVec<u8>).0: alloc::raw_vec::RawVecInner).0: std::ptr::Unique<u8>).0: std::ptr::NonNull<u8>);
+        _5 = copy (_4.0: *const u8);
+        _6 = NonNull::<u8> { pointer: copy _5 };
         StorageDead(_4);
         StorageDead(_6);
         StorageDead(_3);
         StorageDead(_2);
         StorageLive(_7);
-        _7 = ((*_1).1: usize);
+        _7 = copy ((*_1).1: usize);
         StorageLive(_8);
-        _8 = *const [u8] from (_5, _7);
+        _8 = *const [u8] from (copy _5, copy _7);
         _0 = &(*_8);
         StorageDead(_8);
         StorageDead(_7);
diff --git a/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff b/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff
index 012efa9693e..4715f5110eb 100644
--- a/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.dominate_storage.ReferencePropagation.diff
@@ -21,15 +21,15 @@
       }
   
       bb2: {
-          _5 = (*_2);
-          _0 = opaque::<i32>(_5) -> [return: bb3, unwind continue];
+          _5 = copy (*_2);
+          _0 = opaque::<i32>(copy _5) -> [return: bb3, unwind continue];
       }
   
       bb3: {
           StorageDead(_1);
           StorageLive(_1);
           _6 = const true;
-          switchInt(_6) -> [0: bb3, otherwise: bb1];
+          switchInt(copy _6) -> [0: bb3, otherwise: bb1];
       }
   }
   
diff --git a/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff b/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff
index c6bd6c21210..b1de380d84d 100644
--- a/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.maybe_dead.ReferencePropagation.diff
@@ -19,25 +19,25 @@
           _4 = &_2;
           _5 = &mut _3;
           (*_5) = const 7_i32;
--         _6 = (*_4);
-+         _6 = _2;
-          switchInt(_1) -> [1: bb1, otherwise: bb2];
+-         _6 = copy (*_4);
++         _6 = copy _2;
+          switchInt(copy _1) -> [1: bb1, otherwise: bb2];
       }
   
       bb1: {
           StorageDead(_2);
           StorageDead(_3);
-          _0 = opaque::<i32>(_6) -> [return: bb2, unwind continue];
+          _0 = opaque::<i32>(copy _6) -> [return: bb2, unwind continue];
       }
   
       bb2: {
-          _7 = (*_4);
-          _0 = opaque::<i32>(_7) -> [return: bb3, unwind continue];
+          _7 = copy (*_4);
+          _0 = opaque::<i32>(copy _7) -> [return: bb3, unwind continue];
       }
   
       bb3: {
-          _8 = (*_5);
-          _0 = opaque::<i32>(_8) -> [return: bb4, unwind continue];
+          _8 = copy (*_5);
+          _0 = opaque::<i32>(copy _8) -> [return: bb4, unwind continue];
       }
   
       bb4: {
diff --git a/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff b/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff
index 0fd74155aa3..2368edea5ba 100644
--- a/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.multiple_storage.ReferencePropagation.diff
@@ -13,8 +13,8 @@
           _2 = &_1;
           StorageDead(_1);
           StorageLive(_1);
-          _3 = (*_2);
-          _0 = opaque::<i32>(_3) -> [return: bb1, unwind continue];
+          _3 = copy (*_2);
+          _0 = opaque::<i32>(copy _3) -> [return: bb1, unwind continue];
       }
   
       bb1: {
diff --git a/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff
index 859097d3966..90fd91764cb 100644
--- a/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.mut_raw_then_mut_shr.ReferencePropagation.diff
@@ -41,23 +41,23 @@
 -         StorageLive(_5);
 -         _5 = &mut (*_2);
 -         _4 = &raw mut (*_5);
--         _3 = _4;
+-         _3 = copy _4;
 -         StorageDead(_5);
 -         StorageDead(_4);
 -         StorageLive(_6);
 -         _6 = &(*_2);
           StorageLive(_7);
--         _7 = (*_6);
+-         _7 = copy (*_6);
 -         StorageLive(_8);
 -         (*_3) = const 4_i32;
 -         _8 = const ();
 -         StorageDead(_8);
-+         _7 = _1;
++         _7 = copy _1;
 +         _1 = const 4_i32;
           StorageLive(_9);
-          _9 = _7;
+          _9 = copy _7;
           StorageLive(_10);
-          _10 = _1;
+          _10 = copy _1;
           _0 = (move _9, move _10);
           StorageDead(_10);
           StorageDead(_9);
diff --git a/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff b/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff
index 371b0e468b1..064711925e0 100644
--- a/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.read_through_raw.ReferencePropagation.diff
@@ -13,10 +13,10 @@
 -         _3 = &mut (*_2);
 -         _4 = &raw mut (*_2);
 -         _5 = &raw mut (*_3);
--         _0 = (*_4);
--         _0 = (*_5);
-+         _0 = (*_1);
-+         _0 = (*_1);
+-         _0 = copy (*_4);
+-         _0 = copy (*_5);
++         _0 = copy (*_1);
++         _0 = copy (*_1);
           return;
       }
   }
diff --git a/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff
index 0dfe8781c18..3c6a9a9614c 100644
--- a/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.reference_propagation.ReferencePropagation.diff
@@ -191,8 +191,8 @@
           StorageLive(_5);
           _5 = &_4;
           StorageLive(_6);
--         _6 = (*_5);
-+         _6 = _4;
+-         _6 = copy (*_5);
++         _6 = copy _4;
           StorageLive(_7);
           StorageLive(_8);
           _8 = ();
@@ -223,7 +223,7 @@
           StorageDead(_13);
 -         StorageDead(_14);
           StorageLive(_15);
-          _15 = (*_12);
+          _15 = copy (*_12);
           StorageLive(_16);
           StorageLive(_17);
           _17 = ();
@@ -247,11 +247,11 @@
           StorageLive(_21);
           _21 = &_20;
           StorageLive(_22);
--         _22 = (*_20);
-+         _22 = _19;
+-         _22 = copy (*_20);
++         _22 = copy _19;
           StorageLive(_23);
           StorageLive(_24);
-          _24 = _21;
+          _24 = copy _21;
           _23 = opaque::<&&usize>(move _24) -> [return: bb3, unwind continue];
       }
   
@@ -272,10 +272,10 @@
           StorageLive(_28);
           _28 = &raw mut _27;
           StorageLive(_29);
-          _29 = (*_27);
+          _29 = copy (*_27);
           StorageLive(_30);
           StorageLive(_31);
-          _31 = _28;
+          _31 = copy _28;
           _30 = opaque::<*mut &usize>(move _31) -> [return: bb4, unwind continue];
       }
   
@@ -294,11 +294,11 @@
           StorageLive(_34);
           _34 = &_33;
           StorageLive(_35);
--         _35 = (*_34);
-+         _35 = _33;
+-         _35 = copy (*_34);
++         _35 = copy _33;
           StorageLive(_36);
           StorageLive(_37);
-          _37 = _34;
+          _37 = copy _34;
           _36 = opaque::<&usize>(move _37) -> [return: bb5, unwind continue];
       }
   
@@ -316,18 +316,18 @@
           StorageLive(_40);
           _40 = &_39;
           StorageLive(_41);
--         _41 = (*_40);
-+         _41 = _39;
+-         _41 = copy (*_40);
++         _41 = copy _39;
           StorageLive(_42);
-          _42 = _40;
+          _42 = copy _40;
           StorageLive(_43);
--         _43 = (*_42);
-+         _43 = _39;
+-         _43 = copy (*_42);
++         _43 = copy _39;
           StorageLive(_44);
-          _44 = _42;
+          _44 = copy _42;
           StorageLive(_45);
           StorageLive(_46);
-          _46 = _44;
+          _46 = copy _44;
           _45 = opaque::<&usize>(move _46) -> [return: bb6, unwind continue];
       }
   
@@ -346,8 +346,8 @@
 -         StorageLive(_48);
 -         _48 = &(*_1);
           StorageLive(_49);
--         _49 = (*_48);
-+         _49 = (*_1);
+-         _49 = copy (*_48);
++         _49 = copy (*_1);
           StorageLive(_50);
           StorageLive(_51);
           _51 = ();
@@ -373,7 +373,7 @@
           StorageDead(_54);
 -         StorageDead(_55);
           StorageLive(_56);
-          _56 = (*_53);
+          _56 = copy (*_53);
           StorageLive(_57);
           StorageLive(_58);
           _58 = ();
@@ -395,8 +395,8 @@
           StorageLive(_62);
           _62 = &_61;
           StorageLive(_63);
--         _63 = (*_61);
-+         _63 = _60;
+-         _63 = copy (*_61);
++         _63 = copy _60;
           StorageLive(_64);
           StorageLive(_65);
           _65 = ();
@@ -419,7 +419,7 @@
           StorageLive(_68);
           _68 = &mut _67;
           StorageLive(_69);
-          _69 = (*_67);
+          _69 = copy (*_67);
           StorageLive(_70);
           StorageLive(_71);
           _71 = ();
diff --git a/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff
index 21486a8616a..75fe99de938 100644
--- a/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.reference_propagation_const_ptr.ReferencePropagation.diff
@@ -208,8 +208,8 @@
           StorageLive(_5);
           _5 = &raw const _4;
           StorageLive(_6);
--         _6 = (*_5);
-+         _6 = _4;
+-         _6 = copy (*_5);
++         _6 = copy _4;
           StorageLive(_7);
           StorageLive(_8);
           _8 = ();
@@ -236,7 +236,7 @@
           _12 = move _13;
           StorageDead(_13);
           StorageLive(_14);
-          _14 = (*_12);
+          _14 = copy (*_12);
           StorageLive(_15);
           StorageLive(_16);
           _16 = ();
@@ -260,11 +260,11 @@
           StorageLive(_20);
           _20 = &_19;
           StorageLive(_21);
--         _21 = (*_19);
-+         _21 = _18;
+-         _21 = copy (*_19);
++         _21 = copy _18;
           StorageLive(_22);
           StorageLive(_23);
-          _23 = _20;
+          _23 = copy _20;
           _22 = opaque::<&*const usize>(move _23) -> [return: bb3, unwind continue];
       }
   
@@ -285,10 +285,10 @@
           StorageLive(_27);
           _27 = &raw mut _26;
           StorageLive(_28);
-          _28 = (*_26);
+          _28 = copy (*_26);
           StorageLive(_29);
           StorageLive(_30);
-          _30 = _27;
+          _30 = copy _27;
           _29 = opaque::<*mut *const usize>(move _30) -> [return: bb4, unwind continue];
       }
   
@@ -307,11 +307,11 @@
           StorageLive(_33);
           _33 = &raw const _32;
           StorageLive(_34);
--         _34 = (*_33);
-+         _34 = _32;
+-         _34 = copy (*_33);
++         _34 = copy _32;
           StorageLive(_35);
           StorageLive(_36);
-          _36 = _33;
+          _36 = copy _33;
           _35 = opaque::<*const usize>(move _36) -> [return: bb5, unwind continue];
       }
   
@@ -329,18 +329,18 @@
           StorageLive(_39);
           _39 = &raw const _38;
           StorageLive(_40);
--         _40 = (*_39);
-+         _40 = _38;
+-         _40 = copy (*_39);
++         _40 = copy _38;
           StorageLive(_41);
-          _41 = _39;
+          _41 = copy _39;
           StorageLive(_42);
--         _42 = (*_41);
-+         _42 = _38;
+-         _42 = copy (*_41);
++         _42 = copy _38;
           StorageLive(_43);
-          _43 = _41;
+          _43 = copy _41;
           StorageLive(_44);
           StorageLive(_45);
-          _45 = _43;
+          _45 = copy _43;
           _44 = opaque::<*const usize>(move _45) -> [return: bb6, unwind continue];
       }
   
@@ -359,8 +359,8 @@
 -         StorageLive(_47);
 -         _47 = &raw const (*_1);
           StorageLive(_48);
--         _48 = (*_47);
-+         _48 = (*_1);
+-         _48 = copy (*_47);
++         _48 = copy (*_1);
           StorageLive(_49);
           StorageLive(_50);
           _50 = ();
@@ -382,7 +382,7 @@
           _2 = move _53;
           StorageDead(_53);
           StorageLive(_54);
-          _54 = (*_52);
+          _54 = copy (*_52);
           StorageLive(_55);
           StorageLive(_56);
           _56 = ();
@@ -405,8 +405,8 @@
 -         _60 = &raw const (*_59);
 +         _60 = &raw const _58;
           StorageLive(_61);
--         _61 = (*_60);
-+         _61 = _58;
+-         _61 = copy (*_60);
++         _61 = copy _58;
           StorageLive(_62);
           StorageLive(_63);
           _63 = ();
@@ -430,8 +430,8 @@
           StorageLive(_67);
           _67 = &_66;
           StorageLive(_68);
--         _68 = (*_66);
-+         _68 = _65;
+-         _68 = copy (*_66);
++         _68 = copy _65;
           StorageLive(_69);
           StorageLive(_70);
           _70 = ();
@@ -454,7 +454,7 @@
           StorageLive(_73);
           _73 = &mut _72;
           StorageLive(_74);
-          _74 = (*_72);
+          _74 = copy (*_72);
           StorageLive(_75);
           StorageLive(_76);
           _76 = ();
diff --git a/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff
index 7c7f424bba2..f35b4974d6e 100644
--- a/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.reference_propagation_mut.ReferencePropagation.diff
@@ -191,8 +191,8 @@
           StorageLive(_5);
           _5 = &mut _4;
           StorageLive(_6);
--         _6 = (*_5);
-+         _6 = _4;
+-         _6 = copy (*_5);
++         _6 = copy _4;
           StorageLive(_7);
           StorageLive(_8);
           _8 = ();
@@ -223,7 +223,7 @@
           StorageDead(_13);
 -         StorageDead(_14);
           StorageLive(_15);
-          _15 = (*_12);
+          _15 = copy (*_12);
           StorageLive(_16);
           StorageLive(_17);
           _17 = ();
@@ -247,10 +247,10 @@
           StorageLive(_21);
           _21 = &_20;
           StorageLive(_22);
-          _22 = (*_20);
+          _22 = copy (*_20);
           StorageLive(_23);
           StorageLive(_24);
-          _24 = _21;
+          _24 = copy _21;
           _23 = opaque::<&&mut usize>(move _24) -> [return: bb3, unwind continue];
       }
   
@@ -271,10 +271,10 @@
           StorageLive(_28);
           _28 = &raw mut _27;
           StorageLive(_29);
-          _29 = (*_27);
+          _29 = copy (*_27);
           StorageLive(_30);
           StorageLive(_31);
-          _31 = _28;
+          _31 = copy _28;
           _30 = opaque::<*mut &mut usize>(move _31) -> [return: bb4, unwind continue];
       }
   
@@ -293,7 +293,7 @@
           StorageLive(_34);
           _34 = &mut _33;
           StorageLive(_35);
-          _35 = (*_34);
+          _35 = copy (*_34);
           StorageLive(_36);
           StorageLive(_37);
           _37 = move _34;
@@ -314,11 +314,11 @@
           StorageLive(_40);
           _40 = &mut _39;
           StorageLive(_41);
-          _41 = (*_40);
+          _41 = copy (*_40);
           StorageLive(_42);
           _42 = move _40;
           StorageLive(_43);
-          _43 = (*_42);
+          _43 = copy (*_42);
           StorageLive(_44);
           _44 = move _42;
           StorageLive(_45);
@@ -342,8 +342,8 @@
 -         StorageLive(_48);
 -         _48 = &mut (*_1);
           StorageLive(_49);
--         _49 = (*_48);
-+         _49 = (*_1);
+-         _49 = copy (*_48);
++         _49 = copy (*_1);
           StorageLive(_50);
           StorageLive(_51);
           _51 = ();
@@ -369,7 +369,7 @@
           StorageDead(_54);
 -         StorageDead(_55);
           StorageLive(_56);
-          _56 = (*_53);
+          _56 = copy (*_53);
           StorageLive(_57);
           StorageLive(_58);
           _58 = ();
@@ -391,7 +391,7 @@
           StorageLive(_62);
           _62 = &_61;
           StorageLive(_63);
-          _63 = (*_61);
+          _63 = copy (*_61);
           StorageLive(_64);
           StorageLive(_65);
           _65 = ();
@@ -414,7 +414,7 @@
           StorageLive(_68);
           _68 = &mut _67;
           StorageLive(_69);
-          _69 = (*_67);
+          _69 = copy (*_67);
           StorageLive(_70);
           StorageLive(_71);
           _71 = ();
diff --git a/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff b/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff
index 5629d04f1b1..21b322b7218 100644
--- a/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.reference_propagation_mut_ptr.ReferencePropagation.diff
@@ -189,8 +189,8 @@
           StorageLive(_5);
           _5 = &raw mut _4;
           StorageLive(_6);
--         _6 = (*_5);
-+         _6 = _4;
+-         _6 = copy (*_5);
++         _6 = copy _4;
           StorageLive(_7);
           StorageLive(_8);
           _8 = ();
@@ -217,7 +217,7 @@
           _12 = move _13;
           StorageDead(_13);
           StorageLive(_14);
-          _14 = (*_12);
+          _14 = copy (*_12);
           StorageLive(_15);
           StorageLive(_16);
           _16 = ();
@@ -241,10 +241,10 @@
           StorageLive(_20);
           _20 = &_19;
           StorageLive(_21);
-          _21 = (*_19);
+          _21 = copy (*_19);
           StorageLive(_22);
           StorageLive(_23);
-          _23 = _20;
+          _23 = copy _20;
           _22 = opaque::<&*mut usize>(move _23) -> [return: bb3, unwind continue];
       }
   
@@ -265,10 +265,10 @@
           StorageLive(_27);
           _27 = &raw mut _26;
           StorageLive(_28);
-          _28 = (*_26);
+          _28 = copy (*_26);
           StorageLive(_29);
           StorageLive(_30);
-          _30 = _27;
+          _30 = copy _27;
           _29 = opaque::<*mut *mut usize>(move _30) -> [return: bb4, unwind continue];
       }
   
@@ -287,10 +287,10 @@
           StorageLive(_33);
           _33 = &raw mut _32;
           StorageLive(_34);
-          _34 = (*_33);
+          _34 = copy (*_33);
           StorageLive(_35);
           StorageLive(_36);
-          _36 = _33;
+          _36 = copy _33;
           _35 = opaque::<*mut usize>(move _36) -> [return: bb5, unwind continue];
       }
   
@@ -308,16 +308,16 @@
           StorageLive(_39);
           _39 = &raw mut _38;
           StorageLive(_40);
-          _40 = (*_39);
+          _40 = copy (*_39);
           StorageLive(_41);
-          _41 = _39;
+          _41 = copy _39;
           StorageLive(_42);
-          _42 = (*_41);
+          _42 = copy (*_41);
           StorageLive(_43);
-          _43 = _41;
+          _43 = copy _41;
           StorageLive(_44);
           StorageLive(_45);
-          _45 = _43;
+          _45 = copy _43;
           _44 = opaque::<*mut usize>(move _45) -> [return: bb6, unwind continue];
       }
   
@@ -336,8 +336,8 @@
 -         StorageLive(_47);
 -         _47 = &raw mut (*_1);
           StorageLive(_48);
--         _48 = (*_47);
-+         _48 = (*_1);
+-         _48 = copy (*_47);
++         _48 = copy (*_1);
           StorageLive(_49);
           StorageLive(_50);
           _50 = ();
@@ -359,7 +359,7 @@
           _2 = move _53;
           StorageDead(_53);
           StorageLive(_54);
-          _54 = (*_52);
+          _54 = copy (*_52);
           StorageLive(_55);
           StorageLive(_56);
           _56 = ();
@@ -381,7 +381,7 @@
           StorageLive(_60);
           _60 = &_59;
           StorageLive(_61);
-          _61 = (*_59);
+          _61 = copy (*_59);
           StorageLive(_62);
           StorageLive(_63);
           _63 = ();
@@ -404,7 +404,7 @@
           StorageLive(_66);
           _66 = &mut _65;
           StorageLive(_67);
-          _67 = (*_65);
+          _67 = copy (*_65);
           StorageLive(_68);
           StorageLive(_69);
           _69 = ();
diff --git a/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff b/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff
index a5427cea1f8..d2ba9db2b89 100644
--- a/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff
+++ b/tests/mir-opt/reference_prop.unique_with_copies.ReferencePropagation.diff
@@ -29,20 +29,20 @@
           _3 = &raw mut _2;
           StorageLive(_4);
           StorageLive(_5);
-          _5 = (*_3);
+          _5 = copy (*_3);
           _4 = opaque::<i32>(move _5) -> [return: bb1, unwind continue];
       }
   
       bb1: {
           StorageDead(_5);
           StorageDead(_4);
--         _1 = _3;
+-         _1 = copy _3;
 -         StorageDead(_3);
           StorageDead(_2);
           StorageLive(_6);
           StorageLive(_7);
--         _7 = (*_1);
-+         _7 = (*_3);
+-         _7 = copy (*_1);
++         _7 = copy (*_3);
           _6 = opaque::<i32>(move _7) -> [return: bb2, unwind continue];
       }
   
diff --git a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff
index d76d65a18a7..8c6c5e0d993 100644
--- a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff
+++ b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-abort.diff
@@ -24,7 +24,7 @@
       }
   
       bb2: {
-          switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1];
+          switchInt(copy (*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1];
       }
   
       bb3: {
@@ -42,7 +42,7 @@
 +         nop;
 +         nop;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
           switchInt(move _8) -> [0: bb6, otherwise: bb5];
       }
   
diff --git a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff
index d76d65a18a7..8c6c5e0d993 100644
--- a/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff
+++ b/tests/mir-opt/remove_fake_borrows.match_guard.CleanupPostBorrowck.panic-unwind.diff
@@ -24,7 +24,7 @@
       }
   
       bb2: {
-          switchInt((*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1];
+          switchInt(copy (*(*((_1 as Some).0: &&i32)))) -> [0: bb3, otherwise: bb1];
       }
   
       bb3: {
@@ -42,7 +42,7 @@
 +         nop;
 +         nop;
           StorageLive(_8);
-          _8 = _2;
+          _8 = copy _2;
           switchInt(move _8) -> [0: bb6, otherwise: bb5];
       }
   
diff --git a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff
index 14762b9c40f..38cdbf5684b 100644
--- a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff
+++ b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-abort.diff
@@ -64,10 +64,10 @@
   
       bb5: {
 -         StorageLive(_12);
-          _12 = ((_7 as Some).0: i32);
+          _12 = copy ((_7 as Some).0: i32);
 -         StorageLive(_13);
-          _13 = _12;
-          _1 = Add(_1, move _13);
+          _13 = copy _12;
+          _1 = Add(copy _1, move _13);
 -         StorageDead(_13);
           _6 = const ();
 -         StorageDead(_12);
diff --git a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff
index 24797424b5c..2b5aaa95fe1 100644
--- a/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff
+++ b/tests/mir-opt/remove_storage_markers.main.RemoveStorageMarkers.panic-unwind.diff
@@ -64,10 +64,10 @@
   
       bb5: {
 -         StorageLive(_12);
-          _12 = ((_7 as Some).0: i32);
+          _12 = copy ((_7 as Some).0: i32);
 -         StorageLive(_13);
-          _13 = _12;
-          _1 = Add(_1, move _13);
+          _13 = copy _12;
+          _1 = Add(copy _1, move _13);
 -         StorageDead(_13);
           _6 = const ();
 -         StorageDead(_12);
diff --git a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff
index 5afeb8620a1..01eb6d4901f 100644
--- a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff
+++ b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-abort.diff
@@ -12,7 +12,7 @@
       bb0: {
 -         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         drop(_3) -> [return: bb1, unwind unreachable];
 -     }
 - 
diff --git a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff
index b9919ddea56..c2c3cb76e83 100644
--- a/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff
+++ b/tests/mir-opt/remove_unneeded_drops.opt.RemoveUnneededDrops.panic-unwind.diff
@@ -12,7 +12,7 @@
       bb0: {
 -         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         drop(_3) -> [return: bb1, unwind continue];
 -     }
 - 
diff --git a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff
index b89432dd6d6..a82ede6196e 100644
--- a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff
+++ b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-abort.diff
@@ -12,7 +12,7 @@
       bb0: {
 -         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         drop(_3) -> [return: bb1, unwind unreachable];
 -     }
 - 
diff --git a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff
index 48d02605332..6e7c9ead740 100644
--- a/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff
+++ b/tests/mir-opt/remove_unneeded_drops.opt_generic_copy.RemoveUnneededDrops.panic-unwind.diff
@@ -12,7 +12,7 @@
       bb0: {
 -         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         drop(_3) -> [return: bb1, unwind continue];
 -     }
 - 
diff --git a/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir b/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir
index 6dba667dd15..ae7b2cc0b6f 100644
--- a/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir
+++ b/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-abort.mir
@@ -70,7 +70,7 @@ fn array_casts() -> () {
         StorageLive(_5);
         StorageLive(_6);
         StorageLive(_7);
-        _7 = _2;
+        _7 = copy _2;
         _6 = std::ptr::mut_ptr::<impl *mut usize>::add(move _7, const 1_usize) -> [return: bb1, unwind unreachable];
     }
 
@@ -96,13 +96,13 @@ fn array_casts() -> () {
         StorageLive(_15);
         StorageLive(_16);
         StorageLive(_17);
-        _17 = _9;
+        _17 = copy _9;
         _16 = std::ptr::const_ptr::<impl *const usize>::add(move _17, const 1_usize) -> [return: bb2, unwind unreachable];
     }
 
     bb2: {
         StorageDead(_17);
-        _15 = (*_16);
+        _15 = copy (*_16);
         _14 = &_15;
         StorageLive(_18);
         _34 = const array_casts::promoted[0];
@@ -113,16 +113,16 @@ fn array_casts() -> () {
         StorageDead(_18);
         StorageDead(_14);
         StorageLive(_20);
-        _20 = (_13.0: &usize);
+        _20 = copy (_13.0: &usize);
         Retag(_20);
         StorageLive(_21);
-        _21 = (_13.1: &usize);
+        _21 = copy (_13.1: &usize);
         Retag(_21);
         StorageLive(_22);
         StorageLive(_23);
-        _23 = (*_20);
+        _23 = copy (*_20);
         StorageLive(_24);
-        _24 = (*_21);
+        _24 = copy (*_21);
         _22 = Eq(move _23, move _24);
         switchInt(move _22) -> [0: bb4, otherwise: bb3];
     }
diff --git a/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir b/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
index fa812002e26..789bc342638 100644
--- a/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
+++ b/tests/mir-opt/retag.array_casts.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
@@ -70,7 +70,7 @@ fn array_casts() -> () {
         StorageLive(_5);
         StorageLive(_6);
         StorageLive(_7);
-        _7 = _2;
+        _7 = copy _2;
         _6 = std::ptr::mut_ptr::<impl *mut usize>::add(move _7, const 1_usize) -> [return: bb1, unwind continue];
     }
 
@@ -96,13 +96,13 @@ fn array_casts() -> () {
         StorageLive(_15);
         StorageLive(_16);
         StorageLive(_17);
-        _17 = _9;
+        _17 = copy _9;
         _16 = std::ptr::const_ptr::<impl *const usize>::add(move _17, const 1_usize) -> [return: bb2, unwind continue];
     }
 
     bb2: {
         StorageDead(_17);
-        _15 = (*_16);
+        _15 = copy (*_16);
         _14 = &_15;
         StorageLive(_18);
         _34 = const array_casts::promoted[0];
@@ -113,16 +113,16 @@ fn array_casts() -> () {
         StorageDead(_18);
         StorageDead(_14);
         StorageLive(_20);
-        _20 = (_13.0: &usize);
+        _20 = copy (_13.0: &usize);
         Retag(_20);
         StorageLive(_21);
-        _21 = (_13.1: &usize);
+        _21 = copy (_13.1: &usize);
         Retag(_21);
         StorageLive(_22);
         StorageLive(_23);
-        _23 = (*_20);
+        _23 = copy (*_20);
         StorageLive(_24);
-        _24 = (*_21);
+        _24 = copy (*_21);
         _22 = Eq(move _23, move _24);
         switchInt(move _22) -> [0: bb4, otherwise: bb3];
     }
diff --git a/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir b/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir
index 0e568f6a568..ca02e7b49cc 100644
--- a/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir
+++ b/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-abort.mir
@@ -9,7 +9,7 @@ fn box_to_raw_mut(_1: &mut Box<i32>) -> *mut i32 {
     bb0: {
         Retag([fn entry] _1);
         _2 = deref_copy (*_1);
-        _3 = (((_2.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
+        _3 = copy (((_2.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
         _0 = &raw mut (*_3);
         Retag([raw] _0);
         return;
diff --git a/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir b/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
index 0e568f6a568..ca02e7b49cc 100644
--- a/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
+++ b/tests/mir-opt/retag.box_to_raw_mut.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
@@ -9,7 +9,7 @@ fn box_to_raw_mut(_1: &mut Box<i32>) -> *mut i32 {
     bb0: {
         Retag([fn entry] _1);
         _2 = deref_copy (*_1);
-        _3 = (((_2.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
+        _3 = copy (((_2.0: std::ptr::Unique<i32>).0: std::ptr::NonNull<i32>).0: *const i32);
         _0 = &raw mut (*_3);
         Retag([raw] _0);
         return;
diff --git a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir
index 2620929e896..63b32ceb5c0 100644
--- a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir
+++ b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-abort.mir
@@ -12,7 +12,7 @@ fn main::{closure#0}(_1: &{closure@main::{closure#0}}, _2: &i32) -> &i32 {
         Retag([fn entry] _1);
         Retag([fn entry] _2);
         StorageLive(_3);
-        _3 = _2;
+        _3 = copy _2;
         Retag(_3);
         _0 = &(*_2);
         StorageDead(_3);
diff --git a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
index 2620929e896..63b32ceb5c0 100644
--- a/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
+++ b/tests/mir-opt/retag.main-{closure#0}.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
@@ -12,7 +12,7 @@ fn main::{closure#0}(_1: &{closure@main::{closure#0}}, _2: &i32) -> &i32 {
         Retag([fn entry] _1);
         Retag([fn entry] _2);
         StorageLive(_3);
-        _3 = _2;
+        _3 = copy _2;
         Retag(_3);
         _0 = &(*_2);
         StorageDead(_3);
diff --git a/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir b/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
index a35af43cefd..d0f454e4569 100644
--- a/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
+++ b/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-abort.mir
@@ -93,7 +93,7 @@ fn main() -> () {
         StorageLive(_11);
         StorageLive(_12);
         _12 = &raw mut (*_10);
-        _11 = _12;
+        _11 = copy _12;
         StorageDead(_12);
         _2 = const ();
         StorageDead(_11);
@@ -109,7 +109,7 @@ fn main() -> () {
         StorageDead(_14);
         StorageLive(_15);
         StorageLive(_16);
-        _16 = _13;
+        _16 = copy _13;
         StorageLive(_17);
         StorageLive(_18);
         _18 = &_1;
@@ -150,7 +150,7 @@ fn main() -> () {
         StorageLive(_25);
         StorageLive(_26);
         _26 = &raw const (*_15);
-        _25 = _26;
+        _25 = copy _26;
         StorageDead(_26);
         StorageLive(_27);
         _27 = array_casts() -> [return: bb6, unwind unreachable];
diff --git a/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir b/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
index 2495719ec1c..685277d7a53 100644
--- a/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
+++ b/tests/mir-opt/retag.main.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
@@ -93,7 +93,7 @@ fn main() -> () {
         StorageLive(_11);
         StorageLive(_12);
         _12 = &raw mut (*_10);
-        _11 = _12;
+        _11 = copy _12;
         StorageDead(_12);
         _2 = const ();
         StorageDead(_11);
@@ -109,7 +109,7 @@ fn main() -> () {
         StorageDead(_14);
         StorageLive(_15);
         StorageLive(_16);
-        _16 = _13;
+        _16 = copy _13;
         StorageLive(_17);
         StorageLive(_18);
         _18 = &_1;
@@ -150,7 +150,7 @@ fn main() -> () {
         StorageLive(_25);
         StorageLive(_26);
         _26 = &raw const (*_15);
-        _25 = _26;
+        _25 = copy _26;
         StorageDead(_26);
         StorageLive(_27);
         _27 = array_casts() -> [return: bb6, unwind continue];
diff --git a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir
index 4f90413e38b..b873c5aabbf 100644
--- a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir
+++ b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-abort.mir
@@ -8,7 +8,7 @@ fn <impl at $DIR/retag.rs:13:1: 13:10>::foo_shr(_1: &Test, _2: &i32) -> &i32 {
     bb0: {
         Retag([fn entry] _1);
         Retag([fn entry] _2);
-        _0 = _2;
+        _0 = copy _2;
         Retag(_0);
         return;
     }
diff --git a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
index 4f90413e38b..b873c5aabbf 100644
--- a/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
+++ b/tests/mir-opt/retag.{impl#0}-foo_shr.SimplifyCfg-pre-optimizations.after.panic-unwind.mir
@@ -8,7 +8,7 @@ fn <impl at $DIR/retag.rs:13:1: 13:10>::foo_shr(_1: &Test, _2: &i32) -> &i32 {
     bb0: {
         Retag([fn entry] _1);
         Retag([fn entry] _2);
-        _0 = _2;
+        _0 = copy _2;
         Retag(_0);
         return;
     }
diff --git a/tests/mir-opt/separate_const_switch.identity.JumpThreading.diff b/tests/mir-opt/separate_const_switch.identity.JumpThreading.diff
index 8dd904c7d7b..ce9d812701a 100644
--- a/tests/mir-opt/separate_const_switch.identity.JumpThreading.diff
+++ b/tests/mir-opt/separate_const_switch.identity.JumpThreading.diff
@@ -50,16 +50,16 @@
       }
   
       bb2: {
-          _5 = ((_2 as Continue).0: i32);
-          _0 = Result::<i32, i32>::Ok(_5);
+          _5 = copy ((_2 as Continue).0: i32);
+          _0 = Result::<i32, i32>::Ok(copy _5);
           StorageDead(_2);
           return;
       }
   
       bb3: {
-          _4 = ((_2 as Break).0: std::result::Result<std::convert::Infallible, i32>);
-          _10 = ((_4 as Err).0: i32);
-          _0 = Result::<i32, i32>::Err(_10);
+          _4 = copy ((_2 as Break).0: std::result::Result<std::convert::Infallible, i32>);
+          _10 = copy ((_4 as Err).0: i32);
+          _0 = Result::<i32, i32>::Err(copy _10);
           StorageDead(_2);
           return;
       }
@@ -74,9 +74,9 @@
       }
   
       bb5: {
-          _8 = ((_1 as Err).0: i32);
+          _8 = copy ((_1 as Err).0: i32);
           StorageLive(_9);
-          _9 = Result::<Infallible, i32>::Err(_8);
+          _9 = Result::<Infallible, i32>::Err(copy _8);
           _2 = ControlFlow::<Result<Infallible, i32>, i32>::Break(move _9);
           StorageDead(_9);
 -         goto -> bb4;
@@ -84,8 +84,8 @@
       }
   
       bb6: {
-          _7 = ((_1 as Ok).0: i32);
-          _2 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(_7);
+          _7 = copy ((_1 as Ok).0: i32);
+          _2 = ControlFlow::<Result<Infallible, i32>, i32>::Continue(copy _7);
           goto -> bb4;
 +     }
 + 
diff --git a/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff b/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff
index f7495862992..c88c63e0c13 100644
--- a/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff
+++ b/tests/mir-opt/separate_const_switch.too_complex.JumpThreading.diff
@@ -35,15 +35,15 @@
       }
   
       bb2: {
-          _5 = ((_1 as Err).0: usize);
-          _2 = ControlFlow::<usize, i32>::Break(_5);
+          _5 = copy ((_1 as Err).0: usize);
+          _2 = ControlFlow::<usize, i32>::Break(copy _5);
 -         goto -> bb4;
 +         goto -> bb8;
       }
   
       bb3: {
-          _4 = ((_1 as Ok).0: i32);
-          _2 = ControlFlow::<usize, i32>::Continue(_4);
+          _4 = copy ((_1 as Ok).0: i32);
+          _2 = ControlFlow::<usize, i32>::Continue(copy _4);
           goto -> bb4;
       }
   
@@ -55,15 +55,15 @@
   
       bb5: {
           StorageLive(_8);
-          _8 = ((_2 as Break).0: usize);
+          _8 = copy ((_2 as Break).0: usize);
           _0 = const Option::<i32>::None;
           StorageDead(_8);
           goto -> bb7;
       }
   
       bb6: {
-          _7 = ((_2 as Continue).0: i32);
-          _0 = Option::<i32>::Some(_7);
+          _7 = copy ((_2 as Continue).0: i32);
+          _0 = Option::<i32>::Some(copy _7);
           goto -> bb7;
       }
   
diff --git a/tests/mir-opt/set_no_discriminant.f.JumpThreading.diff b/tests/mir-opt/set_no_discriminant.f.JumpThreading.diff
index bc28e81c9a8..3d9852aef65 100644
--- a/tests/mir-opt/set_no_discriminant.f.JumpThreading.diff
+++ b/tests/mir-opt/set_no_discriminant.f.JumpThreading.diff
@@ -10,7 +10,7 @@
           _2 = E::<char>::A;
           discriminant(_2) = 1;
           _1 = discriminant(_2);
-          switchInt(_1) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [0: bb1, otherwise: bb2];
       }
   
       bb1: {
diff --git a/tests/mir-opt/set_no_discriminant.generic.JumpThreading.diff b/tests/mir-opt/set_no_discriminant.generic.JumpThreading.diff
index 78bfeef3c64..c7af1638316 100644
--- a/tests/mir-opt/set_no_discriminant.generic.JumpThreading.diff
+++ b/tests/mir-opt/set_no_discriminant.generic.JumpThreading.diff
@@ -10,7 +10,7 @@
           _2 = E::<T>::A;
           discriminant(_2) = 1;
           _1 = discriminant(_2);
-          switchInt(_1) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [0: bb1, otherwise: bb2];
       }
   
       bb1: {
diff --git a/tests/mir-opt/simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff b/tests/mir-opt/simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff
index 4400cfaef81..9c8efab5c84 100644
--- a/tests/mir-opt/simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff
+++ b/tests/mir-opt/simplify_dead_blocks.assert_nonzero_nonmax.SimplifyCfg-after-unreachable-enum-branching.diff
@@ -5,8 +5,8 @@
       let mut _0: u8;
   
       bb0: {
--         switchInt(_1) -> [0: bb3, 1: bb2, 255: bb3, otherwise: bb4];
-+         switchInt(_1) -> [0: bb2, 1: bb1, 255: bb2, otherwise: bb3];
+-         switchInt(copy _1) -> [0: bb3, 1: bb2, 255: bb3, otherwise: bb4];
++         switchInt(copy _1) -> [0: bb2, 1: bb1, 255: bb2, otherwise: bb3];
       }
   
       bb1: {
@@ -26,7 +26,7 @@
   
 -     bb4: {
 +     bb3: {
-          _0 = _1;
+          _0 = copy _1;
           return;
       }
   }
diff --git a/tests/mir-opt/simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff
index cc5c642407e..420fb4270b2 100644
--- a/tests/mir-opt/simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff
+++ b/tests/mir-opt/simplify_locals.expose_provenance.SimplifyLocals-before-const-prop.diff
@@ -10,7 +10,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = move _3 as usize (PointerExposeProvenance);
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff
index 526ff2f25cf..f05a3935d65 100644
--- a/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff
+++ b/tests/mir-opt/simplify_locals.t1.SimplifyLocals-before-const-prop.diff
@@ -10,7 +10,7 @@
 -         StorageLive(_1);
 -         StorageLive(_2);
 -         _2 = &/*tls*/ mut X;
--         _1 = (*_2);
+-         _1 = copy (*_2);
 -         StorageDead(_2);
 -         StorageDead(_1);
           _0 = const ();
diff --git a/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff
index 5d45d7ac781..a57c136e64d 100644
--- a/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff
+++ b/tests/mir-opt/simplify_locals.t3.SimplifyLocals-before-const-prop.diff
@@ -13,7 +13,7 @@
 -         StorageLive(_3);
 -         _3 = &/*tls*/ mut X;
 -         _2 = &mut (*_3);
--         _1 = (*_2);
+-         _1 = copy (*_2);
 -         StorageDead(_3);
 -         StorageDead(_2);
 -         StorageDead(_1);
diff --git a/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff b/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff
index 4f4855dbaaf..118193fd4fd 100644
--- a/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff
+++ b/tests/mir-opt/simplify_locals.t4.SimplifyLocals-before-const-prop.diff
@@ -10,7 +10,7 @@
           StorageLive(_1);
           StorageLive(_2);
           _2 = &/*tls*/ mut X;
-          _1 = (*_2);
+          _1 = copy (*_2);
           _0 = Add(move _1, const 1_u32);
           StorageDead(_1);
           StorageDead(_2);
diff --git a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff
index c520a159f47..c363dfcbf70 100644
--- a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff
+++ b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-abort.diff
@@ -33,7 +33,7 @@
   
       bb2: {
           StorageLive(_6);
-          _6 = (((_1.0: std::option::Option<u8>) as Some).0: u8);
+          _6 = copy (((_1.0: std::option::Option<u8>) as Some).0: u8);
           StorageDead(_6);
           goto -> bb3;
       }
diff --git a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff
index 686581591fc..895b0067d2e 100644
--- a/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff
+++ b/tests/mir-opt/simplify_locals_fixedpoint.foo.SimplifyLocals-final.panic-unwind.diff
@@ -33,7 +33,7 @@
   
       bb2: {
           StorageLive(_6);
-          _6 = (((_1.0: std::option::Option<u8>) as Some).0: u8);
+          _6 = copy (((_1.0: std::option::Option<u8>) as Some).0: u8);
           StorageDead(_6);
           goto -> bb3;
       }
diff --git a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff
index 54d254ee374..58c265c5e60 100644
--- a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff
+++ b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-abort.diff
@@ -51,7 +51,7 @@
 -         _5 = (move _6, move _7);
 +         StorageLive(_8);
 +         _8 = Temp { x: const 40_u8 };
-+         _7 = (_8.0: u8);
++         _7 = copy (_8.0: u8);
 +         _6 = Add(move _7, const 2_u8);
           StorageDead(_7);
 -         StorageDead(_6);
@@ -67,7 +67,7 @@
 -         StorageLive(_10);
 -         StorageLive(_11);
 -         _11 = Temp { x: const 40_u8 };
--         _10 = (_11.0: u8);
+-         _10 = copy (_11.0: u8);
 -         _9 = Add(move _10, const 2_u8);
 -         StorageDead(_10);
 -         _8 = use_u8(move _9) -> [return: bb2, unwind unreachable];
diff --git a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff
index a5d9bbc49af..748e1661c98 100644
--- a/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff
+++ b/tests/mir-opt/simplify_locals_removes_unused_consts.main.SimplifyLocals-before-const-prop.panic-unwind.diff
@@ -51,7 +51,7 @@
 -         _5 = (move _6, move _7);
 +         StorageLive(_8);
 +         _8 = Temp { x: const 40_u8 };
-+         _7 = (_8.0: u8);
++         _7 = copy (_8.0: u8);
 +         _6 = Add(move _7, const 2_u8);
           StorageDead(_7);
 -         StorageDead(_6);
@@ -67,7 +67,7 @@
 -         StorageLive(_10);
 -         StorageLive(_11);
 -         _11 = Temp { x: const 40_u8 };
--         _10 = (_11.0: u8);
+-         _10 = copy (_11.0: u8);
 -         _9 = Add(move _10, const 2_u8);
 -         StorageDead(_10);
 -         _8 = use_u8(move _9) -> [return: bb2, unwind continue];
diff --git a/tests/mir-opt/simplify_match.main.GVN.panic-abort.diff b/tests/mir-opt/simplify_match.main.GVN.panic-abort.diff
index 33b36f660cb..9e798cbcac0 100644
--- a/tests/mir-opt/simplify_match.main.GVN.panic-abort.diff
+++ b/tests/mir-opt/simplify_match.main.GVN.panic-abort.diff
@@ -14,9 +14,9 @@
 -         StorageLive(_2);
 +         nop;
           _2 = const false;
--         _1 = _2;
+-         _1 = copy _2;
 -         StorageDead(_2);
--         switchInt(_1) -> [0: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [0: bb2, otherwise: bb1];
 +         _1 = const false;
 +         nop;
 +         switchInt(const false) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/simplify_match.main.GVN.panic-unwind.diff b/tests/mir-opt/simplify_match.main.GVN.panic-unwind.diff
index e5c3adff623..e243ff45ab0 100644
--- a/tests/mir-opt/simplify_match.main.GVN.panic-unwind.diff
+++ b/tests/mir-opt/simplify_match.main.GVN.panic-unwind.diff
@@ -14,9 +14,9 @@
 -         StorageLive(_2);
 +         nop;
           _2 = const false;
--         _1 = _2;
+-         _1 = copy _2;
 -         StorageDead(_2);
--         switchInt(_1) -> [0: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [0: bb2, otherwise: bb1];
 +         _1 = const false;
 +         nop;
 +         switchInt(const false) -> [0: bb2, otherwise: bb1];
diff --git a/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-abort.diff b/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-abort.diff
index ad1a2b300f2..0269c2cba20 100644
--- a/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-abort.diff
+++ b/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-abort.diff
@@ -22,7 +22,7 @@
       bb1: {
           StorageDead(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 +         _3 = const <T as MyTrait>::ASSOC_BOOL;
           switchInt(move _3) -> [0: bb3, otherwise: bb2];
       }
diff --git a/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-unwind.diff b/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-unwind.diff
index 827a292e5d0..1285b8b33ba 100644
--- a/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-unwind.diff
+++ b/tests/mir-opt/single_use_consts.if_const_debug.SingleUseConsts.panic-unwind.diff
@@ -22,7 +22,7 @@
       bb1: {
           StorageDead(_2);
           StorageLive(_3);
--         _3 = _1;
+-         _3 = copy _1;
 +         _3 = const <T as MyTrait>::ASSOC_BOOL;
           switchInt(move _3) -> [0: bb3, otherwise: bb2];
       }
diff --git a/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-abort.diff b/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-abort.diff
index 998b89919d1..354e0988a00 100644
--- a/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-abort.diff
+++ b/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-abort.diff
@@ -8,7 +8,7 @@
       bb0: {
           StorageLive(_1);
 -         _1 = const <T as MyTrait>::ASSOC_INT;
--         switchInt(_1) -> [7: bb3, 42: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [7: bb3, 42: bb2, otherwise: bb1];
 +         nop;
 +         switchInt(const <T as MyTrait>::ASSOC_INT) -> [7: bb3, 42: bb2, otherwise: bb1];
       }
diff --git a/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-unwind.diff b/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-unwind.diff
index 998b89919d1..354e0988a00 100644
--- a/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-unwind.diff
+++ b/tests/mir-opt/single_use_consts.match_const.SingleUseConsts.panic-unwind.diff
@@ -8,7 +8,7 @@
       bb0: {
           StorageLive(_1);
 -         _1 = const <T as MyTrait>::ASSOC_INT;
--         switchInt(_1) -> [7: bb3, 42: bb2, otherwise: bb1];
+-         switchInt(copy _1) -> [7: bb3, 42: bb2, otherwise: bb1];
 +         nop;
 +         switchInt(const <T as MyTrait>::ASSOC_INT) -> [7: bb3, 42: bb2, otherwise: bb1];
       }
diff --git a/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-abort.diff b/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-abort.diff
index 30f66ef6b82..5cf37dc97cb 100644
--- a/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-abort.diff
+++ b/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-abort.diff
@@ -20,7 +20,7 @@
   
       bb1: {
           StorageDead(_2);
--         switchInt(_1) -> [7: bb4, 42: bb3, otherwise: bb2];
+-         switchInt(copy _1) -> [7: bb4, 42: bb3, otherwise: bb2];
 +         switchInt(const <T as MyTrait>::ASSOC_INT) -> [7: bb4, 42: bb3, otherwise: bb2];
       }
   
diff --git a/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-unwind.diff b/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-unwind.diff
index ed12ad4b93e..bdcf086e8d9 100644
--- a/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-unwind.diff
+++ b/tests/mir-opt/single_use_consts.match_const_debug.SingleUseConsts.panic-unwind.diff
@@ -20,7 +20,7 @@
   
       bb1: {
           StorageDead(_2);
--         switchInt(_1) -> [7: bb4, 42: bb3, otherwise: bb2];
+-         switchInt(copy _1) -> [7: bb4, 42: bb3, otherwise: bb2];
 +         switchInt(const <T as MyTrait>::ASSOC_INT) -> [7: bb4, 42: bb3, otherwise: bb2];
       }
   
diff --git a/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir b/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir
index 3a8b457a7a1..4d1eaa6ffe3 100644
--- a/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir
+++ b/tests/mir-opt/slice_drop_shim.core.ptr-drop_in_place.[String].AddMovesForPackedDrops.before.mir
@@ -28,7 +28,7 @@ fn std::ptr::drop_in_place(_1: *mut [String]) -> () {
     }
 
     bb4 (cleanup): {
-        _5 = Eq(_3, _2);
+        _5 = Eq(copy _3, copy _2);
         switchInt(move _5) -> [0: bb3, otherwise: bb2];
     }
 
@@ -39,7 +39,7 @@ fn std::ptr::drop_in_place(_1: *mut [String]) -> () {
     }
 
     bb6: {
-        _7 = Eq(_3, _2);
+        _7 = Eq(copy _3, copy _2);
         switchInt(move _7) -> [0: bb5, otherwise: bb1];
     }
 
diff --git a/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff
index 819f3f86d14..478dacc3276 100644
--- a/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/lifetimes.foo.ScalarReplacementOfAggregates.diff
@@ -75,8 +75,8 @@
 -         _5 = move (_1.0: std::result::Result<std::boxed::Box<dyn std::fmt::Display>, <T as Err>::Err>);
 +         _5 = move _29;
           StorageLive(_6);
--         _6 = (_1.1: u32);
-+         _6 = _30;
+-         _6 = copy (_1.1: u32);
++         _6 = copy _30;
           _7 = discriminant(_5);
           switchInt(move _7) -> [0: bb2, otherwise: bb7];
       }
@@ -171,7 +171,7 @@
       }
   
       bb11: {
-          switchInt(_25) -> [0: bb10, otherwise: bb12];
+          switchInt(copy _25) -> [0: bb10, otherwise: bb12];
       }
   
       bb12: {
diff --git a/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff
index 5d21e793982..4da3eb0ed76 100644
--- a/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.constant.ScalarReplacementOfAggregates.diff
@@ -29,11 +29,11 @@
 +         _4 = move (_1.0: usize);
 +         _5 = move (_1.1: u8);
           StorageLive(_2);
--         _2 = (_1.0: usize);
-+         _2 = _4;
+-         _2 = copy (_1.0: usize);
++         _2 = copy _4;
           StorageLive(_3);
--         _3 = (_1.1: u8);
-+         _3 = _5;
+-         _3 = copy (_1.1: u8);
++         _3 = copy _5;
           _0 = const ();
           StorageDead(_3);
           StorageDead(_2);
diff --git a/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff
index 3621338635e..cfc086d6596 100644
--- a/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.copies.ScalarReplacementOfAggregates.diff
@@ -43,38 +43,38 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = _1;
+-         _2 = copy _1;
 +         StorageLive(_11);
 +         StorageLive(_12);
 +         StorageLive(_13);
 +         StorageLive(_14);
 +         nop;
-+         _11 = (_1.0: u8);
-+         _12 = (_1.1: ());
-+         _13 = (_1.2: &str);
-+         _14 = (_1.3: std::option::Option<isize>);
++         _11 = copy (_1.0: u8);
++         _12 = copy (_1.1: ());
++         _13 = copy (_1.2: &str);
++         _14 = copy (_1.3: std::option::Option<isize>);
 +         nop;
           StorageLive(_3);
--         _3 = (_2.0: u8);
-+         _3 = _11;
+-         _3 = copy (_2.0: u8);
++         _3 = copy _11;
           StorageLive(_4);
--         _4 = (_2.2: &str);
+-         _4 = copy (_2.2: &str);
 -         StorageLive(_5);
--         _5 = _2;
-+         _4 = _13;
+-         _5 = copy _2;
++         _4 = copy _13;
 +         StorageLive(_7);
 +         StorageLive(_8);
 +         StorageLive(_9);
 +         StorageLive(_10);
 +         nop;
-+         _7 = _11;
-+         _8 = _12;
-+         _9 = _13;
-+         _10 = _14;
++         _7 = copy _11;
++         _8 = copy _12;
++         _9 = copy _13;
++         _10 = copy _14;
 +         nop;
           StorageLive(_6);
--         _6 = (_5.1: ());
-+         _6 = _8;
+-         _6 = copy (_5.1: ());
++         _6 = copy _8;
           _0 = const ();
           StorageDead(_6);
 -         StorageDead(_5);
diff --git a/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff
index b5e39e63247..eda884de822 100644
--- a/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.enums.ScalarReplacementOfAggregates.diff
@@ -15,7 +15,7 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = Option::<usize>::Some(move _3);
           StorageDead(_3);
           _4 = discriminant(_2);
@@ -24,8 +24,8 @@
   
       bb1: {
           StorageLive(_5);
-          _5 = ((_2 as Some).0: usize);
-          _0 = _5;
+          _5 = copy ((_2 as Some).0: usize);
+          _0 = copy _5;
           StorageDead(_5);
           goto -> bb3;
       }
diff --git a/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff
index a84048365a4..77c7c1a9012 100644
--- a/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.flat.ScalarReplacementOfAggregates.diff
@@ -49,18 +49,18 @@
           StorageDead(_7);
           StorageDead(_6);
           StorageLive(_1);
--         _1 = (_5.0: u8);
-+         _1 = _8;
+-         _1 = copy (_5.0: u8);
++         _1 = copy _8;
           StorageLive(_2);
--         _2 = (_5.1: ());
-+         _2 = _9;
+-         _2 = copy (_5.1: ());
++         _2 = copy _9;
           StorageLive(_3);
--         _3 = (_5.2: &str);
-+         _3 = _10;
+-         _3 = copy (_5.2: &str);
++         _3 = copy _10;
           StorageLive(_4);
--         _4 = (_5.3: std::option::Option<isize>);
+-         _4 = copy (_5.3: std::option::Option<isize>);
 -         StorageDead(_5);
-+         _4 = _11;
++         _4 = copy _11;
 +         StorageDead(_8);
 +         StorageDead(_9);
 +         StorageDead(_10);
diff --git a/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff
index 304bf2fb1a7..abe7cd78878 100644
--- a/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.ref_copies.ScalarReplacementOfAggregates.diff
@@ -27,23 +27,23 @@
   
       bb0: {
 -         StorageLive(_2);
--         _2 = (*_1);
+-         _2 = copy (*_1);
 +         StorageLive(_5);
 +         StorageLive(_6);
 +         StorageLive(_7);
 +         StorageLive(_8);
 +         nop;
-+         _5 = ((*_1).0: u8);
-+         _6 = ((*_1).1: ());
-+         _7 = ((*_1).2: &str);
-+         _8 = ((*_1).3: std::option::Option<isize>);
++         _5 = copy ((*_1).0: u8);
++         _6 = copy ((*_1).1: ());
++         _7 = copy ((*_1).2: &str);
++         _8 = copy ((*_1).3: std::option::Option<isize>);
 +         nop;
           StorageLive(_3);
--         _3 = (_2.0: u8);
-+         _3 = _5;
+-         _3 = copy (_2.0: u8);
++         _3 = copy _5;
           StorageLive(_4);
--         _4 = (_2.2: &str);
-+         _4 = _7;
+-         _4 = copy (_2.2: &str);
++         _4 = copy _7;
           _0 = const ();
           StorageDead(_4);
           StorageDead(_3);
diff --git a/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff
index bf5c3e3bd03..fe9deabe940 100644
--- a/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.structs.ScalarReplacementOfAggregates.diff
@@ -15,15 +15,15 @@
 +         StorageLive(_5);
 +         nop;
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
 -         _2 = U { _foo: const 0_usize, a: move _3 };
 +         _4 = const 0_usize;
 +         _5 = move _3;
 +         nop;
           StorageDead(_3);
--         _0 = (_2.1: f32);
+-         _0 = copy (_2.1: f32);
 -         StorageDead(_2);
-+         _0 = _5;
++         _0 = copy _5;
 +         StorageDead(_4);
 +         StorageDead(_5);
 +         nop;
diff --git a/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff b/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff
index 2f8dfcc5d63..115f163cda9 100644
--- a/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff
+++ b/tests/mir-opt/sroa/structs.unions.ScalarReplacementOfAggregates.diff
@@ -10,10 +10,10 @@
       bb0: {
           StorageLive(_2);
           StorageLive(_3);
-          _3 = _1;
+          _3 = copy _1;
           _2 = Repr { f: move _3 };
           StorageDead(_3);
-          _0 = (_2.1: u32);
+          _0 = copy (_2.1: u32);
           StorageDead(_2);
           return;
       }
diff --git a/tests/mir-opt/storage_ranges.main.nll.0.mir b/tests/mir-opt/storage_ranges.main.nll.0.mir
index 782efd5acc6..bc2dcfe0a64 100644
--- a/tests/mir-opt/storage_ranges.main.nll.0.mir
+++ b/tests/mir-opt/storage_ranges.main.nll.0.mir
@@ -43,7 +43,7 @@ fn main() -> () {
         StorageLive(_3);
         StorageLive(_4);
         StorageLive(_5);
-        _5 = _1;
+        _5 = copy _1;
         _4 = Option::<i32>::Some(move _5);
         StorageDead(_5);
         _3 = &_4;
diff --git a/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff b/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff
index c0b599e060b..fef708d9962 100644
--- a/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff
+++ b/tests/mir-opt/switch_to_self.test.MatchBranchSimplification.diff
@@ -9,11 +9,11 @@
       }
   
       bb1: {
-          switchInt(_1) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [0: bb1, otherwise: bb2];
       }
   
       bb2: {
-          switchInt(_1) -> [0: bb1, otherwise: bb2];
+          switchInt(copy _1) -> [0: bb1, otherwise: bb2];
       }
   }
   
diff --git a/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-abort.diff b/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-abort.diff
index 44673ea00a9..17c64d4baf0 100644
--- a/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-abort.diff
+++ b/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-abort.diff
@@ -102,7 +102,7 @@
 +     }
 + 
 +     bb14 (cleanup): {
-+         switchInt(_8) -> [0: bb11, otherwise: bb13];
++         switchInt(copy _8) -> [0: bb11, otherwise: bb13];
       }
   }
   
diff --git a/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-unwind.diff
index a6d33a24595..58d8a87986d 100644
--- a/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-unwind.diff
+++ b/tests/mir-opt/tail_call_drops.f.ElaborateDrops.panic-unwind.diff
@@ -103,7 +103,7 @@
 +     }
 + 
 +     bb14 (cleanup): {
-+         switchInt(_8) -> [0: bb11, otherwise: bb13];
++         switchInt(copy _8) -> [0: bb11, otherwise: bb13];
       }
   }
   
diff --git a/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-abort.diff b/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-abort.diff
index c7df2bb2207..1a51601bc56 100644
--- a/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-abort.diff
+++ b/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-abort.diff
@@ -178,7 +178,7 @@
 +     }
 + 
 +     bb31 (cleanup): {
-+         switchInt(_12) -> [0: bb26, otherwise: bb30];
++         switchInt(copy _12) -> [0: bb26, otherwise: bb30];
       }
   }
   
diff --git a/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-unwind.diff b/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-unwind.diff
index c7df2bb2207..1a51601bc56 100644
--- a/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-unwind.diff
+++ b/tests/mir-opt/tail_call_drops.f_with_arg.ElaborateDrops.panic-unwind.diff
@@ -178,7 +178,7 @@
 +     }
 + 
 +     bb31 (cleanup): {
-+         switchInt(_12) -> [0: bb26, otherwise: bb30];
++         switchInt(copy _12) -> [0: bb26, otherwise: bb30];
       }
   }
   
diff --git a/tests/mir-opt/unnamed-fields/field_access.bar.SimplifyCfg-initial.after.mir b/tests/mir-opt/unnamed-fields/field_access.bar.SimplifyCfg-initial.after.mir
index f0311422c17..f1904e5d0f4 100644
--- a/tests/mir-opt/unnamed-fields/field_access.bar.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/unnamed-fields/field_access.bar.SimplifyCfg-initial.after.mir
@@ -15,7 +15,7 @@ fn bar(_1: Bar) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = (_1.0: u8);
+        _3 = copy (_1.0: u8);
         _2 = access::<u8>(move _3) -> [return: bb1, unwind: bb5];
     }
 
@@ -24,7 +24,7 @@ fn bar(_1: Bar) -> () {
         StorageDead(_2);
         StorageLive(_4);
         StorageLive(_5);
-        _5 = ((_1.1: Bar::{anon_adt#0}).0: i8);
+        _5 = copy ((_1.1: Bar::{anon_adt#0}).0: i8);
         _4 = access::<i8>(move _5) -> [return: bb2, unwind: bb5];
     }
 
@@ -33,7 +33,7 @@ fn bar(_1: Bar) -> () {
         StorageDead(_4);
         StorageLive(_6);
         StorageLive(_7);
-        _7 = ((_1.1: Bar::{anon_adt#0}).1: bool);
+        _7 = copy ((_1.1: Bar::{anon_adt#0}).1: bool);
         _6 = access::<bool>(move _7) -> [return: bb3, unwind: bb5];
     }
 
@@ -42,7 +42,7 @@ fn bar(_1: Bar) -> () {
         StorageDead(_6);
         StorageLive(_8);
         StorageLive(_9);
-        _9 = (((_1.2: Bar::{anon_adt#1}).0: Bar::{anon_adt#1}::{anon_adt#0}).0: [u8; 1]);
+        _9 = copy (((_1.2: Bar::{anon_adt#1}).0: Bar::{anon_adt#1}::{anon_adt#0}).0: [u8; 1]);
         _8 = access::<[u8; 1]>(move _9) -> [return: bb4, unwind: bb5];
     }
 
diff --git a/tests/mir-opt/unnamed-fields/field_access.foo.SimplifyCfg-initial.after.mir b/tests/mir-opt/unnamed-fields/field_access.foo.SimplifyCfg-initial.after.mir
index d48a969f06e..c279f590012 100644
--- a/tests/mir-opt/unnamed-fields/field_access.foo.SimplifyCfg-initial.after.mir
+++ b/tests/mir-opt/unnamed-fields/field_access.foo.SimplifyCfg-initial.after.mir
@@ -15,7 +15,7 @@ fn foo(_1: Foo) -> () {
     bb0: {
         StorageLive(_2);
         StorageLive(_3);
-        _3 = (_1.0: u8);
+        _3 = copy (_1.0: u8);
         _2 = access::<u8>(move _3) -> [return: bb1, unwind: bb5];
     }
 
@@ -24,7 +24,7 @@ fn foo(_1: Foo) -> () {
         StorageDead(_2);
         StorageLive(_4);
         StorageLive(_5);
-        _5 = ((_1.1: Foo::{anon_adt#0}).0: i8);
+        _5 = copy ((_1.1: Foo::{anon_adt#0}).0: i8);
         _4 = access::<i8>(move _5) -> [return: bb2, unwind: bb5];
     }
 
@@ -33,7 +33,7 @@ fn foo(_1: Foo) -> () {
         StorageDead(_4);
         StorageLive(_6);
         StorageLive(_7);
-        _7 = ((_1.1: Foo::{anon_adt#0}).1: bool);
+        _7 = copy ((_1.1: Foo::{anon_adt#0}).1: bool);
         _6 = access::<bool>(move _7) -> [return: bb3, unwind: bb5];
     }
 
@@ -42,7 +42,7 @@ fn foo(_1: Foo) -> () {
         StorageDead(_6);
         StorageLive(_8);
         StorageLive(_9);
-        _9 = (((_1.2: Foo::{anon_adt#1}).0: Foo::{anon_adt#1}::{anon_adt#0}).0: [u8; 1]);
+        _9 = copy (((_1.2: Foo::{anon_adt#1}).0: Foo::{anon_adt#1}::{anon_adt#0}).0: [u8; 1]);
         _8 = access::<[u8; 1]>(move _9) -> [return: bb4, unwind: bb5];
     }
 
diff --git a/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-abort.diff b/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-abort.diff
index 1e1ddfae0eb..17ddce0cdf8 100644
--- a/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-abort.diff
+++ b/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-abort.diff
@@ -20,7 +20,7 @@
       bb1: {
           _2 = discriminant(_1);
 -         switchInt(move _2) -> [1: bb3, otherwise: bb2];
-+         _5 = Ne(_2, const 1_isize);
++         _5 = Ne(copy _2, const 1_isize);
 +         assume(move _5);
 +         goto -> bb2;
       }
diff --git a/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-unwind.diff b/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-unwind.diff
index 809d24aa15a..2f78092f5bd 100644
--- a/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-unwind.diff
+++ b/tests/mir-opt/unreachable.as_match.UnreachablePropagation.panic-unwind.diff
@@ -20,7 +20,7 @@
       bb1: {
           _2 = discriminant(_1);
 -         switchInt(move _2) -> [1: bb3, otherwise: bb2];
-+         _5 = Ne(_2, const 1_isize);
++         _5 = Ne(copy _2, const 1_isize);
 +         assume(move _5);
 +         goto -> bb2;
       }
diff --git a/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-abort.diff b/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-abort.diff
index 61959732720..2ce37c4422b 100644
--- a/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-abort.diff
+++ b/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-abort.diff
@@ -26,7 +26,7 @@
       bb1: {
           _2 = discriminant(_1);
 -         switchInt(move _2) -> [1: bb2, otherwise: bb6];
-+         _8 = Ne(_2, const 1_isize);
++         _8 = Ne(copy _2, const 1_isize);
 +         assume(move _8);
 +         goto -> bb6;
       }
diff --git a/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-unwind.diff b/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-unwind.diff
index 476e2f55994..2dfba10c37d 100644
--- a/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-unwind.diff
+++ b/tests/mir-opt/unreachable.if_let.UnreachablePropagation.panic-unwind.diff
@@ -26,7 +26,7 @@
       bb1: {
           _2 = discriminant(_1);
 -         switchInt(move _2) -> [1: bb2, otherwise: bb6];
-+         _8 = Ne(_2, const 1_isize);
++         _8 = Ne(copy _2, const 1_isize);
 +         assume(move _8);
 +         goto -> bb6;
       }
diff --git a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff
index 11d7924e736..ba268832ca3 100644
--- a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff
+++ b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-abort.diff
@@ -35,9 +35,9 @@
           _4 = move ((_2 as Some).0: Empty);
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         switchInt(move _6) -> [0: bb4, otherwise: bb3];
-+         _8 = Ne(_6, const false);
++         _8 = Ne(copy _6, const false);
 +         assume(move _8);
 +         goto -> bb3;
       }
diff --git a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff
index df6f5609fbf..f057f776470 100644
--- a/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff
+++ b/tests/mir-opt/unreachable_diverging.main.UnreachablePropagation.panic-unwind.diff
@@ -35,9 +35,9 @@
           _4 = move ((_2 as Some).0: Empty);
           StorageLive(_5);
           StorageLive(_6);
-          _6 = _1;
+          _6 = copy _1;
 -         switchInt(move _6) -> [0: bb4, otherwise: bb3];
-+         _8 = Ne(_6, const false);
++         _8 = Ne(copy _6, const false);
 +         assume(move _8);
 +         goto -> bb3;
       }
diff --git a/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff b/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff
index 4cd6d3f5683..17e01f38f4e 100644
--- a/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff
+++ b/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-abort.diff
@@ -29,7 +29,7 @@
       }
   
       bb2: {
-          switchInt(((_2 as A).0: i32)) -> [1: bb6, 2: bb5, otherwise: bb1];
+          switchInt(copy ((_2 as A).0: i32)) -> [1: bb6, 2: bb5, otherwise: bb1];
       }
   
       bb3: {
diff --git a/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff b/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff
index 4cd6d3f5683..17e01f38f4e 100644
--- a/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff
+++ b/tests/mir-opt/unreachable_enum_branching.otherwise_t4_unreachable_default_2.UnreachableEnumBranching.panic-unwind.diff
@@ -29,7 +29,7 @@
       }
   
       bb2: {
-          switchInt(((_2 as A).0: i32)) -> [1: bb6, 2: bb5, otherwise: bb1];
+          switchInt(copy ((_2 as A).0: i32)) -> [1: bb6, 2: bb5, otherwise: bb1];
       }
   
       bb3: {