mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-01-12 17:32:19 +00:00
allow adding a FoldingSetNodeID to a FastFoldingSetNode, resolving PR9499,
patch by Johannes Schaub! git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@130151 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
parent
ed0318eab8
commit
e27c3ea2bc
@ -310,6 +310,7 @@ public:
|
||||
void AddInteger(unsigned long long I);
|
||||
void AddBoolean(bool B) { AddInteger(B ? 1U : 0U); }
|
||||
void AddString(StringRef String);
|
||||
void AddNodeID(const FoldingSetNodeID &ID);
|
||||
|
||||
template <typename T>
|
||||
inline void Add(const T& x) { FoldingSetTrait<T>::Profile(x, *this); }
|
||||
@ -641,7 +642,7 @@ public:
|
||||
: data(a1,a2,a3,a4,a5) {}
|
||||
|
||||
|
||||
void Profile(FoldingSetNodeID& ID) { FoldingSetTrait<T>::Profile(data, ID); }
|
||||
void Profile(FoldingSetNodeID &ID) { FoldingSetTrait<T>::Profile(data, ID); }
|
||||
|
||||
T& getValue() { return data; }
|
||||
const T& getValue() const { return data; }
|
||||
@ -661,7 +662,9 @@ class FastFoldingSetNode : public FoldingSetNode {
|
||||
protected:
|
||||
explicit FastFoldingSetNode(const FoldingSetNodeID &ID) : FastID(ID) {}
|
||||
public:
|
||||
void Profile(FoldingSetNodeID& ID) const { ID = FastID; }
|
||||
void Profile(FoldingSetNodeID& ID) const {
|
||||
ID.AddNodeID(FastID);
|
||||
}
|
||||
};
|
||||
|
||||
//===----------------------------------------------------------------------===//
|
||||
|
@ -147,6 +147,11 @@ void FoldingSetNodeID::AddString(StringRef String) {
|
||||
Bits.push_back(V);
|
||||
}
|
||||
|
||||
// AddNodeID - Adds the Bit data of another ID to *this.
|
||||
void FoldingSetNodeID::AddNodeID(const FoldingSetNodeID &ID) {
|
||||
Bits.append(ID.Bits.begin(), ID.Bits.end());
|
||||
}
|
||||
|
||||
/// ComputeHash - Compute a strong hash value for this FoldingSetNodeID, used to
|
||||
/// lookup the node in the FoldingSetImpl.
|
||||
unsigned FoldingSetNodeID::ComputeHash() const {
|
||||
|
Loading…
x
Reference in New Issue
Block a user