diff options
author | Dag Lem <dag@nimrod.no> | 2023-01-29 19:45:45 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-29 13:45:45 -0500 |
commit | db13c6df2bd0c0e471d380a3a72a3af83f6341fc (patch) | |
tree | 38ebbbf8bc945e1458c793b41d6d18ee3f6720ce /frontends/ast | |
parent | 541fdffff243bccb410de13ae3ef91797060fcd4 (diff) | |
download | yosys-db13c6df2bd0c0e471d380a3a72a3af83f6341fc.tar.gz yosys-db13c6df2bd0c0e471d380a3a72a3af83f6341fc.tar.bz2 yosys-db13c6df2bd0c0e471d380a3a72a3af83f6341fc.zip |
Handle struct members of union type (#3641)
Diffstat (limited to 'frontends/ast')
-rw-r--r-- | frontends/ast/genrtlil.cc | 2 | ||||
-rw-r--r-- | frontends/ast/simplify.cc | 2 |
2 files changed, 2 insertions, 2 deletions
diff --git a/frontends/ast/genrtlil.cc b/frontends/ast/genrtlil.cc index 9327b34ee..1016ef636 100644 --- a/frontends/ast/genrtlil.cc +++ b/frontends/ast/genrtlil.cc @@ -877,7 +877,7 @@ void AstNode::detectSignWidthWorker(int &width_hint, bool &sign_hint, bool *foun this_width = id_ast->children[0]->range_left - id_ast->children[0]->range_right + 1; if (children.size() > 1) range = children[1]; - } else if (id_ast->type == AST_STRUCT_ITEM || id_ast->type == AST_STRUCT) { + } else if (id_ast->type == AST_STRUCT_ITEM || id_ast->type == AST_STRUCT || id_ast->type == AST_UNION) { AstNode *tmp_range = make_struct_member_range(this, id_ast); this_width = tmp_range->range_left - tmp_range->range_right + 1; delete tmp_range; diff --git a/frontends/ast/simplify.cc b/frontends/ast/simplify.cc index 71a26983b..2dbabca28 100644 --- a/frontends/ast/simplify.cc +++ b/frontends/ast/simplify.cc @@ -2063,7 +2063,7 @@ bool AstNode::simplify(bool const_fold, bool at_zero, bool in_lvalue, int stage, if (name_has_dot(str, sname)) { if (current_scope.count(str) > 0) { auto item_node = current_scope[str]; - if (item_node->type == AST_STRUCT_ITEM || item_node->type == AST_STRUCT) { + if (item_node->type == AST_STRUCT_ITEM || item_node->type == AST_STRUCT || item_node->type == AST_UNION) { // structure member, rewrite this node to reference the packed struct wire auto range = make_struct_member_range(this, item_node); newNode = new AstNode(AST_IDENTIFIER, range); |