aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorazidar2016-08-18 17:27:12 -0700
committerDonggyu Kim2016-09-12 11:42:18 -0700
commit803ccfb1bc44dba88edf0ae9755ec13cbc9192d9 (patch)
treefc30e11b6f99da10d493c3d85c743ac1d2b2ba64 /src
parent20ff9c96a7c07df8e0cb91444f223384261d35fe (diff)
Fixed bug where nodes of Invalids where created
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/passes/ExpandWhens.scala21
1 files changed, 13 insertions, 8 deletions
diff --git a/src/main/scala/firrtl/passes/ExpandWhens.scala b/src/main/scala/firrtl/passes/ExpandWhens.scala
index dcefb20f..5a7a7bac 100644
--- a/src/main/scala/firrtl/passes/ExpandWhens.scala
+++ b/src/main/scala/firrtl/passes/ExpandWhens.scala
@@ -137,15 +137,20 @@ object ExpandWhens extends Pass {
conseqNetlist getOrElse (lvalue, altNetlist(lvalue))
}
- nodes get res match {
- case Some(name) =>
- netlist(lvalue) = WRef(name, res.tpe, NodeKind(), MALE)
+ res match {
+ case _: ValidIf | _: Mux | _: DoPrim => nodes get res match {
+ case Some(name) =>
+ netlist(lvalue) = WRef(name, res.tpe, NodeKind(), MALE)
+ EmptyStmt
+ case None =>
+ val name = namespace.newTemp
+ nodes(res) = name
+ netlist(lvalue) = WRef(name, res.tpe, NodeKind(), MALE)
+ DefNode(s.info, name, res)
+ }
+ case _ =>
+ netlist(lvalue) = res
EmptyStmt
- case None =>
- val name = namespace.newTemp
- nodes(res) = name
- netlist(lvalue) = WRef(name, res.tpe, NodeKind(), MALE)
- DefNode(s.info, name, res)
}
}
Block(Seq(conseqStmt, altStmt) ++ memos)