mirror of
https://github.com/c64scene-ar/llvm-6502.git
synced 2025-06-19 18:24:00 +00:00
Revert commit 152300 (ddunbar) since it still seems to be breaking
buildbots. Original commit message: [ADT] Change the trivial FoldingSetNodeID::Add* methods to be inline, reapplied with a fix for the longstanding over-read of 32-bit pointer values. git-svn-id: https://llvm.org/svn/llvm-project/llvm/trunk@152304 91177308-0d34-0410-b5e6-96231b3b80d8
This commit is contained in:
@ -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);
|
||||
@ -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();
|
||||
|
Reference in New Issue
Block a user