From 569df1dad3dabb0534059aa7d72e68ed1879127a Mon Sep 17 00:00:00 2001 From: bjorn3 <17426603+bjorn3@users.noreply.github.com> Date: Mon, 22 Apr 2024 17:03:48 +0000 Subject: [PATCH] Inline CValue::pointer_from_data_and_meta It only has a single use and doesn't need access to CValue internals. --- src/base.rs | 8 +++++++- 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 }