luaur_code_gen/functions/
update_remaining_uses.rs1use crate::enums::ir_op_kind::IrOpKind;
2use crate::functions::visit_arguments::visit_arguments;
3use crate::macros::codegen_assert::CODEGEN_ASSERT;
4use crate::records::ir_inst::IrInst;
5use crate::records::remove_dead_store_state::RemoveDeadStoreState;
6use alloc::vec::Vec;
7
8pub fn update_remaining_uses(state: &mut RemoveDeadStoreState, inst: &mut IrInst, index: u32) {
9 let remaining: *mut Vec<u32> = state.remaining_uses;
10
11 unsafe {
12 (&mut *remaining)[index as usize] = inst.use_count as u32;
13 }
14
15 visit_arguments(inst, |op| {
16 if op.kind() == IrOpKind::Inst {
17 unsafe {
18 CODEGEN_ASSERT!((&*remaining)[op.index() as usize] != 0);
19 (&mut *remaining)[op.index() as usize] -= 1;
20 }
21 }
22 });
23}