5 use crate::abi::pass_mode::*;
8 pub(super) 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(super) fn add_arg_comment<'tcx>(
15 fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
17 local: Option<mir::Local>,
18 local_field: Option<usize>,
19 params: EmptySinglePair<Value>,
23 let local = if let Some(local) = local {
24 Cow::Owned(format!("{:?}", local))
28 let local_field = if let Some(local_field) = local_field {
29 Cow::Owned(format!(".{}", local_field))
34 let params = match params {
35 Empty => Cow::Borrowed("-"),
36 Single(param) => Cow::Owned(format!("= {:?}", param)),
37 Pair(param_a, param_b) => Cow::Owned(format!("= {:?}, {:?}", param_a, param_b)),
40 let pass_mode = format!("{:?}", pass_mode);
41 fx.add_global_comment(format!(
42 "{kind:5}{local:>3}{local_field:<5} {params:10} {pass_mode:36} {ty:?}",
45 local_field = local_field,
47 pass_mode = pass_mode,
52 pub(super) fn add_locals_header_comment(fx: &mut FunctionCx<impl Backend>) {
53 fx.add_global_comment(String::new());
54 fx.add_global_comment(format!(
55 "kind local ty size align (abi,pref)"
59 pub(super) fn add_local_place_comments<'tcx>(
60 fx: &mut FunctionCx<'_, 'tcx, impl Backend>,
64 let TyAndLayout { ty, layout } = place.layout();
65 let ty::layout::Layout {
74 let (kind, extra) = match *place.inner() {
75 CPlaceInner::Var(var) => {
76 assert_eq!(local, var);
77 ("ssa", std::borrow::Cow::Borrowed(""))
79 CPlaceInner::NoPlace => ("zst", "".into()),
80 CPlaceInner::Addr(ptr, meta) => {
81 let meta = if let Some(meta) = meta {
82 Cow::Owned(format!(",meta={}", meta))
86 match ptr.base_and_offset() {
87 (crate::pointer::PointerBase::Addr(addr), offset) => {
88 ("reuse", format!("storage={}{}{}", addr, offset, meta).into())
90 (crate::pointer::PointerBase::Stack(stack_slot), offset) => {
91 ("stack", format!("storage={}{}{}", stack_slot, offset, meta).into())
97 fx.add_global_comment(format!(
98 "{:<5} {:5} {:30} {:4}b {}, {}{}{}",
100 format!("{:?}", local),
105 if extra.is_empty() { "" } else { " " },