Enum cranelift_isle::serialize::ControlFlow
source · pub enum ControlFlow {
Match {
source: BindingId,
arms: Vec<MatchArm>,
},
Equal {
a: BindingId,
b: BindingId,
body: Block,
},
Loop {
result: BindingId,
body: Block,
},
Return {
pos: Pos,
result: BindingId,
},
}
Expand description
What kind of control-flow structure do we need to emit here?
Variants§
Match
Fields
Test a binding site against one or more mutually-exclusive patterns and branch to the appropriate block if a pattern matches.
Equal
Fields
Test whether two binding sites have values which are equal when evaluated on the current input.
Loop
Fields
§
result: BindingId
A binding site of type Binding::Iterator. Its source binding site must be a multi-extractor or multi-constructor call.
Evaluate a block once with each value of the given binding site.
Return
Fields
Return a result from the right-hand side of a rule. If we’re building a multi-constructor then this doesn’t actually return, but adds to a list of results instead. Otherwise this return stops evaluation before any later steps.