Skip to content

Commit

Permalink
Fix accidentally quadratic code in compiler.ir.Function._add_name.
Browse files Browse the repository at this point in the history
whitequark committed Jul 29, 2015
1 parent 6d8d0ff commit d7f9af4
Showing 1 changed file with 9 additions and 7 deletions.
16 changes: 9 additions & 7 deletions artiq/compiler/ir.py
Original file line number Diff line number Diff line change
@@ -396,20 +396,22 @@ class Function:
def __init__(self, typ, name, arguments):
self.type, self.name = typ, name
self.names, self.arguments, self.basic_blocks = set(), [], []
self.next_name = 1
self.set_arguments(arguments)
self.is_internal = False

def _remove_name(self, name):
self.names.remove(name)

def _add_name(self, base_name):
name, counter = base_name, 1
while name in self.names or name == "":
if base_name == "":
name = "v.{}".format(str(counter))
else:
name = "{}.{}".format(name, counter)
counter += 1
if base_name == "":
name = "v.{}".format(self.next_name)
self.next_name += 1
elif base_name in self.names:
name = "{}.{}".format(base_name, self.next_name)
self.next_name += 1
else:
name = base_name

self.names.add(name)
return name

0 comments on commit d7f9af4

Please sign in to comment.