aboutsummaryrefslogtreecommitdiff
path: root/tools
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-10-17 23:03:16 +0000
committerChris Lattner <sabre@nondot.org>2003-10-17 23:03:16 +0000
commit9c6cfe1bffd37f29a265457b7515839c445b3e6a (patch)
treefcce3aa53e2df837e0357280dad1f1e3da1502f5 /tools
parent8ba67902ca116983c506271dfc0c441402b2cea8 (diff)
Be more helpful if a pass fails while chasing down a miscompilation
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@9214 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/bugpoint/BugDriver.h3
-rw-r--r--tools/bugpoint/Miscompilation.cpp8
2 files changed, 9 insertions, 2 deletions
diff --git a/tools/bugpoint/BugDriver.h b/tools/bugpoint/BugDriver.h
index 532bbb5908..43edf5c264 100644
--- a/tools/bugpoint/BugDriver.h
+++ b/tools/bugpoint/BugDriver.h
@@ -57,6 +57,9 @@ public:
bool addSources(const std::vector<std::string> &FileNames);
template<class It>
void addPasses(It I, It E) { PassesToRun.insert(PassesToRun.end(), I, E); }
+ void setPassesToRun(const std::vector<const PassInfo*> &PTR) {
+ PassesToRun = PTR;
+ }
/// run - The top level method that is invoked after all of the instance
/// variables are set up from command line arguments.
diff --git a/tools/bugpoint/Miscompilation.cpp b/tools/bugpoint/Miscompilation.cpp
index 2ede067b1e..0e350d24db 100644
--- a/tools/bugpoint/Miscompilation.cpp
+++ b/tools/bugpoint/Miscompilation.cpp
@@ -57,8 +57,10 @@ ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix,
// prefix passes, then discard the prefix passes.
//
if (BD.runPasses(Prefix, BytecodeResult, false/*delete*/, true/*quiet*/)) {
- std::cerr << BD.getToolName() << ": Error running this sequence of passes"
+ std::cerr << ": Error running this sequence of passes"
<< " on the input program!\n";
+ BD.setPassesToRun(Prefix);
+ BD.EmitProgressBytecode("pass-error", false);
exit(1);
}
@@ -88,8 +90,10 @@ ReduceMiscompilingPasses::doTest(std::vector<const PassInfo*> &Prefix,
Module *OriginalInput = BD.Program;
BD.Program = PrefixOutput;
if (BD.runPasses(Suffix, BytecodeResult, false/*delete*/, true/*quiet*/)) {
- std::cerr << BD.getToolName() << ": Error running this sequence of passes"
+ std::cerr << ": Error running this sequence of passes"
<< " on the input program!\n";
+ BD.setPassesToRun(Prefix);
+ BD.EmitProgressBytecode("pass-error", false);
exit(1);
}