about summary refs log tree commit diff
diff options
context:
space:
mode:
authorWill Crichton <wcrichto@cs.stanford.edu>2021-08-25 22:54:26 -0700
committerWill Crichton <wcrichto@cs.stanford.edu>2021-08-25 22:54:26 -0700
commit800d6531a97268dbd371d879c9e9bd0a6368f2f4 (patch)
tree438ca45a6681e3c8f9f4cb0d55360bd359a7090b
parent2110ac303ed53b77806c06c963b8fa086f87e909 (diff)
downloadrust-800d6531a97268dbd371d879c9e9bd0a6368f2f4.tar.gz
rust-800d6531a97268dbd371d879c9e9bd0a6368f2f4.zip
Small fixes
-rw-r--r--compiler/rustc_index/src/bit_set.rs9
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),