| use rustc_index::bit_set::DenseBitSet; | |
| use rustc_middle::mir::visit::*; | |
| use rustc_middle::mir::*; | |
| /// Return the set of locals that appear in debuginfo. | |
| pub fn debuginfo_locals(body: &Body<'_>) -> DenseBitSet<Local> { | |
| let mut visitor = DebuginfoLocals(DenseBitSet::new_empty(body.local_decls.len())); | |
| for debuginfo in body.var_debug_info.iter() { | |
| visitor.visit_var_debug_info(debuginfo); | |
| } | |
| visitor.0 | |
| } | |
| struct DebuginfoLocals(DenseBitSet<Local>); | |
| impl Visitor<'_> for DebuginfoLocals { | |
| fn visit_local(&mut self, local: Local, _: PlaceContext, _: Location) { | |
| self.0.insert(local); | |
| } | |
| } |