pub fn verify_cssa(
    func: &Function,
    cfg: &ControlFlowGraph,
    domtree: &DominatorTree,
    virtregs: &VirtRegs,
    errors: &mut VerifierErrors,
) -> VerifierStepResult<()> {
    let _tt = timing::verify_cssa();

    let mut preorder = DominatorTreePreorder::new();
    preorder.compute(domtree, &func.layout);

    let verifier = CssaVerifier {
        func,
        cfg,
        domtree,
        virtregs,
        preorder,
    };
    verifier.check_virtregs(errors)?;
    verifier.check_cssa(errors)?;
    Ok(())
}
/// Verify conventional SSA form for `func`.
///
/// Conventional SSA form is represented in Cranelift with the help of virtual registers:
///
/// - Two values are said to be *PHI-related* if one is a block argument and the other is passed as
///   a branch argument in a location that matches the first value.
/// - PHI-related values must belong to the same virtual register.
/// - Two values in the same virtual register must not have overlapping live ranges.
///
/// Additionally, we verify this property of virtual registers:
///
/// - The values in a virtual register are topologically ordered w.r.t. dominance.
///
/// We don't verify that virtual registers are minimal. Minimal CSSA is not required.
Verify conventional SSA form for `func`.
Conventional SSA form is represented in Cranelift with the help of virtual registers.

Two values are said to be *PHI-related* if one is a block argument and the other is passed as
a branch argument in a location that matches the first value.
PHI-related values must belong to the same virtual register.
Two values in the same virtual register must not have overlapping live ranges.

Additionally, we verify this property of virtual registers.

The values in a virtual register are topologically ordered w.r.t. dominance.

We don't verify that virtual registers are minimal. Minimal CSSA is not required.
Verify conventional SSA form for ` func ` . Conventional SSA form is represented in Cranelift with the help of virtual registers . Two values are said to be * PHI - related * if one is a block argument and the other is passed as a branch argument in a location that matches the first value . PHI - related values must belong to the same virtual register . Two values in the same virtual register must not have overlapping live ranges . Additionally we verify this property of virtual registers . The values in a virtual register are topologically ordered w . r . t . dominance . We don ' t verify that virtual registers are minimal . Minimal CSSA is not required .
pub fn verify_cssa(
    func: &Function,
    cfg: &ControlFlowGraph,
    domtree: &DominatorTree,
    virtregs: &VirtRegs,
    errors: &mut VerifierErrors,
) -> VerifierStepResult<()> {
    let _tt = timing::verify_cssa();
    let mut preorder = DominatorTreePreorder::new();
    preorder.compute(domtree, &func.layout);
    let verifier = CssaVerifier {
        func,
        cfg,
        domtree,
        virtregs,
        preorder,
    };
    verifier.check_virtregs(errors)?;
    verifier.check_cssa(errors)?;
    Ok(())
}
pub fn verify_cssa ( func : & Function , cfg : & ControlFlowGraph , domtree : & DominatorTree , virtregs : & VirtRegs , errors : & mut VerifierErrors , ) -> VerifierStepResult < ( ) > { let _tt = timing :: verify_cssa ( ) ; let mut preorder = DominatorTreePreorder :: new ( ) ; preorder . compute ( domtree , & func . layout ) ; let verifier = CssaVerifier { func , cfg , domtree , virtregs , preorder , } ; verifier . check_virtregs ( errors ) ? ; verifier . check_cssa ( errors ) ? ; Ok ( ( ) ) }
Verify conventional SSA form for `func`.
Verify conventional SSA form for ` func ` .
func
&Function
cfg
&ControlFlowGraph
domtree
&DominatorTree
virtregs
&VirtRegs
errors
&mut VerifierErrors
func
&Function
cfg
&ControlFlowGraph
domtree
&DominatorTree
virtregs
&VirtRegs
errors
&mut VerifierErrors