@@ -11,7 +11,7 @@ use rustc_codegen_ssa::base::wants_msvc_seh;
1111use rustc_codegen_ssa:: common:: IntPredicate ;
1212use rustc_codegen_ssa:: errors:: InvalidMonomorphization ;
1313use rustc_codegen_ssa:: mir:: operand:: { OperandRef , OperandValue } ;
14- use rustc_codegen_ssa:: mir:: place:: PlaceRef ;
14+ use rustc_codegen_ssa:: mir:: place:: { PlaceRef , PlaceValue } ;
1515use rustc_codegen_ssa:: traits:: {
1616 ArgAbiMethods , BuilderMethods , ConstMethods , IntrinsicCallMethods ,
1717} ;
@@ -502,7 +502,7 @@ impl<'gcc, 'tcx> ArgAbiExt<'gcc, 'tcx> for ArgAbi<'tcx, Ty<'tcx>> {
502502 return ;
503503 }
504504 if self . is_sized_indirect ( ) {
505- OperandValue :: Ref ( val, None , self . layout . align . abi ) . store ( bx, dst)
505+ OperandValue :: Ref ( PlaceValue :: new_sized ( val, self . layout . align . abi ) ) . store ( bx, dst)
506506 } else if self . is_unsized_indirect ( ) {
507507 bug ! ( "unsized `ArgAbi` must be handled through `store_fn_arg`" ) ;
508508 } else if let PassMode :: Cast { ref cast, .. } = self . mode {
@@ -571,7 +571,12 @@ impl<'gcc, 'tcx> ArgAbiExt<'gcc, 'tcx> for ArgAbi<'tcx, Ty<'tcx>> {
571571 OperandValue :: Pair ( next ( ) , next ( ) ) . store ( bx, dst) ;
572572 }
573573 PassMode :: Indirect { meta_attrs : Some ( _) , .. } => {
574- OperandValue :: Ref ( next ( ) , Some ( next ( ) ) , self . layout . align . abi ) . store ( bx, dst) ;
574+ let place_val = PlaceValue {
575+ llval : next ( ) ,
576+ llextra : Some ( next ( ) ) ,
577+ align : self . layout . align . abi ,
578+ } ;
579+ OperandValue :: Ref ( place_val) . store ( bx, dst) ;
575580 }
576581 PassMode :: Direct ( _)
577582 | PassMode :: Indirect { meta_attrs : None , .. }
0 commit comments