diff options
author | Chris Lattner <sabre@nondot.org> | 2004-03-14 21:21:57 +0000 |
---|---|---|
committer | Chris Lattner <sabre@nondot.org> | 2004-03-14 21:21:57 +0000 |
commit | 0a002569003fd23a4e117fe54a9bb8a6673b86da (patch) | |
tree | 17cb05883512242f059c9aa3d75f253dc7d6763e /tools/bugpoint/OptimizerDriver.cpp | |
parent | a75766a6c14b364b74b30546802e26d4b4b36a9b (diff) | |
download | llvm-0a002569003fd23a4e117fe54a9bb8a6673b86da.tar.gz llvm-0a002569003fd23a4e117fe54a9bb8a6673b86da.tar.bz2 llvm-0a002569003fd23a4e117fe54a9bb8a6673b86da.tar.xz |
Add a new "AutoDebugCrashes" option
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@12396 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools/bugpoint/OptimizerDriver.cpp')
-rw-r--r-- | tools/bugpoint/OptimizerDriver.cpp | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/tools/bugpoint/OptimizerDriver.cpp b/tools/bugpoint/OptimizerDriver.cpp index d741265606..14ca7c832c 100644 --- a/tools/bugpoint/OptimizerDriver.cpp +++ b/tools/bugpoint/OptimizerDriver.cpp @@ -16,6 +16,7 @@ //===----------------------------------------------------------------------===// #include "BugDriver.h" +#include "llvm/Module.h" #include "llvm/PassManager.h" #include "llvm/Analysis/Verifier.h" #include "llvm/Bytecode/WriteBytecodePass.h" @@ -166,11 +167,20 @@ bool BugDriver::runPasses(const std::vector<const PassInfo*> &Passes, /// module, returning the transformed module on success, or a null pointer on /// failure. Module *BugDriver::runPassesOn(Module *M, - const std::vector<const PassInfo*> &Passes) { + const std::vector<const PassInfo*> &Passes, + bool AutoDebugCrashes) { Module *OldProgram = swapProgramIn(M); std::string BytecodeResult; - if (runPasses(Passes, BytecodeResult, false/*delete*/, true/*quiet*/)) + if (runPasses(Passes, BytecodeResult, false/*delete*/, true/*quiet*/)) { + if (AutoDebugCrashes) { + std::cerr << " Error running this sequence of passes" + << " on the input program!\n"; + delete OldProgram; + EmitProgressBytecode("pass-error", false); + exit(debugOptimizerCrash()); + } return 0; + } // Restore the current program. swapProgramIn(OldProgram); |