aboutsummaryrefslogtreecommitdiffstats
path: root/frontends/verilog
diff options
context:
space:
mode:
authorZachary Snow <zach@zachjs.com>2021-03-16 11:06:40 -0400
committerZachary Snow <zachary.j.snow@gmail.com>2021-03-17 15:53:52 -0400
commitf71c2dcca6b63ad3cbd3d5b6f51f67f9cd85f03e (patch)
tree4edd598b167d6422f64743b30587ead247346e46 /frontends/verilog
parent092e923330ce23adffa7843a27bdba8a0b139e58 (diff)
downloadyosys-f71c2dcca6b63ad3cbd3d5b6f51f67f9cd85f03e.tar.gz
yosys-f71c2dcca6b63ad3cbd3d5b6f51f67f9cd85f03e.tar.bz2
yosys-f71c2dcca6b63ad3cbd3d5b6f51f67f9cd85f03e.zip
sv: carry over global typedefs from previous files
This breaks the ability to use a global typename as a standard identifier in a subsequent input file. This is otherwise backwards compatible, including for sources which previously included conflicting typedefs in each input file.
Diffstat (limited to 'frontends/verilog')
-rw-r--r--frontends/verilog/verilog_frontend.cc7
1 files changed, 5 insertions, 2 deletions
diff --git a/frontends/verilog/verilog_frontend.cc b/frontends/verilog/verilog_frontend.cc
index e2aecd99b..5907707c8 100644
--- a/frontends/verilog/verilog_frontend.cc
+++ b/frontends/verilog/verilog_frontend.cc
@@ -61,8 +61,11 @@ static void add_package_types(dict<std::string, AST::AstNode *> &user_types, std
}
}
}
- user_type_stack.clear();
- user_type_stack.push_back(new UserTypeMap());
+
+ // carry over typedefs from previous files, but allow them to be overridden
+ // note that these type maps are currently never reclaimed
+ if (user_type_stack.empty() || !user_type_stack.back()->empty())
+ user_type_stack.push_back(new UserTypeMap());
}
struct VerilogFrontend : public Frontend {