diff --git a/src/abi.rs b/src/abi.rs index 69e33175c77..cd250d77c2f 100644 --- a/src/abi.rs +++ b/src/abi.rs @@ -108,9 +108,8 @@ pub fn codegen_call<'a, 'tcx: 'a>( args .into_iter() .map(|arg| { - let ty = arg.ty(&fx.mir.local_decls, fx.tcx); let arg = ::base::trans_operand(fx, arg); - if let Some(_) = fx.cton_type(ty) { + if let Some(_) = fx.cton_type(arg.layout().ty) { arg.load_value(fx) } else { arg.force_stack(fx) diff --git a/src/base.rs b/src/base.rs index 773ba27dc71..a12c785a1bf 100644 --- a/src/base.rs +++ b/src/base.rs @@ -185,6 +185,7 @@ fn trans_stmt<'a, 'tcx: 'a>(fx: &mut FunctionCx<'a, 'tcx>, stmt: &Statement<'tcx match layout.variants { layout::Variants::Single { index } => { assert_eq!(index, *variant_index); + fx.bcx.ins().nop(); } layout::Variants::Tagged { .. } => { let ptr = place.place_field(fx, mir::Field::new(0)); @@ -212,6 +213,8 @@ fn trans_stmt<'a, 'tcx: 'a>(fx: &mut FunctionCx<'a, 'tcx>, stmt: &Statement<'tcx CValue::const_val(fx, niche.layout().ty, niche_value as u64 as i64) }; niche.write_cvalue(fx, niche_llval); + } else { + fx.bcx.ins().nop(); } } }