diff options
| author | azidar | 2016-08-18 17:27:12 -0700 |
|---|---|---|
| committer | Donggyu Kim | 2016-09-12 11:42:18 -0700 |
| commit | 803ccfb1bc44dba88edf0ae9755ec13cbc9192d9 (patch) | |
| tree | fc30e11b6f99da10d493c3d85c743ac1d2b2ba64 /src | |
| parent | 20ff9c96a7c07df8e0cb91444f223384261d35fe (diff) | |
Fixed bug where nodes of Invalids where created
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/passes/ExpandWhens.scala | 21 |
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) |
