aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/passes/DeadCodeElimination.scala
diff options
context:
space:
mode:
Diffstat (limited to 'src/main/scala/firrtl/passes/DeadCodeElimination.scala')
-rw-r--r--src/main/scala/firrtl/passes/DeadCodeElimination.scala17
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)
}