summaryrefslogtreecommitdiffstats
path: root/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
diff options
context:
space:
mode:
authorReid Kleckner <rnk@google.com>2019-09-11 20:29:22 +0000
committerReid Kleckner <rnk@google.com>2019-09-11 20:29:22 +0000
commit6d5f0029fc06dbb9968c770a5101e109ddfa63f7 (patch)
tree0b1ebb6c0cdb698f8b8ef8a29be39b71918b0392 /llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
parent09f320ad34153546e332e6322dec029714435e2c (diff)
downloadbcm5719-llvm-6d5f0029fc06dbb9968c770a5101e109ddfa63f7.tar.gz
bcm5719-llvm-6d5f0029fc06dbb9968c770a5101e109ddfa63f7.zip
[llvm-reduce] Fix a bug, improve error handling when running test
llvm::sys::ExecuteAndWait can report errors, so let's make use of that. Second, while iterating uses of functions to remove, a call can appear multiple times. Use a SetVector so we don't attempt to erase such a call twice. llvm-svn: 371653
Diffstat (limited to 'llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp')
-rw-r--r--llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp5
1 files changed, 3 insertions, 2 deletions
diff --git a/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp b/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
index 450f78c39bb..84dc842d972 100644
--- a/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
+++ b/llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp
@@ -14,6 +14,7 @@
#include "ReduceFunctions.h"
#include "Delta.h"
+#include "llvm/ADT/SetVector.h"
#include <set>
using namespace llvm;
@@ -35,13 +36,13 @@ static void extractFunctionsFromModule(const std::vector<Chunk> &ChunksToKeep,
// Delete out-of-chunk functions, and replace their calls with undef
std::vector<Function *> FuncsToRemove;
- std::vector<CallInst *> CallsToRemove;
+ SetVector<CallInst *> CallsToRemove;
for (auto &F : *Program)
if (!FuncsToKeep.count(&F)) {
for (auto U : F.users())
if (auto *Call = dyn_cast<CallInst>(U)) {
Call->replaceAllUsesWith(UndefValue::get(Call->getType()));
- CallsToRemove.push_back(Call);
+ CallsToRemove.insert(Call);
}
F.replaceAllUsesWith(UndefValue::get(F.getType()));
FuncsToRemove.push_back(&F);
OpenPOWER on IntegriCloud