Skip to content

Commit

Permalink
Handle multiple rename case in uniq. logic
Browse files Browse the repository at this point in the history
  • Loading branch information
Rajsekhar Setaluri committed Dec 12, 2019
1 parent 0b7a750 commit dbf0eda
Showing 1 changed file with 11 additions and 10 deletions.
21 changes: 11 additions & 10 deletions magma/uniquification.py
Expand Up @@ -36,8 +36,7 @@ def _hash(definition):

class UniquificationPass(DefinitionPass):
def __init__(self, main, mode):
super(UniquificationPass, self).__init__(main)
self.definitions = {}
super().__init__(main)
self.mode = mode
self.seen = {}
self.original_names = {}
Expand All @@ -46,17 +45,19 @@ def __call__(self, definition):
name = definition.name
key = _hash(definition)

if name not in self.seen:
self.seen[name] = {}
if key not in self.seen[name]:
if self.mode is UniquificationMode.UNIQUIFY and len(self.seen[name]) > 0:
new_name = name + "_unq" + str(len(self.seen[name]))
seen = self.seen.setdefault(name, {})
if key not in seen:
if self.mode is UniquificationMode.UNIQUIFY and len(seen) > 0:
new_name = name + "_unq" + str(len(seen))
type(definition).rename(definition, new_name)
self.seen[name][key] = [definition]
seen[key] = [definition]
else:
if self.mode is not UniquificationMode.UNIQUIFY:
assert self.seen[name][key][0].name == definition.name
self.seen[name][key].append(definition)
assert seen[key][0].name == name
elif name != seen[key][0].name:
new_name = seen[key][0].name
type(definition).rename(definition, new_name)
seen[key].append(definition)

def run(self):
super().run()
Expand Down

0 comments on commit dbf0eda

Please sign in to comment.