diff --git a/kernel/hashlib.h b/kernel/hashlib.h index 6927702e1..188b176b4 100644 --- a/kernel/hashlib.h +++ b/kernel/hashlib.h @@ -324,10 +324,10 @@ template struct hash_ops> { } }; -inline int hashtable_size(int min_size) +inline unsigned int hashtable_size(unsigned int min_size) { // Primes as generated by https://oeis.org/A175953 - static std::vector zero_and_some_primes = { + static std::vector zero_and_some_primes = { 0, 23, 29, 37, 47, 59, 79, 101, 127, 163, 211, 269, 337, 431, 541, 677, 853, 1069, 1361, 1709, 2137, 2677, 3347, 4201, 5261, 6577, 8231, 10289, 12889, 16127, 20161, 25219, 31531, 39419, 49277, 61603, 77017, 96281, @@ -337,13 +337,13 @@ inline int hashtable_size(int min_size) 25499291, 31874149, 39842687, 49803361, 62254207, 77817767, 97272239, 121590311, 151987889, 189984863, 237481091, 296851369, 371064217, 463830313, 579787991, 724735009, 905918777, 1132398479, 1415498113, - 1769372713 + 1769372713, 2211715897, 2764644887, 3455806139 }; for (auto p : zero_and_some_primes) if (p >= min_size) return p; - if (sizeof(int) == 4) + if (sizeof(unsigned int) == 4) throw std::length_error("hash table exceeded maximum size.\nDesign is likely too large for yosys to handle, if possible try not to flatten the design."); for (auto p : zero_and_some_primes)