From bfc4714531978867a7f68a52f0b614b63f06a391 Mon Sep 17 00:00:00 2001 From: vpushkar Date: Wed, 16 Mar 2016 15:54:26 +0300 Subject: Wrong std::vector 'values' usage after vector's capacity reserve. It is the error to use [] operator for accessing vector's elements after reserving. In such cases push_back/emplace methods should be used. But in this source code the usage of std::vector is redundant. So vector 'values' was iliminated. --- lib/Module/PhiCleaner.cpp | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) (limited to 'lib/Module/PhiCleaner.cpp') diff --git a/lib/Module/PhiCleaner.cpp b/lib/Module/PhiCleaner.cpp index 3d8d7867..eff3d495 100644 --- a/lib/Module/PhiCleaner.cpp +++ b/lib/Module/PhiCleaner.cpp @@ -40,13 +40,9 @@ bool klee::PhiCleanerPass::runOnFunction(Function &f) { break; if (i!=numBlocks) { - std::vector values; - values.reserve(numBlocks); - for (unsigned i=0; igetIncomingValueForBlock(reference->getIncomingBlock(i)); for (unsigned i=0; isetIncomingBlock(i, reference->getIncomingBlock(i)); - pi->setIncomingValue(i, values[i]); + pi->setIncomingValue(i, pi->getIncomingValueForBlock(reference->getIncomingBlock(i))); } changed = true; } -- cgit 1.4.1 From db43444b45a28842a4e6693e84250c9d69863c52 Mon Sep 17 00:00:00 2001 From: vpushkar Date: Wed, 16 Mar 2016 17:32:15 +0300 Subject: push_back usage for values vector --- lib/Module/PhiCleaner.cpp | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) (limited to 'lib/Module/PhiCleaner.cpp') diff --git a/lib/Module/PhiCleaner.cpp b/lib/Module/PhiCleaner.cpp index eff3d495..2cf3ba4a 100644 --- a/lib/Module/PhiCleaner.cpp +++ b/lib/Module/PhiCleaner.cpp @@ -39,12 +39,16 @@ bool klee::PhiCleanerPass::runOnFunction(Function &f) { if (pi->getIncomingBlock(i) != reference->getIncomingBlock(i)) break; - if (i!=numBlocks) { - for (unsigned i=0; isetIncomingBlock(i, reference->getIncomingBlock(i)); - pi->setIncomingValue(i, pi->getIncomingValueForBlock(reference->getIncomingBlock(i))); - } - changed = true; + if (i != numBlocks) { + std::vector values; + values.reserve(numBlocks); + for (unsigned i = 0; igetIncomingValueForBlock(reference->getIncomingBlock(i))); + for (unsigned i = 0; isetIncomingBlock(i, reference->getIncomingBlock(i)); + pi->setIncomingValue(i, values[i]); + } + changed = true; } // see if it uses any previously defined phi nodes -- cgit 1.4.1