diff options
| author | Amanieu d'Antras <amanieu@gmail.com> | 2020-05-24 02:04:49 +0100 |
|---|---|---|
| committer | Amanieu d'Antras <amanieu@gmail.com> | 2020-05-24 02:04:49 +0100 |
| commit | 3ed1e79cc40133b6cdb65955c7433cc483a89ca8 (patch) | |
| tree | 26209bd7f48deaf082b0d1dcd25b8a43d7f095c6 /src/librustc_mir | |
| parent | 215f2d3294b08dbdcf8f7d40de21ef1e7eae0a2d (diff) | |
| download | rust-3ed1e79cc40133b6cdb65955c7433cc483a89ca8.tar.gz rust-3ed1e79cc40133b6cdb65955c7433cc483a89ca8.zip | |
Properly handle InlineAsmOperand::SymFn when collecting monomorphized items
Fixes #72484
Diffstat (limited to 'src/librustc_mir')
| -rw-r--r-- | src/librustc_mir/monomorphize/collector.rs | 11 |
1 files changed, 9 insertions, 2 deletions
diff --git a/src/librustc_mir/monomorphize/collector.rs b/src/librustc_mir/monomorphize/collector.rs index 925b8d32966..3b05ffa567f 100644 --- a/src/librustc_mir/monomorphize/collector.rs +++ b/src/librustc_mir/monomorphize/collector.rs @@ -633,14 +633,21 @@ impl<'a, 'tcx> MirVisitor<'tcx> for MirNeighborCollector<'a, 'tcx> { let ty = self.monomorphize(ty); visit_drop_use(self.tcx, ty, true, self.output); } + mir::TerminatorKind::InlineAsm { ref operands, .. } => { + for op in operands { + if let mir::InlineAsmOperand::SymFn { value } = op { + let fn_ty = self.monomorphize(value.literal.ty); + visit_fn_use(self.tcx, fn_ty, false, &mut self.output); + } + } + } mir::TerminatorKind::Goto { .. } | mir::TerminatorKind::SwitchInt { .. } | mir::TerminatorKind::Resume | mir::TerminatorKind::Abort | mir::TerminatorKind::Return | mir::TerminatorKind::Unreachable - | mir::TerminatorKind::Assert { .. } - | mir::TerminatorKind::InlineAsm { .. } => {} + | mir::TerminatorKind::Assert { .. } => {} mir::TerminatorKind::GeneratorDrop | mir::TerminatorKind::Yield { .. } | mir::TerminatorKind::FalseEdges { .. } |
