From 9c6cfe1bffd37f29a265457b7515839c445b3e6a Mon Sep 17 00:00:00 2001 From: Chris Lattner Date: Fri, 17 Oct 2003 23:03:16 +0000 Subject: [PATCH] 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 --- tools/bugpoint/BugDriver.h | 3 +++ 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 532bbb59083..43edf5c264f 100644 --- a/tools/bugpoint/BugDriver.h +++ b/tools/bugpoint/BugDriver.h @@ -57,6 +57,9 @@ public: bool addSources(const std::vector &FileNames); template void addPasses(It I, It E) { PassesToRun.insert(PassesToRun.end(), I, E); } + void setPassesToRun(const std::vector &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 2ede067b1e0..0e350d24dbf 100644 --- a/tools/bugpoint/Miscompilation.cpp +++ b/tools/bugpoint/Miscompilation.cpp @@ -57,8 +57,10 @@ ReduceMiscompilingPasses::doTest(std::vector &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 &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); }