aboutsummaryrefslogtreecommitdiffstats
path: root/tools
diff options
context:
space:
mode:
authorChris Lattner <sabre@nondot.org>2003-04-24 22:54:06 +0000
committerChris Lattner <sabre@nondot.org>2003-04-24 22:54:06 +0000
commitf607b79bc78fcbfd8cda01d2d5dbda6cd8253a40 (patch)
tree46dcb9b6a91acfe282b4bb3eb45454d0c5b5e7ec /tools
parent44be25716628941b4cccccf56a28ee0ba2606850 (diff)
downloadexternal_llvm-f607b79bc78fcbfd8cda01d2d5dbda6cd8253a40.zip
external_llvm-f607b79bc78fcbfd8cda01d2d5dbda6cd8253a40.tar.gz
external_llvm-f607b79bc78fcbfd8cda01d2d5dbda6cd8253a40.tar.bz2
The big fix is this change:
- if (I->isExternal() && !Functions.count(I)) + if (!I->isExternal() && !Functions.count(I)) We were not actually deleting any functions from the module! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@5914 91177308-0d34-0410-b5e6-96231b3b80d8
Diffstat (limited to 'tools')
-rw-r--r--tools/bugpoint/CrashDebugger.cpp18
1 files changed, 5 insertions, 13 deletions
diff --git a/tools/bugpoint/CrashDebugger.cpp b/tools/bugpoint/CrashDebugger.cpp
index 5348dd7..f3b2dc2 100644
--- a/tools/bugpoint/CrashDebugger.cpp
+++ b/tools/bugpoint/CrashDebugger.cpp
@@ -87,7 +87,7 @@ bool ReduceCrashingFunctions::TestFuncs(std::vector<Function*> &Funcs) {
Function *CMF = M->getFunction(Funcs[i]->getName(),
Funcs[i]->getFunctionType());
assert(CMF && "Function not in module?!");
- Functions.insert(CMF);
+ Functions.insert(CMF);
}
std::cout << "Checking for crash with only these functions:";
@@ -98,7 +98,7 @@ bool ReduceCrashingFunctions::TestFuncs(std::vector<Function*> &Funcs) {
// Loop over and delete any functions which we aren't supposed to be playing
// with...
for (Module::iterator I = M->begin(), E = M->end(); I != E; ++I)
- if (I->isExternal() && !Functions.count(I))
+ if (!I->isExternal() && !Functions.count(I))
DeleteFunctionBody(I);
// Try running the hacked up program...
@@ -129,11 +129,6 @@ bool BugDriver::debugCrash() {
unsigned OldSize = PassesToRun.size();
DebugCrashes(*this).reduceList(PassesToRun);
- if (PassesToRun.size() == OldSize) { // Make sure something crashed. :)
- std::cerr << "ERROR: No passes crashed!\n";
- return true;
- }
-
std::cout << "\n*** Found crashing pass"
<< (PassesToRun.size() == 1 ? ": " : "es: ")
<< getPassesString(PassesToRun) << "\n";
@@ -164,7 +159,6 @@ bool BugDriver::debugCrash() {
// FIXME: This should use the list reducer to converge faster by deleting
// larger chunks of instructions at a time!
- bool Reduced = false;
unsigned Simplification = 4;
do {
--Simplification;
@@ -200,7 +194,7 @@ bool BugDriver::debugCrash() {
// Yup, it does, we delete the old module, and continue trying to
// reduce the testcase...
delete M;
- Reduced = AnyReduction = true;
+ AnyReduction = true;
goto TryAgain; // I wish I had a multi-level break here!
}
@@ -222,17 +216,15 @@ bool BugDriver::debugCrash() {
if (runPasses(PassesToRun)) {
// Yup, it does, keep the reduced version...
delete M;
- Reduced = AnyReduction = true;
+ AnyReduction = true;
} else {
delete Program; // Otherwise, restore the original module...
Program = M;
}
}
- if (Reduced) {
+ if (AnyReduction)
EmitProgressBytecode("reduced-simplified");
- Reduced = false;
- }
return false;
}