}
match &bb.terminator().kind {
- TerminatorKind::Call { destination, .. } => {
+ TerminatorKind::Call {
+ destination,
+ func,
+ args,
+ ..
+ } => {
if let Some((dest_place, _dest_bb)) = destination {
- let dest_layout = fx
- .layout_of(fx.monomorphize(&dest_place.ty(&fx.mir.local_decls, fx.tcx).ty));
- if !crate::abi::can_return_to_ssa_var(fx.tcx, dest_layout) {
+ if !crate::abi::can_return_to_ssa_var(fx, func, args) {
not_ssa(&mut flag_map, dest_place.local)
}
}