Skip to main content

luaur_code_gen/functions/
remove_inst_use.rs

1use 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}