diff options
Diffstat (limited to 'include/llvm/CodeGen/SelectionDAGNodes.h')
-rw-r--r-- | include/llvm/CodeGen/SelectionDAGNodes.h | 8 |
1 files changed, 6 insertions, 2 deletions
diff --git a/include/llvm/CodeGen/SelectionDAGNodes.h b/include/llvm/CodeGen/SelectionDAGNodes.h index 5fe9647a0a..b509667528 100644 --- a/include/llvm/CodeGen/SelectionDAGNodes.h +++ b/include/llvm/CodeGen/SelectionDAGNodes.h @@ -811,11 +811,15 @@ namespace ISD { class SDValue { public: SDNode *Val; // The node defining the value we are using. +private: unsigned ResNo; // Which return value of the node we are using. - +public: SDValue() : Val(0), ResNo(0) {} SDValue(SDNode *val, unsigned resno) : Val(val), ResNo(resno) {} + /// get the index which selects a specific result in the SDNode + unsigned getResNo() const { return ResNo; } + bool operator==(const SDValue &O) const { return Val == O.Val && ResNo == O.ResNo; } @@ -882,7 +886,7 @@ template<> struct DenseMapInfo<SDValue> { } static unsigned getHashValue(const SDValue &Val) { return ((unsigned)((uintptr_t)Val.Val >> 4) ^ - (unsigned)((uintptr_t)Val.Val >> 9)) + Val.ResNo; + (unsigned)((uintptr_t)Val.Val >> 9)) + Val.getResNo(); } static bool isEqual(const SDValue &LHS, const SDValue &RHS) { return LHS == RHS; |