From ed79c7689d4686688a487f475b618ff40c69800b Mon Sep 17 00:00:00 2001 From: Nikolaj Bjorner Date: Fri, 31 Oct 2025 07:24:14 -0700 Subject: [PATCH] add clone method Signed-off-by: Nikolaj Bjorner --- src/smt/smt_parallel.cpp | 4 +--- src/util/params.cpp | 7 +++++++ src/util/params.h | 1 + 3 files changed, 9 insertions(+), 3 deletions(-) diff --git a/src/smt/smt_parallel.cpp b/src/smt/smt_parallel.cpp index 0bd07e743..7a33763a3 100644 --- a/src/smt/smt_parallel.cpp +++ b/src/smt/smt_parallel.cpp @@ -163,9 +163,7 @@ namespace smt { }; params_ref parallel::param_generator::apply_param_values(param_values const &pv) { - params_ref p; - p.copy(m_p); - p.copy(m_p); // hack to break default sharing of parameters + params_ref p = m_p.clone(); for (auto const &[k, v] : pv) { if (std::holds_alternative(v)) { unsigned_value uv = std::get(v); diff --git a/src/util/params.cpp b/src/util/params.cpp index 27cd062e9..caa0d87d6 100644 --- a/src/util/params.cpp +++ b/src/util/params.cpp @@ -550,6 +550,13 @@ params_ref::params_ref(params_ref const & p) { set(p); } +params_ref params_ref::clone() const { + params_ref p; + p.init(); + p.copy_core(m_params); + return p; +} + void params_ref::display(std::ostream & out) const { if (m_params) m_params->display(out); diff --git a/src/util/params.h b/src/util/params.h index c499dd56e..9e50d42ac 100644 --- a/src/util/params.h +++ b/src/util/params.h @@ -49,6 +49,7 @@ public: // copy params from src void copy(params_ref const & src); void append(params_ref const & src) { copy(src); } + params_ref clone() const; bool get_bool(symbol const & k, bool _default) const; bool get_bool(char const * k, bool _default) const;