From a1b73df93e5a2fac4a7ac87fb1753c4eb518c8c0 Mon Sep 17 00:00:00 2001 From: Martin Nowack Date: Wed, 27 Mar 2019 11:33:07 +0000 Subject: Separate constraint set and constraint manager --- lib/Core/ExecutionState.cpp | 16 +++++++++++----- 1 file changed, 11 insertions(+), 5 deletions(-) (limited to 'lib/Core/ExecutionState.cpp') diff --git a/lib/Core/ExecutionState.cpp b/lib/Core/ExecutionState.cpp index 14d596fc..0b848f41 100644 --- a/lib/Core/ExecutionState.cpp +++ b/lib/Core/ExecutionState.cpp @@ -310,11 +310,12 @@ bool ExecutionState::merge(const ExecutionState &b) { } } - constraints = ConstraintManager(); - for (std::set< ref >::iterator it = commonConstraints.begin(), - ie = commonConstraints.end(); it != ie; ++it) - constraints.addConstraint(*it); - constraints.addConstraint(OrExpr::create(inA, inB)); + constraints = ConstraintSet(); + + ConstraintManager m(constraints); + for (const auto &constraint : commonConstraints) + m.addConstraint(constraint); + m.addConstraint(OrExpr::create(inA, inB)); return true; } @@ -352,3 +353,8 @@ void ExecutionState::dumpStack(llvm::raw_ostream &out) const { target = sf.caller; } } + +void ExecutionState::addConstraint(ref e) { + ConstraintManager c(constraints); + c.addConstraint(e); +} -- cgit 1.4.1