diff options
author | Daniel Dunbar <daniel@zuster.org> | 2009-06-10 06:18:37 +0000 |
---|---|---|
committer | Daniel Dunbar <daniel@zuster.org> | 2009-06-10 06:18:37 +0000 |
commit | 7561acc8b346028bc6eb586ea76b5b2a9400140c (patch) | |
tree | 3b1cf15a0f2da08e4d2ce0e221c5ca2521070e49 /lib | |
parent | 6517b3a69deac9faacb5139efa44511e5d2a197f (diff) | |
download | klee-7561acc8b346028bc6eb586ea76b5b2a9400140c.tar.gz |
Change ExecutionState::symbolics to include both the MemoryObject and the
symbolic Array. git-svn-id: https://llvm.org/svn/llvm-project/klee/trunk@73161 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'lib')
-rw-r--r-- | lib/Core/Executor.cpp | 19 |
1 files changed, 6 insertions, 13 deletions
diff --git a/lib/Core/Executor.cpp b/lib/Core/Executor.cpp index 4c5f9511..28e7111c 100644 --- a/lib/Core/Executor.cpp +++ b/lib/Core/Executor.cpp @@ -2941,7 +2941,7 @@ void Executor::executeMakeSymbolic(ExecutionState &state, ObjectState *os = bindObjectInState(state, mo, false); if (!replayOut) { os->makeSymbolic(); - state.addSymbolic(mo); + state.addSymbolic(mo, os->updates.root); const Array *array = os->updates.root; std::map< ExecutionState*, std::vector<SeedInfo> >::iterator it = @@ -3149,10 +3149,8 @@ bool Executor::getSymbolicSolution(const ExecutionState &state, ExecutionState tmp(state); if (!NoPreferCex) { - for (std::vector<const MemoryObject*>::const_iterator - it = state.symbolics.begin(), ie = state.symbolics.end(); - it != ie; ++it) { - const MemoryObject *mo = *it; + for (unsigned i = 0; i != state.symbolics.size(); ++i) { + const MemoryObject *mo = state.symbolics[i].first; std::vector< ref<Expr> >::const_iterator pi = mo->cexPreferences.begin(), pie = mo->cexPreferences.end(); for (; pi != pie; ++pi) { @@ -3169,7 +3167,7 @@ bool Executor::getSymbolicSolution(const ExecutionState &state, std::vector< std::vector<unsigned char> > values; std::vector<const Array*> objects; for (unsigned i = 0; i != state.symbolics.size(); ++i) - objects.push_back(state.symbolics[i]->array); + objects.push_back(state.symbolics[i].second); bool success = solver->getInitialValues(tmp, objects, values); solver->setTimeout(0); if (!success) { @@ -3180,13 +3178,8 @@ bool Executor::getSymbolicSolution(const ExecutionState &state, return false; } - unsigned i = 0; - for (std::vector<const MemoryObject*>::const_iterator - it = state.symbolics.begin(), ie = state.symbolics.end(); - it != ie; ++it) { - res.push_back(std::make_pair((*it)->name, values[i])); - ++i; - } + for (unsigned i = 0; i != state.symbolics.size(); ++i) + res.push_back(std::make_pair(state.symbolics[i].first->name, values[i])); return true; } |