use super::{eliminate_dead_lets, eliminate_unreachable};
use crate::ir::Program;
use std::collections::HashSet;
#[must_use]
#[inline]
pub fn dce(program: Program) -> Program {
let entry = eliminate_dead_lets(program.entry(), HashSet::new()).nodes;
let entry = eliminate_unreachable(entry);
let entry = eliminate_dead_lets(&entry, HashSet::new()).nodes;
Program::new(program.buffers().to_vec(), program.workgroup_size(), entry)
.with_optional_entry_op_id(program.entry_op_id().map(str::to_string))
}