From d6c5e13bf31043173adf5667b7edc7d9940293db Mon Sep 17 00:00:00 2001 From: Krystine Sherwin <93062060+KrystalDelusion@users.noreply.github.com> Date: Tue, 3 Sep 2024 22:23:41 +1200 Subject: [PATCH] smtr: Structs have local scope Also unique_name can take field_name directly. --- backends/functional/smtlib_rosette.cc | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/backends/functional/smtlib_rosette.cc b/backends/functional/smtlib_rosette.cc index ff47f5706..ea14da854 100644 --- a/backends/functional/smtlib_rosette.cc +++ b/backends/functional/smtlib_rosette.cc @@ -75,15 +75,16 @@ class SmtrStruct { }; idict field_names; vector fields; - SmtrScope &scope; + SmtrScope &global_scope; + SmtrScope local_scope; public: std::string name; - SmtrStruct(std::string name, SmtrScope &scope) : scope(scope), name(name) {} + SmtrStruct(std::string name, SmtrScope &scope) : global_scope(scope), local_scope(), name(name) {} void insert(IdString field_name, SmtrSort sort) { field_names(field_name); - auto base_name = scope.unique_name("\\" + RTLIL::unescape_id(field_name)); + auto base_name = local_scope.unique_name(field_name); auto accessor = name + "-" + base_name; - scope.reserve(accessor); + global_scope.reserve(accessor); fields.emplace_back(Field{sort, accessor, base_name}); } void write_definition(SExprWriter &w) {