Simplify and document the new interface
authorChris Lattner <sabre@nondot.org>
Tue, 17 Feb 2004 05:54:26 +0000 (05:54 +0000)
committerChris Lattner <sabre@nondot.org>
Tue, 17 Feb 2004 05:54:26 +0000 (05:54 +0000)
git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@11524 91177308-0d34-0410-b5e6-96231b3b80d8

include/llvm/Target/MRegisterInfo.h

index 5bd24e181a5844d1eba05413599220d559d3cac6..7df0c9ff307e61633159f33a28d2e4428c02fc6e 100644 (file)
@@ -242,16 +242,17 @@ public:
                            const TargetRegisterClass *RC) const = 0;
 
 
-  virtual bool canFoldMemoryOperand(MachineInstr* MI, unsigned i) const {
+  /// foldMemoryOperand - If this target supports it, fold a load or store of
+  /// the specified stack slot into the specified machine instruction for the
+  /// specified operand.  If this is possible, the target should perform the
+  /// folding and return true, otherwise it should return false.  If it folds
+  /// the instruction, it is likely that the MachineInstruction the iterator
+  /// references has been changed.
+  virtual bool foldMemoryOperand(MachineBasicBlock::iterator &MI,
+                                 unsigned OpNum, int FrameIndex) const {
     return false;
   }
 
-  virtual int foldMemoryOperand(MachineInstr* MI,
-                                unsigned i,
-                                int FrameIndex) const {
-    return 0;
-  }
-
   /// getCallFrameSetup/DestroyOpcode - These methods return the opcode of the
   /// frame setup/destroy instructions if they exist (-1 otherwise).  Some
   /// targets use pseudo instructions in order to abstract away the difference