Skip to content

Commit d5d1603

Browse files
Don't collect calls we don't need
1 parent d799f27 commit d5d1603

File tree

1 file changed

+6
-2
lines changed

1 file changed

+6
-2
lines changed

src/librustc_mir/lints.rs

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use rustc_hir::def_id::{DefId, LocalDefId};
33
use rustc_hir::intravisit::FnKind;
44
use rustc_index::vec::IndexVec;
55
use rustc_middle::hir::map::blocks::FnLikeNode;
6-
use rustc_middle::mir::{BasicBlock, Body, TerminatorKind, START_BLOCK};
6+
use rustc_middle::mir::{self, BasicBlock, Body, TerminatorKind, START_BLOCK};
77
use rustc_middle::ty::subst::InternalSubsts;
88
use rustc_middle::ty::{self, AssocItem, AssocItemContainer, Instance, TyCtxt};
99
use rustc_session::lint::builtin::UNCONDITIONAL_RECURSION;
@@ -433,7 +433,11 @@ fn collect_outgoing_calls<'a, 'tcx>(
433433
tcx: TyCtxt<'tcx>,
434434
body: &'a Body<'tcx>,
435435
) -> impl Iterator<Item = (BasicBlock, Callee<'tcx>, Span)> + 'a {
436-
body.basic_blocks().iter_enumerated().filter_map(move |(bb, data)| {
436+
mir::traversal::preorder(body).filter_map(move |(bb, data)| {
437+
if data.is_cleanup {
438+
return None;
439+
}
440+
437441
if let TerminatorKind::Call { func, .. } = &data.terminator().kind {
438442
let func_ty = func.ty(body, tcx);
439443
if let ty::FnDef(def_id, substs) = func_ty.kind {

0 commit comments

Comments
 (0)