hdl.xfrm: handle empty lhs in LHSGroup{Analyzer,Filter}.
This commit is contained in:
parent
1b54eb80da
commit
51c03ca391
|
@ -485,6 +485,8 @@ class LHSGroupAnalyzer(StatementVisitor):
|
||||||
return groups
|
return groups
|
||||||
|
|
||||||
def on_Assign(self, stmt):
|
def on_Assign(self, stmt):
|
||||||
|
lhs_signals = stmt._lhs_signals()
|
||||||
|
if lhs_signals:
|
||||||
self.unify(*stmt._lhs_signals())
|
self.unify(*stmt._lhs_signals())
|
||||||
|
|
||||||
on_Assert = on_Assign
|
on_Assert = on_Assign
|
||||||
|
@ -511,7 +513,9 @@ class LHSGroupFilter(SwitchCleaner):
|
||||||
def on_Assign(self, stmt):
|
def on_Assign(self, stmt):
|
||||||
# The invariant provided by LHSGroupAnalyzer is that all signals that ever appear together
|
# The invariant provided by LHSGroupAnalyzer is that all signals that ever appear together
|
||||||
# on LHS are a part of the same group, so it is sufficient to check any of them.
|
# on LHS are a part of the same group, so it is sufficient to check any of them.
|
||||||
any_lhs_signal = next(iter(stmt.lhs._lhs_signals()))
|
lhs_signals = stmt.lhs._lhs_signals()
|
||||||
|
if lhs_signals:
|
||||||
|
any_lhs_signal = next(iter(lhs_signals))
|
||||||
if any_lhs_signal in self.signals:
|
if any_lhs_signal in self.signals:
|
||||||
return stmt
|
return stmt
|
||||||
|
|
||||||
|
|
|
@ -314,6 +314,8 @@ class PartTestCase(FHDLTestCase):
|
||||||
|
|
||||||
class CatTestCase(FHDLTestCase):
|
class CatTestCase(FHDLTestCase):
|
||||||
def test_shape(self):
|
def test_shape(self):
|
||||||
|
c0 = Cat()
|
||||||
|
self.assertEqual(c0.shape(), (0, False))
|
||||||
c1 = Cat(Const(10))
|
c1 = Cat(Const(10))
|
||||||
self.assertEqual(c1.shape(), (4, False))
|
self.assertEqual(c1.shape(), (4, False))
|
||||||
c2 = Cat(Const(10), Const(1))
|
c2 = Cat(Const(10), Const(1))
|
||||||
|
|
|
@ -303,6 +303,15 @@ class LHSGroupAnalyzerTestCase(FHDLTestCase):
|
||||||
SignalSet((b,)),
|
SignalSet((b,)),
|
||||||
])
|
])
|
||||||
|
|
||||||
|
def test_lhs_empty(self):
|
||||||
|
stmts = [
|
||||||
|
Cat().eq(0)
|
||||||
|
]
|
||||||
|
|
||||||
|
groups = LHSGroupAnalyzer()(stmts)
|
||||||
|
self.assertEqual(list(groups.values()), [
|
||||||
|
])
|
||||||
|
|
||||||
|
|
||||||
class LHSGroupFilterTestCase(FHDLTestCase):
|
class LHSGroupFilterTestCase(FHDLTestCase):
|
||||||
def test_filter(self):
|
def test_filter(self):
|
||||||
|
@ -329,6 +338,13 @@ class LHSGroupFilterTestCase(FHDLTestCase):
|
||||||
)
|
)
|
||||||
""")
|
""")
|
||||||
|
|
||||||
|
def test_lhs_empty(self):
|
||||||
|
stmts = [
|
||||||
|
Cat().eq(0)
|
||||||
|
]
|
||||||
|
|
||||||
|
self.assertRepr(LHSGroupFilter(SignalSet())(stmts), "()")
|
||||||
|
|
||||||
|
|
||||||
class ResetInserterTestCase(FHDLTestCase):
|
class ResetInserterTestCase(FHDLTestCase):
|
||||||
def setUp(self):
|
def setUp(self):
|
||||||
|
|
Loading…
Reference in a new issue