luaur_code_gen/functions/
remove_inst_use.rs1use crate::functions::kill_ir_utils::kill_ir_function_ir_inst;
2use crate::macros::codegen_assert::CODEGEN_ASSERT;
3use crate::records::ir_function::IrFunction;
4use crate::records::ir_inst::IrInst;
5
6pub fn remove_inst_use(function: &mut IrFunction, inst_idx: u32) {
7 let inst: *mut IrInst = &mut function.instructions[inst_idx as usize];
8
9 CODEGEN_ASSERT!(unsafe { (*inst).use_count } != 0);
10 unsafe {
11 (*inst).use_count -= 1;
12 }
13
14 if unsafe { (*inst).use_count } == 0 {
15 kill_ir_function_ir_inst(function, unsafe { &mut *inst });
16 }
17}