File tree Expand file tree Collapse file tree 1 file changed +6
-6
lines changed
compiler/rustc_typeck/src/check/generator_interior/drop_ranges Expand file tree Collapse file tree 1 file changed +6
-6
lines changed Original file line number Diff line number Diff line change @@ -9,16 +9,17 @@ impl DropRangesBuilder {
9
9
10
10
trace ! ( "predecessors: {:#?}" , preds. iter_enumerated( ) . collect:: <BTreeMap <_, _>>( ) ) ;
11
11
12
+ let mut new_state = BitSet :: new_empty ( self . num_values ( ) ) ;
13
+
12
14
let mut propagate = || {
13
15
let mut changed = false ;
14
16
for id in self . nodes . indices ( ) {
15
- let old_state = self . nodes [ id] . drop_state . clone ( ) ;
16
- let mut new_state = if id. index ( ) == 0 {
17
- BitSet :: new_empty ( self . num_values ( ) )
17
+ if id. index ( ) == 0 {
18
+ new_state. clear ( ) ;
18
19
} else {
19
20
// If we are not the start node and we have no predecessors, treat
20
21
// everything as dropped because there's no way to get here anyway.
21
- BitSet :: new_filled ( self . num_values ( ) )
22
+ new_state . insert_all ( ) ;
22
23
} ;
23
24
24
25
for pred in & preds[ id] {
@@ -34,8 +35,7 @@ impl DropRangesBuilder {
34
35
new_state. remove ( * reinit) ;
35
36
}
36
37
37
- changed |= old_state != new_state;
38
- self . nodes [ id] . drop_state = new_state;
38
+ changed |= self . nodes [ id] . drop_state . intersect ( & new_state) ;
39
39
}
40
40
41
41
changed
You can’t perform that action at this time.
0 commit comments