mirror of https://github.com/YosysHQ/yosys.git
kernel: Try an order-independent approach to hashing `dict`.
Co-Authored-By: David Shah <dave@ds0.me> Co-Authored-By: Eddie Hung <eddie@fpgeh.com>
This commit is contained in:
parent
976edb7597
commit
6eea4b3d79
|
@ -617,12 +617,10 @@ public:
|
|||
}
|
||||
|
||||
unsigned int hash() const {
|
||||
std::vector<entry_t> entries_(entries); //make a copy to preserve const-ness
|
||||
std::sort(entries_.begin(), entries_.end());
|
||||
unsigned int h = mkhash_init;
|
||||
for (unsigned int i = 0; i < entries_.size(); ++i) {
|
||||
h = mkhash(h, hash_ops<K>::hash(entries_[i].udata.first));
|
||||
h = mkhash(h, hash_ops<T>::hash(entries_[i].udata.second));
|
||||
for (auto &entry : entries) {
|
||||
h ^= hash_ops<K>::hash(entry.udata.first);
|
||||
h ^= hash_ops<T>::hash(entry.udata.second);
|
||||
}
|
||||
return h;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue