@@ -16,9 +16,9 @@ use tracing::{debug, instrument};
16
16
use super :: place:: { PlaceRef , PlaceValue } ;
17
17
use super :: rvalue:: transmute_scalar;
18
18
use super :: { FunctionCx , LocalRef } ;
19
+ use crate :: MemFlags ;
19
20
use crate :: common:: IntPredicate ;
20
21
use crate :: traits:: * ;
21
- use crate :: { MemFlags , size_of_val} ;
22
22
23
23
/// The representation of a Rust value. The enum variant is in fact
24
24
/// uniquely determined by the value's type, but is kept as a
@@ -861,44 +861,6 @@ impl<'a, 'tcx, V: CodegenObject> OperandValue<V> {
861
861
}
862
862
}
863
863
}
864
-
865
- pub fn store_unsized < Bx : BuilderMethods < ' a , ' tcx , Value = V > > (
866
- self ,
867
- bx : & mut Bx ,
868
- indirect_dest : PlaceRef < ' tcx , V > ,
869
- ) {
870
- debug ! ( "OperandRef::store_unsized: operand={:?}, indirect_dest={:?}" , self , indirect_dest) ;
871
- // `indirect_dest` must have `*mut T` type. We extract `T` out of it.
872
- let unsized_ty = indirect_dest
873
- . layout
874
- . ty
875
- . builtin_deref ( true )
876
- . unwrap_or_else ( || bug ! ( "indirect_dest has non-pointer type: {:?}" , indirect_dest) ) ;
877
-
878
- let OperandValue :: Ref ( PlaceValue { llval : llptr, llextra : Some ( llextra) , .. } ) = self
879
- else {
880
- bug ! ( "store_unsized called with a sized value (or with an extern type)" )
881
- } ;
882
-
883
- // Allocate an appropriate region on the stack, and copy the value into it. Since alloca
884
- // doesn't support dynamic alignment, we allocate an extra align - 1 bytes, and align the
885
- // pointer manually.
886
- let ( size, align) = size_of_val:: size_and_align_of_dst ( bx, unsized_ty, Some ( llextra) ) ;
887
- let one = bx. const_usize ( 1 ) ;
888
- let align_minus_1 = bx. sub ( align, one) ;
889
- let size_extra = bx. add ( size, align_minus_1) ;
890
- let min_align = Align :: ONE ;
891
- let alloca = bx. dynamic_alloca ( size_extra, min_align) ;
892
- let address = bx. ptrtoint ( alloca, bx. type_isize ( ) ) ;
893
- let neg_address = bx. neg ( address) ;
894
- let offset = bx. and ( neg_address, align_minus_1) ;
895
- let dst = bx. inbounds_ptradd ( alloca, offset) ;
896
- bx. memcpy ( dst, min_align, llptr, min_align, size, MemFlags :: empty ( ) ) ;
897
-
898
- // Store the allocated region and the extra to the indirect place.
899
- let indirect_operand = OperandValue :: Pair ( dst, llextra) ;
900
- indirect_operand. store ( bx, indirect_dest) ;
901
- }
902
864
}
903
865
904
866
impl < ' a , ' tcx , Bx : BuilderMethods < ' a , ' tcx > > FunctionCx < ' a , ' tcx , Bx > {
0 commit comments