Crate rustc_mir_dataflow
source ·Re-exports
pub use self::drop_flag_effects::drop_flag_effects_for_function_entry;
pub use self::drop_flag_effects::drop_flag_effects_for_location;
pub use self::drop_flag_effects::move_path_children_matching;
pub use self::drop_flag_effects::on_all_children_bits;
pub use self::drop_flag_effects::on_all_drop_children_bits;
pub use self::drop_flag_effects::on_lookup_result_bits;
Modules
- errors 🔒
- Custom formatting traits used when outputting Graphviz diagrams with the results of a dataflow analysis.
- A framework that can express both gen-kill and generic dataflow problems.
- A helpful diagram for debugging dataflow problems.
- Dataflow analyses are built upon some interpretation of the bitvectors attached to each basic block, represented via a zero-sized structure.
- indexes 🔒
- Traits used to represent lattices for use as the domain of a dataflow analysis.
- This module provides a framework on top of the normal MIR dataflow framework to simplify the implementation of analyses that track information about the values stored in certain places. We are using the term “place” here to refer to a
mir::Place
(a place expression) instead of aninterpret::Place
(a memory location).
Structs
- Dataflow that runs from the exit of a block (the terminator), to its entry (the first statement).
- A solver for dataflow problems.
- Dataflow that runs from the entry of a block (the first statement), to its exit (terminator).
- A dataflow analysis that has converged to fixpoint.
- Allows random access inspection of the results of a dataflow analysis.
Enums
- Extend a lattice with a bottom value to represent an unreachable execution.
Statics
- Raw content of Fluent resource for this crate, generated by
fluent_messages
macro, imported byrustc_driver
to include all crates’ resources in one bundle.
Traits
- A dataflow problem with an arbitrarily complex transfer function.
- Defines the domain of a dataflow problem.
- A type representing the analysis results consumed by a
ResultsCursor
. - Defines an
Analysis
which can be cloned for use in multipleResultsCursor
s orResultsVisitor
s. Note this need not be a full clone, only enough of one to be used with a newResultsCursor
orResultsVisitor
- The legal operations for a transfer function in a gen/kill problem.
- A gen/kill dataflow problem.
- A partially ordered set that has a least upper bound for any pair of elements in the set.
- Things that can be visited by a
ResultsVisitor
. - A visitor over the results of an
Analysis
. The type parameterR
is the results type being visited. - A type that records the edge-specific effects for a
SwitchInt
terminator.
Functions
- Calls the corresponding method in
ResultsVisitor
for every location in amir::Body
with the dataflow state at that location.
Type Aliases
Results
type with a clonedAnalysis
and borrowed entry sets.- A
ResultsCursor
which uses a clonedAnalysis
while borrowing the underlyingResults
. This allows multiple cursors over the sameResults
. - A
ResultsCursor
that borrows the underlyingResults
.