From d7ca57705e7ccc19245b8b3d6fc271562366bf92 Mon Sep 17 00:00:00 2001 From: Jakob Stoklund Olesen Date: Thu, 20 Jan 2011 17:45:20 +0000 Subject: [PATCH] Add LiveIntervalMap::dumpCache() to print out the cache used by the ssa update algorithm. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123925 91177308-0d34-0410-b5e6-96231b3b80d8 --- lib/CodeGen/SplitKit.cpp | 21 +++++++++++++++++++++ lib/CodeGen/SplitKit.h | 3 +++ 2 files changed, 24 insertions(+) diff --git a/lib/CodeGen/SplitKit.cpp b/lib/CodeGen/SplitKit.cpp index a13134403a5..01deab15739 100644 --- a/lib/CodeGen/SplitKit.cpp +++ b/lib/CodeGen/SplitKit.cpp @@ -449,6 +449,7 @@ VNInfo *LiveIntervalMap::mapValue(const VNInfo *ParentVNI, SlotIndex Idx, // VNInfo. Insert phi-def VNInfos along the path back to IdxMBB. DEBUG(dbgs() << "\n Reaching defs for BB#" << IdxMBB->getNumber() << " at " << Idx << " in " << *li_ << '\n'); + DEBUG(dumpCache()); // Blocks where li_ should be live-in. SmallVector LiveIn; @@ -586,6 +587,7 @@ VNInfo *LiveIntervalMap::mapValue(const VNInfo *ParentVNI, SlotIndex Idx, assert(IdxVNI && "Didn't find value for Idx"); #ifndef NDEBUG + DEBUG(dumpCache()); // Check the liveOutCache_ invariants. for (LiveOutMap::iterator I = liveOutCache_.begin(), E = liveOutCache_.end(); I != E; ++I) { @@ -620,6 +622,25 @@ VNInfo *LiveIntervalMap::mapValue(const VNInfo *ParentVNI, SlotIndex Idx, return IdxVNI; } +#ifndef NDEBUG +void LiveIntervalMap::dumpCache() { + for (LiveOutMap::iterator I = liveOutCache_.begin(), E = liveOutCache_.end(); + I != E; ++I) { + assert(I->first && "Null MBB entry in cache"); + assert(I->second.first && "Null VNInfo in cache"); + assert(I->second.second && "Null DomTreeNode in cache"); + dbgs() << " cache: BB#" << I->first->getNumber() + << " has valno #" << I->second.first->id << " from BB#" + << I->second.second->getBlock()->getNumber() << ", preds"; + for (MachineBasicBlock::pred_iterator PI = I->first->pred_begin(), + PE = I->first->pred_end(); PI != PE; ++PI) + dbgs() << " BB#" << (*PI)->getNumber(); + dbgs() << '\n'; + } + dbgs() << " cache: " << liveOutCache_.size() << " entries.\n"; +} +#endif + // extendTo - Find the last li_ value defined in MBB at or before Idx. The // parentli_ is assumed to be live at Idx. Extend the live range to Idx. // Return the found VNInfo, or NULL. diff --git a/lib/CodeGen/SplitKit.h b/lib/CodeGen/SplitKit.h index 3e14dcf43d7..3616baa6ced 100644 --- a/lib/CodeGen/SplitKit.h +++ b/lib/CodeGen/SplitKit.h @@ -216,6 +216,9 @@ class LiveIntervalMap { // The cache is also used as a visiteed set by mapValue(). LiveOutMap liveOutCache_; + // Dump the live-out cache to dbgs(). + void dumpCache(); + public: LiveIntervalMap(LiveIntervals &lis, MachineDominatorTree &mdt,