diff options
author | Chris Lattner <sabre@nondot.org> | 2003-10-17 23:03:16 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2003-10-17 23:03:16 +0000 |
commit | 9c6cfe1bffd37f29a265457b7515839c445b3e6a (patch) | |
tree | fcce3aa53e2df837e0357280dad1f1e3da1502f5 /tools | |
parent | 8ba67902ca116983c506271dfc0c441402b2cea8 (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.h | 3 | ||||
-rw-r--r-- | tools/bugpoint/Miscompilation.cpp | 8 |
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); } |