aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSchuyler Eldridge2018-08-22 16:11:59 -0400
committerSchuyler Eldridge2018-11-07 13:49:16 -0500
commit9516799355c0568409f8f01cfaf5a56a495d40fe (patch)
tree0c714216f53dfc6a0c736726729c4da795d5fbb4 /src
parent7a4f15aa27aed8ce9cc180fb89126a954638e102 (diff)
Make DeadCodeElimination a RegisteredTransform
Signed-off-by: Schuyler Eldridge <schuyler.eldridge@ibm.com>
Diffstat (limited to 'src')
-rw-r--r--src/main/resources/META-INF/services/firrtl.options.RegisteredTransform1
-rw-r--r--src/main/scala/firrtl/transforms/DeadCodeElimination.scala10
2 files changed, 10 insertions, 1 deletions
diff --git a/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform b/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform
new file mode 100644
index 00000000..6a6a858d
--- /dev/null
+++ b/src/main/resources/META-INF/services/firrtl.options.RegisteredTransform
@@ -0,0 +1 @@
+firrtl.transforms.DeadCodeElimination
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 {