diff options
| author | Mikhail Modin <mikhailm1@gmail.com> | 2017-11-09 11:55:23 +0300 |
|---|---|---|
| committer | Mikhail Modin <mikhailm1@gmail.com> | 2017-11-09 11:55:23 +0300 |
| commit | 3ccb567b90b76d4b6adc3fa03c1d7a90b0189005 (patch) | |
| tree | 028733ec43e242fca0de8aacf707b751e8236ae1 | |
| parent | e48691a5788823116853cac865f499bf8bf19bc0 (diff) | |
| download | rust-3ccb567b90b76d4b6adc3fa03c1d7a90b0189005.tar.gz rust-3ccb567b90b76d4b6adc3fa03c1d7a90b0189005.zip | |
Add `TerminatorKind::DropAndReplace` handling
| -rw-r--r-- | src/librustc_mir/dataflow/impls/mod.rs | 13 |
1 files changed, 13 insertions, 0 deletions
diff --git a/src/librustc_mir/dataflow/impls/mod.rs b/src/librustc_mir/dataflow/impls/mod.rs index 7022b4dffa0..dad96dc3a6f 100644 --- a/src/librustc_mir/dataflow/impls/mod.rs +++ b/src/librustc_mir/dataflow/impls/mod.rs @@ -517,6 +517,19 @@ impl<'a, 'gcx, 'tcx> BitDenotation for MovingOutStatements<'a, 'gcx, 'tcx> { assert!(move_index.index() < bits_per_block); zero_to_one(sets.gen_set.words_mut(), *move_index); } + match term.kind { + mir::TerminatorKind::DropAndReplace { ref location, .. } => { + on_lookup_result_bits(self.tcx, + mir, + move_data, + move_data.rev_lookup.find(location), + |mpi| for moi in &move_data.path_map[mpi] { + assert!(moi.index() < bits_per_block); + sets.kill_set.add(&moi); + }); + } + _ => {} + } } fn propagate_call_return(&self, |
