diff options
| author | Angie Wang | 2016-09-12 11:09:45 -0700 |
|---|---|---|
| committer | Adam Izraelevitz | 2016-09-12 11:09:45 -0700 |
| commit | 20ff9c96a7c07df8e0cb91444f223384261d35fe (patch) | |
| tree | 203d7f777bb101c764270886e4b466f3fc45ce25 /src/main | |
| parent | 2010bc4fc7ae1b2f263505ab069dcf1b7c0f56af (diff) | |
Bug fix -- remove all empty expressions after ReplSeqMem passes (#294)
* Bug fix -- remove all empty expressions after ReplSeqMem passes
* Added test to make sure ReplSeqMem can handle BundleType SMem (EmptyExpression leakage)
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala | 20 |
1 files changed, 15 insertions, 5 deletions
diff --git a/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala b/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala index d71b8ab8..81684d90 100644 --- a/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala +++ b/src/main/scala/firrtl/passes/UpdateDuplicateMemMacros.scala @@ -43,13 +43,23 @@ object MemTransformUtils { } def updateStmtRefs(s: Statement, repl: Map[String, Expression]): Statement = { - def updateRef(e: Expression): Expression = e map updateRef match { - case e: WSubField => repl getOrElse (e.serialize, e) - case e => e + def updateRef(e: Expression): Expression = e map updateRef match { + case e => repl getOrElse (e.serialize, e) + } + def hasEmptyExpr(stmt: Statement): Boolean = { + var foundEmpty = false + def testEmptyExpr(e: Expression): Expression = { + e map testEmptyExpr match { + case EmptyExpression => foundEmpty = true + case _ => + } + e // map must return; no foreach + } + stmt map testEmptyExpr + foundEmpty } def updateStmtRefs(s: Statement): Statement = s map updateStmtRefs map updateRef match { - case Connect(info, EmptyExpression, exp) => EmptyStmt - case Connect(info, WSubIndex(EmptyExpression, _, _, _), exp) => EmptyStmt + case c: Connect if hasEmptyExpr(c) => EmptyStmt case s => s } updateStmtRefs(s) |
