diff options
| author | Gary Guo <gary@garyguo.net> | 2022-10-13 16:44:31 +0100 |
|---|---|---|
| committer | Gary Guo <gary@garyguo.net> | 2022-10-13 16:44:47 +0100 |
| commit | de0396c7180f8e36165c3fefb9325b0ec1bfb5a2 (patch) | |
| tree | c43eca07016e503d80a157771e3bab6f74f214b5 | |
| parent | 4891d57f7aab37b5d6a84f2901c0bb8903111d53 (diff) | |
| download | rust-de0396c7180f8e36165c3fefb9325b0ec1bfb5a2.tar.gz rust-de0396c7180f8e36165c3fefb9325b0ec1bfb5a2.zip | |
Ensure enum cast moves
| -rw-r--r-- | compiler/rustc_mir_build/src/build/expr/as_rvalue.rs | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs b/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs index 35a00da8d38..3dafdcb7887 100644 --- a/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs +++ b/compiler/rustc_mir_build/src/build/expr/as_rvalue.rs @@ -197,13 +197,13 @@ impl<'a, 'tcx> Builder<'a, 'tcx> { // create all the steps directly in MIR with operations all backends need to support anyway. let (source, ty) = if let ty::Adt(adt_def, ..) = source.ty.kind() && adt_def.is_enum() { let discr_ty = adt_def.repr().discr_type().to_ty(this.tcx); - let place = unpack!(block = this.as_place(block, source)); + let temp = unpack!(block = this.as_temp(block, scope, source, Mutability::Not)); let discr = this.temp(discr_ty, source.span); this.cfg.push_assign( block, source_info, discr, - Rvalue::Discriminant(place), + Rvalue::Discriminant(temp.into()), ); (Operand::Move(discr), discr_ty) |
