@@ -4,7 +4,7 @@ use rustc_middle::mir::coverage::{BlockMarkerId, BranchSpan, CoverageKind};
4
4
use rustc_middle:: mir:: { self , BasicBlock , SourceInfo , Statement , StatementKind } ;
5
5
use rustc_middle:: ty:: TyCtxt ;
6
6
use rustc_span:: def_id:: LocalDefId ;
7
- use rustc_span:: { ExpnKind , Span } ;
7
+ use rustc_span:: { ExpnKind , Span , DUMMY_SP } ;
8
8
9
9
use crate :: build:: Builder ;
10
10
@@ -151,13 +151,13 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
151
151
pub ( crate ) fn coverage_add_branch (
152
152
& mut self ,
153
153
cond_source_info : SourceInfo ,
154
- then_blk : BasicBlock ,
155
- else_blk : BasicBlock ,
154
+ then_blk : & mut BasicBlock ,
155
+ else_blk : & mut BasicBlock ,
156
156
) {
157
157
let hir_info_builder = self . coverage . as_mut ( ) . unwrap ( ) ;
158
158
assert ! ( hir_info_builder. branch_coverage_enabled) ;
159
159
160
- let mut inject_branch_marker = |bb : BasicBlock | {
160
+ let mut inject_branch_marker = |bb : & mut BasicBlock | {
161
161
let id = hir_info_builder. next_block_marker_id ( ) ;
162
162
163
163
let statement = Statement {
@@ -167,7 +167,10 @@ impl<'a, 'tcx> Builder<'a, 'tcx> {
167
167
} ) ) ,
168
168
} ;
169
169
170
- self . cfg . push ( bb, statement) ;
170
+ self . cfg . push ( * bb, statement) ;
171
+ let successor_block = self . cfg . start_new_block ( ) ;
172
+ self . cfg . goto ( * bb, SourceInfo :: outermost ( DUMMY_SP ) , successor_block) ;
173
+ * bb = successor_block;
171
174
id
172
175
} ;
173
176
0 commit comments