diff options
| author | bors <bors@rust-lang.org> | 2022-07-13 14:32:33 +0000 |
|---|---|---|
| committer | bors <bors@rust-lang.org> | 2022-07-13 14:32:33 +0000 |
| commit | 42bd138126b0a9d38d65bc9973e72de3c5b6c37f (patch) | |
| tree | 5131b9e992cc222b6d221be7bab4351c72f028f3 /compiler/rustc_codegen_cranelift | |
| parent | ca4e39400ef33198e2715973d1c67a1d3cee15e7 (diff) | |
| parent | b4c3a2af7ba0199e99de8ef64a3b112824efebb6 (diff) | |
| download | rust-42bd138126b0a9d38d65bc9973e72de3c5b6c37f.tar.gz rust-42bd138126b0a9d38d65bc9973e72de3c5b6c37f.zip | |
Auto merge of #98145 - ouz-a:some_branch, r=oli-obk
Pull Derefer before ElaborateDrops _Follow up work to #97025 #96549 #96116 #95887 #95649_ This moves `Derefer` before `ElaborateDrops` and creates a new `Rvalue` called `VirtualRef` that allows us to bypass many constraints for `DerefTemp`. r? `@oli-obk`
Diffstat (limited to 'compiler/rustc_codegen_cranelift')
| -rw-r--r-- | compiler/rustc_codegen_cranelift/src/base.rs | 5 |
1 files changed, 5 insertions, 0 deletions
diff --git a/compiler/rustc_codegen_cranelift/src/base.rs b/compiler/rustc_codegen_cranelift/src/base.rs index f71d749df62..63cd4d6de4c 100644 --- a/compiler/rustc_codegen_cranelift/src/base.rs +++ b/compiler/rustc_codegen_cranelift/src/base.rs @@ -503,6 +503,11 @@ fn codegen_stmt<'tcx>( let val = codegen_operand(fx, operand); lval.write_cvalue(fx, val); } + Rvalue::CopyForDeref(place) => { + let cplace = codegen_place(fx, place); + let val = cplace.to_cvalue(fx); + lval.write_cvalue(fx, val) + } Rvalue::Ref(_, _, place) | Rvalue::AddressOf(_, place) => { let place = codegen_place(fx, place); let ref_ = place.place_ref(fx, lval.layout()); |
