Skip to content

Commit

Permalink
Rollup merge of rust-lang#119100 - celinval:smir-body-span, r=compile…
Browse files Browse the repository at this point in the history
…r-errors

Add the function body span to StableMIR

We were missing the body span, which differs from the function definition span, since it covers the entire function body.

r? `@ouz-a`
  • Loading branch information
matthiaskrgr authored Dec 19, 2023
2 parents 1333632 + 36bb79f commit 739364b
Show file tree
Hide file tree
Showing 3 changed files with 9 additions and 2 deletions.
1 change: 1 addition & 0 deletions compiler/rustc_smir/src/rustc_smir/convert/mir.rs
Original file line number Diff line number Diff line change
Expand Up @@ -37,6 +37,7 @@ impl<'tcx> Stable<'tcx> for mir::Body<'tcx> {
self.arg_count,
self.var_debug_info.iter().map(|info| info.stable(tables)).collect(),
self.spread_arg.stable(tables),
self.span.stable(tables),
)
}
}
Expand Down
6 changes: 5 additions & 1 deletion compiler/stable_mir/src/mir/body.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,9 @@ pub struct Body {
///
/// This is used for the "rust-call" ABI such as closures.
pub(super) spread_arg: Option<Local>,

/// The span that covers the entire function body.
pub span: Span,
}

pub type BasicBlockIdx = usize;
Expand All @@ -42,14 +45,15 @@ impl Body {
arg_count: usize,
var_debug_info: Vec<VarDebugInfo>,
spread_arg: Option<Local>,
span: Span,
) -> Self {
// If locals doesn't contain enough entries, it can lead to panics in
// `ret_local`, `arg_locals`, and `inner_locals`.
assert!(
locals.len() > arg_count,
"A Body must contain at least a local for the return value and each of the function's arguments"
);
Self { blocks, locals, arg_count, var_debug_info, spread_arg }
Self { blocks, locals, arg_count, var_debug_info, spread_arg, span }
}

/// Return local that holds this function's return value.
Expand Down
4 changes: 3 additions & 1 deletion compiler/stable_mir/src/mir/visit.rs
Original file line number Diff line number Diff line change
Expand Up @@ -133,7 +133,7 @@ pub trait MirVisitor {
}

fn super_body(&mut self, body: &Body) {
let Body { blocks, locals: _, arg_count, var_debug_info, spread_arg: _ } = body;
let Body { blocks, locals: _, arg_count, var_debug_info, spread_arg: _, span } = body;

for bb in blocks {
self.visit_basic_block(bb);
Expand All @@ -153,6 +153,8 @@ pub trait MirVisitor {
for info in var_debug_info.iter() {
self.visit_var_debug_info(info);
}

self.visit_span(span)
}

fn super_basic_block(&mut self, bb: &BasicBlock) {
Expand Down

0 comments on commit 739364b

Please sign in to comment.