@@ -14,7 +14,7 @@ use crate::builder_spirv::{BuilderCursor, SpirvValue, SpirvValueExt};
1414use crate :: codegen_cx:: CodegenCx ;
1515use crate :: spirv_type:: SpirvType ;
1616use rspirv:: spirv:: { self , Word } ;
17- use rustc_codegen_ssa:: mir:: operand:: OperandValue ;
17+ use rustc_codegen_ssa:: mir:: operand:: { OperandRef , OperandValue } ;
1818use rustc_codegen_ssa:: mir:: place:: PlaceRef ;
1919use rustc_codegen_ssa:: traits:: {
2020 AbiBuilderMethods , ArgAbiMethods , BackendTypes , BuilderMethods , CoverageInfoBuilderMethods ,
@@ -301,7 +301,7 @@ impl<'a, 'tcx> ArgAbiMethods<'tcx> for Builder<'a, 'tcx> {
301301 match arg_abi. mode {
302302 PassMode :: Ignore => { }
303303 PassMode :: Direct ( _) => {
304- OperandValue :: Immediate ( next ( self , idx) ) . store ( self , dst) ;
304+ self . store_arg ( arg_abi , next ( self , idx) , dst) ;
305305 }
306306 PassMode :: Pair ( ..) => {
307307 OperandValue :: Pair ( next ( self , idx) , next ( self , idx) ) . store ( self , dst) ;
@@ -323,7 +323,9 @@ impl<'a, 'tcx> ArgAbiMethods<'tcx> for Builder<'a, 'tcx> {
323323 match arg_abi. mode {
324324 PassMode :: Ignore => { }
325325 PassMode :: Direct ( _) | PassMode :: Pair ( ..) => {
326- OperandValue :: Immediate ( val) . store ( self , dst) ;
326+ OperandRef :: from_immediate_or_packed_pair ( self , val, arg_abi. layout )
327+ . val
328+ . store ( self , dst) ;
327329 }
328330 PassMode :: Cast { .. } | PassMode :: Indirect { .. } => span_bug ! (
329331 self . span( ) ,
0 commit comments