Change interface so that we can add to the end of a basic block
authorAlkis Evlogimenos <alkis@evlogimenos.com>
Thu, 12 Feb 2004 08:11:04 +0000 (08:11 +0000)
committerAlkis Evlogimenos <alkis@evlogimenos.com>
Thu, 12 Feb 2004 08:11:04 +0000 (08:11 +0000)
without getting an assertion from ilist that we are dereferencing
ilist<T>::end().

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11345 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/MRegisterInfo.h
lib/Target/X86/X86RegisterInfo.cpp
lib/Target/X86/X86RegisterInfo.h

index 61c594ceb36bcbc4d0637601586991b7a9844d7e..7afc95b95fd5c9e15e0f1ea113a8923a53b5d3b1 100644 (file)
 #define LLVM_TARGET_MREGISTERINFO_H
 
 #include <cassert>
+#include "llvm/CodeGen/MachineBasicBlock.h"
 
 namespace llvm {
 
 class Type;
-class MachineBasicBlock;
 class MachineFunction;
 class MachineInstr;
 
@@ -227,17 +227,17 @@ public:
   //
 
   virtual int storeRegToStackSlot(MachineBasicBlock &MBB,
-                                  MachineInstr* MI,
+                                  MachineBasicBlock::iterator MI,
                                   unsigned SrcReg, int FrameIndex,
                                   const TargetRegisterClass *RC) const = 0;
 
   virtual int loadRegFromStackSlot(MachineBasicBlock &MBB,
-                                   MachineInstr* MI,
+                                   MachineBasicBlock::iterator MI,
                                    unsigned DestReg, int FrameIndex,
                                    const TargetRegisterClass *RC) const = 0;
 
   virtual int copyRegToReg(MachineBasicBlock &MBB,
-                           MachineInstr* MI,
+                           MachineBasicBlock::iterator MI,
                            unsigned DestReg, unsigned SrcReg,
                            const TargetRegisterClass *RC) const = 0;
 
@@ -262,7 +262,7 @@ public:
   ///
   virtual int eliminateCallFramePseudoInstr(MachineFunction &MF,
                                             MachineBasicBlock &MBB,
-                                            MachineInstr* MI) const {
+                                            MachineBasicBlock::iterator MI) const {
     assert(getCallFrameSetupOpcode()== -1 && getCallFrameDestroyOpcode()== -1 &&
           "eliminateCallFramePseudoInstr must be implemented if using"
           " call frame setup/destroy pseudo instructions!");
@@ -290,7 +290,7 @@ public:
   /// added to (negative if removed from) the basic block.
   ///
   virtual int eliminateFrameIndex(MachineFunction &MF,
-                                  MachineInstr* MI) const = 0;
+                                  MachineBasicBlock::iterator MI) const = 0;
 
   /// emitProlog/emitEpilog - These methods insert prolog and epilog code into
   /// the function. The return value is the number of instructions
index 99f834d305148af413922216c0f157f5cb3f5820..3031762288d9c6b75fbdf72989c45acd618079dd 100644 (file)
@@ -47,7 +47,7 @@ static unsigned getIdx(const TargetRegisterClass *RC) {
 }
 
 int X86RegisterInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
-                                         MachineInstr* MI,
+                                         MachineBasicBlock::iterator MI,
                                          unsigned SrcReg, int FrameIdx,
                                          const TargetRegisterClass *RC) const {
   static const unsigned Opcode[] =
@@ -59,7 +59,7 @@ int X86RegisterInfo::storeRegToStackSlot(MachineBasicBlock &MBB,
 }
 
 int X86RegisterInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
-                                          MachineInstr* MI,
+                                          MachineBasicBlock::iterator MI,
                                           unsigned DestReg, int FrameIdx,
                                           const TargetRegisterClass *RC) const{
   static const unsigned Opcode[] =
@@ -70,7 +70,7 @@ int X86RegisterInfo::loadRegFromStackSlot(MachineBasicBlock &MBB,
 }
 
 int X86RegisterInfo::copyRegToReg(MachineBasicBlock &MBB,
-                                  MachineInstr* MI,
+                                  MachineBasicBlock::iterator MI,
                                   unsigned DestReg, unsigned SrcReg,
                                   const TargetRegisterClass *RC) const {
   static const unsigned Opcode[] =
@@ -93,7 +93,7 @@ static bool hasFP(MachineFunction &MF) {
 
 int X86RegisterInfo::eliminateCallFramePseudoInstr(MachineFunction &MF,
                                                    MachineBasicBlock &MBB,
-                                                   MachineInstr* I) const {
+                                                   MachineBasicBlock::iterator I) const {
   MachineInstr *New = 0, *Old = I;
   if (hasFP(MF)) {
     // If we have a frame pointer, turn the adjcallstackup instruction into a
@@ -127,7 +127,7 @@ int X86RegisterInfo::eliminateCallFramePseudoInstr(MachineFunction &MF,
 }
 
 int X86RegisterInfo::eliminateFrameIndex(MachineFunction &MF,
-                                         MachineInstr* II) const {
+                                         MachineBasicBlock::iterator II) const {
   unsigned i = 0;
   MachineInstr &MI = *II;
   while (!MI.getOperand(i).isFrameIndex()) {
index 0087d255cf312d72c43667930354e74f2c602ff0..45e49a88470655725dc41f072899d690758d8b37 100644 (file)
@@ -28,26 +28,26 @@ struct X86RegisterInfo : public X86GenRegisterInfo {
 
   /// Code Generation virtual methods...
   int storeRegToStackSlot(MachineBasicBlock &MBB,
-                          MachineInstr* MI,
+                          MachineBasicBlock::iterator MI,
                           unsigned SrcReg, int FrameIndex,
                           const TargetRegisterClass *RC) const;
 
   int loadRegFromStackSlot(MachineBasicBlock &MBB,
-                           MachineInstr* MI,
+                           MachineBasicBlock::iterator MI,
                            unsigned DestReg, int FrameIndex,
                            const TargetRegisterClass *RC) const;
   
   int copyRegToReg(MachineBasicBlock &MBB,
-                   MachineInstr* MI,
+                   MachineBasicBlock::iterator MI,
                   unsigned DestReg, unsigned SrcReg,
                   const TargetRegisterClass *RC) const;
 
   int eliminateCallFramePseudoInstr(MachineFunction &MF,
                                     MachineBasicBlock &MBB,
-                                    MachineInstr* MI) const;
+                                    MachineBasicBlock::iterator MI) const;
 
   int eliminateFrameIndex(MachineFunction &MF,
-                          MachineInstr* MI) const;
+                          MachineBasicBlock::iterator MI) const;
 
   int processFunctionBeforeFrameFinalized(MachineFunction &MF) const;