Module rustc_mir::dataflow::impls[][src]

🔬 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 analyses are built upon some interpretation of the bitvectors attached to each basic block, represented via a zero-sized structure.

Re-exports

use rustc::ty::TyCtxt;
use rustc::mir;
use rustc::mir::Mir;
use rustc::mir::Location;
use rustc_data_structures::bitslice::BitwiseOperator;
use rustc_data_structures::indexed_set::IdxSet;
use rustc_data_structures::indexed_vec::Idx;
use super::MoveDataParamEnv;
use util::elaborate_drops::DropFlagState;
use super::move_paths::HasMoveData;
use super::move_paths::MoveData;
use super::move_paths::MoveOutIndex;
use super::move_paths::MovePathIndex;
use super::move_paths::InitIndex;
use super::move_paths::LookupResult;
use super::move_paths::InitKind;
use super::BitDenotation;
use super::BlockSets;
use super::InitialFlow;
use super::drop_flag_effects_for_function_entry;
use super::drop_flag_effects_for_location;
use super::on_lookup_result_bits;
use super::for_location_inits;
pub use self::storage_liveness::*;
pub use self::borrowed_locals::*;

Modules

borrowed_locals [
Experimental
]
borrows [
Experimental
]
storage_liveness [
Experimental
]

Structs

DefinitelyInitializedPlaces [
Experimental
]

DefinitelyInitializedPlaces tracks all places that are definitely initialized upon reaching a particular point in the control flow for a function.

EverInitializedPlaces [
Experimental
]

EverInitializedPlaces tracks all places that might have ever been initialized upon reaching a particular point in the control flow for a function, without an intervening Storage Dead.

MaybeInitializedPlaces [
Experimental
]

MaybeInitializedPlaces tracks all places that might be initialized upon reaching a particular point in the control flow for a function.

MaybeUninitializedPlaces [
Experimental
]

MaybeUninitializedPlaces tracks all places that might be uninitialized upon reaching a particular point in the control flow for a function.

MovingOutStatements [
Experimental
]

MovingOutStatements tracks the statements that perform moves out of particular places. More precisely, it tracks whether the effect of such moves (namely, the uninitialization of the place in question) can reach some point in the control-flow of the function, or if that effect is "killed" by some intervening operation reinitializing that place.