From 0c49cfecfcf7831ee3df20b986585942b5cc9812 Mon Sep 17 00:00:00 2001 From: Adam Izraelevitz Date: Tue, 21 Mar 2017 15:13:35 -0700 Subject: Fixed zero width perf bug #502 Now remove DefNodes of zero width Don't deeply walk nodes (was the source of the bug) --- src/main/scala/firrtl/passes/ZeroWidth.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/firrtl/passes/ZeroWidth.scala b/src/main/scala/firrtl/passes/ZeroWidth.scala index 8638ea68..a50fdc16 100644 --- a/src/main/scala/firrtl/passes/ZeroWidth.scala +++ b/src/main/scala/firrtl/passes/ZeroWidth.scala @@ -36,18 +36,22 @@ object ZeroWidth extends Pass { (e map replaceType) map onExp } private def onStmt(s: Statement): Statement = s match { - case sx: IsDeclaration => + case (_: DefWire| _: DefRegister| _: DefMemory) => var removed = false def applyRemoveZero(t: Type): Type = removeZero(t) match { case None => removed = true; t case Some(tx) => tx } - val sxx = (sx map onExp) map applyRemoveZero + val sxx = (s map onExp) map applyRemoveZero if(removed) EmptyStmt else sxx case Connect(info, loc, exp) => removeZero(loc.tpe) match { case None => EmptyStmt case Some(t) => Connect(info, loc, onExp(exp)) } + case DefNode(info, name, value) => removeZero(value.tpe) match { + case None => EmptyStmt + case Some(t) => s + } case sx => sx map onStmt } private def onModule(m: DefModule): DefModule = { -- cgit v1.2.3