[llvm-commits] CVS: llvm/include/llvm/CodeGen/LiveVariables.h

Chris Lattner lattner at cs.uiuc.edu
Sun May 11 22:52:01 PDT 2003


Changes in directory llvm/include/llvm/CodeGen:

LiveVariables.h updated: 1.2 -> 1.3

---
Log message:

Expand API for updating live var info.  
Expose iterators, not const-iterators.
Rename method that was VERY misleading


---
Diffs of the changes:

Index: llvm/include/llvm/CodeGen/LiveVariables.h
diff -u llvm/include/llvm/CodeGen/LiveVariables.h:1.2 llvm/include/llvm/CodeGen/LiveVariables.h:1.3
--- llvm/include/llvm/CodeGen/LiveVariables.h:1.2	Wed May  7 15:07:58 2003
+++ llvm/include/llvm/CodeGen/LiveVariables.h	Sun May 11 22:51:30 2003
@@ -72,6 +72,7 @@
   /// liveness for values that are not in this set.
   ///
   std::vector<bool> AllocatablePhysicalRegisters;
+
 private:   // Intermediate data structures
 
   /// BBMap - Maps LLVM basic blocks to their corresponding machine basic block.
@@ -89,30 +90,60 @@
 
   /// killed_iterator - Iterate over registers killed by a machine instruction
   ///
-  typedef std::multimap<MachineInstr*,
-			unsigned>::const_iterator killed_iterator;
+  typedef std::multimap<MachineInstr*, unsigned>::iterator killed_iterator;
   
   /// killed_begin/end - Get access to the range of registers killed by a
   /// machine instruction.
-  killed_iterator killed_begin(MachineInstr *MI) const {
+  killed_iterator killed_begin(MachineInstr *MI) {
     return RegistersKilled.lower_bound(MI);
   }
-  killed_iterator killed_end(MachineInstr *MI) const {
+  killed_iterator killed_end(MachineInstr *MI) {
     return RegistersKilled.upper_bound(MI);
   }
+  std::pair<killed_iterator, killed_iterator>
+  killed_range(MachineInstr *MI) {
+    return RegistersKilled.equal_range(MI);
+  }
 
-  killed_iterator dead_begin(MachineInstr *MI) const {
+  killed_iterator dead_begin(MachineInstr *MI) {
     return RegistersDead.lower_bound(MI);
   }
-  killed_iterator dead_end(MachineInstr *MI) const {
+  killed_iterator dead_end(MachineInstr *MI) {
     return RegistersDead.upper_bound(MI);
   }
+  std::pair<killed_iterator, killed_iterator>
+  dead_range(MachineInstr *MI) {
+    return RegistersDead.equal_range(MI);
+  }
 
-  /// addVirtualRegisterKill - Add information about the fact that the specified
+  //===--------------------------------------------------------------------===//
+  //  API to update live variable information
+
+  /// addVirtualRegisterKilled - Add information about the fact that the
+  /// specified register is killed after being used by the specified
+  /// instruction.
+  ///
+  void addVirtualRegisterKilled(unsigned IncomingReg, MachineInstr *MI) {
+    RegistersKilled.insert(std::make_pair(MI, IncomingReg));
+  }
+
+  /// removeVirtualRegistersKilled - Remove all of the specified killed
+  /// registers from the live variable information.
+  void removeVirtualRegistersKilled(killed_iterator B, killed_iterator E) {
+    RegistersKilled.erase(B, E);
+  }
+
+  /// addVirtualRegisterDead - Add information about the fact that the specified
   /// register is dead after being used by the specified instruction.
   ///
-  void addVirtualRegisterKill(unsigned IncomingReg, MachineInstr *MI) {
+  void addVirtualRegisterDead(unsigned IncomingReg, MachineInstr *MI) {
     RegistersDead.insert(std::make_pair(MI, IncomingReg));
+  }
+
+  /// removeVirtualRegistersKilled - Remove all of the specified killed
+  /// registers from the live variable information.
+  void removeVirtualRegistersDead(killed_iterator B, killed_iterator E) {
+    RegistersDead.erase(B, E);
   }
 
   virtual void getAnalysisUsage(AnalysisUsage &AU) const {





More information about the llvm-commits mailing list