- let id = tcx.hir.as_local_node_id(def_id).unwrap();
- let src = MirSource::from_node(tcx, id);
+fn run_map_pass_task<'a, 'tcx, T: MirPass<'tcx>>(tcx: TyCtxt<'a, 'tcx, 'tcx>,
+ pass: &T,
+ def_id: DefId) {
+ let _task = tcx.dep_graph.in_task(DepNode::Mir(def_id));
+ let mir = &mut tcx.mir(def_id).borrow_mut();
+ let id = tcx.hir.as_local_node_id(def_id).expect("mir source requires local def-id");
+ let source = MirSource::from_node(tcx, id);
+ MirPass::run_pass(pass, tcx, source, mir);
+
+ for (i, mir) in mir.promoted.iter_enumerated_mut() {
+ let source = MirSource::Promoted(id, i);
+ MirPass::run_pass(pass, tcx, source, mir);
+ }
+}