2929
3030use crate :: transform:: MirPass ;
3131use rustc_index:: vec:: { Idx , IndexVec } ;
32- use rustc_middle:: mir:: coverage:: * ;
3332use rustc_middle:: mir:: visit:: { MutVisitor , MutatingUseContext , PlaceContext , Visitor } ;
3433use rustc_middle:: mir:: * ;
3534use rustc_middle:: ty:: TyCtxt ;
@@ -47,9 +46,9 @@ impl SimplifyCfg {
4746 }
4847}
4948
50- pub fn simplify_cfg ( tcx : TyCtxt < ' tcx > , body : & mut Body < ' _ > ) {
49+ pub fn simplify_cfg ( body : & mut Body < ' _ > ) {
5150 CfgSimplifier :: new ( body) . simplify ( ) ;
52- remove_dead_blocks ( tcx , body) ;
51+ remove_dead_blocks ( body) ;
5352
5453 // FIXME: Should probably be moved into some kind of pass manager
5554 body. basic_blocks_mut ( ) . raw . shrink_to_fit ( ) ;
@@ -60,9 +59,9 @@ impl<'tcx> MirPass<'tcx> for SimplifyCfg {
6059 Cow :: Borrowed ( & self . label )
6160 }
6261
63- fn run_pass ( & self , tcx : TyCtxt < ' tcx > , body : & mut Body < ' tcx > ) {
62+ fn run_pass ( & self , _tcx : TyCtxt < ' tcx > , body : & mut Body < ' tcx > ) {
6463 debug ! ( "SimplifyCfg({:?}) - simplifying {:?}" , self . label, body. source) ;
65- simplify_cfg ( tcx , body) ;
64+ simplify_cfg ( body) ;
6665 }
6766}
6867
@@ -287,7 +286,7 @@ impl<'a, 'tcx> CfgSimplifier<'a, 'tcx> {
287286 }
288287}
289288
290- pub fn remove_dead_blocks ( tcx : TyCtxt < ' tcx > , body : & mut Body < ' _ > ) {
289+ pub fn remove_dead_blocks ( body : & mut Body < ' _ > ) {
291290 let reachable = traversal:: reachable_as_bitset ( body) ;
292291 let num_blocks = body. basic_blocks ( ) . len ( ) ;
293292 if num_blocks == reachable. count ( ) {
@@ -307,11 +306,6 @@ pub fn remove_dead_blocks(tcx: TyCtxt<'tcx>, body: &mut Body<'_>) {
307306 }
308307 used_blocks += 1 ;
309308 }
310-
311- if tcx. sess . instrument_coverage ( ) {
312- save_unreachable_coverage ( basic_blocks, used_blocks) ;
313- }
314-
315309 basic_blocks. raw . truncate ( used_blocks) ;
316310
317311 for block in basic_blocks {
@@ -321,32 +315,6 @@ pub fn remove_dead_blocks(tcx: TyCtxt<'tcx>, body: &mut Body<'_>) {
321315 }
322316}
323317
324- fn save_unreachable_coverage (
325- basic_blocks : & mut IndexVec < BasicBlock , BasicBlockData < ' _ > > ,
326- first_dead_block : usize ,
327- ) {
328- // retain coverage info for dead blocks, so coverage reports will still
329- // report `0` executions for the uncovered code regions.
330- let mut dropped_coverage = Vec :: new ( ) ;
331- for dead_block in first_dead_block..basic_blocks. len ( ) {
332- for statement in basic_blocks[ BasicBlock :: new ( dead_block) ] . statements . iter ( ) {
333- if let StatementKind :: Coverage ( coverage) = & statement. kind {
334- if let Some ( code_region) = & coverage. code_region {
335- dropped_coverage. push ( ( statement. source_info , code_region. clone ( ) ) ) ;
336- }
337- }
338- }
339- }
340- for ( source_info, code_region) in dropped_coverage {
341- basic_blocks[ START_BLOCK ] . statements . push ( Statement {
342- source_info,
343- kind : StatementKind :: Coverage ( box Coverage {
344- kind : CoverageKind :: Unreachable ,
345- code_region : Some ( code_region) ,
346- } ) ,
347- } )
348- }
349- }
350318pub struct SimplifyLocals ;
351319
352320impl < ' tcx > MirPass < ' tcx > for SimplifyLocals {
0 commit comments