diff options
Diffstat (limited to 'src/librustc_mir/dataflow/framework/engine.rs')
| -rw-r--r-- | src/librustc_mir/dataflow/framework/engine.rs | 18 |
1 files changed, 9 insertions, 9 deletions
diff --git a/src/librustc_mir/dataflow/framework/engine.rs b/src/librustc_mir/dataflow/framework/engine.rs index 243b3679f29..003c40f290b 100644 --- a/src/librustc_mir/dataflow/framework/engine.rs +++ b/src/librustc_mir/dataflow/framework/engine.rs @@ -52,6 +52,15 @@ where visit_results(body, blocks, self, vis) } + pub fn visit_reachable_with( + &self, + body: &'mir mir::Body<'tcx>, + vis: &mut impl ResultsVisitor<'mir, 'tcx, FlowState = BitSet<A::Idx>>, + ) { + let blocks = mir::traversal::reachable(body); + visit_results(body, blocks.map(|(bb, _)| bb), self, vis) + } + pub fn visit_in_rpo_with( &self, body: &'mir mir::Body<'tcx>, @@ -204,15 +213,6 @@ where } } - // Add blocks that are not reachable from START_BLOCK to the work queue. These blocks will - // be processed after the ones added above. - // - // FIXME(ecstaticmorse): Is this actually necessary? In principle, we shouldn't need to - // know the dataflow state in unreachable basic blocks. - for bb in body.basic_blocks().indices() { - dirty_queue.insert(bb); - } - let mut state = BitSet::new_empty(bits_per_block); while let Some(bb) = dirty_queue.pop() { let bb_data = &body[bb]; |
