[llvm-commits] [llvm] r60514 - /llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
Chris Lattner
sabre at nondot.org
Wed Dec 3 16:08:00 PST 2008
Author: lattner
Date: Wed Dec 3 18:07:59 2008
New Revision: 60514
URL: http://llvm.org/viewvc/llvm-project?rev=60514&view=rev
Log:
add a debugging option to help track down j-t problems.
Modified:
llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
Modified: llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp?rev=60514&r1=60513&r2=60514&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp (original)
+++ llvm/trunk/lib/Transforms/Scalar/JumpThreading.cpp Wed Dec 3 18:07:59 2008
@@ -36,6 +36,11 @@
cl::desc("Max block size to duplicate for jump threading"),
cl::init(6), cl::Hidden);
+static cl::opt<int>
+DebugIterations("jump-threading-debug",
+ cl::desc("Stop jump threading after N iterations"),
+ cl::init(-1), cl::Hidden);
+
namespace {
/// This pass performs 'jump threading', which looks at blocks that have
/// multiple predecessors and multiple successors. If one or more of the
@@ -104,11 +109,15 @@
// If the block is trivially dead, zap it. This eliminates the successor
// edges which simplifies the CFG.
if (pred_begin(BB) == pred_end(BB) &&
- BB != &BB->getParent()->getEntryBlock()) {
+ BB != &BB->getParent()->getEntryBlock() &&
+ DebugIterations != 0) {
DOUT << " JT: Deleting dead block '" << BB->getNameStart()
<< "' with terminator: " << *BB->getTerminator();
DeleteDeadBlock(BB);
Changed = true;
+
+ if (DebugIterations != -1)
+ DebugIterations = DebugIterations-1;
}
}
AnotherIteration = Changed;
@@ -183,6 +192,10 @@
/// ProcessBlock - If there are any predecessors whose control can be threaded
/// through to a successor, transform them now.
bool JumpThreading::ProcessBlock(BasicBlock *BB) {
+ if (DebugIterations == 0) return false;
+ if (DebugIterations != -1)
+ DebugIterations = DebugIterations-1;
+
// If this block has a single predecessor, and if that pred has a single
// successor, merge the blocks. This encourages recursive jump threading
// because now the condition in this block can be threaded through
More information about the llvm-commits
mailing list