pub enum RegAllocError {
CritEdge(Block, Block),
SSA(VReg, Inst),
BB(Block),
Branch(Inst),
EntryLivein,
DisallowedBranchArg(Inst),
TooManyLiveRegs,
TooManyOperands,
}Expand description
An error that prevents allocation.
Variants§
CritEdge(Block, Block)
Critical edge is not split between given blocks.
SSA(VReg, Inst)
Invalid SSA for given vreg at given inst: multiple defs or
illegal use. inst may be Inst::invalid() if this concerns
a block param.
BB(Block)
Invalid basic block: does not end in branch/ret, or contains a branch/ret in the middle, or the VReg ids do not start at zero or aren’t numbered sequentially.
Branch(Inst)
Invalid branch: operand count does not match sum of block params of successor blocks, or the block ids do not start at zero or aren’t numbered sequentially.
EntryLivein
A VReg is live-in on entry; this is not allowed.
DisallowedBranchArg(Inst)
A branch has non-blockparam arg(s) and at least one of the successor blocks has more than one predecessor, forcing edge-moves before this branch. This is disallowed because it places a use after the edge moves occur; insert an edge block to avoid the situation.
TooManyLiveRegs
Too many pinned VRegs + Reg-constrained Operands are live at once, making allocation impossible.
TooManyOperands
Too many operands on a single instruction (beyond limit of 2^16 - 1).
Trait Implementations§
Source§impl Clone for RegAllocError
impl Clone for RegAllocError
Source§fn clone(&self) -> RegAllocError
fn clone(&self) -> RegAllocError
1.0.0 · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read moreSource§impl Debug for RegAllocError
impl Debug for RegAllocError
Source§impl Display for RegAllocError
impl Display for RegAllocError
Source§impl Error for RegAllocError
Available on crate feature std only.
impl Error for RegAllocError
std only.