pub enum RegAllocError {
CritEdge(Block, Block),
SSA(VReg, Inst),
BB(Block),
Branch(Inst),
EntryLivein,
DisallowedBranchArg(Inst),
TooManyLiveRegs,
}
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.
Branch(Inst)
Invalid branch: operand count does not match sum of block params of successor blocks.
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.
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
impl Error for RegAllocError
1.30.0 · source§fn source(&self) -> Option<&(dyn Error + 'static)>
fn source(&self) -> Option<&(dyn Error + 'static)>
1.0.0 · source§fn description(&self) -> &str
fn description(&self) -> &str
Auto Trait Implementations§
impl Freeze for RegAllocError
impl RefUnwindSafe for RegAllocError
impl Send for RegAllocError
impl Sync for RegAllocError
impl Unpin for RegAllocError
impl UnwindSafe for RegAllocError
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§unsafe fn clone_to_uninit(&self, dst: *mut T)
unsafe fn clone_to_uninit(&self, dst: *mut T)
clone_to_uninit
)