From b23e00893c5752e0984c1c96a37c4501ba0c275b Mon Sep 17 00:00:00 2001 From: Jef Date: Fri, 18 Jan 2019 13:04:53 +0100 Subject: [PATCH] Fix saving volatile registers now that we use unused args as scratch --- src/backend.rs | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/src/backend.rs b/src/backend.rs index 25b76ba360..0a168204e7 100644 --- a/src/backend.rs +++ b/src/backend.rs @@ -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)