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 {
99
1010 trace ! ( "predecessors: {:#?}" , preds. iter_enumerated( ) . collect:: <BTreeMap <_, _>>( ) ) ;
1111
12+ let mut new_state = BitSet :: new_empty ( self . num_values ( ) ) ;
13+
1214 let mut propagate = || {
1315 let mut changed = false ;
1416 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 ( ) ;
1819 } else {
1920 // If we are not the start node and we have no predecessors, treat
2021 // everything as dropped because there's no way to get here anyway.
21- BitSet :: new_filled ( self . num_values ( ) )
22+ new_state . insert_all ( ) ;
2223 } ;
2324
2425 for pred in & preds[ id] {
@@ -34,8 +35,7 @@ impl DropRangesBuilder {
3435 new_state. remove ( * reinit) ;
3536 }
3637
37- changed |= old_state != new_state;
38- self . nodes [ id] . drop_state = new_state;
38+ changed |= self . nodes [ id] . drop_state . intersect ( & new_state) ;
3939 }
4040
4141 changed
You can’t perform that action at this time.
0 commit comments