diff options
| author | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2022-06-03 00:00:00 +0000 |
|---|---|---|
| committer | Tomasz Miąsko <tomasz.miasko@gmail.com> | 2022-06-07 16:54:00 +0200 |
| commit | 631d767fee70a7514f212b7de72a77dc32587c0a (patch) | |
| tree | 9b138f238882a539cd6ba61212db09ebff6bdd68 /compiler/rustc_mir_dataflow | |
| parent | 7fe2c4b00dfbc33643e1af4b293eb057306a8339 (diff) | |
| download | rust-631d767fee70a7514f212b7de72a77dc32587c0a.tar.gz rust-631d767fee70a7514f212b7de72a77dc32587c0a.zip | |
Remove `AlwaysLiveLocals` wrapper struct
It is just a wrapper around a `BitSet` and doesn't have any functionality of its own.
Diffstat (limited to 'compiler/rustc_mir_dataflow')
| -rw-r--r-- | compiler/rustc_mir_dataflow/src/impls/storage_liveness.rs | 5 | ||||
| -rw-r--r-- | compiler/rustc_mir_dataflow/src/storage.rs | 34 |
2 files changed, 10 insertions, 29 deletions
diff --git a/compiler/rustc_mir_dataflow/src/impls/storage_liveness.rs b/compiler/rustc_mir_dataflow/src/impls/storage_liveness.rs index 356a6b7765e..33d29418147 100644 --- a/compiler/rustc_mir_dataflow/src/impls/storage_liveness.rs +++ b/compiler/rustc_mir_dataflow/src/impls/storage_liveness.rs @@ -1,6 +1,5 @@ pub use super::*; -use crate::storage::AlwaysLiveLocals; use crate::{CallReturnPlaces, GenKill, Results, ResultsRefCursor}; use rustc_middle::mir::visit::{NonMutatingUseContext, PlaceContext, Visitor}; use rustc_middle::mir::*; @@ -8,11 +7,11 @@ use std::cell::RefCell; #[derive(Clone)] pub struct MaybeStorageLive { - always_live_locals: AlwaysLiveLocals, + always_live_locals: BitSet<Local>, } impl MaybeStorageLive { - pub fn new(always_live_locals: AlwaysLiveLocals) -> Self { + pub fn new(always_live_locals: BitSet<Local>) -> Self { MaybeStorageLive { always_live_locals } } } diff --git a/compiler/rustc_mir_dataflow/src/storage.rs b/compiler/rustc_mir_dataflow/src/storage.rs index 218d4557215..4a354c4c65b 100644 --- a/compiler/rustc_mir_dataflow/src/storage.rs +++ b/compiler/rustc_mir_dataflow/src/storage.rs @@ -7,35 +7,17 @@ use rustc_middle::mir::{self, Local}; // // FIXME: Currently, we need to traverse the entire MIR to compute this. We should instead store it // as a field in the `LocalDecl` for each `Local`. -#[derive(Debug, Clone)] -pub struct AlwaysLiveLocals(BitSet<Local>); +pub fn always_live_locals(body: &mir::Body<'_>) -> BitSet<Local> { + let mut always_live_locals = BitSet::new_filled(body.local_decls.len()); -impl AlwaysLiveLocals { - pub fn new(body: &mir::Body<'_>) -> Self { - let mut always_live_locals = AlwaysLiveLocals(BitSet::new_filled(body.local_decls.len())); - - for block in body.basic_blocks() { - for statement in &block.statements { - use mir::StatementKind::{StorageDead, StorageLive}; - if let StorageLive(l) | StorageDead(l) = statement.kind { - always_live_locals.0.remove(l); - } + for block in body.basic_blocks() { + for statement in &block.statements { + use mir::StatementKind::{StorageDead, StorageLive}; + if let StorageLive(l) | StorageDead(l) = statement.kind { + always_live_locals.remove(l); } } - - always_live_locals } - pub fn into_inner(self) -> BitSet<Local> { - self.0 - } -} - -impl std::ops::Deref for AlwaysLiveLocals { - type Target = BitSet<Local>; - - #[inline] - fn deref(&self) -> &Self::Target { - &self.0 - } + always_live_locals } |
