Skip to content

Commit 688f28d

Browse files
committed
Stop using HybridBitSet in clippy.
The compiler uses `BitSet<Local>`, because the number of locals doesn't get that high, so clippy should do likewise.
1 parent 0df6a01 commit 688f28d

File tree

3 files changed

+10
-10
lines changed

3 files changed

+10
-10
lines changed

src/tools/clippy/clippy_utils/src/mir/possible_borrower.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use super::possible_origin::PossibleOriginVisitor;
22
use super::transitive_relation::TransitiveRelation;
33
use crate::ty::is_copy;
44
use rustc_data_structures::fx::FxHashMap;
5-
use rustc_index::bit_set::{BitSet, HybridBitSet};
5+
use rustc_index::bit_set::BitSet;
66
use rustc_lint::LateContext;
77
use rustc_middle::mir::visit::Visitor as _;
88
use rustc_middle::mir::{self, Mutability};
@@ -21,14 +21,14 @@ struct PossibleBorrowerVisitor<'a, 'b, 'tcx> {
2121
possible_borrower: TransitiveRelation,
2222
body: &'b mir::Body<'tcx>,
2323
cx: &'a LateContext<'tcx>,
24-
possible_origin: FxHashMap<mir::Local, HybridBitSet<mir::Local>>,
24+
possible_origin: FxHashMap<mir::Local, BitSet<mir::Local>>,
2525
}
2626

2727
impl<'a, 'b, 'tcx> PossibleBorrowerVisitor<'a, 'b, 'tcx> {
2828
fn new(
2929
cx: &'a LateContext<'tcx>,
3030
body: &'b mir::Body<'tcx>,
31-
possible_origin: FxHashMap<mir::Local, HybridBitSet<mir::Local>>,
31+
possible_origin: FxHashMap<mir::Local, BitSet<mir::Local>>,
3232
) -> Self {
3333
Self {
3434
possible_borrower: TransitiveRelation::default(),
@@ -119,7 +119,7 @@ impl<'tcx> mir::visit::Visitor<'tcx> for PossibleBorrowerVisitor<'_, '_, 'tcx> {
119119
let mut mutable_variables: Vec<mir::Local> = mutable_borrowers
120120
.iter()
121121
.filter_map(|r| self.possible_origin.get(r))
122-
.flat_map(HybridBitSet::iter)
122+
.flat_map(BitSet::iter)
123123
.collect();
124124

125125
if ContainsRegion.visit_ty(self.body.local_decls[*dest].ty).is_break() {
@@ -171,7 +171,7 @@ fn rvalue_locals(rvalue: &mir::Rvalue<'_>, mut visit: impl FnMut(mir::Local)) {
171171
#[allow(clippy::module_name_repetitions)]
172172
pub struct PossibleBorrowerMap<'b, 'tcx> {
173173
/// Mapping `Local -> its possible borrowers`
174-
pub map: FxHashMap<mir::Local, HybridBitSet<mir::Local>>,
174+
pub map: FxHashMap<mir::Local, BitSet<mir::Local>>,
175175
maybe_live: ResultsCursor<'b, 'tcx, MaybeStorageLive<'tcx>>,
176176
// Caches to avoid allocation of `BitSet` on every query
177177
pub bitset: (BitSet<mir::Local>, BitSet<mir::Local>),

src/tools/clippy/clippy_utils/src/mir/possible_origin.rs

+2-2
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use super::transitive_relation::TransitiveRelation;
22
use crate::ty::is_copy;
33
use rustc_data_structures::fx::FxHashMap;
4-
use rustc_index::bit_set::HybridBitSet;
4+
use rustc_index::bit_set::BitSet;
55
use rustc_lint::LateContext;
66
use rustc_middle::mir;
77

@@ -22,7 +22,7 @@ impl<'a, 'tcx> PossibleOriginVisitor<'a, 'tcx> {
2222
}
2323
}
2424

25-
pub fn into_map(self, cx: &LateContext<'tcx>) -> FxHashMap<mir::Local, HybridBitSet<mir::Local>> {
25+
pub fn into_map(self, cx: &LateContext<'tcx>) -> FxHashMap<mir::Local, BitSet<mir::Local>> {
2626
let mut map = FxHashMap::default();
2727
for row in (1..self.body.local_decls.len()).map(mir::Local::from_usize) {
2828
if is_copy(cx, self.body.local_decls[row].ty) {

src/tools/clippy/clippy_utils/src/mir/transitive_relation.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
use rustc_data_structures::fx::FxHashMap;
2-
use rustc_index::bit_set::HybridBitSet;
2+
use rustc_index::bit_set::BitSet;
33
use rustc_middle::mir;
44

55
#[derive(Default)]
@@ -12,8 +12,8 @@ impl TransitiveRelation {
1212
self.relations.entry(a).or_default().push(b);
1313
}
1414

15-
pub fn reachable_from(&self, a: mir::Local, domain_size: usize) -> HybridBitSet<mir::Local> {
16-
let mut seen = HybridBitSet::new_empty(domain_size);
15+
pub fn reachable_from(&self, a: mir::Local, domain_size: usize) -> BitSet<mir::Local> {
16+
let mut seen = BitSet::new_empty(domain_size);
1717
let mut stack = vec![a];
1818
while let Some(u) = stack.pop() {
1919
if let Some(edges) = self.relations.get(&u) {

0 commit comments

Comments
 (0)