Fix saving volatile registers now that we use unused args as scratch
This commit is contained in:
@@ -2036,13 +2036,13 @@ impl Context<'_> {
|
||||
fn save_volatile(&mut self) -> ArrayVec<[GPR; SCRATCH_REGS.len()]> {
|
||||
let mut out = ArrayVec::new();
|
||||
|
||||
for ® in SCRATCH_REGS.iter() {
|
||||
if self
|
||||
.block_state
|
||||
.stack
|
||||
.iter()
|
||||
.filter_map(|v| v.location(&self.block_state.locals))
|
||||
.any(|p| p == ValueLocation::Reg(reg))
|
||||
for ® in self.block_state.stack.iter().filter_map(|v| {
|
||||
if let StackValue::Temp(r) = v {
|
||||
Some(r)
|
||||
} else {
|
||||
None
|
||||
}
|
||||
}) {
|
||||
{
|
||||
dynasm!(self.asm
|
||||
; push Rq(reg)
|
||||
|
||||
Reference in New Issue
Block a user