luaur-code-gen 0.1.3

Native (A64/X64) code generation for Luau (Rust).
Documentation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
use crate::functions::kill_ir_utils_alt_c::kill_ir_function_ir_block;
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::ir_block::IrBlock;
use crate::records::ir_function::IrFunction;

pub fn remove_block_use(function: &mut IrFunction, block_idx: u32) {
    let block: *mut IrBlock = &mut function.blocks[block_idx as usize];

    CODEGEN_ASSERT!(unsafe { (*block).use_count } != 0);
    unsafe {
        (*block).use_count -= 1;
    }

    // Entry block is never removed because is has an implicit use
    if unsafe { (*block).use_count } == 0 && block_idx != 0 {
        kill_ir_function_ir_block(function, unsafe { &mut *block });
    }
}