Skip to content

Commit 673081f

Browse files
committed
Stop register_def of target of extern_spec_fn
1 parent af7cd99 commit 673081f

1 file changed

Lines changed: 13 additions & 2 deletions

File tree

src/analyze/crate_.rs

Lines changed: 13 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -60,11 +60,22 @@ impl<'tcx, 'ctx> Analyzer<'tcx, 'ctx> {
6060
}
6161

6262
fn refine_local_defs(&mut self) {
63+
let mut keys = self.tcx.mir_keys(()).clone();
6364
for local_def_id in self.tcx.mir_keys(()) {
64-
if self.tcx.def_kind(*local_def_id).is_fn_like() {
65-
self.refine_fn_def(*local_def_id);
65+
let analyzer = self.ctx.local_def_analyzer(*local_def_id);
66+
if analyzer.is_annotated_as_extern_spec_fn() {
67+
if let Some(target_def_id) = analyzer.extern_spec_fn_target_def_id().as_local() {
68+
self.skip_analysis.insert(local_target_def_id);
69+
keys.swap_remove(&target_def_id);
70+
}
71+
}
72+
if !self.tcx.def_kind(*local_def_id).is_fn_like() {
73+
keys.swap_remove(local_def_id);
6674
}
6775
}
76+
for local_def_id in &keys {
77+
self.refine_fn_def(*local_def_id);
78+
}
6879
}
6980

7081
#[tracing::instrument(skip(self), fields(def_id = %self.tcx.def_path_str(local_def_id)))]

0 commit comments

Comments
 (0)