Lines Matching defs:FoldingSetNodeID

41 /// passed a FoldingSetNodeID object which is used to gather the bits.  Just
54 /// void Profile(FoldingSetNodeID &ID) const {
78 /// exists, then call FindNodeOrInsertPos with a FoldingSetNodeID of the bits to
81 /// FoldingSetNodeID ID;
102 class FoldingSetNodeID;
162 Node *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos);
193 virtual void GetNodeProfile(Node *N, FoldingSetNodeID &ID) const = 0;
196 virtual bool NodeEquals(Node *N, const FoldingSetNodeID &ID, unsigned IDHash,
197 FoldingSetNodeID &TempID) const=0;
200 virtual unsigned ComputeNodeHash(Node *N, FoldingSetNodeID &TempID) const = 0;
211 static void Profile(const T &X, FoldingSetNodeID &ID) {
214 static void Profile(T &X, FoldingSetNodeID &ID) {
222 static inline bool Equals(T &X, const FoldingSetNodeID &ID, unsigned IDHash,
223 FoldingSetNodeID &TempID);
230 static inline unsigned ComputeHash(T &X, FoldingSetNodeID &TempID);
248 static void Profile(T &X, FoldingSetNodeID &ID, Ctx Context) {
251 static inline bool Equals(T &X, const FoldingSetNodeID &ID, unsigned IDHash,
252 FoldingSetNodeID &TempID, Ctx Context);
253 static inline unsigned ComputeHash(T &X, FoldingSetNodeID &TempID,
264 /// FoldingSetNodeID, which can be a useful to store node id data rather
292 /// FoldingSetNodeID - This class is used to gather all the unique data bits of
296 class FoldingSetNodeID {
302 FoldingSetNodeID() {}
304 FoldingSetNodeID(FoldingSetNodeIDRef Ref)
318 void AddNodeID(const FoldingSetNodeID &ID);
323 /// clear - Clear the accumulated profile, allowing this FoldingSetNodeID
327 /// ComputeHash - Compute a strong hash value for this FoldingSetNodeID, used
333 bool operator==(const FoldingSetNodeID &RHS) const;
336 bool operator!=(const FoldingSetNodeID &RHS) const { return !(*this == RHS); }
341 bool operator<(const FoldingSetNodeID &RHS) const;
356 // require the definition of FoldingSetNodeID.
359 DefaultFoldingSetTrait<T>::Equals(T &X, const FoldingSetNodeID &ID,
361 FoldingSetNodeID &TempID) {
367 DefaultFoldingSetTrait<T>::ComputeHash(T &X, FoldingSetNodeID &TempID) {
374 const FoldingSetNodeID &ID,
376 FoldingSetNodeID &TempID,
384 FoldingSetNodeID &TempID,
399 void GetNodeProfile(Node *N, FoldingSetNodeID &ID) const override {
405 bool NodeEquals(Node *N, const FoldingSetNodeID &ID, unsigned IDHash,
406 FoldingSetNodeID &TempID) const override {
412 unsigned ComputeNodeHash(Node *N, FoldingSetNodeID &TempID) const override {
450 T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
463 /// void Profile(llvm::FoldingSetNodeID &, Ctx);
477 FoldingSetNodeID &ID) const override {
481 bool NodeEquals(FoldingSetImpl::Node *N, const FoldingSetNodeID &ID,
482 unsigned IDHash, FoldingSetNodeID &TempID) const override {
488 FoldingSetNodeID &TempID) const override {
529 T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
604 T *FindNodeOrInsertPos(const FoldingSetNodeID &ID, void *&InsertPos) {
764 void Profile(FoldingSetNodeID &ID) { FoldingSetTrait<T>::Profile(data, ID); }
775 /// a FoldingSetNodeID value rather than requiring the node to recompute it
780 FoldingSetNodeID FastID;
782 explicit FastFoldingSetNode(const FoldingSetNodeID &ID) : FastID(ID) {}
784 void Profile(FoldingSetNodeID &ID) const {
793 static inline void Profile(T *X, FoldingSetNodeID &ID) {
800 llvm::FoldingSetNodeID &ID) {