WIP: Handle moves between realregs (pregs) and vregs somewhat specially, by converting into operand constraints
Still has a fuzzbug in interaction between R->R and V->R moves. Will likely rework to make pinned-vreg handling more general but want to save a checkpoint here; idea for rework: - set allocs immediately if an Operand is a pinned vreg; - reserve preg ranges; - then, in rest of liveness computation / LR construction, convert pinned-vregs to operands with constraints, but otherwise do not special-case as we do in this commit.
This commit is contained in:
@@ -589,6 +589,12 @@ impl<'a, F: Function> Checker<'a, F> {
|
||||
.unwrap()
|
||||
.push(CheckerInst::Move { into: to, from });
|
||||
}
|
||||
&Edit::DefAlloc { .. } => {
|
||||
unimplemented!(concat!(
|
||||
"DefAlloc is used only when dealing with pinned vregs, ",
|
||||
"which are only used by regalloc.rs shim; use checker at that level!"
|
||||
));
|
||||
}
|
||||
&Edit::BlockParams {
|
||||
ref vregs,
|
||||
ref allocs,
|
||||
|
||||
Reference in New Issue
Block a user