pub enum BranchClass {
CondBranch,
UncondBranch,
Predicated,
Other,
}Expand description
VCR-DEC-003 (#396, witness#130): the object-level control-flow class of one
emitted machine instruction, captured at encode time alongside LineMap.
It is the piece post-hoc CLI derivation cannot recover — line_map records
which wasm op an instruction came from, but not whether that instruction IS a
conditional branch, an unconditional branch, or a predicated (IT-block) move.
The synth-provenance-v1 emitter needs it to enumerate the ACTUAL object
conditional branches (so it can prove “every object branch resolves to a
source condition”, not just “every source branch has an object PC”).
Variants§
CondBranch
A conditional branch (Bcc/Blo/Bhs/BCondOffset) — an object-level
decision point MC/DC must account for.
UncondBranch
An unconditional branch (B/BOffset) — control flow, not a decision.
Predicated
A predicated conditional move (SelectMove, the IT-block form the
cmp→select fuse produces) — a folded decision with no branch.
Other
Anything else (data-processing, load/store, call, prologue/epilogue).
Trait Implementations§
Source§impl Clone for BranchClass
impl Clone for BranchClass
Source§fn clone(&self) -> BranchClass
fn clone(&self) -> BranchClass
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreimpl Copy for BranchClass
Source§impl Debug for BranchClass
impl Debug for BranchClass
impl Eq for BranchClass
Source§impl PartialEq for BranchClass
impl PartialEq for BranchClass
impl StructuralPartialEq for BranchClass
Auto Trait Implementations§
impl Freeze for BranchClass
impl RefUnwindSafe for BranchClass
impl Send for BranchClass
impl Sync for BranchClass
impl Unpin for BranchClass
impl UnsafeUnpin for BranchClass
impl UnwindSafe for BranchClass
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> CloneToUninit for Twhere
T: Clone,
impl<T> CloneToUninit for Twhere
T: Clone,
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§impl<Q, K> Equivalent<K> for Q
impl<Q, K> Equivalent<K> for Q
Source§fn equivalent(&self, key: &K) -> bool
fn equivalent(&self, key: &K) -> bool
key and return true if they are equal.