Skip to content

Commit 7d11b33

Browse files
committed
Remove clones and most allocations from propagate_to_fixpoint
1 parent a7df4e8 commit 7d11b33

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

compiler/rustc_typeck/src/check/generator_interior/drop_ranges/cfg_propagate.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff 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

0 commit comments

Comments
 (0)