diff options
| author | Will Crichton <wcrichto@cs.stanford.edu> | 2021-08-25 22:54:26 -0700 |
|---|---|---|
| committer | Will Crichton <wcrichto@cs.stanford.edu> | 2021-08-25 22:54:26 -0700 |
| commit | 800d6531a97268dbd371d879c9e9bd0a6368f2f4 (patch) | |
| tree | 438ca45a6681e3c8f9f4cb0d55360bd359a7090b | |
| parent | 2110ac303ed53b77806c06c963b8fa086f87e909 (diff) | |
| download | rust-800d6531a97268dbd371d879c9e9bd0a6368f2f4.tar.gz rust-800d6531a97268dbd371d879c9e9bd0a6368f2f4.zip | |
Small fixes
| -rw-r--r-- | compiler/rustc_index/src/bit_set.rs | 9 |
1 files changed, 6 insertions, 3 deletions
diff --git a/compiler/rustc_index/src/bit_set.rs b/compiler/rustc_index/src/bit_set.rs index 8793d56792a..230a551f3c5 100644 --- a/compiler/rustc_index/src/bit_set.rs +++ b/compiler/rustc_index/src/bit_set.rs @@ -271,10 +271,10 @@ fn dense_sparse_intersect<T: Idx>( dense: &BitSet<T>, sparse: &SparseBitSet<T>, ) -> (SparseBitSet<T>, bool) { - let n = dense.count(); let mut sparse_copy = sparse.clone(); sparse_intersect(&mut sparse_copy, |el| !dense.contains(*el)); - (sparse_copy, dense.count() != n) + let n = sparse_copy.len(); + (sparse_copy, n != dense.count()) } impl<T: Idx> BitRelations<HybridBitSet<T>> for BitSet<T> { @@ -303,7 +303,10 @@ impl<T: Idx> BitRelations<HybridBitSet<T>> for BitSet<T> { match other { HybridBitSet::Sparse(sparse) => { let (updated, changed) = dense_sparse_intersect(self, sparse); - *self = updated.to_dense(); + self.clear(); + for elem in updated.iter() { + self.insert(*elem); + } changed } HybridBitSet::Dense(dense) => self.intersect(dense), |
