Skip to main content

luaur_code_gen/functions/
kill_unused_blocks.rs

1use crate::enums::ir_block_kind::IrBlockKind;
2use crate::functions::kill_ir_utils_alt_c::kill_ir_function_ir_block;
3use crate::records::ir_block::IrBlock;
4use crate::records::ir_function::IrFunction;
5
6pub fn kill_unused_blocks(function: &mut IrFunction) {
7    // Start from 1 as the first block is the entry block
8    let mut i = 1usize;
9    while i < function.blocks.len() {
10        let block: *mut IrBlock = &mut function.blocks[i];
11
12        if unsafe { (*block).kind } != IrBlockKind::Dead && unsafe { (*block).use_count } == 0 {
13            kill_ir_function_ir_block(function, unsafe { &mut *block });
14        }
15
16        i += 1;
17    }
18}