If we're debugging the SimplifyCFG pass, we _REALLY_ don't want to use it for

narrowing, no matter what.

llvm-svn: 7596
This commit is contained in:
Chris Lattner 2003-08-05 15:51:05 +00:00
parent 463d6a5e7c
commit d1e2aaef4f
3 changed files with 14 additions and 8 deletions

View File

@ -27,6 +27,8 @@ class ReduceCrashingBlocks;
class CBE;
class GCC;
extern bool DisableSimplifyCFG;
class BugDriver {
const std::string ToolName; // Name of bugpoint
std::string ReferenceOutputFile; // Name of `good' output file

View File

@ -304,11 +304,13 @@ bool BugDriver::debugCrash() {
// to a return instruction then running simplifycfg, which can potentially
// shrinks the code dramatically quickly
//
std::vector<BasicBlock*> Blocks;
for (Module::iterator I = Program->begin(), E = Program->end(); I != E; ++I)
for (Function::iterator FI = I->begin(), E = I->end(); FI != E; ++FI)
Blocks.push_back(FI);
ReduceCrashingBlocks(*this).reduceList(Blocks);
if (!DisableSimplifyCFG) {
std::vector<BasicBlock*> Blocks;
for (Module::iterator I = Program->begin(), E = Program->end(); I != E; ++I)
for (Function::iterator FI = I->begin(), E = I->end(); FI != E; ++FI)
Blocks.push_back(FI);
ReduceCrashingBlocks(*this).reduceList(Blocks);
}
// FIXME: This should use the list reducer to converge faster by deleting
// larger chunks of instructions at a time!

View File

@ -16,6 +16,8 @@
#include "llvm/Constant.h"
#include "Support/CommandLine.h"
bool DisableSimplifyCFG = false;
namespace {
cl::opt<bool>
NoADCE("disable-adce",
@ -23,8 +25,8 @@ namespace {
cl::opt<bool>
NoDCE ("disable-dce",
cl::desc("Do not use the -dce pass to reduce testcases"));
cl::opt<bool>
NoSCFG("disable-simplifycfg",
cl::opt<bool, true>
NoSCFG("disable-simplifycfg", cl::location(DisableSimplifyCFG),
cl::desc("Do not use the -simplifycfg pass to reduce testcases"));
cl::opt<bool>
NoFinalCleanup("disable-final-cleanup",
@ -67,7 +69,7 @@ Module *BugDriver::deleteInstructionFromProgram(Instruction *I,
//Passes.add(createInstructionCombiningPass());
if (Simplification > 1 && !NoDCE)
Passes.add(createDeadCodeEliminationPass());
if (Simplification && !NoSCFG)
if (Simplification && !DisableSimplifyCFG)
Passes.add(createCFGSimplificationPass()); // Delete dead control flow
Passes.add(createVerifierPass());