deimos-lang/dmc-lib/src/ir/ir_statement.rs
2026-08-29 20:35:29 -05:00

34 lines
1.1 KiB
Rust

use crate::ir::ir_assign::IrAssign;
use crate::ir::ir_call::IrCall;
use crate::ir::ir_return::IrReturn;
use crate::ir::ir_set_field::IrSetField;
use crate::ir::register_allocation::{VrCollector, VrUser};
#[derive(Debug)]
pub enum IrStatement {
Assign(IrAssign),
Call(IrCall),
Return(IrReturn),
SetField(IrSetField),
}
impl VrUser for IrStatement {
fn vr_definitions(&self, vrs: &mut VrCollector) {
match self {
IrStatement::Assign(ir_assign) => ir_assign.vr_definitions(vrs),
IrStatement::Call(ir_call) => ir_call.vr_definitions(vrs),
IrStatement::Return(ir_return) => ir_return.vr_definitions(vrs),
IrStatement::SetField(ir_set_field) => ir_set_field.vr_definitions(vrs),
}
}
fn vr_uses(&self, vrs: &mut VrCollector) {
match self {
IrStatement::Assign(ir_assign) => ir_assign.vr_uses(vrs),
IrStatement::Call(ir_call) => ir_call.vr_uses(vrs),
IrStatement::Return(ir_return) => ir_return.vr_uses(vrs),
IrStatement::SetField(ir_set_field) => ir_set_field.vr_uses(vrs),
}
}
}