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

Evan Cheng evan.cheng at apple.com
Sat Feb 25 01:54:01 PST 2006



Changes in directory llvm/lib/CodeGen/SelectionDAG:

ScheduleDAG.cpp updated: 1.70 -> 1.71
SelectionDAG.cpp updated: 1.259 -> 1.260
---
Log message:

Added an offset field to ConstantPoolSDNode.

---
Diffs of the changes:  (+14 -9)

 ScheduleDAG.cpp  |    3 ++-
 SelectionDAG.cpp |   20 ++++++++++++--------
 2 files changed, 14 insertions(+), 9 deletions(-)


Index: llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.70 llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.71
--- llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp:1.70	Fri Feb 24 13:50:58 2006
+++ llvm/lib/CodeGen/SelectionDAG/ScheduleDAG.cpp	Sat Feb 25 03:53:49 2006
@@ -154,6 +154,7 @@
     MI->addFrameIndexOperand(FI->getIndex());
   } else if (ConstantPoolSDNode *CP = 
              dyn_cast<ConstantPoolSDNode>(Op)) {
+    int Offset = CP->getOffset();
     unsigned Align = CP->getAlignment();
     // MachineConstantPool wants an explicit alignment.
     if (Align == 0) {
@@ -165,7 +166,7 @@
     }
     
     unsigned Idx = ConstPool->getConstantPoolIndex(CP->get(), Align);
-    MI->addConstantPoolIndexOperand(Idx);
+    MI->addConstantPoolIndexOperand(Idx, Offset);
   } else if (ExternalSymbolSDNode *ES = 
              dyn_cast<ExternalSymbolSDNode>(Op)) {
     MI->addExternalSymbolOperand(ES->getSymbol(), false);


Index: llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp
diff -u llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.259 llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.260
--- llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp:1.259	Fri Feb 17 20:40:58 2006
+++ llvm/lib/CodeGen/SelectionDAG/SelectionDAG.cpp	Sat Feb 25 03:53:49 2006
@@ -302,12 +302,14 @@
   case ISD::ConstantPool:
     Erased = ConstantPoolIndices.
       erase(std::make_pair(cast<ConstantPoolSDNode>(N)->get(),
-                           cast<ConstantPoolSDNode>(N)->getAlignment()));
+                        std::make_pair(cast<ConstantPoolSDNode>(N)->getOffset(),
+                                 cast<ConstantPoolSDNode>(N)->getAlignment())));
     break;
   case ISD::TargetConstantPool:
     Erased = TargetConstantPoolIndices.
       erase(std::make_pair(cast<ConstantPoolSDNode>(N)->get(),
-                           cast<ConstantPoolSDNode>(N)->getAlignment()));
+                        std::make_pair(cast<ConstantPoolSDNode>(N)->getOffset(),
+                                 cast<ConstantPoolSDNode>(N)->getAlignment())));
     break;
   case ISD::BasicBlock:
     Erased = BBNodes.erase(cast<BasicBlockSDNode>(N)->getBasicBlock());
@@ -650,19 +652,21 @@
 }
 
 SDOperand SelectionDAG::getConstantPool(Constant *C, MVT::ValueType VT,
-                                        unsigned Alignment) {
-  SDNode *&N = ConstantPoolIndices[std::make_pair(C, Alignment)];
+                                        unsigned Alignment,  int Offset) {
+  SDNode *&N = ConstantPoolIndices[std::make_pair(C,
+                                            std::make_pair(Offset, Alignment))];
   if (N) return SDOperand(N, 0);
-  N = new ConstantPoolSDNode(C, VT, Alignment, false);
+  N = new ConstantPoolSDNode(false, C, VT, Offset, Alignment);
   AllNodes.push_back(N);
   return SDOperand(N, 0);
 }
 
 SDOperand SelectionDAG::getTargetConstantPool(Constant *C, MVT::ValueType VT,
-                                              unsigned Alignment) {
-  SDNode *&N = TargetConstantPoolIndices[std::make_pair(C, Alignment)];
+                                             unsigned Alignment,  int Offset) {
+  SDNode *&N = TargetConstantPoolIndices[std::make_pair(C,
+                                            std::make_pair(Offset, Alignment))];
   if (N) return SDOperand(N, 0);
-  N = new ConstantPoolSDNode(C, VT, Alignment, true);
+  N = new ConstantPoolSDNode(true, C, VT, Offset, Alignment);
   AllNodes.push_back(N);
   return SDOperand(N, 0);
 }






More information about the llvm-commits mailing list