Skip to main content

luaur_code_gen/methods/
const_prop_state_try_get_reg_link.rs

1use crate::enums::ir_op_kind::IrOpKind;
2use crate::records::const_prop_state::ConstPropState;
3use crate::records::ir_op::IrOp;
4use crate::records::register_link::RegisterLink;
5
6impl ConstPropState {
7    pub fn try_get_reg_link(&mut self, inst_op: IrOp) -> Option<*mut RegisterLink> {
8        if inst_op.kind() != IrOpKind::Inst {
9            return None;
10        }
11        if let Some(link) = self.inst_link.find(&inst_op.index()) {
12            if link.version < self.regs[link.reg as usize].version {
13                return None;
14            }
15            return Some(link as *const RegisterLink as *mut RegisterLink);
16        }
17        None
18    }
19}