[llvm] r330176 - [SSAUpdaterBulk] Add debug logging.
Michael Zolotukhin via llvm-commits
llvm-commits at lists.llvm.org
Mon Apr 16 21:45:40 PDT 2018
Author: mzolotukhin
Date: Mon Apr 16 21:45:40 2018
New Revision: 330176
URL: http://llvm.org/viewvc/llvm-project?rev=330176&view=rev
Log:
[SSAUpdaterBulk] Add debug logging.
Modified:
llvm/trunk/lib/Transforms/Utils/SSAUpdaterBulk.cpp
Modified: llvm/trunk/lib/Transforms/Utils/SSAUpdaterBulk.cpp
URL: http://llvm.org/viewvc/llvm-project/llvm/trunk/lib/Transforms/Utils/SSAUpdaterBulk.cpp?rev=330176&r1=330175&r2=330176&view=diff
==============================================================================
--- llvm/trunk/lib/Transforms/Utils/SSAUpdaterBulk.cpp (original)
+++ llvm/trunk/lib/Transforms/Utils/SSAUpdaterBulk.cpp Mon Apr 16 21:45:40 2018
@@ -24,10 +24,24 @@ using namespace llvm;
#define DEBUG_TYPE "ssaupdaterbulk"
+/// Helper function for finding a block which should have a value for the given
+/// user. For PHI-nodes this block is the corresponding predecessor, for other
+/// instructions it's their parent block.
+static BasicBlock *getUserBB(Use *U) {
+ auto *User = cast<Instruction>(U->getUser());
+
+ if (auto *UserPN = dyn_cast<PHINode>(User))
+ return UserPN->getIncomingBlock(*U);
+ else
+ return User->getParent();
+}
+
/// Add a new variable to the SSA rewriter. This needs to be called before
/// AddAvailableValue or AddUse calls.
void SSAUpdaterBulk::AddVariable(unsigned Var, StringRef Name, Type *Ty) {
assert(Rewrites.find(Var) == Rewrites.end() && "Variable added twice!");
+ DEBUG(dbgs() << "SSAUpdater: Var=" << Var << ": initialized with Ty = " << *Ty
+ << ", Name = " << Name << "\n");
RewriteInfo RI(Name, Ty);
Rewrites[Var] = RI;
}
@@ -36,6 +50,8 @@ void SSAUpdaterBulk::AddVariable(unsigne
/// specified value.
void SSAUpdaterBulk::AddAvailableValue(unsigned Var, BasicBlock *BB, Value *V) {
assert(Rewrites.find(Var) != Rewrites.end() && "Should add variable first!");
+ DEBUG(dbgs() << "SSAUpdater: Var=" << Var << ": added new available value"
+ << *V << " in " << BB->getName() << "\n");
Rewrites[Var].Defines[BB] = V;
}
@@ -43,6 +59,8 @@ void SSAUpdaterBulk::AddAvailableValue(u
/// rewritten value when RewriteAllUses is called.
void SSAUpdaterBulk::AddUse(unsigned Var, Use *U) {
assert(Rewrites.find(Var) != Rewrites.end() && "Should add variable first!");
+ DEBUG(dbgs() << "SSAUpdater: Var=" << Var << ": added a use" << *U->get()
+ << " in " << getUserBB(U)->getName() << "\n");
Rewrites[Var].Uses.insert(U);
}
@@ -103,18 +121,6 @@ ComputeLiveInBlocks(const SmallPtrSetImp
}
}
-/// Helper function for finding a block which should have a value for the given
-/// user. For PHI-nodes this block is the corresponding predecessor, for other
-/// instructions it's their parent block.
-static BasicBlock *getUserBB(Use *U) {
- auto *User = cast<Instruction>(U->getUser());
-
- if (auto *UserPN = dyn_cast<PHINode>(User))
- return UserPN->getIncomingBlock(*U);
- else
- return User->getParent();
-}
-
/// Perform all the necessary updates, including new PHI-nodes insertion and the
/// requested uses update.
void SSAUpdaterBulk::RewriteAllUses(DominatorTree *DT,
@@ -127,6 +133,9 @@ void SSAUpdaterBulk::RewriteAllUses(Domi
// The IDF blocks are the blocks where we need to insert new phi-nodes.
ForwardIDFCalculator IDF(*DT);
RewriteInfo &R = P.second;
+ DEBUG(dbgs() << "SSAUpdater: Var=" << P.first << ": rewriting "
+ << R.Uses.size() << " use(s)\n");
+
SmallPtrSet<BasicBlock *, 2> DefBlocks;
for (auto Def : R.Defines)
DefBlocks.insert(Def.first);
@@ -168,6 +177,8 @@ void SSAUpdaterBulk::RewriteAllUses(Domi
// Notify that users of the existing value that it is being replaced.
if (OldVal != V && OldVal->hasValueHandle())
ValueHandleBase::ValueIsRAUWd(OldVal, V);
+ DEBUG(dbgs() << "SSAUpdater: Var=" << P.first << ": replacing" << *OldVal
+ << " with " << *V << "\n");
U->set(V);
}
}
More information about the llvm-commits
mailing list