diff options
| author | Jack Koenig | 2018-03-02 17:00:10 -0800 |
|---|---|---|
| committer | GitHub | 2018-03-02 17:00:10 -0800 |
| commit | 6ebd1585e891d0d31cd99ef3e63038b0675cf8f9 (patch) | |
| tree | b57e68c17f986bff8333e506a6e40165584422a2 /src/main | |
| parent | dd03e983298819922978664aa04d307595d2b9fc (diff) | |
Reduce Statement nesting in Wiring Pass (#751)
Large amounts of Wiring could result in huge nesting of Statements. This could
cause stack overflows using the Mappers. Fixed by no longer nesting Statements
in Wiring Pass.
Diffstat (limited to 'src/main')
| -rw-r--r-- | src/main/scala/firrtl/passes/wiring/Wiring.scala | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/src/main/scala/firrtl/passes/wiring/Wiring.scala b/src/main/scala/firrtl/passes/wiring/Wiring.scala index a268dba7..8c401753 100644 --- a/src/main/scala/firrtl/passes/wiring/Wiring.scala +++ b/src/main/scala/firrtl/passes/wiring/Wiring.scala @@ -194,8 +194,12 @@ class Wiring(wiSeq: Seq[WiringInfo]) extends Pass { Connect(NoInfo, toExp(l), toExp(r)) }) m match { - case Module(i, n, ps, s) => Module(i, n, ps ++ ports, - Block(defines ++ Seq(s) ++ connects)) + case Module(i, n, ps, body) => + val stmts = body match { + case Block(sx) => sx + case s => Seq(s) + } + Module(i, n, ps ++ ports, Block(defines ++ stmts ++ connects)) case ExtModule(i, n, ps, dn, p) => ExtModule(i, n, ps ++ ports, dn, p) } } |
