Skip to content

Commit

Permalink
Revert r152288, "[ADT] Change the trivial FoldingSetNodeID::Add* meth…
Browse files Browse the repository at this point in the history
…ods to be

inline.", which is breaking the bots in a way I don't understand.

git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152295 91177308-0d34-0410-b5e6-96231b3b80d8
  • Loading branch information
ddunbar committed Mar 8, 2012
1 parent d4b0a06 commit 8c0152f
Show file tree
Hide file tree
Showing 2 changed files with 43 additions and 47 deletions.
46 changes: 0 additions & 46 deletions include/llvm/ADT/FoldingSet.h
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,6 @@
#define LLVM_ADT_FOLDINGSET_H

#include "llvm/Support/DataTypes.h"
#include "llvm/Support/ErrorHandling.h"
#include "llvm/ADT/SmallVector.h"
#include "llvm/ADT/StringRef.h"

Expand Down Expand Up @@ -311,7 +310,6 @@ class FoldingSetNodeID {
void AddInteger(unsigned long long I);
void AddBoolean(bool B) { AddInteger(B ? 1U : 0U); }
void AddString(StringRef String);
/// AddNodeID - Adds the Bit data of another ID to *this.
void AddNodeID(const FoldingSetNodeID &ID);

template <typename T>
Expand Down Expand Up @@ -677,50 +675,6 @@ template<typename T> struct FoldingSetTrait<T*> {
ID.AddPointer(X);
}
};

//===----------------------------------------------------------------------===//
// FoldingSetNodeID Inline function definitions

/// Add* - Add various data types to Bit data.
///
inline void FoldingSetNodeID::AddPointer(const void *Ptr) {
// Note: this adds pointers to the hash using sizes and endianness that
// depend on the host. It doesn't matter however, because hashing on
// pointer values in inherently unstable. Nothing should depend on the
// ordering of nodes in the folding set.
Bits.append(reinterpret_cast<unsigned *>(&Ptr),
reinterpret_cast<unsigned *>(&Ptr+1));
}
inline void FoldingSetNodeID::AddInteger(signed I) {
Bits.push_back(I);
}
inline void FoldingSetNodeID::AddInteger(unsigned I) {
Bits.push_back(I);
}
inline void FoldingSetNodeID::AddInteger(long I) {
AddInteger((unsigned long)I);
}
inline void FoldingSetNodeID::AddInteger(unsigned long I) {
if (sizeof(long) == sizeof(int))
AddInteger(unsigned(I));
else if (sizeof(long) == sizeof(long long)) {
AddInteger((unsigned long long)I);
} else {
llvm_unreachable("unexpected sizeof(long)");
}
}
inline void FoldingSetNodeID::AddInteger(long long I) {
AddInteger((unsigned long long)I);
}
inline void FoldingSetNodeID::AddInteger(unsigned long long I) {
AddInteger(unsigned(I));
if ((uint64_t)(unsigned)I != I)
Bits.push_back(unsigned(I >> 32));
}
inline void FoldingSetNodeID::AddNodeID(const FoldingSetNodeID &ID) {
Bits.append(ID.Bits.begin(), ID.Bits.end());
}

} // End of namespace llvm.

#endif
44 changes: 43 additions & 1 deletion lib/Support/FoldingSet.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -41,6 +41,43 @@ bool FoldingSetNodeIDRef::operator==(FoldingSetNodeIDRef RHS) const {
//===----------------------------------------------------------------------===//
// FoldingSetNodeID Implementation

/// Add* - Add various data types to Bit data.
///
void FoldingSetNodeID::AddPointer(const void *Ptr) {
// Note: this adds pointers to the hash using sizes and endianness that
// depend on the host. It doesn't matter however, because hashing on
// pointer values in inherently unstable. Nothing should depend on the
// ordering of nodes in the folding set.
Bits.append(reinterpret_cast<unsigned *>(&Ptr),
reinterpret_cast<unsigned *>(&Ptr+1));
}
void FoldingSetNodeID::AddInteger(signed I) {
Bits.push_back(I);
}
void FoldingSetNodeID::AddInteger(unsigned I) {
Bits.push_back(I);
}
void FoldingSetNodeID::AddInteger(long I) {
AddInteger((unsigned long)I);
}
void FoldingSetNodeID::AddInteger(unsigned long I) {
if (sizeof(long) == sizeof(int))
AddInteger(unsigned(I));
else if (sizeof(long) == sizeof(long long)) {
AddInteger((unsigned long long)I);
} else {
llvm_unreachable("unexpected sizeof(long)");
}
}
void FoldingSetNodeID::AddInteger(long long I) {
AddInteger((unsigned long long)I);
}
void FoldingSetNodeID::AddInteger(unsigned long long I) {
AddInteger(unsigned(I));
if ((uint64_t)(unsigned)I != I)
Bits.push_back(unsigned(I >> 32));
}

void FoldingSetNodeID::AddString(StringRef String) {
unsigned Size = String.size();
Bits.push_back(Size);
Expand Down Expand Up @@ -92,7 +129,12 @@ void FoldingSetNodeID::AddString(StringRef String) {
Bits.push_back(V);
}

/// ComputeHash - Compute a strong hash value for this FoldingSetNodeID, used to
// 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 {
return FoldingSetNodeIDRef(Bits.data(), Bits.size()).ComputeHash();
Expand Down

0 comments on commit 8c0152f

Please sign in to comment.