Remove the implicit conversion from SDOperandPtr to SDOperand*; this
authorDan Gohman <gohman@apple.com>
Thu, 17 Apr 2008 23:02:12 +0000 (23:02 +0000)
committerDan Gohman <gohman@apple.com>
Thu, 17 Apr 2008 23:02:12 +0000 (23:02 +0000)
may fix a build error on Visual Studio.

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

include/llvm/CodeGen/SelectionDAGNodes.h
lib/CodeGen/SelectionDAG/SelectionDAG.cpp

index a1c1ec9f159249144cad46688749e8ef07d11ce7..ce84ed00b123b4c9494d2bd4b67e93a86cdf6a2f 100644 (file)
@@ -968,6 +968,8 @@ class SDOperandPtr {
   const SDOperand *ptr; // The pointer to the SDOperand object
   int object_size;      // The size of the object containg the SDOperand
 public:
+  SDOperandPtr() : ptr(0), object_size(0) {}
+
   SDOperandPtr(SDUse * use_ptr) { 
     ptr = &use_ptr->getSDOperand(); 
     object_size = sizeof(SDUse); 
@@ -978,12 +980,6 @@ public:
     object_size = sizeof(SDOperand); 
   }
 
-  operator const SDOperand *() const {
-    assert(object_size == sizeof(SDOperand) && 
-           "Only SDOperand can be converted");
-    return ptr;
-  }
-
   const SDOperand operator *() { return *ptr; }
   const SDOperand *operator ->() { return ptr; }
   SDOperandPtr operator ++ () { 
@@ -1300,7 +1296,7 @@ protected:
   /// opcode, types, and operands to the specified value.  This should only be
   /// used by the SelectionDAG class.
   void MorphNodeTo(unsigned Opc, SDVTList L,
-                   const SDOperand *Ops, unsigned NumOps);
+                   SDOperandPtr Ops, unsigned NumOps);
   
   void addUser(unsigned i, SDNode *User) {
     assert(User->OperandList[i].getUser() && "Node without parent");
index 57784c21eec8705468776fef6cd32a5ebeba37ab..fa38c5084861d53e785277f5875e2894de519e76 100644 (file)
@@ -337,7 +337,7 @@ static void AddNodeIDOperands(FoldingSetNodeID &ID,
 
 static void AddNodeIDNode(FoldingSetNodeID &ID,
                           unsigned short OpC, SDVTList VTList, 
-                          const SDOperand *OpList, unsigned N) {
+                          SDOperandPtr OpList, unsigned N) {
   AddNodeIDOpcode(ID, OpC);
   AddNodeIDValueTypes(ID, VTList);
   AddNodeIDOperands(ID, OpList, N);
@@ -3342,7 +3342,7 @@ UpdateNodeOperands(SDOperand InN, SDOperandPtr Ops, unsigned NumOps) {
 /// opcode, types, and operands to the specified value.  This should only be
 /// used by the SelectionDAG class.
 void SDNode::MorphNodeTo(unsigned Opc, SDVTList L,
-                         const SDOperand *Ops, unsigned NumOps) {
+                         SDOperandPtr Ops, unsigned NumOps) {
   NodeType = Opc;
   ValueList = L.VTs;
   NumValues = L.NumVTs;
@@ -3393,7 +3393,7 @@ SDNode *SelectionDAG::SelectNodeTo(SDNode *N, unsigned TargetOpc,
    
   RemoveNodeFromCSEMaps(N);
   
-  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs, 0, 0);
+  N->MorphNodeTo(ISD::BUILTIN_OP_END+TargetOpc, VTs, SDOperandPtr(), 0);
 
   CSEMap.InsertNode(N, IP);
   return N;
@@ -3951,7 +3951,7 @@ void AtomicSDNode::ANCHOR() {}
 
 HandleSDNode::~HandleSDNode() {
   SDVTList VTs = { 0, 0 };
-  MorphNodeTo(ISD::HANDLENODE, VTs, 0, 0);  // Drops operand uses.
+  MorphNodeTo(ISD::HANDLENODE, VTs, SDOperandPtr(), 0);  // Drops operand uses.
 }
 
 GlobalAddressSDNode::GlobalAddressSDNode(bool isTarget, const GlobalValue *GA,