summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorEvan Cheng <evan.cheng@apple.com>2007-04-17 20:22:11 +0000
committerEvan Cheng <evan.cheng@apple.com>2007-04-17 20:22:11 +0000
commit8387cf1100079652df3e8efd8059e2a0345e7a66 (patch)
tree9fa302687b15f25f29baef39c8e75c30be4c2319
parent9b91d98a3001bf98eee9215c74c8dd20b34aab08 (diff)
downloadbcm5719-llvm-8387cf1100079652df3e8efd8059e2a0345e7a66.tar.gz
bcm5719-llvm-8387cf1100079652df3e8efd8059e2a0345e7a66.zip
Keep track of number of uses within the function per virtual register.
llvm-svn: 36214
-rw-r--r--llvm/include/llvm/CodeGen/LiveVariables.h6
-rw-r--r--llvm/lib/CodeGen/LiveVariables.cpp1
2 files changed, 6 insertions, 1 deletions
diff --git a/llvm/include/llvm/CodeGen/LiveVariables.h b/llvm/include/llvm/CodeGen/LiveVariables.h
index d98ad347354..6c58815e273 100644
--- a/llvm/include/llvm/CodeGen/LiveVariables.h
+++ b/llvm/include/llvm/CodeGen/LiveVariables.h
@@ -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
diff --git a/llvm/lib/CodeGen/LiveVariables.cpp b/llvm/lib/CodeGen/LiveVariables.cpp
index 977bc5b6d64..8a8185c55f8 100644
--- a/llvm/lib/CodeGen/LiveVariables.cpp
+++ b/llvm/lib/CodeGen/LiveVariables.cpp
@@ -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) {
OpenPOWER on IntegriCloud