3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-06-06 14:13:23 +00:00

sv: fix two struct access bugs

- preserve signedness of struct members
- fix initial width detection of struct members (e.g., in case expressions)
This commit is contained in:
Zachary Snow 2021-06-22 10:39:57 -04:00 committed by Zachary Snow
parent 1aab608cff
commit a9c8ca21d5
5 changed files with 102 additions and 1 deletions

View file

@ -456,7 +456,7 @@ static AstNode *slice_range(AstNode *rnode, AstNode *snode)
}
static AstNode *make_struct_member_range(AstNode *node, AstNode *member_node)
AstNode *AST::make_struct_member_range(AstNode *node, AstNode *member_node)
{
// Work out the range in the packed array that corresponds to a struct member
// taking into account any range operations applicable to the current node
@ -1693,6 +1693,8 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage,
newNode = new AstNode(AST_IDENTIFIER, range);
newNode->str = sname;
newNode->basic_prep = true;
if (item_node->is_signed)
newNode = new AstNode(AST_TO_SIGNED, newNode);
goto apply_newNode;
}
}