Use extra register for every identifier

This commit is contained in:
Andrew Morris
2023-03-31 16:44:22 +11:00
parent ed0752c8e5
commit a5a861d570

View File

@@ -1365,7 +1365,20 @@ impl<'a> ExpressionCompiler<'a> {
None => self.inline(value, target_register),
}
}
None => self.inline(value, target_register),
None => match value {
Value::Register(reg) => {
let new_reg = self.fnc.allocate_tmp();
self.fnc.push(Instruction::Mov(
Value::Register(reg.clone()),
new_reg.clone(),
));
self.inline(Value::Register(new_reg.clone()), target_register);
CompiledExpression::new(Value::Register(new_reg), vec![])
}
_ => self.inline(value, target_register),
},
}
}