aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlbert Magyar2020-03-11 21:47:28 -0700
committerAlbert Magyar2020-03-12 09:04:39 -0700
commit17f0d64edba974126b2d0fa23b4923098477f93a (patch)
tree6fb887f9b3d437e1ba85bdb57c6fba2de9680c2e /src
parent3726fba89bb70f424ac8be4ad2d4b300c471d7e8 (diff)
Avoid generating out-of-bounds indices in ReplaceAccesses
Diffstat (limited to 'src')
-rw-r--r--src/main/scala/firrtl/passes/ReplaceAccesses.scala5
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
}