aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-11-07 15:30:17 -0500
committerGitHub2018-11-07 15:30:17 -0500
commit75284395ba7ef285daefd2da38e720590b465ad7 (patch)
tree7ae4e04a16eb87ce306a9d891acabbd4c6b1c8b7 /src/main/scala/firrtl/transforms/DeadCodeElimination.scala
parent17b4e9835bd95dcf91c5ea5a4d7c52280031ea93 (diff)
parentb05eaea3e59c64d619a544c63311d510f335f7e5 (diff)
Merge pull request #919 from seldridge/f764.6
- Add, but do not use Options-mirroring Annotations
Diffstat (limited to 'src/main/scala/firrtl/transforms/DeadCodeElimination.scala')
-rw-r--r--src/main/scala/firrtl/transforms/DeadCodeElimination.scala10
1 files changed, 9 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
index 523c997b..8f9fad46 100644
--- a/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
+++ b/src/main/scala/firrtl/transforms/DeadCodeElimination.scala
@@ -11,6 +11,8 @@ import firrtl.Mappers._
import firrtl.WrappedExpression._
import firrtl.Utils.{throwInternalError, toWrappedExpression, kind}
import firrtl.MemoizedHash._
+import firrtl.options.RegisteredTransform
+import scopt.OptionParser
import collection.mutable
import java.io.{File, FileWriter}
@@ -30,10 +32,16 @@ import java.io.{File, FileWriter}
* circumstances of their instantiation in their parent module, they will still not be removed. To
* remove such modules, use the [[NoDedupAnnotation]] to prevent deduplication.
*/
-class DeadCodeElimination extends Transform with ResolvedAnnotationPaths {
+class DeadCodeElimination extends Transform with ResolvedAnnotationPaths with RegisteredTransform {
def inputForm = LowForm
def outputForm = LowForm
+ def addOptions(parser: OptionParser[AnnotationSeq]): Unit = parser
+ .opt[Unit]("no-dce")
+ .action( (x, c) => c :+ NoDCEAnnotation )
+ .maxOccurs(1)
+ .text("Do NOT run dead code elimination")
+
/** Based on LogicNode ins CheckCombLoops, currently kind of faking it */
private type LogicNode = MemoizedHash[WrappedExpression]
private object LogicNode {