Keep track of number of uses within the function per virtual register.
authorEvan Cheng <evan.cheng@apple.com>
Tue, 17 Apr 2007 20:22:11 +0000 (20:22 +0000)
committerEvan Cheng <evan.cheng@apple.com>
Tue, 17 Apr 2007 20:22:11 +0000 (20:22 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@36214 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/LiveVariables.h
lib/CodeGen/LiveVariables.cpp

index d98ad347354de0bc73241a79a2db1aa2b77de64e..6c58815e27326e23ab0986ad0ba1e57f323fdc9f 100644 (file)
@@ -83,12 +83,16 @@ public:
     /// is a bit set which uses the basic block number as an index.
     BitVector UsedBlocks;
 
+    /// NumUses - Number of uses of this register across the entire function.
+    ///
+    unsigned NumUses;
+
     /// Kills - List of MachineInstruction's which are the last use of this
     /// virtual register (kill it) in their basic block.
     ///
     std::vector<MachineInstr*> Kills;
 
-    VarInfo() : DefInst(0) {}
+    VarInfo() : DefInst(0), NumUses(0) {}
 
     /// removeKill - Delete a kill corresponding to the specified
     /// machine instruction. Returns true if there was a kill
index 977bc5b6d6475ada2f2f31f9380b1bee416228c0..8a8185c55f839e82a6dfa07180d2ee23f5c6b1e6 100644 (file)
@@ -141,6 +141,7 @@ void LiveVariables::HandleVirtRegUse(VarInfo &VRInfo, MachineBasicBlock *MBB,
   unsigned BBNum = MBB->getNumber();
 
   VRInfo.UsedBlocks[BBNum] = true;
+  VRInfo.NumUses++;
 
   // Check to see if this basic block is already a kill block...
   if (!VRInfo.Kills.empty() && VRInfo.Kills.back()->getParent() == MBB) {