pub enum Analysis {
Cfg,
Dominators,
PostDominators,
Loops,
Frontiers,
ControlDependence,
Frequencies,
Liveness,
Pressure,
}Expand description
One analysis this cache holds.
The order matters and is checked by a test: an analysis is built out of analyses that come before it in this list and never out of one that comes after. That is what lets the invalidation walk settle in one pass over the list rather than in a loop to a fixed point.
Variants§
Cfg
Cfg, which everything else here is built on.
Dominators
PostDominators
Loops
Frontiers
ControlDependence
Frequencies
Frequencies, which carries the branch predictions it was worked out from.
Liveness
Pressure
Pressure, which is the live counts split by register class.
Implementations§
Source§impl Analysis
impl Analysis
Sourcepub const fn name(self) -> &'static str
pub const fn name(self) -> &'static str
What it is called in a message to somebody debugging a pass.
Sourcepub const fn needs(self) -> &'static [Analysis]
pub const fn needs(self) -> &'static [Analysis]
The analyses this one is built out of, which cannot outlive it.
Section 4.4 of the design has a table of these and the entry for almost every row is
“any CFG change”, which is why Analysis::Cfg is what the other three name.