diff options
| author | Albert Magyar | 2020-03-11 10:42:59 -0700 |
|---|---|---|
| committer | GitHub | 2020-03-11 10:42:59 -0700 |
| commit | 646c91e71b8bfb1b0d0f22e81ca113147637ce71 (patch) | |
| tree | fa842f29818e6b1332c462894c60c18b7455414a | |
| parent | 8a1b4a4157de50e67f9f8b23e05db56021d7b66c (diff) | |
Remove dead passes.DeadCodeElimination code (#1440)
| -rw-r--r-- | src/main/scala/firrtl/passes/DeadCodeElimination.scala | 66 |
1 files changed, 0 insertions, 66 deletions
diff --git a/src/main/scala/firrtl/passes/DeadCodeElimination.scala b/src/main/scala/firrtl/passes/DeadCodeElimination.scala deleted file mode 100644 index 72a24474..00000000 --- a/src/main/scala/firrtl/passes/DeadCodeElimination.scala +++ /dev/null @@ -1,66 +0,0 @@ -// See LICENSE for license details. - -package firrtl.passes - -import firrtl._ -import firrtl.ir._ -import firrtl.Mappers._ - -import annotation.tailrec - -object DeadCodeElimination extends Transform { - def inputForm = UnknownForm - def outputForm = UnknownForm - private def dceOnce(renames: RenameMap)(s: Statement): (Statement, Long) = { - val referenced = collection.mutable.HashSet[String]() - var nEliminated = 0L - - def checkExpressionUse(e: Expression): Expression = { - e match { - case WRef(name, _, _, _) => referenced += name - case _ => e map checkExpressionUse - } - e - } - - def checkUse(s: Statement): Statement = s map checkUse map checkExpressionUse - - def maybeEliminate(x: Statement, name: String) = - if (referenced(name)) x - else { - nEliminated += 1 - renames.delete(name) - EmptyStmt - } - - 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) - case x => s map removeUnused - } - - checkUse(s) - (removeUnused(s), nEliminated) - } - - @tailrec - private def dce(renames: RenameMap)(s: Statement): Statement = { - val (res, n) = dceOnce(renames)(s) - if (n > 0) dce(renames)(res) else res - } - - def execute(state: CircuitState): CircuitState = { - val c = state.circuit - val renames = RenameMap() - renames.setCircuit(c.main) - val modulesx = c.modules.map { - case m: ExtModule => m - case m: Module => - renames.setModule(m.name) - Module(m.info, m.name, m.ports, dce(renames)(m.body)) - } - val result = Circuit(c.info, modulesx, c.main) - CircuitState(result, outputForm, state.annotations, Some(renames)) - } -} |
