diff options
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGNodes.h | 7 | ||||
-rw-r--r-- | lib/CodeGen/SelectionDAG/SelectionDAG.cpp | 7 |
2 files changed, 14 insertions, 0 deletions
diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index 02feba7..5f66b63 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -542,6 +542,7 @@ public: inline const SDOperand &getOperand(unsigned i) const; inline bool isTargetOpcode() const; inline unsigned getTargetOpcode() const; + inline const bool isOperand(SDNode *N) const; /// hasOneUse - Return true if there is exactly one operation using this /// result value of the defining operator. @@ -631,6 +632,9 @@ public: // isOnlyUse - Return true if this node is the only use of N. bool isOnlyUse(SDNode *N) const; + // isOperand - Return true if this node is an operand of N. + bool isOperand(SDNode *N) const; + /// getNumOperands - Return the number of values used by this operation. /// unsigned getNumOperands() const { return NumOperands; } @@ -937,6 +941,9 @@ inline bool SDOperand::isTargetOpcode() const { inline unsigned SDOperand::getTargetOpcode() const { return Val->getTargetOpcode(); } +inline const bool SDOperand::isOperand(SDNode *N) const { + return Val->isOperand(N); +} inline bool SDOperand::hasOneUse() const { return Val->hasNUsesOfValue(1, ResNo); } diff --git a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp index 24497af..293ea60 100644 --- a/lib/CodeGen/SelectionDAG/SelectionDAG.cpp +++ b/lib/CodeGen/SelectionDAG/SelectionDAG.cpp @@ -2533,6 +2533,13 @@ bool SDNode::isOnlyUse(SDNode *N) const { return Seen; } +// isOperand - Return true if this node is an operand of N. +bool SDNode::isOperand(SDNode *N) const { + for (unsigned i = 0, e = N->NumOperands; i != e; ++i) + if (this == N->OperandList[i].Val) + return true; + return false; +} const char *SDNode::getOperationName(const SelectionDAG *G) const { switch (getOpcode()) { |