5 use crate::abi::pass_mode::*;
8 pub fn add_args_header_comment(fx: &mut FunctionCx<impl Backend>) {
9 fx.add_global_comment(format!(
10 "kind loc.idx param pass mode ty"
14 pub fn add_arg_comment<'tcx>(
15 fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
18 local_field: Option<usize>,
19 params: EmptySinglePair<Value>,
23 let local_field = if let Some(local_field) = local_field {
24 Cow::Owned(format!(".{}", local_field))
28 let params = match params {
29 Empty => Cow::Borrowed("-"),
30 Single(param) => Cow::Owned(format!("= {:?}", param)),
31 Pair(param_a, param_b) => Cow::Owned(format!("= {:?}, {:?}", param_a, param_b)),
33 let pass_mode = format!("{:?}", pass_mode);
34 fx.add_global_comment(format!(
35 "{kind:5}{local:>3}{local_field:<5} {params:10} {pass_mode:36} {ty:?}",
37 local = format!("{:?}", local),
38 local_field = local_field,
40 pass_mode = pass_mode,
45 pub fn add_locals_header_comment(fx: &mut FunctionCx<impl Backend>) {
46 fx.add_global_comment(String::new());
47 fx.add_global_comment(format!(
48 "kind local ty size align (abi,pref)"
52 pub fn add_local_place_comments<'tcx>(
53 fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
57 let TyLayout { ty, details } = place.layout();
58 let ty::layout::LayoutDetails {
66 match *place.inner() {
67 CPlaceInner::Var(var) => {
68 assert_eq!(local, var);
69 fx.add_global_comment(format!(
70 "ssa {:5} {:20} {:4}b {}, {}",
71 format!("{:?}", local),
78 CPlaceInner::Stack(stack_slot) => fx.add_entity_comment(
81 "{:?}: {:?} size={} align={},{}",
89 CPlaceInner::NoPlace => fx.add_global_comment(format!(
90 "zst {:5} {:20} {:4}b {}, {}",
91 format!("{:?}", local),
97 CPlaceInner::Addr(addr, None) => fx.add_global_comment(format!(
98 "reuse {:5} {:20} {:4}b {}, {} storage={}",
99 format!("{:?}", local),
106 CPlaceInner::Addr(_, Some(_)) => unreachable!(),