Add RegisterDefIsDead to correspond to KillsRegister, mark both const
authorChris Lattner <sabre@nondot.org>
Tue, 23 Aug 2005 22:43:24 +0000 (22:43 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 23 Aug 2005 22:43:24 +0000 (22:43 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@22987 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/CodeGen/LiveVariables.h

index 866b981b394d8cead1851f1aeed8491f6dd85821..b3911ec80b30da94c4efae5ceed9370744fa9a09 100644 (file)
@@ -127,8 +127,9 @@ public:
 
   /// KillsRegister - Return true if the specified instruction kills the
   /// specified register.
-  bool KillsRegister(MachineInstr *MI, unsigned Reg) {
-    std::pair<killed_iterator, killed_iterator> KIP = killed_range(MI);
+  bool KillsRegister(MachineInstr *MI, unsigned Reg) const {
+    typedef std::multimap<MachineInstr*, unsigned>::const_iterator cki;
+    std::pair<cki, cki> KIP = RegistersKilled.equal_range(MI);
     for (; KIP.first != KIP.second; ++KIP.first)
       if (KIP.first->second == Reg)
         return true;
@@ -145,6 +146,17 @@ public:
   dead_range(MachineInstr *MI) {
     return RegistersDead.equal_range(MI);
   }
+  
+  /// RegisterDefIsDead - Return true if the specified instruction defines the
+  /// specified register, but that definition is dead.
+  bool RegisterDefIsDead(MachineInstr *MI, unsigned Reg) const {
+    typedef std::multimap<MachineInstr*, unsigned>::const_iterator cki;
+    std::pair<cki, cki> KIP = RegistersDead.equal_range(MI);
+    for (; KIP.first != KIP.second; ++KIP.first)
+      if (KIP.first->second == Reg)
+        return true;
+    return false;
+  }
 
   //===--------------------------------------------------------------------===//
   //  API to update live variable information