diff options
author | Dag Lem <dag@nimrod.no> | 2023-02-28 18:45:55 +0100 |
---|---|---|
committer | Dag Lem <dag@nimrod.no> | 2023-03-05 14:54:17 +0100 |
commit | 0d3423ddea1c24aea74206d64e6dc5196959ad5e (patch) | |
tree | 54d372ef0ca8357c95f4dd38dfabb9e4a586cbbc /frontends/ast/ast.cc | |
parent | 79043cb849e01b494e1ab432dc52f5f99d5ff4af (diff) | |
download | yosys-0d3423ddea1c24aea74206d64e6dc5196959ad5e.tar.gz yosys-0d3423ddea1c24aea74206d64e6dc5196959ad5e.tar.bz2 yosys-0d3423ddea1c24aea74206d64e6dc5196959ad5e.zip |
Index struct/union members within corresponding wire chunks
This guards against access to bits outside of struct/union
members via dynamic indexing.
Diffstat (limited to 'frontends/ast/ast.cc')
-rw-r--r-- | frontends/ast/ast.cc | 8 |
1 files changed, 7 insertions, 1 deletions
diff --git a/frontends/ast/ast.cc b/frontends/ast/ast.cc index 982943d1b..5a2ade04a 100644 --- a/frontends/ast/ast.cc +++ b/frontends/ast/ast.cc @@ -524,7 +524,13 @@ void AstNode::dumpVlog(FILE *f, std::string indent) const break; case AST_IDENTIFIER: - fprintf(f, "%s", id2vl(str).c_str()); + { + AST::AstNode *member_node = AST::get_struct_member(this); + if (member_node) + fprintf(f, "%s[%d:%d]", id2vl(str).c_str(), member_node->range_left, member_node->range_right); + else + fprintf(f, "%s", id2vl(str).c_str()); + } for (auto child : children) child->dumpVlog(f, ""); break; |