Fix some undefined behavior in __hash_table. Thanks to vsk for the report and the patch. Reviewed as https://reviews.llvm.org/D33588.

llvm-svn: 304617
diff --git a/libcxx/include/__hash_table b/libcxx/include/__hash_table
index 79336ff..3f430af 100644
--- a/libcxx/include/__hash_table
+++ b/libcxx/include/__hash_table
@@ -137,7 +137,7 @@
 size_t
 __next_hash_pow2(size_t __n)
 {
-    return size_t(1) << (std::numeric_limits<size_t>::digits - __clz(__n-1));
+    return __n < 2 ? __n : (size_t(1) << (std::numeric_limits<size_t>::digits - __clz(__n-1)));
 }