diff options
| author | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-04-22 17:03:48 +0000 |
|---|---|---|
| committer | bjorn3 <17426603+bjorn3@users.noreply.github.com> | 2024-04-22 17:03:48 +0000 |
| commit | 569df1dad3dabb0534059aa7d72e68ed1879127a (patch) | |
| tree | 896e70f37259297bf18cb9db0fb34598b3af1d35 | |
| parent | 8bf1687879dded8a91b844bac2ff66cd5609d024 (diff) | |
| download | rust-569df1dad3dabb0534059aa7d72e68ed1879127a.tar.gz rust-569df1dad3dabb0534059aa7d72e68ed1879127a.zip | |
Inline CValue::pointer_from_data_and_meta
It only has a single use and doesn't need access to CValue internals.
| -rw-r--r-- | src/base.rs | 8 | ||||
| -rw-r--r-- | src/value_and_place.rs | 18 |
2 files changed, 7 insertions, 19 deletions
diff --git a/src/base.rs b/src/base.rs index 4c53a9db7bd..e3d050df4cd 100644 --- a/src/base.rs +++ b/src/base.rs @@ -825,7 +825,13 @@ fn codegen_stmt<'tcx>( }; let data = codegen_operand(fx, data); let meta = codegen_operand(fx, meta); - let ptr_val = CValue::pointer_from_data_and_meta(fx, data, meta, layout); + assert!(data.layout().ty.is_unsafe_ptr()); + assert!(layout.ty.is_unsafe_ptr()); + let ptr_val = if meta.layout().is_zst() { + data.cast_pointer_to(layout) + } else { + CValue::by_val_pair(data.load_scalar(fx), meta.load_scalar(fx), layout) + }; lval.write_cvalue(fx, ptr_val); } Rvalue::Aggregate(ref kind, ref operands) => { diff --git a/src/value_and_place.rs b/src/value_and_place.rs index eeae98ed04d..dded6df7771 100644 --- a/src/value_and_place.rs +++ b/src/value_and_place.rs @@ -95,24 +95,6 @@ impl<'tcx> CValue<'tcx> { CValue(CValueInner::ByValPair(value, extra), layout) } - /// For `AggregateKind::RawPtr`, create a pointer from its parts. - /// - /// Panics if the `layout` is not a raw pointer. - pub(crate) fn pointer_from_data_and_meta( - fx: &mut FunctionCx<'_, '_, 'tcx>, - data: CValue<'tcx>, - meta: CValue<'tcx>, - layout: TyAndLayout<'tcx>, - ) -> CValue<'tcx> { - assert!(data.layout().ty.is_unsafe_ptr()); - assert!(layout.ty.is_unsafe_ptr()); - if meta.layout().is_zst() { - data.cast_pointer_to(layout) - } else { - CValue::by_val_pair(data.load_scalar(fx), meta.load_scalar(fx), layout) - } - } - pub(crate) fn layout(&self) -> TyAndLayout<'tcx> { self.1 } |
