Struct rustc_mir::dataflow::BlockSets [−][src]
pub struct BlockSets<'a, E: Idx> { on_entry: &'a mut IdxSet<E>, gen_set: &'a mut IdxSet<E>, kill_set: &'a mut IdxSet<E>, }
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Triple of sets associated with a given block.
Generally, one sets up on_entry
, gen_set
, and kill_set
for
each block individually, and then runs the dataflow analysis which
iteratively modifies the various on_entry
sets (but leaves the
other two sets unchanged, since they represent the effect of the
block, which should be invariant over the course of the analysis).
It is best to ensure that the intersection of gen_set
and
kill_set
is empty; otherwise the results of the dataflow will
have a hidden dependency on what order the bits are generated and
killed during the iteration. (This is such a good idea that the
fn gen
and fn kill
methods that set their state enforce this
for you.)
Fields
on_entry: &'a mut IdxSet<E>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Dataflow state immediately before control flow enters the given block.
gen_set: &'a mut IdxSet<E>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Bits that are set to 1 by the time we exit the given block.
kill_set: &'a mut IdxSet<E>
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
Bits that are set to 0 by the time we exit the given block.
Methods
impl<'a, E: Idx> BlockSets<'a, E>
[src]
impl<'a, E: Idx> BlockSets<'a, E>
fn gen(&mut self, e: &E)
[src]
fn gen(&mut self, e: &E)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn gen_all<I>(&mut self, i: I) where
I: IntoIterator,
I::Item: Borrow<E>,
[src]
fn gen_all<I>(&mut self, i: I) where
I: IntoIterator,
I::Item: Borrow<E>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn gen_all_and_assert_dead<I>(&mut self, i: I) where
I: IntoIterator,
I::Item: Borrow<E>,
[src]
fn gen_all_and_assert_dead<I>(&mut self, i: I) where
I: IntoIterator,
I::Item: Borrow<E>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn kill(&mut self, e: &E)
[src]
fn kill(&mut self, e: &E)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn kill_all<I>(&mut self, i: I) where
I: IntoIterator,
I::Item: Borrow<E>,
[src]
fn kill_all<I>(&mut self, i: I) where
I: IntoIterator,
I::Item: Borrow<E>,
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?
fn apply_local_effect(&mut self)
[src]
fn apply_local_effect(&mut self)
🔬 This is a nightly-only experimental API. (rustc_private
)
this crate is being loaded from the sysroot, an unstable location; did you mean to load this crate from crates.io via Cargo.toml
instead?