diff options
| author | Albert Magyar | 2020-03-11 21:47:28 -0700 |
|---|---|---|
| committer | Albert Magyar | 2020-03-12 09:04:39 -0700 |
| commit | 17f0d64edba974126b2d0fa23b4923098477f93a (patch) | |
| tree | 6fb887f9b3d437e1ba85bdb57c6fba2de9680c2e /src | |
| parent | 3726fba89bb70f424ac8be4ad2d4b300c471d7e8 (diff) | |
Avoid generating out-of-bounds indices in ReplaceAccesses
Diffstat (limited to 'src')
| -rw-r--r-- | src/main/scala/firrtl/passes/ReplaceAccesses.scala | 5 |
1 files changed, 4 insertions, 1 deletions
diff --git a/src/main/scala/firrtl/passes/ReplaceAccesses.scala b/src/main/scala/firrtl/passes/ReplaceAccesses.scala index 75cca77a..6992b6b8 100644 --- a/src/main/scala/firrtl/passes/ReplaceAccesses.scala +++ b/src/main/scala/firrtl/passes/ReplaceAccesses.scala @@ -18,7 +18,10 @@ object ReplaceAccesses extends Pass with PreservesAll[Transform] { def run(c: Circuit): Circuit = { def onStmt(s: Statement): Statement = s map onStmt map onExp def onExp(e: Expression): Expression = e match { - case WSubAccess(ex, UIntLiteral(value, width), t, g) => WSubIndex(onExp(ex), value.toInt, t, g) + case WSubAccess(ex, UIntLiteral(value, _), t, g) => ex.tpe match { + case VectorType(_, len) if (value < len) => WSubIndex(onExp(ex), value.toInt, t, g) + case _ => e map onExp + } case _ => e map onExp } |
