From bc96eec88cbba1dddae654263d2373c4812c827c Mon Sep 17 00:00:00 2001 From: Gabor Szita Date: Wed, 5 Mar 2025 18:08:30 -0800 Subject: [PATCH 1/2] Use a loop instead of recursion in find_producer --- pyrtl/passes.py | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/pyrtl/passes.py b/pyrtl/passes.py index 0b684303..bced9a57 100644 --- a/pyrtl/passes.py +++ b/pyrtl/passes.py @@ -69,10 +69,9 @@ def __setitem__(self, key, item): self.dict[key] = item def find_producer(self, item): - if item in self.dict: - return self.find_producer(self.dict[item]) - else: - return item + while item in self.dict: + item = self.find_producer(self.dict[item]) + return item def _remove_wire_nets(block, skip_sanity_check=False): From 2f2cf53c0d0e5589e3fd9297b5d8dd4af6173c4b Mon Sep 17 00:00:00 2001 From: Gabor Szita Date: Wed, 5 Mar 2025 18:16:38 -0800 Subject: [PATCH 2/2] make find_producer actually iterative --- pyrtl/passes.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pyrtl/passes.py b/pyrtl/passes.py index bced9a57..35f365e5 100644 --- a/pyrtl/passes.py +++ b/pyrtl/passes.py @@ -70,7 +70,7 @@ def __setitem__(self, key, item): def find_producer(self, item): while item in self.dict: - item = self.find_producer(self.dict[item]) + item = self.dict[item] return item