]>
Commit | Line | Data |
---|---|---|
1 | use crate::abi::call::{ArgAbi, FnAbi}; | |
2 | ||
3 | fn classify_ret<Ty>(ret: &mut ArgAbi<'_, Ty>) { | |
4 | if ret.layout.is_aggregate() { | |
5 | ret.make_indirect(); | |
6 | } else { | |
7 | ret.extend_integer_width_to(32); | |
8 | } | |
9 | } | |
10 | ||
11 | fn classify_arg<Ty>(arg: &mut ArgAbi<'_, Ty>) { | |
12 | if arg.layout.is_aggregate() { | |
13 | arg.make_indirect(); | |
14 | } else { | |
15 | arg.extend_integer_width_to(32); | |
16 | } | |
17 | } | |
18 | ||
19 | pub fn compute_abi_info<Ty>(fn_abi: &mut FnAbi<'_, Ty>) { | |
20 | if !fn_abi.ret.is_ignore() { | |
21 | classify_ret(&mut fn_abi.ret); | |
22 | } | |
23 | ||
24 | for arg in &mut fn_abi.args { | |
25 | if arg.is_ignore() { continue; } | |
26 | classify_arg(arg); | |
27 | } | |
28 | } |