Add LiveIntervalMap::dumpCache() to print out the cache used by the ssa update algorithm.
authorJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 20 Jan 2011 17:45:20 +0000 (17:45 +0000)
committerJakob Stoklund Olesen <stoklund@2pi.dk>
Thu, 20 Jan 2011 17:45:20 +0000 (17:45 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@123925 91177308-0d34-0410-b5e6-96231b3b80d8

lib/CodeGen/SplitKit.cpp
lib/CodeGen/SplitKit.h

index a13134403a574ccbd6bdbd6669ff6368c74ece73..01deab1573938120661a663a2a34236c59255c6a 100644 (file)
@@ -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<MachineDomTreeNode*, 16> 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.
index 3e14dcf43d7e519c4d0dc71aaf2c7d42751413f7..3616baa6cedeba6b373e25aed6db59fced1110e4 100644 (file)
@@ -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,