Enum spirt::cfg::StructurizeRegionState
source · enum StructurizeRegionState {
InProgress,
Ready {
backedge: Option<DeferredEdgeBundle<()>>,
region: PartialControlRegion,
},
Claimed,
}
Expand description
The state of one structurize_region_from
invocation (keyed on its start
ControlRegion
in Structurizer
) and its PartialControlRegion
output.
There is a fourth (or 0th) implicit state, which is where nothing has yet
observed some region, and Structurizer
isn’t tracking it at all.
Variants§
InProgress
Structurization is still running, and observing this is a cycle.
Ready
Fields
backedge: Option<DeferredEdgeBundle<()>>
If this region had backedges (targeting its start ControlRegion
),
their bundle is taken from the region’s DeferredEdgeBundleSet
,
and kept in this field instead (for simpler/faster access).
Claiming a region with backedges can combine them with the bundled edges coming into the CFG cycle from outside, and instead of failing due to the latter not being enough to claim the region on their own, actually perform loop structurization.
region: PartialControlRegion
Structurization completed, and this region can now be claimed.
Claimed
Region was claimed (by an IncomingEdgeBundle
, with the appropriate
total IncomingEdgeCount
, minus any consumed_backedges
), and has
since likely been incorporated as part of some larger region.