diff options
author | Michael Zolotukhin <mzolotukhin@apple.com> | 2018-04-17 04:45:40 +0000 |
---|---|---|
committer | Michael Zolotukhin <mzolotukhin@apple.com> | 2018-04-17 04:45:40 +0000 |
commit | a6e7bd7001ce1b2ed5067d23ac3d8c0a0698c8ea (patch) | |
tree | 8f37946f91e9949afc03886d5870455b27922c18 /llvm/lib/Transforms/Utils | |
parent | 3f5fd1b1290277c6ff5c0e035b53e2b0f37a038b (diff) | |
download | bcm5719-llvm-a6e7bd7001ce1b2ed5067d23ac3d8c0a0698c8ea.tar.gz bcm5719-llvm-a6e7bd7001ce1b2ed5067d23ac3d8c0a0698c8ea.zip |
[SSAUpdaterBulk] Add debug logging.
llvm-svn: 330176
Diffstat (limited to 'llvm/lib/Transforms/Utils')
-rw-r--r-- | llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp | 35 |
1 files changed, 23 insertions, 12 deletions
diff --git a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp index 854fda4aa83..cd264a8c63f 100644 --- a/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp +++ b/llvm/lib/Transforms/Utils/SSAUpdaterBulk.cpp @@ -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(unsigned Var, StringRef Name, Type *Ty) { /// 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(unsigned Var, BasicBlock *BB, Value *V) { /// 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 SmallPtrSetImpl<BasicBlock *> &UsingBlocks, } } -/// 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(DominatorTree *DT, // 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(DominatorTree *DT, // 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); } } |