Register scavenger is now capable of scavenging. It spills a register whose use of...
[oota-llvm.git] / include / llvm / CodeGen / MachineFunction.h
index b06dd639228e0bbe2e249f0cb71c969e629a0f56..0ba5970ac5b8a284de8a9abdbfd7e0cf2ecaf5a2 100644 (file)
@@ -18,7 +18,7 @@
 #ifndef LLVM_CODEGEN_MACHINEFUNCTION_H
 #define LLVM_CODEGEN_MACHINEFUNCTION_H
 
-#include "llvm/CodeGen/MachineDebugInfo.h"
+#include "llvm/CodeGen/MachineModuleInfo.h"
 #include "llvm/CodeGen/MachineBasicBlock.h"
 #include "llvm/Support/Annotation.h"
 
@@ -184,7 +184,7 @@ public:
 
   /// isPhysRegUsed - Return true if the specified register is used in this
   /// function.  This only works after register allocation.
-  bool isPhysRegUsed(unsigned Reg) { return UsedPhysRegs[Reg]; }
+  bool isPhysRegUsed(unsigned Reg) const { return UsedPhysRegs[Reg]; }
 
   /// changePhyRegUsed - This method allows code that runs after register
   /// allocation to keep the PhysRegsUsed array up-to-date.
@@ -224,12 +224,21 @@ public:
   }
 
   /// getNumBlockIDs - Return the number of MBB ID's allocated.
+  ///
   unsigned getNumBlockIDs() const { return MBBNumbering.size(); }
   
+  /// RenumberBlocks - This discards all of the MachineBasicBlock numbers and
+  /// recomputes them.  This guarantees that the MBB numbers are sequential,
+  /// dense, and match the ordering of the blocks within the function.  If a
+  /// specific MachineBasicBlock is specified, only that block and those after
+  /// it are renumbered.
+  void RenumberBlocks(MachineBasicBlock *MBBFrom = 0);
+  
   /// print - Print out the MachineFunction in a format suitable for debugging
   /// to the specified stream.
   ///
   void print(std::ostream &OS) const;
+  void print(std::ostream *OS) const { if (OS) print(*OS); }
 
   /// viewCFG - This function is meant for use from the debugger.  You can just
   /// say 'call F->viewCFG()' and a ghostview window should pop up from the