[llvm-commits] CVS: llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp

Evan Cheng evan.cheng at apple.com
Fri Jan 5 12:59:21 PST 2007



Changes in directory llvm/lib/CodeGen/SelectionDAG:

ScheduleDAG.cpp updated: 1.112 -> 1.113
---
Log message:

CopyToReg source operand can be a register as well. e.g. Copy from GlobalBaseReg.

---
Diffs of the changes:  (+6 -2)

 ScheduleDAG.cpp |    8 ++++++--
 1 files changed, 6 insertions(+), 2 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.112 llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.113
--- llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.112	Thu Dec  7 14:04:42 2006
+++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp	Fri Jan  5 14:59:06 2007
@@ -307,7 +307,7 @@
   } else if (ConstantSDNode *C =
              dyn_cast<ConstantSDNode>(Op)) {
     MI->addImmOperand(C->getValue());
-  } else if (RegisterSDNode*R =
+  } else if (RegisterSDNode *R =
              dyn_cast<RegisterSDNode>(Op)) {
     MI->addRegOperand(R->getReg(), false);
   } else if (GlobalAddressSDNode *TGA =
@@ -457,7 +457,11 @@
     case ISD::TokenFactor:
       break;
     case ISD::CopyToReg: {
-      unsigned InReg = getVR(Node->getOperand(2), VRBaseMap);
+      unsigned InReg;
+      if (RegisterSDNode *R = dyn_cast<RegisterSDNode>(Node->getOperand(2)))
+        InReg = R->getReg();
+      else
+        InReg = getVR(Node->getOperand(2), VRBaseMap);
       unsigned DestReg = cast<RegisterSDNode>(Node->getOperand(1))->getReg();
       if (InReg != DestReg)   // Coalesced away the copy?
         MRI->copyRegToReg(*BB, BB->end(), DestReg, InReg,






More information about the llvm-commits mailing list