use crate::functions::mark_dead_stores_in_inst::mark_dead_stores_in_inst;
use crate::macros::codegen_assert::CODEGEN_ASSERT;
use crate::records::ir_block::IrBlock;
use crate::records::ir_builder::IrBuilder;
use crate::records::ir_function::IrFunction;
use crate::records::ir_inst::IrInst;
use crate::records::remove_dead_store_state::RemoveDeadStoreState;
const K_BLOCK_FLAG_SAFE_ENV_CHECK: u8 = 1 << 0;
pub fn mark_dead_stores_in_block(
build: &mut IrBuilder,
block: &mut IrBlock,
state: &mut RemoveDeadStoreState,
) {
let function: *mut IrFunction = &mut build.function;
if (block.flags & K_BLOCK_FLAG_SAFE_ENV_CHECK) != 0 {
state.read_all_regs();
}
let start = block.start;
let finish = block.finish;
let mut index = start;
while index <= finish {
CODEGEN_ASSERT!((index as usize) < unsafe { (*function).instructions.len() });
let inst_ptr: *mut IrInst = unsafe { &mut (&mut (*function).instructions)[index as usize] };
mark_dead_stores_in_inst(
state,
build,
unsafe { &mut *function },
block,
unsafe { &mut *inst_ptr },
index,
);
index += 1;
}
}