[llvm] r371653 - [llvm-reduce] Fix a bug, improve error handling when running test
Reid Kleckner via llvm-commits
llvm-commits at lists.llvm.org
Wed Sep 11 13:29:23 PDT 2019
Author: rnk
Date: Wed Sep 11 13:29:22 2019
New Revision: 371653
URL: http://llvm.org/viewvc/llvm-project?rev=371653&view=rev
Log:
[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.
Modified:
llvm/trunk/tools/llvm-reduce/TestRunner.cpp
llvm/trunk/tools/llvm-reduce/deltas/ReduceFunctions.cpp
Modified: llvm/trunk/tools/llvm-reduce/TestRunner.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-reduce/TestRunner.cpp?rev=371653&r1=371652&r2=371653&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-reduce/TestRunner.cpp (original)
+++ llvm/trunk/tools/llvm-reduce/TestRunner.cpp Wed Sep 11 13:29:22 2019
@@ -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);
Modified: llvm/trunk/tools/llvm-reduce/deltas/ReduceFunctions.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/tools/llvm-reduce/deltas/ReduceFunctions.cpp?rev=371653&r1=371652&r2=371653&view=diff
==============================================================================
--- llvm/trunk/tools/llvm-reduce/deltas/ReduceFunctions.cpp (original)
+++ llvm/trunk/tools/llvm-reduce/deltas/ReduceFunctions.cpp Wed Sep 11 13:29:22 2019
@@ -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(c
// 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);
More information about the llvm-commits
mailing list