mirror of
https://github.com/YosysHQ/yosys
synced 2025-04-07 09:55:20 +00:00
Merge pull request #3871 from jix/smtbmc-sexpr-scan
smtbmc: Avoid quadratic behavior when scanning s-exprs
This commit is contained in:
commit
701b767736
|
@ -245,6 +245,7 @@ class SmtIo:
|
||||||
self.logic_uf = False
|
self.logic_uf = False
|
||||||
self.unroll_idcnt = 0
|
self.unroll_idcnt = 0
|
||||||
self.unroll_buffer = ""
|
self.unroll_buffer = ""
|
||||||
|
self.unroll_level = 0
|
||||||
self.unroll_sorts = set()
|
self.unroll_sorts = set()
|
||||||
self.unroll_objs = set()
|
self.unroll_objs = set()
|
||||||
self.unroll_decls = dict()
|
self.unroll_decls = dict()
|
||||||
|
@ -420,13 +421,15 @@ class SmtIo:
|
||||||
self.p_close()
|
self.p_close()
|
||||||
|
|
||||||
if unroll and self.unroll:
|
if unroll and self.unroll:
|
||||||
stmt = self.unroll_buffer + stmt
|
|
||||||
self.unroll_buffer = ""
|
|
||||||
|
|
||||||
s = re.sub(r"\|[^|]*\|", "", stmt)
|
s = re.sub(r"\|[^|]*\|", "", stmt)
|
||||||
if s.count("(") != s.count(")"):
|
self.unroll_level += s.count("(") - s.count(")")
|
||||||
self.unroll_buffer = stmt + " "
|
if self.unroll_level > 0:
|
||||||
|
self.unroll_buffer += stmt
|
||||||
|
self.unroll_buffer += " "
|
||||||
return
|
return
|
||||||
|
else:
|
||||||
|
stmt = self.unroll_buffer + stmt
|
||||||
|
self.unroll_buffer = ""
|
||||||
|
|
||||||
s = self.parse(stmt)
|
s = self.parse(stmt)
|
||||||
|
|
||||||
|
|
Loading…
Reference in a new issue