size: layout.size.bytes() as u32,
offset: None,
});
- fx.bcx.ins().stack_store(value, stack_slot, 0);
- fx.bcx
+ let addr = fx.bcx
.ins()
- .stack_addr(fx.module.pointer_type(), stack_slot, 0)
+ .stack_addr(fx.module.pointer_type(), stack_slot, 0);
+ fx.bcx.ins().store(MemFlags::new(), value, addr, 0);
+ addr
}
CValue::ByValPair(value, extra, layout) => {
let stack_slot = fx.bcx.create_stack_slot(StackSlotData {
}
CPlace::Addr(base, extra, layout) => {
let (field_ptr, field_layout) = codegen_field(fx, base, layout, field);
+ let extra = if field_layout.is_unsized() {
+ assert!(extra.is_some());
+ extra
+ } else {
+ None
+ };
CPlace::Addr(field_ptr, extra, field_layout)
}
}
pub struct FunctionCx<'a, 'tcx: 'a, B: Backend + 'a> {
pub tcx: TyCtxt<'a, 'tcx, 'tcx>,
+ // FIXME get isa from Module
+ pub isa: &'a isa::TargetIsa,
pub module: &'a mut Module<B>,
pub instance: Instance<'tcx>,
pub mir: &'tcx Mir<'tcx>,