Move findTiedToSrcOperand to TargetInstrDescriptor.


git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@32366 91177308-0d34-0410-b5e6-96231b3b80d8
diff --git a/include/llvm/Target/TargetInstrInfo.h b/include/llvm/Target/TargetInstrInfo.h
index 312e6c3..7fb594d 100644
--- a/include/llvm/Target/TargetInstrInfo.h
+++ b/include/llvm/Target/TargetInstrInfo.h
@@ -139,6 +139,10 @@
     }
     return -1;
   }
+
+  /// findTiedToSrcOperand - Returns the operand that is tied to the specified
+  /// dest operand. Returns -1 if there isn't one.
+  int findTiedToSrcOperand(unsigned OpNum) const;
 };
 
 
@@ -257,11 +261,6 @@
     return get(Opcode).getOperandConstraint(OpNum, Constraint);
   }
 
-  /// findTiedToSrcOperand - Returns the operand that is tied to the specified
-  /// dest operand. Returns -1 if there isn't one.
-  int findTiedToSrcOperand(const TargetInstrDescriptor *TID,
-                           unsigned OpNum) const;
-
   /// getDWARF_LABELOpcode - Return the opcode of the target's DWARF_LABEL
   /// instruction if it has one.  This is used by codegen passes that update
   /// DWARF line number info as they modify the code.
diff --git a/lib/CodeGen/RegAllocSimple.cpp b/lib/CodeGen/RegAllocSimple.cpp
index 3437b00..0150404 100644
--- a/lib/CodeGen/RegAllocSimple.cpp
+++ b/lib/CodeGen/RegAllocSimple.cpp
@@ -198,8 +198,7 @@
         unsigned physReg = Virt2PhysRegMap[virtualReg];
         if (physReg == 0) {
           if (op.isDef()) {
-            int TiedOp = TM->getInstrInfo()->
-              findTiedToSrcOperand(MI->getInstrDescriptor(), i);
+            int TiedOp = MI->getInstrDescriptor()->findTiedToSrcOperand(i);
             if (TiedOp == -1) {
               physReg = getFreeReg(virtualReg);
             } else {
diff --git a/lib/CodeGen/VirtRegMap.cpp b/lib/CodeGen/VirtRegMap.cpp
index 83543dc..c51d4ab 100644
--- a/lib/CodeGen/VirtRegMap.cpp
+++ b/lib/CodeGen/VirtRegMap.cpp
@@ -99,7 +99,7 @@
   ModRef MRInfo;
   const TargetInstrDescriptor *TID = OldMI->getInstrDescriptor();
   if (TID->getOperandConstraint(OpNo, TOI::TIED_TO) != -1 ||
-      TII.findTiedToSrcOperand(TID, OpNo) != -1) {
+      TID->findTiedToSrcOperand(OpNo) != -1) {
     // Folded a two-address operand.
     MRInfo = isModRef;
   } else if (OldMI->getOperand(OpNo).isDef()) {
@@ -851,7 +851,7 @@
         // If this def is part of a two-address operand, make sure to execute
         // the store from the correct physical register.
         unsigned PhysReg;
-        int TiedOp = TII->findTiedToSrcOperand(MI.getInstrDescriptor(), i);
+        int TiedOp = MI.getInstrDescriptor()->findTiedToSrcOperand(i);
         if (TiedOp != -1)
           PhysReg = MI.getOperand(TiedOp).getReg();
         else {
diff --git a/lib/Target/TargetInstrInfo.cpp b/lib/Target/TargetInstrInfo.cpp
index 0e79baa..b9fca8a 100644
--- a/lib/Target/TargetInstrInfo.cpp
+++ b/lib/Target/TargetInstrInfo.cpp
@@ -17,6 +17,19 @@
 #include "llvm/DerivedTypes.h"
 using namespace llvm;
 
+/// findTiedToSrcOperand - Returns the operand that is tied to the specified
+/// dest operand. Returns -1 if there isn't one.
+int TargetInstrDescriptor::findTiedToSrcOperand(unsigned OpNum) const {
+  for (unsigned i = 0, e = numOperands; i != e; ++i) {
+    if (i == OpNum)
+      continue;
+    if (getOperandConstraint(i, TOI::TIED_TO) == (int)OpNum)
+      return i;
+  }
+  return -1;
+}
+
+
 TargetInstrInfo::TargetInstrInfo(const TargetInstrDescriptor* Desc,
                                  unsigned numOpcodes)
   : desc(Desc), NumOpcodes(numOpcodes) {
@@ -25,20 +38,6 @@
 TargetInstrInfo::~TargetInstrInfo() {
 }
 
-/// findTiedToSrcOperand - Returns the operand that is tied to the specified
-/// dest operand. Returns -1 if there isn't one.
-int TargetInstrInfo::findTiedToSrcOperand(const TargetInstrDescriptor *TID,
-                                          unsigned OpNum) const {
-  for (unsigned i = 0, e = TID->numOperands; i != e; ++i) {
-    if (i == OpNum)
-      continue;
-    if (TID->getOperandConstraint(i, TOI::TIED_TO) == (int)OpNum)
-      return i;
-  }
-  return -1;
-}
-
-
 // commuteInstruction - The default implementation of this method just exchanges
 // operand 1 and 2.
 MachineInstr *TargetInstrInfo::commuteInstruction(MachineInstr *MI) const {