Fix two sources of UB in next_hash_pow2 (from hash_table)
There are two sources of undefined behavior in next_hash_pow2: an
invalid shift (occurs when n is 0 or 1), and an invalid call to CLZ
(occurs when __n is 1).
This patch corrects both issues. It's NFC for all values of n which do
not trigger UB, and leads to defined results when n is 0 or 1.
Minimal reproducer:
unordered_map<uint64_t, unsigned long> m; m.reserve(4); m.reserve(1);
rdar://problem/32407328
Shouldn't this return __n + 1 when __n <= 1, or even 2 in both cases?