summaryrefslogtreecommitdiff
path: root/tools/bugpoint/OptimizerDriver.cpp
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2004-03-14 21:21:57 +0000
committerChris Lattner <sabre@nondot.org>2004-03-14 21:21:57 +0000
commit0a002569003fd23a4e117fe54a9bb8a6673b86da (patch)
tree17cb05883512242f059c9aa3d75f253dc7d6763e /tools/bugpoint/OptimizerDriver.cpp
parenta75766a6c14b364b74b30546802e26d4b4b36a9b (diff)
downloadllvm-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.cpp14
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);