diff --git a/eval_tree.cc b/eval_tree.cc index b9e0ccdda..df8680d73 100644 --- a/eval_tree.cc +++ b/eval_tree.cc @@ -2176,6 +2176,13 @@ static bool get_array_info(const NetExpr*arg, long dim, left = param->expr_width() - 1; right = 0; return false; + } + if (const NetESelect*select = dynamic_cast(arg)) { + const netranges_t&dim_vals = select->net_type()->slice_dimensions(); + const netrange_t&range = dim_vals[dim-1]; + left = range.get_msb(); + right = range.get_lsb(); + return false; } /* The argument must be a signal that has enough dimensions. */ const NetESignal*esig = dynamic_cast(arg);