From 6bbe2b195ea4bb39d8a82c87778a012f4ecb1cf9 Mon Sep 17 00:00:00 2001 From: Antoine Viallon Date: Fri, 5 Jan 2024 23:15:52 +0100 Subject: [PATCH] ir: IRRegister: track registers (statefully) --- compiler/ir.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) 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}"