diff options
| -rw-r--r-- | src/main/scala/firrtl/passes/DeadCodeElimination.scala | 12 |
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 = { |
