diff --git a/vhdlpp/expression_elaborate.cc b/vhdlpp/expression_elaborate.cc index 7888f162a..50afb51c3 100644 --- a/vhdlpp/expression_elaborate.cc +++ b/vhdlpp/expression_elaborate.cc @@ -74,14 +74,13 @@ const VType*ExpName::elaborate_adjust_type_with_range_(Entity*ent, ScopeBase*sco // If the name is an array, then a part select is // also an array, but with different bounds. int64_t use_msb, use_lsb; - bool flag; + bool flag = true; - flag = range->msb()->evaluate(ent, scope, use_msb); - ivl_assert(*this, flag); - flag = range->lsb()->evaluate(ent, scope, use_lsb); - ivl_assert(*this, flag); + flag &= range->msb()->evaluate(ent, scope, use_msb); + flag &= range->lsb()->evaluate(ent, scope, use_lsb); - type = new VTypeArray(array->element_type(), use_msb, use_lsb); + if(flag) + type = new VTypeArray(array->element_type(), use_msb, use_lsb); } else if(idx) { // If the name is an array or a vector, then an diff --git a/vhdlpp/expression_evaluate.cc b/vhdlpp/expression_evaluate.cc index 97a1e4470..e202ba475 100644 --- a/vhdlpp/expression_evaluate.cc +++ b/vhdlpp/expression_evaluate.cc @@ -144,19 +144,6 @@ bool ExpName::evaluate(Entity*ent, ScopeBase*scope, int64_t&val) const return false; } - if (ent) { - const InterfacePort*gen = ent->find_generic(name_); - if (gen) { - // Evaluate the default expression and use that. - if (gen->expr && gen->expr->evaluate(ent, scope, val)) - return true; - - cerr << get_fileline() << ": sorry: I could not evaluate " - << "generic override." << endl; - return false; - } - } - if (scope) { const VType*type; Expression*exp;