From 35b31bea0dc9e16d4c384a6a78404bdd791b6693 Mon Sep 17 00:00:00 2001 From: Dan Gohman Date: Thu, 17 Apr 2008 23:02:12 +0000 Subject: [PATCH] Remove the implicit conversion from SDOperandPtr to SDOperand*; this 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 | 10 +++------- lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 8 ++++---- 2 files changed, 7 insertions(+), 11 deletions(-) diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index a1c1ec9f159..ce84ed00b12 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -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"); diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 57784c21eec..fa38c508486 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -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,