From 17f0d64edba974126b2d0fa23b4923098477f93a Mon Sep 17 00:00:00 2001 From: Albert Magyar Date: Wed, 11 Mar 2020 21:47:28 -0700 Subject: Avoid generating out-of-bounds indices in ReplaceAccesses --- src/main/scala/firrtl/passes/ReplaceAccesses.scala | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) (limited to 'src') 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 } -- cgit v1.2.3