From 17437907de4ad12eb3f8d0818a158eb6959591a3 Mon Sep 17 00:00:00 2001 From: Jack Koenig Date: Tue, 10 Jul 2018 19:03:53 -0700 Subject: Fix bug in zero-width renaming (#845) Previously, Vecs of Bundles that contained a zero-width element would result in a ClassCastException--- src/main/scala/firrtl/passes/ZeroWidth.scala | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) (limited to 'src/main') diff --git a/src/main/scala/firrtl/passes/ZeroWidth.scala b/src/main/scala/firrtl/passes/ZeroWidth.scala index 12da7d9b..6a79fe9a 100644 --- a/src/main/scala/firrtl/passes/ZeroWidth.scala +++ b/src/main/scala/firrtl/passes/ZeroWidth.scala @@ -66,8 +66,12 @@ object ZeroWidth extends Transform { else fields.flatMap(f => findRemovable(WSubField(expr, f.name, f.tpe, MALE), f.tpe)) case VectorType(vtpe, size) => if (size == 0) List(expr) - else findRemovable(WSubIndex(expr, 0, vtpe, MALE), vtpe).flatMap { e => - (0 until size).map(i => e.asInstanceOf[WSubIndex].copy(value = i)) + else { // Only invoke findRemovable multiple times if a zero-width element is found + val es0 = findRemovable(WSubIndex(expr, 0, vtpe, MALE), vtpe) + if (es0.isEmpty) es0 + else { + es0 ++ (1 until size).flatMap(i => findRemovable(WSubIndex(expr, i, vtpe, MALE), vtpe)) + } } } -- cgit v1.2.3