diff options
| author | Reid Kleckner <rnk@google.com> | 2019-09-11 20:29:22 +0000 |
|---|---|---|
| committer | Reid Kleckner <rnk@google.com> | 2019-09-11 20:29:22 +0000 |
| commit | 6d5f0029fc06dbb9968c770a5101e109ddfa63f7 (patch) | |
| tree | 0b1ebb6c0cdb698f8b8ef8a29be39b71918b0392 | |
| parent | 09f320ad34153546e332e6322dec029714435e2c (diff) | |
| download | bcm5719-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
| -rw-r--r-- | llvm/tools/llvm-reduce/TestRunner.cpp | 8 | ||||
| -rw-r--r-- | llvm/tools/llvm-reduce/deltas/ReduceFunctions.cpp | 5 |
2 files changed, 9 insertions, 4 deletions
diff --git a/llvm/tools/llvm-reduce/TestRunner.cpp b/llvm/tools/llvm-reduce/TestRunner.cpp index 2fd01abfd47..1940e426941 100644 --- a/llvm/tools/llvm-reduce/TestRunner.cpp +++ b/llvm/tools/llvm-reduce/TestRunner.cpp @@ -44,10 +44,14 @@ int TestRunner::run(StringRef Filename) { ProgramArgs.push_back(Arg.c_str()); Optional<StringRef> Redirects[3]; // STDIN, STDOUT, STDERR - int Result = sys::ExecuteAndWait(TestName, ProgramArgs, None, Redirects); + std::string ErrMsg; + int Result = + sys::ExecuteAndWait(TestName, ProgramArgs, None, Redirects, + /*SecondsToWait=*/0, /*MemoryLimit=*/0, &ErrMsg); if (Result < 0) { - Error E = make_error<StringError>("Error running interesting-ness test\n", + Error E = make_error<StringError>("Error running interesting-ness test: " + + ErrMsg, inconvertibleErrorCode()); errs() << toString(std::move(E)); exit(1); 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); |

