diff options
Diffstat (limited to 'src/main/scala/firrtl/passes/DeadCodeElimination.scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/DeadCodeElimination.scala | 17 |
1 files changed, 9 insertions, 8 deletions
diff --git a/src/main/scala/firrtl/passes/DeadCodeElimination.scala b/src/main/scala/firrtl/passes/DeadCodeElimination.scala index cb772556..80ba0e98 100644 --- a/src/main/scala/firrtl/passes/DeadCodeElimination.scala +++ b/src/main/scala/firrtl/passes/DeadCodeElimination.scala @@ -28,6 +28,7 @@ MODIFICATIONS. package firrtl.passes import firrtl._ +import firrtl.ir._ import firrtl.Utils._ import firrtl.Mappers._ @@ -36,7 +37,7 @@ import annotation.tailrec object DeadCodeElimination extends Pass { def name = "Dead Code Elimination" - private def dceOnce(s: Stmt): (Stmt, Long) = { + private def dceOnce(s: Statement): (Statement, Long) = { val referenced = collection.mutable.HashSet[String]() var nEliminated = 0L @@ -48,16 +49,16 @@ object DeadCodeElimination extends Pass { e } - def checkUse(s: Stmt): Stmt = s map checkUse map checkExpressionUse + def checkUse(s: Statement): Statement = s map checkUse map checkExpressionUse - def maybeEliminate(x: Stmt, name: String) = + def maybeEliminate(x: Statement, name: String) = if (referenced(name)) x else { nEliminated += 1 - Empty() + EmptyStmt } - def removeUnused(s: Stmt): Stmt = s match { + def removeUnused(s: Statement): Statement = s match { case x: DefRegister => maybeEliminate(x, x.name) case x: DefWire => maybeEliminate(x, x.name) case x: DefNode => maybeEliminate(x, x.name) @@ -69,15 +70,15 @@ object DeadCodeElimination extends Pass { } @tailrec - private def dce(s: Stmt): Stmt = { + private def dce(s: Statement): Statement = { val (res, n) = dceOnce(s) if (n > 0) dce(res) else res } def run(c: Circuit): Circuit = { val modulesx = c.modules.map { - case m: ExModule => m - case m: InModule => InModule(m.info, m.name, m.ports, dce(m.body)) + case m: ExtModule => m + case m: Module => Module(m.info, m.name, m.ports, dce(m.body)) } Circuit(c.info, modulesx, c.main) } |
