diff --git a/compiler/ir.py b/compiler/ir.py index ddc8217..6035c61 100644 --- a/compiler/ir.py +++ b/compiler/ir.py @@ -125,12 +125,20 @@ class IRAssignable(IRValue, metaclass=abc.ABCMeta): class IRRegister(IRAssignable): - register_id = 0 + register_id: int = 0 + registers: dict[int, IRRegister] = {} def __init__(self, location: SourceLocation): super().__init__(location) self.id = IRRegister.register_id IRRegister.register_id += 1 + IRRegister.registers[self.id] = self + + def __hash__(self) -> int: + return self.id + + def remove(self): + del IRRegister.registers[self.id] def codegen(self): return f"%r{self.id}"