aboutsummaryrefslogtreecommitdiff
path: root/src/main
diff options
context:
space:
mode:
Diffstat (limited to 'src/main')
-rw-r--r--src/main/scala/firrtl/passes/DeadCodeElimination.scala12
1 files changed, 8 insertions, 4 deletions
diff --git a/src/main/scala/firrtl/passes/DeadCodeElimination.scala b/src/main/scala/firrtl/passes/DeadCodeElimination.scala
index 98ef296e..cb772556 100644
--- a/src/main/scala/firrtl/passes/DeadCodeElimination.scala
+++ b/src/main/scala/firrtl/passes/DeadCodeElimination.scala
@@ -36,8 +36,7 @@ import annotation.tailrec
object DeadCodeElimination extends Pass {
def name = "Dead Code Elimination"
- @tailrec
- private def dce(s: Stmt): Stmt = {
+ private def dceOnce(s: Stmt): (Stmt, Long) = {
val referenced = collection.mutable.HashSet[String]()
var nEliminated = 0L
@@ -66,8 +65,13 @@ object DeadCodeElimination extends Pass {
}
checkUse(s)
- val res = removeUnused(s)
- if (nEliminated > 0) dce(res) else res
+ (removeUnused(s), nEliminated)
+ }
+
+ @tailrec
+ private def dce(s: Stmt): Stmt = {
+ val (res, n) = dceOnce(s)
+ if (n > 0) dce(res) else res
}
def run(c: Circuit): Circuit = {