luaur_code_gen/functions/
update_last_use_for_op.rs1use crate::enums::ir_block_kind::IrBlockKind;
2use crate::enums::ir_op_kind::IrOpKind;
3use crate::records::ir_function::IrFunction;
4use crate::records::ir_op::IrOp;
5
6pub fn update_last_use_for_op(function: &mut IrFunction, inst_idx: u32, op: IrOp) {
7 if op.kind() == IrOpKind::Inst {
8 function.instructions[op.index() as usize].last_use = inst_idx;
9 } else if op.kind() == IrOpKind::Block {
10 let block = &function.blocks[op.index() as usize];
11 if block.kind == IrBlockKind::ExitSync {
12 if let Some(sync_info) = function.vm_exit_info.find(&inst_idx) {
13 let arg_ops = sync_info.arg_ops.clone();
14 for arg_op in arg_ops.iter() {
15 update_last_use_for_op(function, inst_idx, *arg_op);
16 }
17 }
18 }
19 }
20}